diff --git a/projects/hydrotech-beam/models/Beam.prt b/projects/hydrotech-beam/models/Beam.prt index 69682690..37152686 100644 Binary files a/projects/hydrotech-beam/models/Beam.prt and b/projects/hydrotech-beam/models/Beam.prt differ diff --git a/projects/hydrotech-beam/models/Beam_fem1.fem b/projects/hydrotech-beam/models/Beam_fem1.fem index 1b63cdc2..43497378 100644 Binary files a/projects/hydrotech-beam/models/Beam_fem1.fem and b/projects/hydrotech-beam/models/Beam_fem1.fem differ diff --git a/projects/hydrotech-beam/models/Beam_fem1_i.prt b/projects/hydrotech-beam/models/Beam_fem1_i.prt index 06ceb87c..445708ce 100644 Binary files a/projects/hydrotech-beam/models/Beam_fem1_i.prt and b/projects/hydrotech-beam/models/Beam_fem1_i.prt differ diff --git a/projects/hydrotech-beam/models/Beam_sim1.sim b/projects/hydrotech-beam/models/Beam_sim1.sim index f698db7c..2a498f1a 100644 Binary files a/projects/hydrotech-beam/models/Beam_sim1.sim and b/projects/hydrotech-beam/models/Beam_sim1.sim differ diff --git a/projects/hydrotech-beam/models/_temp_mass.txt b/projects/hydrotech-beam/models/_temp_mass.txt new file mode 100644 index 00000000..8ce62fe2 --- /dev/null +++ b/projects/hydrotech-beam/models/_temp_mass.txt @@ -0,0 +1 @@ +p173=1343.5034206648418 diff --git a/projects/hydrotech-beam/models/_temp_solve_journal.py b/projects/hydrotech-beam/models/_temp_solve_journal.py deleted file mode 100755 index 201f277b..00000000 --- a/projects/hydrotech-beam/models/_temp_solve_journal.py +++ /dev/null @@ -1,1126 +0,0 @@ -# Auto-generated journal for solving Beam_sim1.sim -import sys -sys.argv = ['', r'C:\Users\antoi\Atomizer\projects\hydrotech-beam\models\Beam_sim1.sim', None, 'beam_half_core_thickness=25.162', 'beam_face_thickness=21.504', 'holes_diameter=300.0', 'hole_count=10.0'] # Set argv for the main function -""" -NX Journal Script to Solve Simulation in Batch Mode - -This script handles BOTH single-part simulations AND multi-part assembly FEMs. - -============================================================================= -MULTI-PART ASSEMBLY FEM WORKFLOW (for .afm-based simulations) -============================================================================= - -Based on recorded NX journal from interactive session (Nov 28, 2025). - -The correct workflow for assembly FEM updates: - -1. LOAD PARTS - - Open ASSY_M1.prt and M1_Blank_fem1_i.prt to have geometry loaded - - Find and switch to M1_Blank part for expression editing - -2. UPDATE EXPRESSIONS - - Switch to modeling application - - Edit expressions with units - - Call MakeUpToDate() on modified expressions - - Call DoUpdate() to rebuild geometry - -3. SWITCH TO SIM AND UPDATE FEM COMPONENTS - - Open the .sim file - - Navigate component hierarchy via RootComponent.FindObject() - - For each component FEM: - - SetWorkComponent() to make it the work part - - FindObject("FEModel").UpdateFemodel() - -4. MERGE DUPLICATE NODES (critical for assembly FEM!) - - Switch to assembly FEM component - - CreateDuplicateNodesCheckBuilder() - - Set MergeOccurrenceNodes = True - - IdentifyDuplicateNodes() then MergeDuplicateNodes() - -5. RESOLVE LABEL CONFLICTS - - CreateAssemblyLabelManagerBuilder() - - SetFEModelOccOffsets() for each occurrence - - Commit() - -6. SOLVE - - SetWorkComponent(Null) to return to sim level - - SolveChainOfSolutions() - -============================================================================= -""" - -import sys -import os -import NXOpen -import NXOpen.Assemblies -import NXOpen.CAE - - -def extract_part_mass(theSession, part, output_dir): - """ - Extract mass from a part using NX MeasureManager. - - Writes mass to _temp_mass.txt and _temp_part_properties.json in output_dir. - - Args: - theSession: NXOpen.Session - part: NXOpen.Part to extract mass from - output_dir: Directory to write temp files - - Returns: - Mass in kg (float) - """ - import json - - results = { - "part_file": part.Name, - "mass_kg": 0.0, - "mass_g": 0.0, - "volume_mm3": 0.0, - "surface_area_mm2": 0.0, - "center_of_gravity_mm": [0.0, 0.0, 0.0], - "num_bodies": 0, - "success": False, - "error": None, - } - - try: - # Get all solid bodies - bodies = [] - for body in part.Bodies: - if body.IsSolidBody: - bodies.append(body) - - results["num_bodies"] = len(bodies) - - if not bodies: - results["error"] = "No solid bodies found" - raise ValueError("No solid bodies found in part") - - # Get the measure manager - measureManager = part.MeasureManager - - # Get unit collection and build mass_units array - # API requires: [Area, Volume, Mass, Length] base units - uc = part.UnitCollection - mass_units = [ - uc.GetBase("Area"), - uc.GetBase("Volume"), - uc.GetBase("Mass"), - uc.GetBase("Length"), - ] - - # Create mass properties measurement - measureBodies = measureManager.NewMassProperties(mass_units, 0.99, bodies) - - if measureBodies: - results["mass_kg"] = measureBodies.Mass - results["mass_g"] = results["mass_kg"] * 1000.0 - - try: - results["volume_mm3"] = measureBodies.Volume - except: - pass - - try: - results["surface_area_mm2"] = measureBodies.Area - except: - pass - - try: - cog = measureBodies.Centroid - if cog: - results["center_of_gravity_mm"] = [cog.X, cog.Y, cog.Z] - except: - pass - - try: - measureBodies.Dispose() - except: - pass - - results["success"] = True - - except Exception as e: - results["error"] = str(e) - results["success"] = False - - # Write results to JSON file - output_file = os.path.join(output_dir, "_temp_part_properties.json") - with open(output_file, "w") as f: - json.dump(results, f, indent=2) - - # Write simple mass value for backward compatibility - mass_file = os.path.join(output_dir, "_temp_mass.txt") - with open(mass_file, "w") as f: - f.write(str(results["mass_kg"])) - - if not results["success"]: - raise ValueError(results["error"]) - - return results["mass_kg"] - - -def find_or_open_part(theSession, part_path): - """ - Find a part if already loaded, otherwise open it. - In NX, calling Parts.Open() on an already-loaded part raises 'File already exists'. - """ - part_name = os.path.splitext(os.path.basename(part_path))[0] - - # Try to find in already-loaded parts - for part in theSession.Parts: - if part.Name == part_name: - return part, True - try: - if part.FullPath and part.FullPath.lower() == part_path.lower(): - return part, True - except: - pass - - # Not found, open it - markId = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, f"Load {part_name}") - part, partLoadStatus = theSession.Parts.Open(part_path) - partLoadStatus.Dispose() - return part, False - - -def main(args): - """ - Main entry point for NX journal. - - Args: - args: Command line arguments - args[0]: .sim file path - args[1]: solution_name (optional, or "None" for default) - args[2+]: expression updates as "name=value" pairs - """ - if len(args) < 1: - print("ERROR: No .sim file path provided") - print( - "Usage: run_journal.exe solve_simulation.py [solution_name] [expr1=val1] ..." - ) - return False - - sim_file_path = args[0] - solution_name = args[1] if len(args) > 1 and args[1] != "None" else None - - # Parse expression updates - expression_updates = {} - for arg in args[2:]: - if "=" in arg: - name, value = arg.split("=", 1) - expression_updates[name] = float(value) - - # Get working directory - working_dir = os.path.dirname(os.path.abspath(sim_file_path)) - sim_filename = os.path.basename(sim_file_path) - - print(f"[JOURNAL] " + "=" * 60) - print(f"[JOURNAL] NX SIMULATION SOLVER (Assembly FEM Workflow)") - print(f"[JOURNAL] " + "=" * 60) - print(f"[JOURNAL] Simulation: {sim_filename}") - print(f"[JOURNAL] Working directory: {working_dir}") - print(f"[JOURNAL] Solution: {solution_name or 'Solution 1'}") - print(f"[JOURNAL] Expression updates: {len(expression_updates)}") - for name, value in expression_updates.items(): - print(f"[JOURNAL] {name} = {value}") - - try: - theSession = NXOpen.Session.GetSession() - - # Set load options - theSession.Parts.LoadOptions.LoadLatest = False - theSession.Parts.LoadOptions.ComponentLoadMethod = ( - NXOpen.LoadOptions.LoadMethod.FromDirectory - ) - theSession.Parts.LoadOptions.SetSearchDirectories([working_dir], [True]) - theSession.Parts.LoadOptions.ComponentsToLoad = NXOpen.LoadOptions.LoadComponents.All - theSession.Parts.LoadOptions.PartLoadOption = NXOpen.LoadOptions.LoadOption.FullyLoad - theSession.Parts.LoadOptions.SetInterpartData(True, NXOpen.LoadOptions.Parent.All) - theSession.Parts.LoadOptions.AbortOnFailure = False - - # Close any open parts - try: - theSession.Parts.CloseAll([NXOpen.BasePart.CloseWholeTree]) - except: - pass - - # Check for assembly FEM files - afm_files = [f for f in os.listdir(working_dir) if f.endswith(".afm")] - is_assembly = len(afm_files) > 0 - - if is_assembly and expression_updates: - print(f"[JOURNAL] ") - print(f"[JOURNAL] DETECTED: Multi-part Assembly FEM") - print(f"[JOURNAL] Using ASSEMBLY FEM WORKFLOW") - print(f"[JOURNAL] ") - return solve_assembly_fem_workflow( - theSession, sim_file_path, solution_name, expression_updates, working_dir - ) - else: - print(f"[JOURNAL] ") - print(f"[JOURNAL] Using SIMPLE WORKFLOW (no expression updates or single-part)") - print(f"[JOURNAL] ") - return solve_simple_workflow( - theSession, sim_file_path, solution_name, expression_updates, working_dir - ) - - except Exception as e: - print(f"[JOURNAL] FATAL ERROR: {e}") - import traceback - - traceback.print_exc() - return False - - -def solve_assembly_fem_workflow( - theSession, sim_file_path, solution_name, expression_updates, working_dir -): - """ - Full assembly FEM workflow based on recorded NX journal. - - This is the correct workflow for multi-part assembly FEMs. - """ - sim_filename = os.path.basename(sim_file_path) - - # ========================================================================== - # STEP 1: LOAD SIM FILE FIRST (loads entire assembly hierarchy) - # ========================================================================== - print(f"[JOURNAL] STEP 1: Loading SIM file and all components...") - - # CRITICAL: Open the SIM file FIRST using OpenActiveDisplay - # This loads the entire assembly FEM hierarchy (.afm, .fem, associated .prt files) - # The sim file knows its component structure and will load everything it needs - sim_file_full_path = os.path.join(working_dir, sim_filename) - print(f"[JOURNAL] Opening SIM file: {sim_filename}") - basePart, partLoadStatus = theSession.Parts.OpenActiveDisplay( - sim_file_full_path, NXOpen.DisplayPartOption.AllowAdditional - ) - partLoadStatus.Dispose() - - workSimPart = theSession.Parts.BaseWork - displaySimPart = theSession.Parts.BaseDisplay - print(f"[JOURNAL] SIM loaded: {workSimPart.Name}") - - # List loaded parts - print(f"[JOURNAL] Currently loaded parts:") - for part in theSession.Parts: - print(f"[JOURNAL] - {part.Name}") - - # ========================================================================== - # STEP 1b: LOAD GEOMETRY PARTS FOR EXPRESSION EDITING - # ========================================================================== - print(f"[JOURNAL] STEP 1b: Loading geometry parts for expression editing...") - - # The recorded journal loads these geometry parts explicitly: - # 1. ASSY_M1.prt - the main geometry assembly - # 2. M1_Blank_fem1_i.prt - idealized geometry for M1_Blank FEM - # 3. M1_Vertical_Support_Skeleton_fem1_i.prt - idealized geometry for support FEM - - # Load ASSY_M1.prt (to have the geometry assembly available) - assy_prt_path = os.path.join(working_dir, "ASSY_M1.prt") - if os.path.exists(assy_prt_path): - print(f"[JOURNAL] Loading ASSY_M1.prt...") - part1, was_loaded = find_or_open_part(theSession, assy_prt_path) - if was_loaded: - print(f"[JOURNAL] (already loaded)") - else: - print(f"[JOURNAL] WARNING: ASSY_M1.prt not found!") - - # Load M1_Blank_fem1_i.prt (idealized geometry for M1_Blank) - idealized_prt_path = os.path.join(working_dir, "M1_Blank_fem1_i.prt") - if os.path.exists(idealized_prt_path): - print(f"[JOURNAL] Loading M1_Blank_fem1_i.prt...") - part2, was_loaded = find_or_open_part(theSession, idealized_prt_path) - if was_loaded: - print(f"[JOURNAL] (already loaded)") - else: - print(f"[JOURNAL] WARNING: M1_Blank_fem1_i.prt not found!") - - # Load M1_Vertical_Support_Skeleton_fem1_i.prt (CRITICAL: idealized geometry for support) - skeleton_idealized_prt_path = os.path.join( - working_dir, "M1_Vertical_Support_Skeleton_fem1_i.prt" - ) - if os.path.exists(skeleton_idealized_prt_path): - print(f"[JOURNAL] Loading M1_Vertical_Support_Skeleton_fem1_i.prt...") - part3_skel, was_loaded = find_or_open_part(theSession, skeleton_idealized_prt_path) - if was_loaded: - print(f"[JOURNAL] (already loaded)") - else: - print(f"[JOURNAL] WARNING: M1_Vertical_Support_Skeleton_fem1_i.prt not found!") - - # ========================================================================== - # STEP 2: UPDATE EXPRESSIONS IN M1_BLANK AND REBUILD ALL GEOMETRY - # ========================================================================== - print(f"[JOURNAL] STEP 2: Updating expressions in M1_Blank...") - - # Find and switch to M1_Blank part - try: - part3 = theSession.Parts.FindObject("M1_Blank") - markId3 = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Visible, "Change Displayed Part" - ) - status1, partLoadStatus3 = theSession.Parts.SetActiveDisplay( - part3, - NXOpen.DisplayPartOption.AllowAdditional, - NXOpen.PartDisplayPartWorkPartOption.UseLast, - ) - partLoadStatus3.Dispose() - - # Switch to modeling application for expression editing - theSession.ApplicationSwitchImmediate("UG_APP_MODELING") - - workPart = theSession.Parts.Work - - # Create undo mark for expressions - markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start") - theSession.SetUndoMarkName(markId4, "Expressions Dialog") - - # Write expressions to a temp file and import (more reliable than editing one by one) - exp_file_path = os.path.join(working_dir, "_temp_expressions.exp") - with open(exp_file_path, "w") as f: - for expr_name, expr_value in expression_updates.items(): - # Determine unit - if "angle" in expr_name.lower() or "vertical" in expr_name.lower(): - unit_str = "Degrees" - else: - unit_str = "MilliMeter" - f.write(f"[{unit_str}]{expr_name}={expr_value}\n") - print(f"[JOURNAL] {expr_name} = {expr_value} ({unit_str})") - - print(f"[JOURNAL] Importing expressions from file...") - markId_import = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Visible, "Import Expressions" - ) - - try: - expModified, errorMessages = workPart.Expressions.ImportFromFile( - exp_file_path, NXOpen.ExpressionCollection.ImportMode.Replace - ) - print(f"[JOURNAL] Expressions imported: {expModified} modified") - if errorMessages: - print(f"[JOURNAL] Import errors: {errorMessages}") - - # Update geometry after import - print(f"[JOURNAL] Rebuilding M1_Blank geometry...") - markId_update = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Invisible, "NX update" - ) - nErrs = theSession.UpdateManager.DoUpdate(markId_update) - theSession.DeleteUndoMark(markId_update, "NX update") - print(f"[JOURNAL] M1_Blank geometry rebuilt ({nErrs} errors)") - - # CRITICAL: Save M1_Blank after geometry update so FEM can read updated geometry - print(f"[JOURNAL] Saving M1_Blank...") - partSaveStatus_blank = workPart.Save( - NXOpen.BasePart.SaveComponents.TrueValue, NXOpen.BasePart.CloseAfterSave.FalseValue - ) - partSaveStatus_blank.Dispose() - print(f"[JOURNAL] M1_Blank saved") - - # STEP 2a: EXTRACT MASS FROM M1_BLANK - # Extract mass using MeasureManager after geometry is updated - print(f"[JOURNAL] Extracting mass from M1_Blank...") - try: - mass_kg = extract_part_mass(theSession, workPart, working_dir) - print(f"[JOURNAL] Mass extracted: {mass_kg:.6f} kg ({mass_kg * 1000:.2f} g)") - except Exception as mass_err: - print(f"[JOURNAL] WARNING: Mass extraction failed: {mass_err}") - - updated_expressions = list(expression_updates.keys()) - - except Exception as e: - print(f"[JOURNAL] ERROR importing expressions: {e}") - updated_expressions = [] - - # Clean up temp file - try: - os.remove(exp_file_path) - except: - pass - - theSession.SetUndoMarkName(markId4, "Expressions") - - except Exception as e: - print(f"[JOURNAL] ERROR updating expressions: {e}") - - # ========================================================================== - # STEP 2b: UPDATE ALL LINKED GEOMETRY PARTS - # ========================================================================== - # CRITICAL: Must update ALL geometry parts that have linked expressions - # before updating FEMs, otherwise interface nodes won't be coincident! - print(f"[JOURNAL] STEP 2b: Updating all linked geometry parts...") - - # List of geometry parts that may have linked expressions from M1_Blank - linked_geometry_parts = [ - "M1_Vertical_Support_Skeleton", - # Add more parts here if the assembly has additional linked geometry - ] - - for part_name in linked_geometry_parts: - try: - print(f"[JOURNAL] Updating {part_name}...") - linked_part = theSession.Parts.FindObject(part_name) - - markId_linked = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Visible, f"Update {part_name}" - ) - status_linked, partLoadStatus_linked = theSession.Parts.SetActiveDisplay( - linked_part, - NXOpen.DisplayPartOption.AllowAdditional, - NXOpen.PartDisplayPartWorkPartOption.UseLast, - ) - partLoadStatus_linked.Dispose() - - # Switch to modeling application - theSession.ApplicationSwitchImmediate("UG_APP_MODELING") - - # Update to propagate linked expression changes - markId_linked_update = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Invisible, "NX update" - ) - nErrs_linked = theSession.UpdateManager.DoUpdate(markId_linked_update) - theSession.DeleteUndoMark(markId_linked_update, "NX update") - print(f"[JOURNAL] {part_name} geometry rebuilt ({nErrs_linked} errors)") - - # CRITICAL: Save part after geometry update so FEM can read updated geometry - print(f"[JOURNAL] Saving {part_name}...") - partSaveStatus_linked = linked_part.Save( - NXOpen.BasePart.SaveComponents.TrueValue, NXOpen.BasePart.CloseAfterSave.FalseValue - ) - partSaveStatus_linked.Dispose() - print(f"[JOURNAL] {part_name} saved") - - except Exception as e: - print(f"[JOURNAL] WARNING: Could not update {part_name}: {e}") - print(f"[JOURNAL] (Part may not exist in this assembly)") - - # ========================================================================== - # STEP 3: OPEN SIM AND UPDATE COMPONENT FEMs - # ========================================================================== - print(f"[JOURNAL] STEP 3: Opening sim and updating component FEMs...") - - # Try to find the sim part first (like the recorded journal does) - # This ensures we're working with the same loaded sim part context - sim_part_name = os.path.splitext(sim_filename)[0] # e.g., "ASSY_M1_assyfem1_sim1" - print(f"[JOURNAL] Looking for sim part: {sim_part_name}") - - markId_sim = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Visible, "Change Displayed Part" - ) - - try: - # First try to find it among loaded parts (like recorded journal) - simPart1 = theSession.Parts.FindObject(sim_part_name) - status_sim, partLoadStatus = theSession.Parts.SetActiveDisplay( - simPart1, - NXOpen.DisplayPartOption.AllowAdditional, - NXOpen.PartDisplayPartWorkPartOption.UseLast, - ) - partLoadStatus.Dispose() - print(f"[JOURNAL] Found and activated existing sim part") - except: - # Fallback: Open fresh if not found - print(f"[JOURNAL] Sim part not found, opening fresh: {sim_filename}") - basePart, partLoadStatus = theSession.Parts.OpenActiveDisplay( - sim_file_path, NXOpen.DisplayPartOption.AllowAdditional - ) - partLoadStatus.Dispose() - - workSimPart = theSession.Parts.BaseWork - displaySimPart = theSession.Parts.BaseDisplay - theSession.ApplicationSwitchImmediate("UG_APP_SFEM") - theSession.Post.UpdateUserGroupsFromSimPart(workSimPart) - - # Navigate component hierarchy - try: - rootComponent = workSimPart.ComponentAssembly.RootComponent - component1 = rootComponent.FindObject("COMPONENT ASSY_M1_assyfem1 1") - - # Update M1_Blank_fem1 - print(f"[JOURNAL] Updating M1_Blank_fem1...") - try: - component2 = component1.FindObject("COMPONENT M1_Blank_fem1 1") - markId_fem1 = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Visible, "Make Work Part" - ) - partLoadStatus5 = theSession.Parts.SetWorkComponent( - component2, - NXOpen.PartCollection.RefsetOption.Entire, - NXOpen.PartCollection.WorkComponentOption.Visible, - ) - workFemPart = theSession.Parts.BaseWork - partLoadStatus5.Dispose() - - markId_update1 = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Visible, "Update FE Model" - ) - fEModel1 = workFemPart.FindObject("FEModel") - fEModel1.UpdateFemodel() - print(f"[JOURNAL] M1_Blank_fem1 updated") - - # CRITICAL: Save FEM file after update to persist mesh changes - print(f"[JOURNAL] Saving M1_Blank_fem1...") - partSaveStatus_fem1 = workFemPart.Save( - NXOpen.BasePart.SaveComponents.TrueValue, NXOpen.BasePart.CloseAfterSave.FalseValue - ) - partSaveStatus_fem1.Dispose() - print(f"[JOURNAL] M1_Blank_fem1 saved") - except Exception as e: - print(f"[JOURNAL] WARNING: M1_Blank_fem1: {e}") - - # Update M1_Vertical_Support_Skeleton_fem1 - print(f"[JOURNAL] Updating M1_Vertical_Support_Skeleton_fem1...") - try: - component3 = component1.FindObject("COMPONENT M1_Vertical_Support_Skeleton_fem1 3") - markId_fem2 = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Visible, "Make Work Part" - ) - partLoadStatus6 = theSession.Parts.SetWorkComponent( - component3, - NXOpen.PartCollection.RefsetOption.Entire, - NXOpen.PartCollection.WorkComponentOption.Visible, - ) - workFemPart = theSession.Parts.BaseWork - partLoadStatus6.Dispose() - - markId_update2 = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Visible, "Update FE Model" - ) - fEModel2 = workFemPart.FindObject("FEModel") - fEModel2.UpdateFemodel() - print(f"[JOURNAL] M1_Vertical_Support_Skeleton_fem1 updated") - - # CRITICAL: Save FEM file after update to persist mesh changes - print(f"[JOURNAL] Saving M1_Vertical_Support_Skeleton_fem1...") - partSaveStatus_fem2 = workFemPart.Save( - NXOpen.BasePart.SaveComponents.TrueValue, NXOpen.BasePart.CloseAfterSave.FalseValue - ) - partSaveStatus_fem2.Dispose() - print(f"[JOURNAL] M1_Vertical_Support_Skeleton_fem1 saved") - except Exception as e: - print(f"[JOURNAL] WARNING: M1_Vertical_Support_Skeleton_fem1: {e}") - - except Exception as e: - print(f"[JOURNAL] ERROR navigating component hierarchy: {e}") - - # ========================================================================== - # STEP 4: MERGE DUPLICATE NODES - # ========================================================================== - print(f"[JOURNAL] STEP 4: Merging duplicate nodes...") - - try: - # Switch to assembly FEM - partLoadStatus8 = theSession.Parts.SetWorkComponent( - component1, - NXOpen.PartCollection.RefsetOption.Entire, - NXOpen.PartCollection.WorkComponentOption.Visible, - ) - workAssyFemPart = theSession.Parts.BaseWork - displaySimPart = theSession.Parts.BaseDisplay - partLoadStatus8.Dispose() - print(f"[JOURNAL] Switched to assembly FEM: {workAssyFemPart.Name}") - - markId_merge = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start") - - # WORKAROUND: Force display refresh before duplicate node check - # The recorded journal does zoom operations before checking - this may - # be needed to refresh the internal mesh representation - try: - displaySimPart.ModelingViews.WorkView.Fit() - print(f"[JOURNAL] Forced view Fit() to refresh display") - except Exception as fit_err: - print(f"[JOURNAL] View Fit() failed (non-critical): {fit_err}") - - caePart1 = workAssyFemPart - duplicateNodesCheckBuilder1 = caePart1.ModelCheckMgr.CreateDuplicateNodesCheckBuilder() - - # Set tolerance - unit_tol = duplicateNodesCheckBuilder1.Tolerance.Units - duplicateNodesCheckBuilder1.Tolerance.Units = unit_tol - duplicateNodesCheckBuilder1.Tolerance.SetFormula("0.01") - print(f"[JOURNAL] Tolerance: 0.01 mm") - - # Enable occurrence node merge - CRITICAL for assembly FEM - duplicateNodesCheckBuilder1.MergeOccurrenceNodes = True - print(f"[JOURNAL] MergeOccurrenceNodes: True") - - theSession.SetUndoMarkName(markId_merge, "Duplicate Nodes Dialog") - - # Configure display settings - displaysettings1 = NXOpen.CAE.ModelCheck.DuplicateNodesCheckBuilder.DisplaySettings() - displaysettings1.ShowDuplicateNodes = True - displaysettings1.ShowMergedNodeLabels = False - displaysettings1.ShowRetainedNodeLabels = False - displaysettings1.KeepNodesColor = displaySimPart.Colors.Find("Blue") - displaysettings1.MergeNodesColor = displaySimPart.Colors.Find("Yellow") - displaysettings1.UnableToMergeNodesColor = displaySimPart.Colors.Find("Red") - duplicateNodesCheckBuilder1.DisplaySettingsData = displaysettings1 - - # Check scope - duplicateNodesCheckBuilder1.CheckScopeOption = NXOpen.CAE.ModelCheck.CheckScope.Displayed - print(f"[JOURNAL] CheckScope: Displayed") - - # Identify duplicates - print(f"[JOURNAL] Identifying duplicate nodes...") - numDuplicates = duplicateNodesCheckBuilder1.IdentifyDuplicateNodes() - print(f"[JOURNAL] IdentifyDuplicateNodes returned: {numDuplicates}") - - # WORKAROUND: In batch mode, IdentifyDuplicateNodes() often returns None - # even when duplicates exist. The recorded NX journal doesn't check the - # return value - it just calls MergeDuplicateNodes unconditionally. - # So we do the same: always attempt to merge. - print(f"[JOURNAL] Attempting to merge duplicate nodes...") - try: - numMerged = duplicateNodesCheckBuilder1.MergeDuplicateNodes() - print(f"[JOURNAL] MergeDuplicateNodes returned: {numMerged}") - if numMerged is not None and numMerged > 0: - print(f"[JOURNAL] Successfully merged {numMerged} duplicate node sets") - elif numMerged == 0: - print(f"[JOURNAL] No nodes were merged (0 returned)") - if numDuplicates is None: - print( - f"[JOURNAL] WARNING: IdentifyDuplicateNodes returned None - mesh may need display refresh" - ) - else: - print(f"[JOURNAL] MergeDuplicateNodes returned None - batch mode limitation") - except Exception as merge_error: - print(f"[JOURNAL] MergeDuplicateNodes failed: {merge_error}") - if numDuplicates is None: - print( - f"[JOURNAL] This combined with IdentifyDuplicateNodes=None suggests display issue" - ) - - theSession.SetUndoMarkName(markId_merge, "Duplicate Nodes") - duplicateNodesCheckBuilder1.Destroy() - theSession.DeleteUndoMark(markId_merge, None) - - except Exception as e: - print(f"[JOURNAL] WARNING: Node merge: {e}") - import traceback - - traceback.print_exc() - - # ========================================================================== - # STEP 5: RESOLVE LABEL CONFLICTS - # ========================================================================== - print(f"[JOURNAL] STEP 5: Resolving label conflicts...") - - try: - markId_labels = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start") - - assyFemPart1 = workAssyFemPart - assemblyLabelManagerBuilder1 = assyFemPart1.CreateAssemblyLabelManagerBuilder() - - theSession.SetUndoMarkName(markId_labels, "Assembly Label Manager Dialog") - - markId_labels2 = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Invisible, "Assembly Label Manager" - ) - - # Set offsets for each FE model occurrence - # These offsets ensure unique node/element labels across components - entitytypes = [ - NXOpen.CAE.AssemblyLabelManagerBuilder.EntityType.Node, - NXOpen.CAE.AssemblyLabelManagerBuilder.EntityType.Element, - NXOpen.CAE.AssemblyLabelManagerBuilder.EntityType.Csys, - NXOpen.CAE.AssemblyLabelManagerBuilder.EntityType.Physical, - NXOpen.CAE.AssemblyLabelManagerBuilder.EntityType.Group, - NXOpen.CAE.AssemblyLabelManagerBuilder.EntityType.Ply, - NXOpen.CAE.AssemblyLabelManagerBuilder.EntityType.Ssmo, - ] - - # Apply offsets to each occurrence (values from recorded journal) - occurrence_offsets = [ - ("FEModelOccurrence[3]", 2), - ("FEModelOccurrence[4]", 74), - ("FEModelOccurrence[5]", 146), - ("FEModelOccurrence[7]", 218), - ] - - for occ_name, offset_val in occurrence_offsets: - try: - fEModelOcc = workAssyFemPart.FindObject(occ_name) - offsets = [offset_val] * 7 - assemblyLabelManagerBuilder1.SetFEModelOccOffsets(fEModelOcc, entitytypes, offsets) - except: - pass # Some occurrences may not exist - - nXObject1 = assemblyLabelManagerBuilder1.Commit() - - theSession.DeleteUndoMark(markId_labels2, None) - theSession.SetUndoMarkName(markId_labels, "Assembly Label Manager") - assemblyLabelManagerBuilder1.Destroy() - - print(f"[JOURNAL] Label conflicts resolved") - - except Exception as e: - print(f"[JOURNAL] WARNING: Label management: {e}") - - # ========================================================================== - # STEP 5b: SAVE ASSEMBLY FEM - # ========================================================================== - print(f"[JOURNAL] STEP 5b: Saving assembly FEM after all updates...") - try: - # Save the assembly FEM to persist all mesh updates and node merges - partSaveStatus_afem = workAssyFemPart.Save( - NXOpen.BasePart.SaveComponents.TrueValue, NXOpen.BasePart.CloseAfterSave.FalseValue - ) - partSaveStatus_afem.Dispose() - print(f"[JOURNAL] Assembly FEM saved: {workAssyFemPart.Name}") - except Exception as e: - print(f"[JOURNAL] WARNING: Could not save assembly FEM: {e}") - - # ========================================================================== - # STEP 6: SOLVE - # ========================================================================== - print(f"[JOURNAL] STEP 6: Solving simulation...") - - try: - # Return to sim level by setting null component - partLoadStatus9 = theSession.Parts.SetWorkComponent( - NXOpen.Assemblies.Component.Null, - NXOpen.PartCollection.RefsetOption.Entire, - NXOpen.PartCollection.WorkComponentOption.Visible, - ) - workSimPart = theSession.Parts.BaseWork - partLoadStatus9.Dispose() - - # Set up solve - markId_solve = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start") - theSession.SetUndoMarkName(markId_solve, "Solve Dialog") - - markId_solve2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Solve") - - theCAESimSolveManager = NXOpen.CAE.SimSolveManager.GetSimSolveManager(theSession) - - simSimulation1 = workSimPart.FindObject("Simulation") - sol_name = solution_name if solution_name else "Solution 1" - simSolution1 = simSimulation1.FindObject(f"Solution[{sol_name}]") - - psolutions1 = [simSolution1] - - print(f"[JOURNAL] Solving: {sol_name} (Foreground mode)") - numsolved, numfailed, numskipped = theCAESimSolveManager.SolveChainOfSolutions( - psolutions1, - NXOpen.CAE.SimSolution.SolveOption.Solve, - NXOpen.CAE.SimSolution.SetupCheckOption.CompleteCheckAndOutputErrors, - NXOpen.CAE.SimSolution.SolveMode.Foreground, # Use Foreground to ensure OP2 is complete - ) - - theSession.DeleteUndoMark(markId_solve2, None) - theSession.SetUndoMarkName(markId_solve, "Solve") - - print( - f"[JOURNAL] Solve completed: {numsolved} solved, {numfailed} failed, {numskipped} skipped" - ) - - # ========================================================================== - # STEP 7: SAVE ALL - Save all modified parts (FEM, SIM, PRT) - # ========================================================================== - print(f"[JOURNAL] STEP 7: Saving all modified parts...") - try: - anyPartsModified, partSaveStatus_all = theSession.Parts.SaveAll() - partSaveStatus_all.Dispose() - print(f"[JOURNAL] SaveAll completed (parts modified: {anyPartsModified})") - except Exception as e: - print(f"[JOURNAL] WARNING: SaveAll failed: {e}") - - return numfailed == 0 - - except Exception as e: - print(f"[JOURNAL] ERROR solving: {e}") - import traceback - - traceback.print_exc() - return False - - -def solve_simple_workflow( - theSession, sim_file_path, solution_name, expression_updates, working_dir -): - """ - Workflow for single-part simulations with optional expression updates. - - For single-part FEMs (Bracket.prt -> Bracket_fem1.fem -> Bracket_sim1.sim): - 1. Open the .sim file (this loads .fem and .prt) - 2. If expression_updates: find the geometry .prt, update expressions, rebuild - 3. Update the FEM mesh - 4. Solve - """ - print(f"[JOURNAL] Opening simulation: {sim_file_path}") - - # Open the .sim file - basePart1, partLoadStatus1 = theSession.Parts.OpenActiveDisplay( - sim_file_path, NXOpen.DisplayPartOption.AllowAdditional - ) - partLoadStatus1.Dispose() - - workSimPart = theSession.Parts.BaseWork - - # ========================================================================= - # STEP 1: UPDATE EXPRESSIONS IN GEOMETRY PART (if any) - # ========================================================================= - if expression_updates: - print(f"[JOURNAL] STEP 1: Updating expressions in geometry part...") - - # List all loaded parts for debugging - print(f"[JOURNAL] Currently loaded parts:") - for part in theSession.Parts: - print(f"[JOURNAL] - {part.Name} (type: {type(part).__name__})") - - # NX doesn't automatically load the geometry .prt when opening a SIM file - # We need to find and load it explicitly from the working directory - geom_part = None - - # First, try to find an already loaded geometry part - for part in theSession.Parts: - part_name = part.Name.lower() - part_type = type(part).__name__ - - # Skip FEM and SIM parts by type - if "fem" in part_type.lower() or "sim" in part_type.lower(): - continue - - # Skip parts with _fem or _sim in name - if "_fem" in part_name or "_sim" in part_name: - continue - - geom_part = part - print(f"[JOURNAL] Found geometry part (already loaded): {part.Name}") - break - - # If not found, try to load the geometry .prt file from working directory - if geom_part is None: - print(f"[JOURNAL] Geometry part not loaded, searching for .prt file...") - for filename in os.listdir(working_dir): - # Skip idealized parts (_i.prt), FEM parts, and SIM parts - if ( - filename.endswith(".prt") - and "_fem" not in filename.lower() - and "_sim" not in filename.lower() - and "_i.prt" not in filename.lower() - ): - prt_path = os.path.join(working_dir, filename) - print(f"[JOURNAL] Loading geometry part: {filename}") - try: - loaded_part, partLoadStatus = theSession.Parts.Open(prt_path) - partLoadStatus.Dispose() - # Check if load actually succeeded (Parts.Open can return None) - if loaded_part is not None: - geom_part = loaded_part - print(f"[JOURNAL] Geometry part loaded: {geom_part.Name}") - break - else: - print(f"[JOURNAL] WARNING: Parts.Open returned None for {filename}") - except Exception as e: - print(f"[JOURNAL] WARNING: Could not load {filename}: {e}") - - if geom_part: - try: - # Switch to the geometry part for expression editing - markId_expr = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Visible, "Update Expressions" - ) - status, partLoadStatus = theSession.Parts.SetActiveDisplay( - geom_part, - NXOpen.DisplayPartOption.AllowAdditional, - NXOpen.PartDisplayPartWorkPartOption.UseLast, - ) - partLoadStatus.Dispose() - - # Switch to modeling application for expression editing - theSession.ApplicationSwitchImmediate("UG_APP_MODELING") - - workPart = theSession.Parts.Work - - # Write expressions to temp file and import - exp_file_path = os.path.join(working_dir, "_temp_expressions.exp") - with open(exp_file_path, "w") as f: - for expr_name, expr_value in expression_updates.items(): - # Determine unit based on name - if "angle" in expr_name.lower(): - unit_str = "Degrees" - else: - unit_str = "MilliMeter" - f.write(f"[{unit_str}]{expr_name}={expr_value}\n") - print(f"[JOURNAL] {expr_name} = {expr_value} ({unit_str})") - - print(f"[JOURNAL] Importing expressions...") - expModified, errorMessages = workPart.Expressions.ImportFromFile( - exp_file_path, NXOpen.ExpressionCollection.ImportMode.Replace - ) - print(f"[JOURNAL] Expressions modified: {expModified}") - if errorMessages: - print(f"[JOURNAL] Import messages: {errorMessages}") - - # Update geometry - print(f"[JOURNAL] Rebuilding geometry...") - markId_update = theSession.SetUndoMark( - NXOpen.Session.MarkVisibility.Invisible, "NX update" - ) - nErrs = theSession.UpdateManager.DoUpdate(markId_update) - theSession.DeleteUndoMark(markId_update, "NX update") - print(f"[JOURNAL] Geometry rebuilt ({nErrs} errors)") - - # Save geometry part - print(f"[JOURNAL] Saving geometry part...") - partSaveStatus_geom = workPart.Save( - NXOpen.BasePart.SaveComponents.TrueValue, - NXOpen.BasePart.CloseAfterSave.FalseValue, - ) - partSaveStatus_geom.Dispose() - - # Clean up temp file - try: - os.remove(exp_file_path) - except: - pass - - except Exception as e: - print(f"[JOURNAL] ERROR updating expressions: {e}") - import traceback - - traceback.print_exc() - else: - print(f"[JOURNAL] WARNING: Could not find geometry part for expression updates!") - - # ========================================================================= - # STEP 2: UPDATE FEM MESH (if expressions were updated) - # ========================================================================= - if expression_updates: - print(f"[JOURNAL] STEP 2: Updating FEM mesh...") - - # First, load the idealized part if it exists (required for mesh update chain) - # The chain is: .prt (geometry) -> _i.prt (idealized) -> .fem (mesh) - idealized_part = None - for filename in os.listdir(working_dir): - if "_i.prt" in filename.lower(): - idealized_path = os.path.join(working_dir, filename) - print(f"[JOURNAL] Loading idealized part: {filename}") - try: - loaded_part, partLoadStatus = theSession.Parts.Open(idealized_path) - partLoadStatus.Dispose() - # Check if load actually succeeded (Parts.Open can return None) - if loaded_part is not None: - idealized_part = loaded_part - print(f"[JOURNAL] Idealized part loaded: {idealized_part.Name}") - else: - print(f"[JOURNAL] WARNING: Parts.Open returned None for idealized part") - except Exception as e: - print(f"[JOURNAL] WARNING: Could not load idealized part: {e}") - break - - # Find the FEM part - fem_part = None - for part in theSession.Parts: - if "_fem" in part.Name.lower() or part.Name.lower().endswith(".fem"): - fem_part = part - print(f"[JOURNAL] Found FEM part: {part.Name}") - break - - if fem_part: - try: - # Switch to FEM part - CRITICAL: Use SameAsDisplay to make FEM the work part - # This is required for UpdateFemodel() to properly regenerate the mesh - # Reference: tests/journal_with_regenerate.py line 76 - print(f"[JOURNAL] Switching to FEM part: {fem_part.Name}") - status, partLoadStatus = theSession.Parts.SetActiveDisplay( - fem_part, - NXOpen.DisplayPartOption.AllowAdditional, - NXOpen.PartDisplayPartWorkPartOption.SameAsDisplay, # Critical fix! - ) - partLoadStatus.Dispose() - - # Switch to FEM application - theSession.ApplicationSwitchImmediate("UG_APP_SFEM") - - # Update the FE model - workFemPart = theSession.Parts.BaseWork - feModel = workFemPart.FindObject("FEModel") - - print(f"[JOURNAL] Updating FE model...") - feModel.UpdateFemodel() - print(f"[JOURNAL] FE model updated") - - # Save FEM - partSaveStatus_fem = workFemPart.Save( - NXOpen.BasePart.SaveComponents.TrueValue, - NXOpen.BasePart.CloseAfterSave.FalseValue, - ) - partSaveStatus_fem.Dispose() - print(f"[JOURNAL] FEM saved") - - except Exception as e: - print(f"[JOURNAL] ERROR updating FEM: {e}") - import traceback - - traceback.print_exc() - - # ========================================================================= - # STEP 3: SWITCH BACK TO SIM AND SOLVE - # ========================================================================= - print(f"[JOURNAL] STEP 3: Solving simulation...") - - # Switch back to sim part - status, partLoadStatus = theSession.Parts.SetActiveDisplay( - workSimPart, - NXOpen.DisplayPartOption.AllowAdditional, - NXOpen.PartDisplayPartWorkPartOption.UseLast, - ) - partLoadStatus.Dispose() - - theSession.ApplicationSwitchImmediate("UG_APP_SFEM") - theSession.Post.UpdateUserGroupsFromSimPart(workSimPart) - - # Set up solve - markId_solve = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start") - theSession.SetUndoMarkName(markId_solve, "Solve Dialog") - - markId_solve2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Solve") - - theCAESimSolveManager = NXOpen.CAE.SimSolveManager.GetSimSolveManager(theSession) - - simSimulation1 = workSimPart.FindObject("Simulation") - sol_name = solution_name if solution_name else "Solution 1" - simSolution1 = simSimulation1.FindObject(f"Solution[{sol_name}]") - - psolutions1 = [simSolution1] - - print(f"[JOURNAL] Solving: {sol_name}") - numsolved, numfailed, numskipped = theCAESimSolveManager.SolveChainOfSolutions( - psolutions1, - NXOpen.CAE.SimSolution.SolveOption.Solve, - NXOpen.CAE.SimSolution.SetupCheckOption.CompleteCheckAndOutputErrors, - NXOpen.CAE.SimSolution.SolveMode.Foreground, # Use Foreground to wait for completion - ) - - theSession.DeleteUndoMark(markId_solve2, None) - theSession.SetUndoMarkName(markId_solve, "Solve") - - print( - f"[JOURNAL] Solve completed: {numsolved} solved, {numfailed} failed, {numskipped} skipped" - ) - - # Save all - try: - anyPartsModified, partSaveStatus = theSession.Parts.SaveAll() - partSaveStatus.Dispose() - print(f"[JOURNAL] Saved all parts!") - except: - pass - - return numfailed == 0 - - -if __name__ == "__main__": - success = main(sys.argv[1:]) - # NOTE: Do NOT use sys.exit() here! - # run_journal.exe treats SystemExit (even code 0) as "Syntax errors" - # and returns a non-zero exit code, which makes the solver think - # the journal crashed. Instead, we just let the script end naturally. - # The solver checks for output files (.op2, .f06) to determine success. - if not success: - print("[JOURNAL] FAILED - solve did not complete successfully") - diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter001/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter001/_temp_mass.txt new file mode 100644 index 00000000..3f08d065 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter001/_temp_mass.txt @@ -0,0 +1 @@ +p173=1133.0042670507723 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter001/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter001/results.json new file mode 100644 index 00000000..bde9c72e --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter001/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 1, + "mass_kg": NaN, + "tip_displacement_mm": 19.556875228881836, + "max_von_mises_mpa": 117.484125, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/_temp_mass.txt new file mode 100644 index 00000000..c8a2a38c --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/_temp_mass.txt @@ -0,0 +1 @@ +p173=1266.203458914867 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/params.json index e3eb4285..3745112b 100644 --- a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/params.json +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/params.json @@ -1,15 +1,15 @@ { "iteration": 2, "expressions": { - "beam_half_core_thickness": 16.7813185433211, - "beam_face_thickness": 26.83364680743843, - "holes_diameter": 192.42062402658527, - "hole_count": 8.0 + "beam_half_core_thickness": 29.33562637086642, + "beam_face_thickness": 10.867852359605202, + "holes_diameter": 208.82139200571257, + "hole_count": 6.0 }, "trial_input": { - "beam_half_core_thickness": 16.7813185433211, - "beam_face_thickness": 26.83364680743843, - "holes_diameter": 192.42062402658527, - "hole_count": 8 + "beam_half_core_thickness": 29.33562637086642, + "beam_face_thickness": 10.867852359605202, + "holes_diameter": 208.82139200571257, + "hole_count": 6 } } \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/results.json new file mode 100644 index 00000000..3c813f45 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter002/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 2, + "mass_kg": NaN, + "tip_displacement_mm": 24.064523696899414, + "max_von_mises_mpa": 398.4295, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter003/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter003/_temp_mass.txt new file mode 100644 index 00000000..94a0a212 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter003/_temp_mass.txt @@ -0,0 +1 @@ +p173=1109.9630535376045 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter003/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter003/params.json new file mode 100644 index 00000000..9c281a22 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter003/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 3, + "expressions": { + "beam_half_core_thickness": 16.654851585575436, + "beam_face_thickness": 25.92976843726266, + "holes_diameter": 249.7752118546045, + "hole_count": 7.0 + }, + "trial_input": { + "beam_half_core_thickness": 16.654851585575436, + "beam_face_thickness": 25.92976843726266, + "holes_diameter": 249.7752118546045, + "hole_count": 7 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter003/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter003/results.json new file mode 100644 index 00000000..607de7c8 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter003/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 3, + "mass_kg": NaN, + "tip_displacement_mm": 18.68077850341797, + "max_von_mises_mpa": 114.6584609375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter004/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter004/_temp_mass.txt new file mode 100644 index 00000000..f8160e44 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter004/_temp_mass.txt @@ -0,0 +1 @@ +p173=1718.1024059936985 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter004/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter004/params.json new file mode 100644 index 00000000..58350c84 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter004/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 4, + "expressions": { + "beam_half_core_thickness": 39.4879581560391, + "beam_face_thickness": 37.70634303203751, + "holes_diameter": 317.49333407316067, + "hole_count": 10.0 + }, + "trial_input": { + "beam_half_core_thickness": 39.4879581560391, + "beam_face_thickness": 37.70634303203751, + "holes_diameter": 317.49333407316067, + "hole_count": 10 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter004/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter004/results.json new file mode 100644 index 00000000..610183c9 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter004/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 4, + "mass_kg": NaN, + "tip_displacement_mm": 12.852874755859375, + "max_von_mises_mpa": 81.574234375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter005/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter005/_temp_mass.txt new file mode 100644 index 00000000..26adfa2e --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter005/_temp_mass.txt @@ -0,0 +1 @@ +p173=1205.9185440163983 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter005/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter005/params.json new file mode 100644 index 00000000..c54559a2 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter005/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 5, + "expressions": { + "beam_half_core_thickness": 18.667249127790498, + "beam_face_thickness": 27.961709646337493, + "holes_diameter": 215.2919645872769, + "hole_count": 12.0 + }, + "trial_input": { + "beam_half_core_thickness": 18.667249127790498, + "beam_face_thickness": 27.961709646337493, + "holes_diameter": 215.2919645872769, + "hole_count": 12 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter005/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter005/results.json new file mode 100644 index 00000000..cd3fab36 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter005/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 5, + "mass_kg": NaN, + "tip_displacement_mm": 17.29557228088379, + "max_von_mises_mpa": 106.283703125, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter006/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter006/_temp_mass.txt new file mode 100644 index 00000000..4f9d3cf2 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter006/_temp_mass.txt @@ -0,0 +1 @@ +p173=1085.4467002717115 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter006/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter006/params.json new file mode 100644 index 00000000..42eda315 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter006/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 6, + "expressions": { + "beam_half_core_thickness": 10.145147355948776, + "beam_face_thickness": 33.3870327520718, + "holes_diameter": 197.6501835498656, + "hole_count": 11.0 + }, + "trial_input": { + "beam_half_core_thickness": 10.145147355948776, + "beam_face_thickness": 33.3870327520718, + "holes_diameter": 197.6501835498656, + "hole_count": 11 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter006/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter006/results.json new file mode 100644 index 00000000..a4a699c3 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter006/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 6, + "mass_kg": NaN, + "tip_displacement_mm": 17.468721389770508, + "max_von_mises_mpa": 108.2625078125, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter007/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter007/_temp_mass.txt new file mode 100644 index 00000000..1170ab79 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter007/_temp_mass.txt @@ -0,0 +1 @@ +p173=1722.6740568945102 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter007/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter007/params.json new file mode 100644 index 00000000..7e8b070d --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter007/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 7, + "expressions": { + "beam_half_core_thickness": 36.424864472055134, + "beam_face_thickness": 22.317342276314122, + "holes_diameter": 221.080294100253, + "hole_count": 5.0 + }, + "trial_input": { + "beam_half_core_thickness": 36.424864472055134, + "beam_face_thickness": 22.317342276314122, + "holes_diameter": 221.080294100253, + "hole_count": 5 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter007/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter007/results.json new file mode 100644 index 00000000..c6f21f5d --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter007/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 7, + "mass_kg": NaN, + "tip_displacement_mm": 15.069981575012207, + "max_von_mises_mpa": 94.8715, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter008/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter008/_temp_mass.txt new file mode 100644 index 00000000..8dfedf85 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter008/_temp_mass.txt @@ -0,0 +1 @@ +p173=1182.0927892029772 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter008/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter008/params.json new file mode 100644 index 00000000..5285dfb7 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter008/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 8, + "expressions": { + "beam_half_core_thickness": 21.20971666430637, + "beam_face_thickness": 27.18728441912208, + "holes_diameter": 333.33951480703604, + "hole_count": 7.0 + }, + "trial_input": { + "beam_half_core_thickness": 21.20971666430637, + "beam_face_thickness": 27.18728441912208, + "holes_diameter": 333.33951480703604, + "hole_count": 7 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter008/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter008/results.json new file mode 100644 index 00000000..a2f71493 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter008/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 8, + "mass_kg": NaN, + "tip_displacement_mm": 18.190187454223633, + "max_von_mises_mpa": 123.9728203125, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter009/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter009/_temp_mass.txt new file mode 100644 index 00000000..a0abc6be --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter009/_temp_mass.txt @@ -0,0 +1 @@ +p173=1185.767642455542 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter009/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter009/params.json new file mode 100644 index 00000000..8589d4ef --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter009/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 9, + "expressions": { + "beam_half_core_thickness": 25.10064411916288, + "beam_face_thickness": 15.259636308480797, + "holes_diameter": 202.9393633023646, + "hole_count": 8.0 + }, + "trial_input": { + "beam_half_core_thickness": 25.10064411916288, + "beam_face_thickness": 15.259636308480797, + "holes_diameter": 202.9393633023646, + "hole_count": 8 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter009/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter009/results.json new file mode 100644 index 00000000..e9529bb1 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter009/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 9, + "mass_kg": NaN, + "tip_displacement_mm": 21.658220291137695, + "max_von_mises_mpa": 202.82671875, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter010/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter010/_temp_mass.txt new file mode 100644 index 00000000..d8fc134a --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter010/_temp_mass.txt @@ -0,0 +1 @@ +p173=987.0960407947643 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter010/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter010/params.json new file mode 100644 index 00000000..968d2828 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter010/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 10, + "expressions": { + "beam_half_core_thickness": 23.5377088486766, + "beam_face_thickness": 15.77772417637908, + "holes_diameter": 295.1158776920038, + "hole_count": 12.0 + }, + "trial_input": { + "beam_half_core_thickness": 23.5377088486766, + "beam_face_thickness": 15.77772417637908, + "holes_diameter": 295.1158776920038, + "hole_count": 12 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter010/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter010/results.json new file mode 100644 index 00000000..7ff1cb5f --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter010/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 10, + "mass_kg": NaN, + "tip_displacement_mm": 24.221370697021484, + "max_von_mises_mpa": 190.267625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter011/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter011/_temp_mass.txt new file mode 100644 index 00000000..6ed18683 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter011/_temp_mass.txt @@ -0,0 +1 @@ +p173=1082.1233483234582 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter011/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter011/params.json new file mode 100644 index 00000000..22262540 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter011/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 11, + "expressions": { + "beam_half_core_thickness": 11.932749457620524, + "beam_face_thickness": 35.9698658865046, + "holes_diameter": 357.1996739776378, + "hole_count": 9.0 + }, + "trial_input": { + "beam_half_core_thickness": 11.932749457620524, + "beam_face_thickness": 35.9698658865046, + "holes_diameter": 357.1996739776378, + "hole_count": 9 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter011/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter011/results.json new file mode 100644 index 00000000..a6358483 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter011/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 11, + "mass_kg": NaN, + "tip_displacement_mm": 19.1060733795166, + "max_von_mises_mpa": 133.927765625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter012/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter012/_temp_mass.txt new file mode 100644 index 00000000..42957ad8 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter012/_temp_mass.txt @@ -0,0 +1 @@ +p173=783.4437976533501 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter012/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter012/params.json new file mode 100644 index 00000000..d7c270fa --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter012/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 12, + "expressions": { + "beam_half_core_thickness": 12.590502697615015, + "beam_face_thickness": 24.283216775288818, + "holes_diameter": 436.6385439056947, + "hole_count": 8.0 + }, + "trial_input": { + "beam_half_core_thickness": 12.590502697615015, + "beam_face_thickness": 24.283216775288818, + "holes_diameter": 436.6385439056947, + "hole_count": 8 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter012/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter012/results.json new file mode 100644 index 00000000..56abf664 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter012/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 12, + "mass_kg": NaN, + "tip_displacement_mm": 31.39129066467285, + "max_von_mises_mpa": 278.0956875, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter013/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter013/_temp_mass.txt new file mode 100644 index 00000000..a2dc16cd --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter013/_temp_mass.txt @@ -0,0 +1 @@ +p173=911.7858841605309 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter013/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter013/params.json new file mode 100644 index 00000000..d2ac2e5f --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter013/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 13, + "expressions": { + "beam_half_core_thickness": 20.01642602550961, + "beam_face_thickness": 12.736672936148768, + "holes_diameter": 235.02126154120555, + "hole_count": 14.0 + }, + "trial_input": { + "beam_half_core_thickness": 20.01642602550961, + "beam_face_thickness": 12.736672936148768, + "holes_diameter": 235.02126154120555, + "hole_count": 14 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter013/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter013/results.json new file mode 100644 index 00000000..6f5f54a2 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter013/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 13, + "mass_kg": NaN, + "tip_displacement_mm": 27.53583335876465, + "max_von_mises_mpa": 291.43825, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter014/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter014/_temp_mass.txt new file mode 100644 index 00000000..4e7dc57f --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter014/_temp_mass.txt @@ -0,0 +1 @@ +p173=1937.3276879524951 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter014/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter014/params.json new file mode 100644 index 00000000..1613565f --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter014/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 14, + "expressions": { + "beam_half_core_thickness": 32.781509299259234, + "beam_face_thickness": 39.647413256693376, + "holes_diameter": 172.7124919630828, + "hole_count": 7.0 + }, + "trial_input": { + "beam_half_core_thickness": 32.781509299259234, + "beam_face_thickness": 39.647413256693376, + "holes_diameter": 172.7124919630828, + "hole_count": 7 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter014/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter014/results.json new file mode 100644 index 00000000..96dd4484 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter014/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 14, + "mass_kg": NaN, + "tip_displacement_mm": 11.77879810333252, + "max_von_mises_mpa": 75.011625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter015/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter015/_temp_mass.txt new file mode 100644 index 00000000..c91b09d7 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter015/_temp_mass.txt @@ -0,0 +1 @@ +p173=1641.9393126854027 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter015/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter015/params.json new file mode 100644 index 00000000..c0ec4214 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter015/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 15, + "expressions": { + "beam_half_core_thickness": 38.451363316179766, + "beam_face_thickness": 16.7003930823653, + "holes_diameter": 186.1758118536306, + "hole_count": 12.0 + }, + "trial_input": { + "beam_half_core_thickness": 38.451363316179766, + "beam_face_thickness": 16.7003930823653, + "holes_diameter": 186.1758118536306, + "hole_count": 12 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter015/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter015/results.json new file mode 100644 index 00000000..ef20bf09 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter015/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 15, + "mass_kg": NaN, + "tip_displacement_mm": 16.785146713256836, + "max_von_mises_mpa": 169.51878125, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter016/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter016/_temp_mass.txt new file mode 100644 index 00000000..a16d7f1e --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter016/_temp_mass.txt @@ -0,0 +1 @@ +p173=1166.4986109547917 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter016/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter016/params.json new file mode 100644 index 00000000..0c2c1c8e --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter016/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 16, + "expressions": { + "beam_half_core_thickness": 27.22384374533999, + "beam_face_thickness": 21.60434641918486, + "holes_diameter": 399.6751297258189, + "hole_count": 6.0 + }, + "trial_input": { + "beam_half_core_thickness": 27.22384374533999, + "beam_face_thickness": 21.60434641918486, + "holes_diameter": 399.6751297258189, + "hole_count": 6 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter016/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter016/results.json new file mode 100644 index 00000000..be95d3f6 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter016/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 16, + "mass_kg": NaN, + "tip_displacement_mm": 21.478872299194336, + "max_von_mises_mpa": 185.178296875, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter017/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter017/_temp_mass.txt new file mode 100644 index 00000000..2e461f39 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter017/_temp_mass.txt @@ -0,0 +1 @@ +p173=1165.9879420724315 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter017/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter017/params.json new file mode 100644 index 00000000..af1371f9 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter017/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 17, + "expressions": { + "beam_half_core_thickness": 33.00141187580357, + "beam_face_thickness": 12.103605508453288, + "holes_diameter": 352.97644218877866, + "hole_count": 7.0 + }, + "trial_input": { + "beam_half_core_thickness": 33.00141187580357, + "beam_face_thickness": 12.103605508453288, + "holes_diameter": 352.97644218877866, + "hole_count": 7 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter017/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter017/results.json new file mode 100644 index 00000000..1b90714c --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter017/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 17, + "mass_kg": NaN, + "tip_displacement_mm": 24.657197952270508, + "max_von_mises_mpa": 320.08565625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter018/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter018/_temp_mass.txt new file mode 100644 index 00000000..6d7e3111 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter018/_temp_mass.txt @@ -0,0 +1 @@ +p173=1487.6954250173942 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter018/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter018/params.json new file mode 100644 index 00000000..12ed025c --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter018/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 18, + "expressions": { + "beam_half_core_thickness": 30.986372756119685, + "beam_face_thickness": 19.16832222642944, + "holes_diameter": 154.19092746511274, + "hole_count": 15.0 + }, + "trial_input": { + "beam_half_core_thickness": 30.986372756119685, + "beam_face_thickness": 19.16832222642944, + "holes_diameter": 154.19092746511274, + "hole_count": 15 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter018/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter018/results.json new file mode 100644 index 00000000..95609d82 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter018/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 18, + "mass_kg": NaN, + "tip_displacement_mm": 17.36627769470215, + "max_von_mises_mpa": 129.0215078125, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter019/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter019/_temp_mass.txt new file mode 100644 index 00000000..449740b7 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter019/_temp_mass.txt @@ -0,0 +1 @@ +p173=1211.87211970739 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter019/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter019/params.json new file mode 100644 index 00000000..8e751c64 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter019/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 19, + "expressions": { + "beam_half_core_thickness": 19.50323693257984, + "beam_face_thickness": 31.89937313493798, + "holes_diameter": 382.0105860159447, + "hole_count": 6.0 + }, + "trial_input": { + "beam_half_core_thickness": 19.50323693257984, + "beam_face_thickness": 31.89937313493798, + "holes_diameter": 382.0105860159447, + "hole_count": 6 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter019/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter019/results.json new file mode 100644 index 00000000..ac3e238d --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter019/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 19, + "mass_kg": NaN, + "tip_displacement_mm": 17.949995040893555, + "max_von_mises_mpa": 127.061125, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter020/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter020/_temp_mass.txt new file mode 100644 index 00000000..7780690a --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter020/_temp_mass.txt @@ -0,0 +1 @@ +p173=1149.200700206242 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter020/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter020/params.json new file mode 100644 index 00000000..082789f0 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter020/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 20, + "expressions": { + "beam_half_core_thickness": 13.727845373498717, + "beam_face_thickness": 29.571387264342114, + "holes_diameter": 158.4545070511115, + "hole_count": 6.0 + }, + "trial_input": { + "beam_half_core_thickness": 13.727845373498717, + "beam_face_thickness": 29.571387264342114, + "holes_diameter": 158.4545070511115, + "hole_count": 6 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter020/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter020/results.json new file mode 100644 index 00000000..b334c236 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter020/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 20, + "mass_kg": NaN, + "tip_displacement_mm": 17.506193161010742, + "max_von_mises_mpa": 110.5740859375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter021/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter021/_temp_mass.txt new file mode 100644 index 00000000..5e0bf78e --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter021/_temp_mass.txt @@ -0,0 +1 @@ +p173=1493.3399471409589 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter021/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter021/params.json new file mode 100644 index 00000000..cd4dac3f --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter021/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 21, + "expressions": { + "beam_half_core_thickness": 39.182912433667966, + "beam_face_thickness": 13.547410048410338, + "holes_diameter": 242.6447570355275, + "hole_count": 10.0 + }, + "trial_input": { + "beam_half_core_thickness": 39.182912433667966, + "beam_face_thickness": 13.547410048410338, + "holes_diameter": 242.6447570355275, + "hole_count": 10 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter021/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter021/results.json new file mode 100644 index 00000000..e372db28 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter021/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 21, + "mass_kg": NaN, + "tip_displacement_mm": 18.839136123657227, + "max_von_mises_mpa": 256.434484375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter022/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter022/_temp_mass.txt new file mode 100644 index 00000000..05d1ba37 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter022/_temp_mass.txt @@ -0,0 +1 @@ +p173=686.2888916637669 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter022/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter022/params.json new file mode 100644 index 00000000..0bf85a45 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter022/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 22, + "expressions": { + "beam_half_core_thickness": 11.508005001497104, + "beam_face_thickness": 13.78017571971355, + "holes_diameter": 280.40478023124285, + "hole_count": 6.0 + }, + "trial_input": { + "beam_half_core_thickness": 11.508005001497104, + "beam_face_thickness": 13.78017571971355, + "holes_diameter": 280.40478023124285, + "hole_count": 6 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter022/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter022/results.json new file mode 100644 index 00000000..3fbf1288 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter022/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 22, + "mass_kg": NaN, + "tip_displacement_mm": 31.85018539428711, + "max_von_mises_mpa": 248.273609375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter023/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter023/_temp_mass.txt new file mode 100644 index 00000000..3075169d --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter023/_temp_mass.txt @@ -0,0 +1 @@ +p173=999.7016550018517 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter023/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter023/params.json new file mode 100644 index 00000000..bbfb7fa3 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter023/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 23, + "expressions": { + "beam_half_core_thickness": 17.419169007999646, + "beam_face_thickness": 17.917141385501917, + "holes_diameter": 175.7984093879865, + "hole_count": 9.0 + }, + "trial_input": { + "beam_half_core_thickness": 17.419169007999646, + "beam_face_thickness": 17.917141385501917, + "holes_diameter": 175.7984093879865, + "hole_count": 9 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter023/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter023/results.json new file mode 100644 index 00000000..022d25cf --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter023/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 23, + "mass_kg": NaN, + "tip_displacement_mm": 22.727807998657227, + "max_von_mises_mpa": 147.5830625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter024/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter024/_temp_mass.txt new file mode 100644 index 00000000..5a9ece2e --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter024/_temp_mass.txt @@ -0,0 +1 @@ +p173=1435.135535503974 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter024/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter024/params.json new file mode 100644 index 00000000..fe7fc846 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter024/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 24, + "expressions": { + "beam_half_core_thickness": 31.240370325087493, + "beam_face_thickness": 26.41009203906711, + "holes_diameter": 273.18266513234516, + "hole_count": 10.0 + }, + "trial_input": { + "beam_half_core_thickness": 31.240370325087493, + "beam_face_thickness": 26.41009203906711, + "holes_diameter": 273.18266513234516, + "hole_count": 10 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter024/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter024/results.json new file mode 100644 index 00000000..c71368dc --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter024/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 24, + "mass_kg": NaN, + "tip_displacement_mm": 15.669999122619629, + "max_von_mises_mpa": 93.16090625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter025/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter025/_temp_mass.txt new file mode 100644 index 00000000..f6270153 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter025/_temp_mass.txt @@ -0,0 +1 @@ +p173=1528.3897999240266 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter025/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter025/params.json new file mode 100644 index 00000000..d9f57f12 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter025/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 25, + "expressions": { + "beam_half_core_thickness": 26.00450478511711, + "beam_face_thickness": 33.73796956646058, + "holes_diameter": 309.2653422609983, + "hole_count": 5.0 + }, + "trial_input": { + "beam_half_core_thickness": 26.00450478511711, + "beam_face_thickness": 33.73796956646058, + "holes_diameter": 309.2653422609983, + "hole_count": 5 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter025/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter025/results.json new file mode 100644 index 00000000..c8975a0c --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter025/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 25, + "mass_kg": NaN, + "tip_displacement_mm": 14.4290132522583, + "max_von_mises_mpa": 93.7885234375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter026/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter026/_temp_mass.txt new file mode 100644 index 00000000..4833a7d5 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter026/_temp_mass.txt @@ -0,0 +1 @@ +p173=1276.5504502481265 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter026/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter026/params.json new file mode 100644 index 00000000..66dd4c8a --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter026/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 26, + "expressions": { + "beam_half_core_thickness": 22.249541218652357, + "beam_face_thickness": 23.591878117279098, + "holes_diameter": 163.6658438964213, + "hole_count": 10.0 + }, + "trial_input": { + "beam_half_core_thickness": 22.249541218652357, + "beam_face_thickness": 23.591878117279098, + "holes_diameter": 163.6658438964213, + "hole_count": 10 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter026/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter026/results.json new file mode 100644 index 00000000..9b152550 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter026/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 26, + "mass_kg": NaN, + "tip_displacement_mm": 17.734634399414062, + "max_von_mises_mpa": 110.49809375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter027/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter027/_temp_mass.txt new file mode 100644 index 00000000..0de6dd19 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter027/_temp_mass.txt @@ -0,0 +1 @@ +p173=1410.1593512483248 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter027/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter027/params.json new file mode 100644 index 00000000..74699eb2 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter027/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 27, + "expressions": { + "beam_half_core_thickness": 34.50742630475948, + "beam_face_thickness": 19.91457704426444, + "holes_diameter": 301.4331617880579, + "hole_count": 8.0 + }, + "trial_input": { + "beam_half_core_thickness": 34.50742630475948, + "beam_face_thickness": 19.91457704426444, + "holes_diameter": 301.4331617880579, + "hole_count": 8 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter027/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter027/results.json new file mode 100644 index 00000000..8a895d5c --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter027/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 27, + "mass_kg": NaN, + "tip_displacement_mm": 17.536535263061523, + "max_von_mises_mpa": 118.634125, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter028/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter028/_temp_mass.txt new file mode 100644 index 00000000..16efa515 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter028/_temp_mass.txt @@ -0,0 +1 @@ +p173=1582.291153913998 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter028/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter028/params.json new file mode 100644 index 00000000..ba3cb395 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter028/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 28, + "expressions": { + "beam_half_core_thickness": 37.19895822292572, + "beam_face_thickness": 36.450392892917435, + "holes_diameter": 405.40744176134933, + "hole_count": 7.0 + }, + "trial_input": { + "beam_half_core_thickness": 37.19895822292572, + "beam_face_thickness": 36.450392892917435, + "holes_diameter": 405.40744176134933, + "hole_count": 7 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter028/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter028/results.json new file mode 100644 index 00000000..7f0fa1b3 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter028/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 28, + "mass_kg": NaN, + "tip_displacement_mm": 15.368349075317383, + "max_von_mises_mpa": 122.3722265625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter029/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter029/_temp_mass.txt new file mode 100644 index 00000000..638aa4cb --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter029/_temp_mass.txt @@ -0,0 +1 @@ +p173=1398.2771475400532 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter029/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter029/params.json new file mode 100644 index 00000000..873686aa --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter029/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 29, + "expressions": { + "beam_half_core_thickness": 24.13665312381697, + "beam_face_thickness": 30.60108948604478, + "holes_diameter": 257.34854555318736, + "hole_count": 8.0 + }, + "trial_input": { + "beam_half_core_thickness": 24.13665312381697, + "beam_face_thickness": 30.60108948604478, + "holes_diameter": 257.34854555318736, + "hole_count": 8 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter029/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter029/results.json new file mode 100644 index 00000000..11b46e5c --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter029/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 29, + "mass_kg": NaN, + "tip_displacement_mm": 15.375892639160156, + "max_von_mises_mpa": 94.1200546875, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter030/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter030/_temp_mass.txt new file mode 100644 index 00000000..d27a9720 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter030/_temp_mass.txt @@ -0,0 +1 @@ +p173=1428.798569319311 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter030/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter030/params.json new file mode 100644 index 00000000..4bd509df --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter030/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 30, + "expressions": { + "beam_half_core_thickness": 30.315850546600835, + "beam_face_thickness": 28.803003242099344, + "holes_diameter": 286.25449297115927, + "hole_count": 11.0 + }, + "trial_input": { + "beam_half_core_thickness": 30.315850546600835, + "beam_face_thickness": 28.803003242099344, + "holes_diameter": 286.25449297115927, + "hole_count": 11 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter030/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter030/results.json new file mode 100644 index 00000000..835d34d5 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter030/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 30, + "mass_kg": NaN, + "tip_displacement_mm": 15.49566650390625, + "max_von_mises_mpa": 93.2840390625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter031/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter031/_temp_mass.txt new file mode 100644 index 00000000..f1d66c91 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter031/_temp_mass.txt @@ -0,0 +1 @@ +p173=815.486611683971 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter031/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter031/params.json new file mode 100644 index 00000000..dbeb4239 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter031/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 31, + "expressions": { + "beam_half_core_thickness": 15.231259729696596, + "beam_face_thickness": 20.51061793783426, + "holes_diameter": 341.16121801123404, + "hole_count": 10.0 + }, + "trial_input": { + "beam_half_core_thickness": 15.231259729696596, + "beam_face_thickness": 20.51061793783426, + "holes_diameter": 341.16121801123404, + "hole_count": 10 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter031/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter031/results.json new file mode 100644 index 00000000..f29fa207 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter031/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 31, + "mass_kg": NaN, + "tip_displacement_mm": 25.575746536254883, + "max_von_mises_mpa": 154.783734375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter032/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter032/_temp_mass.txt new file mode 100644 index 00000000..5789d5da --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter032/_temp_mass.txt @@ -0,0 +1 @@ +p173=1231.4483565590738 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter032/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter032/params.json new file mode 100644 index 00000000..24573bcb --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter032/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 32, + "expressions": { + "beam_half_core_thickness": 35.135355432426465, + "beam_face_thickness": 17.452468258634863, + "holes_diameter": 423.30383098713725, + "hole_count": 6.0 + }, + "trial_input": { + "beam_half_core_thickness": 35.135355432426465, + "beam_face_thickness": 17.452468258634863, + "holes_diameter": 423.30383098713725, + "hole_count": 6 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter032/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter032/results.json new file mode 100644 index 00000000..b6f4e7c1 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter032/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 32, + "mass_kg": NaN, + "tip_displacement_mm": 23.97252655029297, + "max_von_mises_mpa": 196.272515625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter033/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter033/_temp_mass.txt new file mode 100644 index 00000000..88d6ef6a --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter033/_temp_mass.txt @@ -0,0 +1 @@ +p173=1754.139697344678 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter033/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter033/params.json new file mode 100644 index 00000000..38ddf7b8 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter033/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 33, + "expressions": { + "beam_half_core_thickness": 35.46708851836511, + "beam_face_thickness": 32.57744662968254, + "holes_diameter": 228.6499364024705, + "hole_count": 13.0 + }, + "trial_input": { + "beam_half_core_thickness": 35.46708851836511, + "beam_face_thickness": 32.57744662968254, + "holes_diameter": 228.6499364024705, + "hole_count": 13 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter033/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter033/results.json new file mode 100644 index 00000000..cc517709 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter033/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 33, + "mass_kg": NaN, + "tip_displacement_mm": 13.120881080627441, + "max_von_mises_mpa": 80.2448125, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter034/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter034/_temp_mass.txt new file mode 100644 index 00000000..96b435a3 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter034/_temp_mass.txt @@ -0,0 +1 @@ +p173=688.6297607768506 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter034/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter034/params.json new file mode 100644 index 00000000..19c23399 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter034/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 34, + "expressions": { + "beam_half_core_thickness": 23.046420945659438, + "beam_face_thickness": 11.556167883135958, + "holes_diameter": 418.6187160546307, + "hole_count": 9.0 + }, + "trial_input": { + "beam_half_core_thickness": 23.046420945659438, + "beam_face_thickness": 11.556167883135958, + "holes_diameter": 418.6187160546307, + "hole_count": 9 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter034/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter034/results.json new file mode 100644 index 00000000..f21b9a53 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter034/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 34, + "mass_kg": NaN, + "tip_displacement_mm": 39.49115753173828, + "max_von_mises_mpa": 351.02815625, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter035/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter035/_temp_mass.txt new file mode 100644 index 00000000..2ccbaf26 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter035/_temp_mass.txt @@ -0,0 +1 @@ +p173=1652.729145472504 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter035/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter035/params.json new file mode 100644 index 00000000..a80b0daf --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter035/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 35, + "expressions": { + "beam_half_core_thickness": 26.538941763998174, + "beam_face_thickness": 37.0045746615665, + "holes_diameter": 184.02083272600328, + "hole_count": 13.0 + }, + "trial_input": { + "beam_half_core_thickness": 26.538941763998174, + "beam_face_thickness": 37.0045746615665, + "holes_diameter": 184.02083272600328, + "hole_count": 13 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter035/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter035/results.json new file mode 100644 index 00000000..1aa3d24f --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter035/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 35, + "mass_kg": NaN, + "tip_displacement_mm": 13.15087890625, + "max_von_mises_mpa": 82.6500234375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter036/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter036/_temp_mass.txt new file mode 100644 index 00000000..ac4a5d07 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter036/_temp_mass.txt @@ -0,0 +1 @@ +p173=899.6629740129987 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter036/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter036/params.json new file mode 100644 index 00000000..9ed5249e --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter036/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 36, + "expressions": { + "beam_half_core_thickness": 13.332306234655581, + "beam_face_thickness": 22.63837385797062, + "holes_diameter": 260.8868498376813, + "hole_count": 13.0 + }, + "trial_input": { + "beam_half_core_thickness": 13.332306234655581, + "beam_face_thickness": 22.63837385797062, + "holes_diameter": 260.8868498376813, + "hole_count": 13 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter036/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter036/results.json new file mode 100644 index 00000000..52ec619a --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter036/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 36, + "mass_kg": NaN, + "tip_displacement_mm": 22.770187377929688, + "max_von_mises_mpa": 132.01121875, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter037/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter037/_temp_mass.txt new file mode 100644 index 00000000..2597c13f --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter037/_temp_mass.txt @@ -0,0 +1 @@ +p173=1539.426155950673 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter037/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter037/params.json new file mode 100644 index 00000000..86496a1a --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter037/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 37, + "expressions": { + "beam_half_core_thickness": 28.542165422707903, + "beam_face_thickness": 34.70133239672506, + "holes_diameter": 264.8484124805317, + "hole_count": 11.0 + }, + "trial_input": { + "beam_half_core_thickness": 28.542165422707903, + "beam_face_thickness": 34.70133239672506, + "holes_diameter": 264.8484124805317, + "hole_count": 11 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter037/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter037/results.json new file mode 100644 index 00000000..52900fd2 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter037/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 37, + "mass_kg": NaN, + "tip_displacement_mm": 13.971890449523926, + "max_von_mises_mpa": 83.8096796875, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter038/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter038/_temp_mass.txt new file mode 100644 index 00000000..a2e6adec --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter038/_temp_mass.txt @@ -0,0 +1 @@ +p173=1300.5025884507997 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter038/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter038/params.json new file mode 100644 index 00000000..fbe3431f --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter038/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 38, + "expressions": { + "beam_half_core_thickness": 15.926345240553108, + "beam_face_thickness": 35.64252369044628, + "holes_diameter": 223.5314270645531, + "hole_count": 8.0 + }, + "trial_input": { + "beam_half_core_thickness": 15.926345240553108, + "beam_face_thickness": 35.64252369044628, + "holes_diameter": 223.5314270645531, + "hole_count": 8 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter038/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter038/results.json new file mode 100644 index 00000000..5534b4d5 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter038/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 38, + "mass_kg": NaN, + "tip_displacement_mm": 15.33069133758545, + "max_von_mises_mpa": 95.525046875, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter039/_temp_mass.txt b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter039/_temp_mass.txt new file mode 100644 index 00000000..8ce62fe2 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter039/_temp_mass.txt @@ -0,0 +1 @@ +p173=1343.5034206648418 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter039/params.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter039/params.json new file mode 100644 index 00000000..d86bb161 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter039/params.json @@ -0,0 +1,15 @@ +{ + "iteration": 39, + "expressions": { + "beam_half_core_thickness": 28.915906359365827, + "beam_face_thickness": 31.075262775497517, + "holes_diameter": 346.80055078514937, + "hole_count": 9.0 + }, + "trial_input": { + "beam_half_core_thickness": 28.915906359365827, + "beam_face_thickness": 31.075262775497517, + "holes_diameter": 346.80055078514937, + "hole_count": 9 + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter039/results.json b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter039/results.json new file mode 100644 index 00000000..3276d192 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/iterations/iter039/results.json @@ -0,0 +1,8 @@ +{ + "iteration": 39, + "mass_kg": NaN, + "tip_displacement_mm": 16.25737953186035, + "max_von_mises_mpa": 106.1287734375, + "feasible": false, + "op2_file": "beam_sim1-solution_1.op2" +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/results/doe_results.csv b/projects/hydrotech-beam/studies/01_doe_landscape/results/doe_results.csv new file mode 100644 index 00000000..f7115ab6 --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/results/doe_results.csv @@ -0,0 +1,52 @@ +trial_number,status,beam_half_core_thickness,beam_face_thickness,holes_diameter,hole_count,mass_kg,tip_displacement_mm,max_von_mises_MPa,geo_feasible,displacement_feasible,stress_feasible,fully_feasible,ligament_mm,web_clearance_mm,solve_time_s +0,solved,25.162,21.504,300.0,10,nan,19.556875228881836,117.484125,True,False,True,False,144.44444444444446,156.99200000000002,11.73 +1,solved,29.33562637086642,10.867852359605202,208.82139200571257,6,nan,24.064523696899414,398.4295,True,False,False,False,591.1786079942874,269.442903275077,12.22 +2,geo_infeasible,18.34349359126741,39.31614850983442,289.04224845483384,14,99999.0,99999.0,99999.0,False,,,,18.65005923747384,132.32545452549732, +3,solved,16.654851585575436,25.92976843726266,249.7752118546045,7,nan,18.68077850341797,114.6584609375,True,False,True,False,416.89145481206214,198.3652512708702,12.84 +4,solved,39.4879581560391,37.70634303203751,317.49333407316067,10,nan,12.852874755859375,81.574234375,True,False,True,False,126.95111037128379,107.09397986276429,12.99 +5,solved,18.667249127790498,27.961709646337493,215.2919645872769,12,nan,17.29557228088379,106.283703125,True,False,True,False,148.34439904908672,228.78461612004813,11.23 +6,solved,10.145147355948776,33.3870327520718,197.6501835498656,11,nan,17.468721389770508,108.2625078125,True,False,True,False,202.3498164501344,235.5757509459908,12.88 +7,geo_infeasible,31.736792540733404,28.439814602144864,445.0342129680445,13,99999.0,99999.0,99999.0,False,,,,-111.70087963471121,-1.9138421723342276, +8,solved,36.424864472055134,22.317342276314122,221.080294100253,5,nan,15.069981575012207,94.8715,True,False,True,False,778.919705899747,234.28502134711874,12.95 +9,geo_infeasible,36.013680927951604,24.658755282428263,325.6380323142787,15,99999.0,99999.0,99999.0,False,,,,-39.92374659999297,125.04445712086476, +10,solved,21.20971666430637,27.18728441912208,333.33951480703604,7,nan,18.190187454223633,123.9728203125,True,False,True,False,333.3271518596306,112.2859163547198,12.59 +11,solved,25.10064411916288,15.259636308480797,202.9393633023646,8,nan,21.658220291137695,202.82671875,True,False,False,False,368.48920812620685,266.5413640806738,12.86 +12,solved,23.5377088486766,15.77772417637908,295.1158776920038,12,nan,24.221370697021484,190.267625,True,False,False,False,68.52048594435985,173.32867395523806,12.66 +13,solved,11.932749457620524,35.9698658865046,357.1996739776378,9,nan,19.1060733795166,133.927765625,True,False,False,False,142.80032602236219,70.86059424935297,12.19 +14,solved,12.590502697615015,24.283216775288818,436.6385439056947,8,nan,31.39129066467285,278.0956875,True,False,False,False,134.79002752287676,14.795022543727669,12.08 +15,geo_infeasible,33.724650534677,25.545971283534612,391.769007728242,11,99999.0,99999.0,99999.0,False,,,,8.230992271757998,57.13904970468877, +16,geo_infeasible,24.937958219366468,34.305575803387285,428.6085833611129,15,99999.0,99999.0,99999.0,False,,,,-142.89429764682717,2.7802650321125384, +17,solved,20.01642602550961,12.736672936148768,235.02126154120555,14,nan,27.53583335876465,291.43825,True,False,False,False,72.67104615110213,239.5053925864969,13.28 +18,solved,32.781509299259234,39.647413256693376,172.7124919630828,7,nan,11.77879810333252,75.011625,True,False,True,False,493.9541747035838,247.99268152353045,12.56 +19,solved,38.451363316179766,16.7003930823653,186.1758118536306,12,nan,16.785146713256836,169.51878125,True,False,False,False,177.46055178273303,280.4234019816388,12.98 +20,solved,27.22384374533999,21.60434641918486,399.6751297258189,6,nan,21.478872299194336,185.178296875,True,False,False,False,400.3248702741811,57.11617743581138,13.42 +21,solved,33.00141187580357,12.103605508453288,352.97644218877866,7,nan,24.657197952270508,320.08565625,True,False,False,False,313.69022447788797,122.81634679431477,12.55 +22,solved,30.986372756119685,19.16832222642944,154.19092746511274,15,nan,17.36627769470215,129.0215078125,True,False,True,False,131.523358249173,307.4724280820284,13.28 +23,solved,19.50323693257984,31.89937313493798,382.0105860159447,6,nan,17.949995040893555,127.061125,True,False,True,False,417.9894139840553,54.19066771417937,13.42 +24,solved,13.727845373498717,29.571387264342114,158.4545070511115,6,nan,17.506193161010742,110.5740859375,True,False,True,False,641.5454929488885,282.4027184202042,12.81 +25,solved,39.182912433667966,13.547410048410338,242.6447570355275,10,nan,18.839136123657227,256.434484375,True,False,False,False,201.79968740891695,230.2604228676518,12.81 +26,solved,11.508005001497104,13.78017571971355,280.40478023124285,6,nan,31.85018539428711,248.273609375,True,False,False,False,519.5952197687571,192.03486832933004,12.5 +27,geo_infeasible,14.723131820394673,38.214626589017946,410.6578070859523,11,99999.0,99999.0,99999.0,False,,,,-10.6578070859523,12.912939736011822, +28,geo_infeasible,16.065524505472887,10.058438562073695,323.01235309450794,13,99999.0,99999.0,99999.0,False,,,,10.32098023882537,156.87076978134468, +29,solved,17.419169007999646,17.917141385501917,175.7984093879865,9,nan,22.727807998657227,147.5830625,True,False,False,False,324.2015906120135,288.3673078410097,12.61 +30,geo_infeasible,10.744888282098874,16.028260362958154,389.08612738372096,14,99999.0,99999.0,99999.0,False,,,,-81.39381969141328,78.85735189036274, +31,solved,31.240370325087493,26.41009203906711,273.18266513234516,10,nan,15.669999122619629,93.16090625,True,False,True,False,171.2617793120993,173.99715078952062,12.66 +32,geo_infeasible,20.775031495682867,18.602850091163862,439.30358863649826,10,99999.0,99999.0,99999.0,False,,,,5.1408558079461955,23.490711181173992, +33,solved,26.00450478511711,33.73796956646058,309.2653422609983,5,nan,14.4290132522583,93.7885234375,True,False,True,False,690.7346577390017,123.25871860608055,12.31 +34,solved,22.249541218652357,23.591878117279098,163.6658438964213,10,nan,17.734634399414062,110.49809375,True,False,True,False,280.7786005480232,289.1503998690205,13.06 +35,solved,34.50742630475948,19.91457704426444,301.4331617880579,8,nan,17.536535263061523,118.634125,True,False,True,False,269.99540964051357,158.73768412341326,13.78 +36,geo_infeasible,37.732969901755745,29.990170628054525,366.3730412701501,14,99999.0,99999.0,99999.0,False,,,,-58.68073357784243,73.64661747374083, +37,solved,37.19895822292572,36.450392892917435,405.40744176134933,7,nan,15.368349075317383,122.3722265625,True,False,True,False,261.2592249053173,21.691772452815826,13.09 +38,solved,24.13665312381697,30.60108948604478,257.34854555318736,8,nan,15.375892639160156,94.1200546875,True,False,True,False,314.0800258753841,181.4492754747231,12.28 +39,solved,30.315850546600835,28.803003242099344,286.25449297115927,11,nan,15.49566650390625,93.2840390625,True,False,True,False,113.74550702884073,156.13950054464203,12.64 +40,solved,15.231259729696596,20.51061793783426,341.16121801123404,10,nan,25.575746536254883,154.783734375,True,False,False,False,103.28322643321042,117.81754611309742,12.0 +41,solved,35.135355432426465,17.452468258634863,423.30383098713725,6,nan,23.97252655029297,196.272515625,True,False,False,False,376.69616901286275,41.79123249559302,12.84 +42,solved,35.46708851836511,32.57744662968254,228.6499364024705,13,nan,13.120881080627441,80.2448125,True,False,True,False,104.68339693086281,206.19517033816444,13.05 +43,solved,23.046420945659438,11.556167883135958,418.6187160546307,9,nan,39.49115753173828,351.02815625,True,False,False,False,81.38128394536932,58.26894817909738,12.69 +44,geo_infeasible,21.922047096798718,20.86393201618128,360.37912109679735,13,99999.0,99999.0,99999.0,False,,,,-27.045787763464034,97.89301487084009, +45,solved,26.538941763998174,37.0045746615665,184.02083272600328,13,nan,13.15087890625,82.6500234375,True,False,True,False,149.31250060733004,241.97001795086373,12.36 +46,solved,13.332306234655581,22.63837385797062,260.8868498376813,13,nan,22.770187377929688,132.01121875,True,False,False,False,72.44648349565199,193.8364024463774,11.94 +47,geo_infeasible,27.551926233190585,14.46757831387657,375.7580536267577,12,99999.0,99999.0,99999.0,False,,,,-12.121689990394088,95.30678974548914, +48,solved,28.542165422707903,34.70133239672506,264.8484124805317,11,nan,13.971890449523926,83.8096796875,True,False,True,False,135.1515875194683,165.74892272601818,12.08 +49,solved,15.926345240553108,35.64252369044628,223.5314270645531,8,nan,15.33069133758545,95.525046875,True,False,True,False,347.89714436401835,205.1835255545543,12.02 +50,solved,28.915906359365827,31.075262775497517,346.80055078514937,9,nan,16.25737953186035,106.1287734375,True,False,True,False,153.19944921485063,91.04892366385559,12.5 diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/results/doe_summary.json b/projects/hydrotech-beam/studies/01_doe_landscape/results/doe_summary.json new file mode 100644 index 00000000..6d2728ef --- /dev/null +++ b/projects/hydrotech-beam/studies/01_doe_landscape/results/doe_summary.json @@ -0,0 +1,64 @@ +{ + "study_name": "hydrotech_beam_doe_phase1", + "phase": "Phase 1 \u2014 LHS DoE", + "project": "Hydrotech Beam Structural Optimization", + "timestamp": "2026-02-11T16:40:12.707007+00:00", + "configuration": { + "n_lhs_samples": 50, + "seed": 42, + "baseline_included": true, + "algorithm": "Latin Hypercube Sampling (scipy.stats.qmc)", + "constraint_handling": "Deb's feasibility rules", + "displacement_limit_mm": 10.0, + "stress_limit_MPa": 130.0 + }, + "design_variables": [ + { + "name": "beam_half_core_thickness", + "nx_expression": "beam_half_core_thickness", + "lower": 10.0, + "upper": 40.0, + "baseline": 25.162, + "type": "continuous" + }, + { + "name": "beam_face_thickness", + "nx_expression": "beam_face_thickness", + "lower": 10.0, + "upper": 40.0, + "baseline": 21.504, + "type": "continuous" + }, + { + "name": "holes_diameter", + "nx_expression": "holes_diameter", + "lower": 150.0, + "upper": 450.0, + "baseline": 300.0, + "type": "continuous" + }, + { + "name": "hole_count", + "nx_expression": "hole_count", + "lower": 5.0, + "upper": 15.0, + "baseline": 10.0, + "type": "integer" + } + ], + "results": { + "total_trials": 51, + "solved": 39, + "geo_infeasible": 12, + "solve_failed": 0, + "fully_feasible": 0, + "solve_success_rate": 76.5, + "feasibility_rate": 0.0 + }, + "best_feasible": null, + "phase1_gate_check": { + "min_feasible_5": false, + "solve_success_80pct": false, + "gate_passed": false + } +} \ No newline at end of file diff --git a/projects/hydrotech-beam/studies/01_doe_landscape/results/history.db b/projects/hydrotech-beam/studies/01_doe_landscape/results/history.db index 0eeba003..39d22daf 100644 Binary files a/projects/hydrotech-beam/studies/01_doe_landscape/results/history.db and b/projects/hydrotech-beam/studies/01_doe_landscape/results/history.db differ