diff --git a/.claude/skills/create-study.md b/.claude/skills/create-study.md index 25309704..9ac66b16 100644 --- a/.claude/skills/create-study.md +++ b/.claude/skills/create-study.md @@ -237,6 +237,18 @@ Generate a complete Python script based on protocol: - Storage location - Results display and dashboard instructions +**IMPORTANT**: Always include structured logging from Phase 1.3: +- Import: `from optimization_engine.logger import get_logger` +- Initialize in main(): `logger = get_logger("{study_name}", study_dir=results_dir)` +- Replace all print() with logger.info/warning/error +- Use structured methods: + - `logger.study_start(study_name, n_trials, sampler)` + - `logger.trial_start(trial.number, design_vars)` + - `logger.trial_complete(trial.number, objectives, constraints, feasible)` + - `logger.trial_failed(trial.number, error)` + - `logger.study_complete(study_name, n_trials, n_successful)` +- Error handling: `logger.error("message", exc_info=True)` for tracebacks + **Template**: Use [studies/drone_gimbal_arm_optimization/run_optimization.py](../studies/drone_gimbal_arm_optimization/run_optimization.py:1) as reference ### 4. reset_study.py diff --git a/studies/uav_arm_optimization/1_setup/model/Beam.prt b/studies/uav_arm_optimization/1_setup/model/Beam.prt new file mode 100644 index 00000000..cac3f7ff Binary files /dev/null and b/studies/uav_arm_optimization/1_setup/model/Beam.prt differ diff --git a/studies/uav_arm_optimization/1_setup/model/Beam_fem1.fem b/studies/uav_arm_optimization/1_setup/model/Beam_fem1.fem new file mode 100644 index 00000000..f7a0119d Binary files /dev/null and b/studies/uav_arm_optimization/1_setup/model/Beam_fem1.fem differ diff --git a/studies/uav_arm_optimization/1_setup/model/Beam_fem1_i.prt b/studies/uav_arm_optimization/1_setup/model/Beam_fem1_i.prt new file mode 100644 index 00000000..ced84dcb Binary files /dev/null and b/studies/uav_arm_optimization/1_setup/model/Beam_fem1_i.prt differ diff --git a/studies/uav_arm_optimization/1_setup/model/Beam_sim1.sim b/studies/uav_arm_optimization/1_setup/model/Beam_sim1.sim new file mode 100644 index 00000000..e7f3ef27 Binary files /dev/null and b/studies/uav_arm_optimization/1_setup/model/Beam_sim1.sim differ diff --git a/studies/uav_arm_optimization/1_setup/model/_temp_mass.txt b/studies/uav_arm_optimization/1_setup/model/_temp_mass.txt new file mode 100644 index 00000000..a12b8296 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/_temp_mass.txt @@ -0,0 +1 @@ +4.289393245091135 \ No newline at end of file diff --git a/studies/uav_arm_optimization/1_setup/model/_temp_solve_journal.py b/studies/uav_arm_optimization/1_setup/model/_temp_solve_journal.py new file mode 100644 index 00000000..252ff9e2 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/_temp_solve_journal.py @@ -0,0 +1,333 @@ +# Auto-generated journal for solving Beam_sim1.sim +import sys +sys.argv = ['', r'C:\Users\antoi\Documents\Atomaste\Atomizer\studies\uav_arm_optimization\1_setup\model\Beam_sim1.sim', None, 'beam_half_core_thickness=5.543272595780111', 'beam_face_thickness=2.36655422332811', 'holes_diameter=27.930376572591207', 'hole_count=13.212098121132765'] # Set argv for the main function +""" +NX Journal Script to Solve Simulation in Batch Mode + +This script opens a .sim file, updates the FEM, and solves it through the NX API. +Usage: run_journal.exe solve_simulation.py + +Based on recorded NX journal pattern for solving simulations. +""" + +import sys +import NXOpen +import NXOpen.Assemblies +import NXOpen.CAE + + +def main(args): + """ + Open and solve a simulation file with updated expression values. + + Args: + args: Command line arguments + args[0]: .sim file path + args[1]: solution_name (optional, e.g., "Solution_Normal_Modes" 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] [expr2=val2] ...") + return False + + sim_file_path = args[0] + + # Parse solution name if provided (args[1]) + solution_name = args[1] if len(args) > 1 and args[1] != 'None' else None + + # Extract base name from sim file (e.g., "Beam_sim1.sim" -> "Beam") + import os + sim_filename = os.path.basename(sim_file_path) + part_base_name = sim_filename.split('_sim')[0] if '_sim' in sim_filename else sim_filename.split('.sim')[0] + + # Parse expression updates from args[2+] as "name=value" pairs + expression_updates = {} + for arg in args[2:]: + if '=' in arg: + name, value = arg.split('=', 1) + expression_updates[name] = float(value) + + print(f"[JOURNAL] Opening simulation: {sim_file_path}") + print(f"[JOURNAL] Detected part base name: {part_base_name}") + if solution_name: + print(f"[JOURNAL] Will solve specific solution: {solution_name}") + else: + print(f"[JOURNAL] Will solve default solution (Solution 1)") + if expression_updates: + print(f"[JOURNAL] Will update expressions:") + for name, value in expression_updates.items(): + print(f"[JOURNAL] {name} = {value}") + + try: + theSession = NXOpen.Session.GetSession() + + # Set load options to load linked parts from directory + print("[JOURNAL] Setting load options for linked parts...") + import os + working_dir = os.path.dirname(os.path.abspath(sim_file_path)) + + # Complete load options setup (from recorded journal) + theSession.Parts.LoadOptions.LoadLatest = False + theSession.Parts.LoadOptions.ComponentLoadMethod = NXOpen.LoadOptions.LoadMethod.FromDirectory + + searchDirectories = [working_dir] + searchSubDirs = [True] + theSession.Parts.LoadOptions.SetSearchDirectories(searchDirectories, searchSubDirs) + + 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.AllowSubstitution = False + theSession.Parts.LoadOptions.GenerateMissingPartFamilyMembers = True + theSession.Parts.LoadOptions.AbortOnFailure = False + + referenceSets = ["As Saved", "Use Simplified", "Use Model", "Entire Part", "Empty"] + theSession.Parts.LoadOptions.SetDefaultReferenceSets(referenceSets) + theSession.Parts.LoadOptions.ReferenceSetOverride = False + + print(f"[JOURNAL] Load directory set to: {working_dir}") + + # Close any currently open sim file to force reload from disk + print("[JOURNAL] Checking for open parts...") + try: + current_work = theSession.Parts.BaseWork + if current_work and hasattr(current_work, 'FullPath'): + current_path = current_work.FullPath + print(f"[JOURNAL] Closing currently open part: {current_path}") + # Close without saving (we want to reload from disk) + partCloseResponses1 = [NXOpen.BasePart.CloseWholeTree] + theSession.Parts.CloseAll(partCloseResponses1) + print("[JOURNAL] Parts closed") + except Exception as e: + print(f"[JOURNAL] No parts to close or error closing: {e}") + + # Open the .sim file (now will load fresh from disk with updated .prt files) + print(f"[JOURNAL] Opening simulation fresh from disk...") + basePart1, partLoadStatus1 = theSession.Parts.OpenActiveDisplay( + sim_file_path, + NXOpen.DisplayPartOption.AllowAdditional + ) + + workSimPart = theSession.Parts.BaseWork + displaySimPart = theSession.Parts.BaseDisplay + + print(f"[JOURNAL] Simulation opened successfully") + partLoadStatus1.Dispose() + + # Switch to simulation application + theSession.ApplicationSwitchImmediate("UG_APP_SFEM") + + simPart1 = workSimPart + theSession.Post.UpdateUserGroupsFromSimPart(simPart1) + + # STEP 1: Try to switch to part and update expressions (optional for some models) + print(f"[JOURNAL] STEP 1: Checking for {part_base_name}.prt geometry...") + geometry_updated = False + try: + # Find the main part (may not exist for embedded geometry models) + bracketPart = None + try: + bracketPart = theSession.Parts.FindObject(part_base_name) + except: + pass + + if bracketPart: + print(f"[JOURNAL] Found {part_base_name} part, updating geometry...") + # Make Bracket the active display part + status, partLoadStatus = theSession.Parts.SetActiveDisplay( + bracketPart, + NXOpen.DisplayPartOption.AllowAdditional, + NXOpen.PartDisplayPartWorkPartOption.UseLast + ) + partLoadStatus.Dispose() + + workPart = theSession.Parts.Work + + # CRITICAL: Apply expression changes BEFORE updating geometry + expressions_updated = [] + + # Apply all expression updates dynamically + for expr_name, expr_value in expression_updates.items(): + print(f"[JOURNAL] Applying {expr_name} = {expr_value}") + try: + expr_obj = workPart.Expressions.FindObject(expr_name) + if expr_obj: + # Use millimeters as default unit for geometric parameters + unit_mm = workPart.UnitCollection.FindObject("MilliMeter") + workPart.Expressions.EditExpressionWithUnits(expr_obj, unit_mm, str(expr_value)) + expressions_updated.append(expr_obj) + print(f"[JOURNAL] {expr_name} updated successfully") + else: + print(f"[JOURNAL] WARNING: {expr_name} expression not found!") + except Exception as e: + print(f"[JOURNAL] ERROR updating {expr_name}: {e}") + + # Make expressions up to date + if expressions_updated: + print(f"[JOURNAL] Making {len(expressions_updated)} expression(s) up to date...") + for expr in expressions_updated: + markId_expr = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Make Up to Date") + objects1 = [expr] + theSession.UpdateManager.MakeUpToDate(objects1, markId_expr) + theSession.DeleteUndoMark(markId_expr, None) + + # CRITICAL: Update the geometry model - rebuilds features with new expressions + print(f"[JOURNAL] Rebuilding geometry with new expression values...") + 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] {part_base_name} geometry updated ({nErrs} errors)") + + # Extract mass from expression p173 if it exists and write to temp file + try: + mass_expr = workPart.Expressions.FindObject("p173") + if mass_expr: + mass_kg = mass_expr.Value + mass_output_file = os.path.join(working_dir, "_temp_mass.txt") + with open(mass_output_file, 'w') as f: + f.write(str(mass_kg)) + print(f"[JOURNAL] Mass from p173: {mass_kg:.6f} kg ({mass_kg * 1000:.2f} g)") + print(f"[JOURNAL] Mass written to: {mass_output_file}") + except: + pass # Expression p173 might not exist in all models + + geometry_updated = True + else: + print(f"[JOURNAL] {part_base_name} part not found - may be embedded in sim file") + except Exception as e: + print(f"[JOURNAL] Could not update {part_base_name}.prt: {e}") + print(f"[JOURNAL] Continuing with sim-only solve...") + + # STEP 2: Try to switch to FEM part and update (optional for some models) + fem_part_name = f"{part_base_name}_fem1" + print(f"[JOURNAL] STEP 2: Checking for {fem_part_name}.fem...") + fem_updated = False + try: + # Find the FEM part (may not exist or may have different name) + femPart1 = None + try: + femPart1 = theSession.Parts.FindObject(fem_part_name) + except: + # Try with _i suffix for idealized FEM + try: + femPart1 = theSession.Parts.FindObject(f"{fem_part_name}_i") + except: + pass + + if femPart1: + print(f"[JOURNAL] Found FEM part, updating...") + # Make FEM the active display part + status, partLoadStatus = theSession.Parts.SetActiveDisplay( + femPart1, + NXOpen.DisplayPartOption.AllowAdditional, + NXOpen.PartDisplayPartWorkPartOption.SameAsDisplay + ) + partLoadStatus.Dispose() + + workFemPart = theSession.Parts.BaseWork + + # CRITICAL: Update FE Model - regenerates FEM with new geometry + print("[JOURNAL] Updating FE Model...") + fEModel1 = workFemPart.FindObject("FEModel") + if fEModel1: + fEModel1.UpdateFemodel() + print("[JOURNAL] FE Model updated with new geometry!") + fem_updated = True + else: + print("[JOURNAL] WARNING: Could not find FEModel object") + else: + print(f"[JOURNAL] FEM part not found - may be embedded in sim file") + except Exception as e: + print(f"[JOURNAL] Could not update FEM: {e}") + print(f"[JOURNAL] Continuing with sim-only solve...") + + # STEP 3: Switch back to sim part + print("[JOURNAL] STEP 3: Switching back to sim part...") + try: + status, partLoadStatus = theSession.Parts.SetActiveDisplay( + simPart1, + NXOpen.DisplayPartOption.AllowAdditional, + NXOpen.PartDisplayPartWorkPartOption.UseLast + ) + partLoadStatus.Dispose() + workSimPart = theSession.Parts.BaseWork + print("[JOURNAL] Switched back to sim part") + except Exception as e: + print(f"[JOURNAL] WARNING: Error switching to sim part: {e}") + + # Note: Old output files are deleted by nx_solver.py before calling this journal + # This ensures NX performs a fresh solve + + # Solve the simulation + print("[JOURNAL] Starting solve...") + markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start") + theSession.SetUndoMarkName(markId3, "Solve Dialog") + + markId5 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Solve") + + theCAESimSolveManager = NXOpen.CAE.SimSolveManager.GetSimSolveManager(theSession) + + # Get the simulation object + simSimulation1 = workSimPart.FindObject("Simulation") + + # Get the solution(s) to solve - either specific or all + if solution_name: + # Solve specific solution in background mode + solution_obj_name = f"Solution[{solution_name}]" + print(f"[JOURNAL] Looking for solution: {solution_obj_name}") + simSolution1 = simSimulation1.FindObject(solution_obj_name) + psolutions1 = [simSolution1] + + numsolutionssolved1, numsolutionsfailed1, numsolutionsskipped1 = theCAESimSolveManager.SolveChainOfSolutions( + psolutions1, + NXOpen.CAE.SimSolution.SolveOption.Solve, + NXOpen.CAE.SimSolution.SetupCheckOption.CompleteDeepCheckAndOutputErrors, + NXOpen.CAE.SimSolution.SolveMode.Background + ) + else: + # Solve ALL solutions using SolveAllSolutions API (Foreground mode) + # This ensures all solutions (static + modal, etc.) complete before returning + print(f"[JOURNAL] Solving all solutions using SolveAllSolutions API (Foreground mode)...") + + numsolutionssolved1, numsolutionsfailed1, numsolutionsskipped1 = theCAESimSolveManager.SolveAllSolutions( + NXOpen.CAE.SimSolution.SolveOption.Solve, + NXOpen.CAE.SimSolution.SetupCheckOption.CompleteCheckAndOutputErrors, + NXOpen.CAE.SimSolution.SolveMode.Foreground, + False + ) + + theSession.DeleteUndoMark(markId5, None) + theSession.SetUndoMarkName(markId3, "Solve") + + print(f"[JOURNAL] Solve completed!") + print(f"[JOURNAL] Solutions solved: {numsolutionssolved1}") + print(f"[JOURNAL] Solutions failed: {numsolutionsfailed1}") + print(f"[JOURNAL] Solutions skipped: {numsolutionsskipped1}") + + # NOTE: When solution_name=None, we use Foreground mode to ensure all solutions + # complete before returning. When solution_name is specified, Background mode is used. + + # Save the simulation to write all output files + print("[JOURNAL] Saving simulation to ensure output files are written...") + simPart2 = workSimPart + partSaveStatus1 = simPart2.Save( + NXOpen.BasePart.SaveComponents.TrueValue, + NXOpen.BasePart.CloseAfterSave.FalseValue + ) + partSaveStatus1.Dispose() + print("[JOURNAL] Save complete!") + + return True + + except Exception as e: + print(f"[JOURNAL] ERROR: {e}") + import traceback + traceback.print_exc() + return False + + +if __name__ == '__main__': + success = main(sys.argv[1:]) + sys.exit(0 if success else 1) + diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t106288_10.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t106288_10.asg new file mode 100644 index 00000000..dfcdcbbf --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t106288_10.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T106288_10' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T106288_10' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t113928_10.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t113928_10.asg new file mode 100644 index 00000000..52cb0b0a --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t113928_10.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T113928_10' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T113928_10' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t115452_21.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t115452_21.asg new file mode 100644 index 00000000..dbadb3da --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t115452_21.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T115452_21' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T115452_21' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t120588_4.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t120588_4.asg new file mode 100644 index 00000000..213855b1 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t120588_4.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T120588_4' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T120588_4' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t132136_36.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t132136_36.asg new file mode 100644 index 00000000..8ca944f8 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t132136_36.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T132136_36' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T132136_36' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t134884_21.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t134884_21.asg new file mode 100644 index 00000000..058b7be8 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t134884_21.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T134884_21' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T134884_21' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t138892_52.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t138892_52.asg new file mode 100644 index 00000000..4d0b7555 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t138892_52.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T138892_52' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T138892_52' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t140160_11.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t140160_11.asg new file mode 100644 index 00000000..d00eb5f5 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t140160_11.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T140160_11' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T140160_11' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t144120_57.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t144120_57.asg new file mode 100644 index 00000000..886894bc --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t144120_57.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T144120_57' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T144120_57' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t144860_53.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t144860_53.asg new file mode 100644 index 00000000..0ee49a23 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t144860_53.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T144860_53' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T144860_53' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t147072_45.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t147072_45.asg new file mode 100644 index 00000000..369a2f46 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t147072_45.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T147072_45' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T147072_45' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t155360_6.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t155360_6.asg new file mode 100644 index 00000000..78a427a4 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t155360_6.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T155360_6' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T155360_6' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t165344_2.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t165344_2.asg new file mode 100644 index 00000000..ef2f1776 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t165344_2.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T165344_2' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T165344_2' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t172048_1.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t172048_1.asg new file mode 100644 index 00000000..30a2992e --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t172048_1.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T172048_1' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T172048_1' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t173684_49.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t173684_49.asg new file mode 100644 index 00000000..95784eff --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t173684_49.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T173684_49' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T173684_49' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t3508_15.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t3508_15.asg new file mode 100644 index 00000000..c526c3fd --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t3508_15.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T3508_15' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T3508_15' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t46728_3.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t46728_3.asg new file mode 100644 index 00000000..64c596d1 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t46728_3.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T46728_3' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T46728_3' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t46728_6.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t46728_6.asg new file mode 100644 index 00000000..1c20431e --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t46728_6.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T46728_6' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T46728_6' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t52796_54.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t52796_54.asg new file mode 100644 index 00000000..136fbe08 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t52796_54.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T52796_54' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T52796_54' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t55992_32.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t55992_32.asg new file mode 100644 index 00000000..de25d099 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t55992_32.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T55992_32' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T55992_32' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t57492_19.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t57492_19.asg new file mode 100644 index 00000000..d8aa3448 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t57492_19.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T57492_19' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T57492_19' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t70416_53.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t70416_53.asg new file mode 100644 index 00000000..81f71fb5 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t70416_53.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T70416_53' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T70416_53' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t78708_46.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t78708_46.asg new file mode 100644 index 00000000..c3d34e63 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t78708_46.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T78708_46' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T78708_46' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t99240_1.asg b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t99240_1.asg new file mode 100644 index 00000000..a6a5f33a --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/model/beam_sim1-solution_1.t99240_1.asg @@ -0,0 +1,32 @@ +Nastran BUFFSIZE=32769 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[1]) +Nastran BUFFPOOL=20.0X $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[4]) +Nastran DIAGA=128 DIAGB=0 $(c:/program files/siemens/simcenter3d_2412/nxnastran/conf/nastran.rcf[7]) +Nastran REAL=8545370112 $(Memory limit for MPI and other specialized modules) +JID='C:\Users\antoi\Documents\Atomaste\Atomizer\studies\drone_gimbal_arm_optimization\1_setup\model\beam_sim1-solution_1.dat' +OUT='./beam_sim1-solution_1' +MEM=3846123520 +MACH='Intel64 Family 6 Model 183 Stepping 1' +OPER='Windows 10' +OSV=' ' +MODEL='Intel(R) Core(TM) i7-14700HX (AntoineThinkpad)' +CONFIG=8666 +NPROC=28 +symbol=DELDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/del' $(program default) +symbol=DEMODIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/demo' $(program default) +symbol=SSSALTERDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/misc/sssalter' $(program default) +symbol=TPLDIR='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/tpl' $(program default) +SDIR='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T99240_1' +DBS='c:/users/antoi/appdata/local/temp/beam_sim1-solution_1.T99240_1' +SCR=yes +SMEM=20.0X +NEWDEL='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/SSS' +DEL='NXNDEF' +AUTH='29000@AntoineThinkpad' +AUTHQUE=0 +MSGCAT='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/em64tntl/analysis.msg' +MSGDEST='f06' +PROG=bundle +NEWS='c:/program files/siemens/simcenter3d_2412/nxnastran/scnas/nast/news.txt' +UMATLIB='libnxumat.dll' +UCRPLIB='libucreep.dll' +USOLLIB='libusol.dll' diff --git a/studies/uav_arm_optimization/1_setup/optimization_config.json b/studies/uav_arm_optimization/1_setup/optimization_config.json new file mode 100644 index 00000000..c7a79d79 --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/optimization_config.json @@ -0,0 +1,128 @@ +{ + "study_name": "uav_arm_optimization", + "description": "UAV Camera Support Arm - Multi-Objective Lightweight Design", + "engineering_context": "Unmanned aerial vehicle camera gimbal arm. Target: lighter than current 145g design while maintaining camera stability under 850g payload. Must avoid resonance with rotor frequencies (80-120 Hz).", + + "optimization_settings": { + "protocol": "protocol_11_multi_objective", + "n_trials": 30, + "sampler": "NSGAIISampler", + "pruner": null, + "timeout_per_trial": 600 + }, + + "design_variables": [ + { + "parameter": "beam_half_core_thickness", + "bounds": [5, 10], + "description": "Half thickness of beam core (mm) - affects weight and stiffness" + }, + { + "parameter": "beam_face_thickness", + "bounds": [1, 3], + "description": "Thickness of beam face sheets (mm) - bending resistance" + }, + { + "parameter": "holes_diameter", + "bounds": [10, 50], + "description": "Diameter of lightening holes (mm) - weight reduction" + }, + { + "parameter": "hole_count", + "bounds": [8, 14], + "description": "Number of lightening holes - balance weight vs strength" + } + ], + + "objectives": [ + { + "name": "mass", + "goal": "minimize", + "weight": 1.0, + "description": "Total mass (grams) - minimize for longer flight time", + "target": 4000, + "extraction": { + "action": "extract_mass", + "domain": "result_extraction", + "params": { + "result_type": "mass", + "metric": "total" + } + } + }, + { + "name": "fundamental_frequency", + "goal": "maximize", + "weight": 1.0, + "description": "First natural frequency (Hz) - avoid rotor resonance", + "target": 150, + "extraction": { + "action": "extract_frequency", + "domain": "result_extraction", + "params": { + "result_type": "frequency", + "mode_number": 1 + } + } + } + ], + + "constraints": [ + { + "name": "max_displacement_limit", + "type": "less_than", + "threshold": 1.5, + "description": "Maximum tip displacement under 850g camera load < 1.5mm for image stabilization", + "extraction": { + "action": "extract_displacement", + "domain": "result_extraction", + "params": { + "result_type": "displacement", + "metric": "max" + } + } + }, + { + "name": "max_stress_limit", + "type": "less_than", + "threshold": 120, + "description": "Maximum von Mises stress < 120 MPa (Al 6061-T6, SF=2.3)", + "extraction": { + "action": "extract_stress", + "domain": "result_extraction", + "params": { + "result_type": "stress", + "metric": "max_von_mises" + } + } + }, + { + "name": "min_frequency_limit", + "type": "greater_than", + "threshold": 150, + "description": "Natural frequency > 150 Hz to avoid rotor frequencies (80-120 Hz safety margin)", + "extraction": { + "action": "extract_frequency", + "domain": "result_extraction", + "params": { + "result_type": "frequency", + "mode_number": 1 + } + } + } + ], + + "simulation": { + "model_file": "Beam.prt", + "sim_file": "Beam_sim1.sim", + "fem_file": "Beam_fem1.fem", + "solver": "nastran", + "analysis_types": ["static", "modal"] + }, + + "reporting": { + "generate_plots": true, + "save_incremental": true, + "llm_summary": false + } +} diff --git a/studies/uav_arm_optimization/1_setup/workflow_config.json b/studies/uav_arm_optimization/1_setup/workflow_config.json new file mode 100644 index 00000000..0848eeee --- /dev/null +++ b/studies/uav_arm_optimization/1_setup/workflow_config.json @@ -0,0 +1,103 @@ +{ + "study_name": "drone_gimbal_arm_optimization", + "optimization_request": "Multi-objective: minimize mass + maximize natural frequency, subject to displacement < 1.5mm, stress < 120 MPa, frequency > 150 Hz", + + "design_variables": [ + { + "parameter": "beam_half_core_thickness", + "bounds": [20, 30], + "description": "Half thickness of beam core in mm" + }, + { + "parameter": "beam_face_thickness", + "bounds": [1, 3], + "description": "Thickness of beam face sheets in mm" + }, + { + "parameter": "holes_diameter", + "bounds": [180, 280], + "description": "Diameter of lightening holes in mm" + }, + { + "parameter": "hole_count", + "bounds": [8, 14], + "description": "Number of lightening holes" + } + ], + + "objectives": [ + { + "name": "mass", + "goal": "minimize", + "weight": 1.0, + "extraction": { + "action": "extract_mass", + "domain": "result_extraction", + "description": "Extract total mass from FEA results", + "params": { + "result_type": "mass", + "metric": "total" + } + } + }, + { + "name": "fundamental_frequency", + "goal": "maximize", + "weight": 1.0, + "extraction": { + "action": "extract_frequency", + "domain": "result_extraction", + "description": "Extract first natural frequency from modal analysis", + "params": { + "result_type": "frequency", + "mode_number": 1 + } + } + } + ], + + "constraints": [ + { + "name": "max_displacement_limit", + "type": "less_than", + "threshold": 1.5, + "extraction": { + "action": "extract_displacement", + "domain": "result_extraction", + "description": "Extract maximum displacement from FEA results", + "params": { + "result_type": "displacement", + "metric": "max" + } + } + }, + { + "name": "max_stress_limit", + "type": "less_than", + "threshold": 120, + "extraction": { + "action": "extract_stress", + "domain": "result_extraction", + "description": "Extract maximum von Mises stress", + "params": { + "result_type": "stress", + "metric": "max_von_mises" + } + } + }, + { + "name": "min_frequency_limit", + "type": "greater_than", + "threshold": 150, + "extraction": { + "action": "extract_frequency", + "domain": "result_extraction", + "description": "Extract first natural frequency", + "params": { + "result_type": "frequency", + "mode_number": 1 + } + } + } + ] +} diff --git a/studies/uav_arm_optimization/2_results/study.db b/studies/uav_arm_optimization/2_results/study.db new file mode 100644 index 00000000..faabcba4 Binary files /dev/null and b/studies/uav_arm_optimization/2_results/study.db differ diff --git a/studies/uav_arm_optimization/NX_FILE_MODIFICATIONS_REQUIRED.md b/studies/uav_arm_optimization/NX_FILE_MODIFICATIONS_REQUIRED.md new file mode 100644 index 00000000..77a64c77 --- /dev/null +++ b/studies/uav_arm_optimization/NX_FILE_MODIFICATIONS_REQUIRED.md @@ -0,0 +1,146 @@ +# NX File Modifications Required for Drone Gimbal Arm Study + +## Overview + +The study uses the same beam model as `simple_beam_optimization` but requires modifications to: +1. Add modal analysis (frequency extraction) +2. Update loading conditions for the 850g camera payload +3. Ensure material properties match Al 7075-T6 + +## Critical Modifications + +### 1. Simulation File (Beam_sim1.sim) + +**REQUIRED: Add Modal Analysis Solution** + +You need to add a **second solution** for modal analysis: + +1. **Open** `Beam_sim1.sim` in NX Simcenter +2. **Create New Solution**: + - Solution Type: `SOL 103 - Normal Modes` + - Name: `modal_analysis` + - Number of modes: `10` (we only need the first, but calculate more for safety) + - Frequency range: `0-500 Hz` + +3. **Use Same Mesh** as the static solution + - Link to existing FEM file: `Beam_fem1.fem` + +4. **Boundary Conditions**: Use same constraints as static analysis + - Fixed constraint at base (same as static) + - No loads needed for modal (it finds natural frequencies) + +### 2. Static Analysis Modifications + +**Update Load Magnitude**: + +The existing static analysis load needs to represent the **850g camera payload**: + +1. **Open Solution 1** (static analysis) +2. **Modify Force Magnitude**: + - Old value: (whatever is currently there) + - **New value**: `8.34 N` (850g × 9.81 m/s²) + - Direction: Downward (negative Y or Z depending on your coordinate system) + - Location: Tip of beam (where camera attaches) + +Note: 120 MPa stress limit provides safety factor of 2.3 on 6061-T6 yield strength (276 MPa) + +### 3. Material Properties + +**Verify Material is Al 6061-T6**: + +1. **Open Part File**: `Beam.prt` +2. **Check Material Assignment**: + - Material: `Aluminum 6061-T6` + - Yield Strength: ~276 MPa + - Young's Modulus: ~68.9 GPa + - Density: ~2700 kg/m³ + - Poisson's Ratio: ~0.33 + +3. **If not Al 6061-T6**, update material assignment to match drone application requirements + +### 4. Results Configuration + +**Ensure these results are requested**: + +**For Static Solution (Solution 1)**: +- Displacement (VECTOR, all components) +- von Mises Stress +- Mass properties + +**For Modal Solution (Solution 2)**: +- Natural frequencies +- Mode shapes (optional, for visualization) + +## What You DON'T Need to Change + +The parametric design variables are already set up correctly in the beam model: +- `beam_half_core_thickness` (20-30mm) +- `beam_face_thickness` (1-3mm) +- `holes_diameter` (180-280mm) +- `hole_count` (8-14) + +These parameters will be automatically updated by the optimization loop. + +## Verification Steps + +Before running optimization, verify: + +1. **Two Solutions Exist**: + ``` + Solution 1: Static Analysis (SOL 101) - displacement and stress + Solution 2: Modal Analysis (SOL 103) - natural frequencies + ``` + +2. **Load is Correct**: + - Static load = 8.34 N downward at tip + +3. **Material is Al 7075-T6** + +4. **Both solutions solve successfully** with baseline parameters: + ``` + beam_half_core_thickness = 25mm + beam_face_thickness = 2mm + holes_diameter = 230mm + hole_count = 11 + ``` + +## Quick Test + +Run a manual solve with baseline parameters to verify: + +Expected Results (approximate): +- **Mass**: ~140-150g +- **Max Displacement**: ~1-2 mm +- **Max Stress**: ~80-100 MPa +- **First Frequency**: ~120-140 Hz + +If these are wildly different, check your setup. + +## Extraction Configuration + +The optimization engine will extract: +- **Mass**: From Solution 1 mass properties +- **Displacement**: Maximum displacement magnitude from Solution 1 +- **Stress**: Maximum von Mises stress from Solution 1 +- **Frequency**: First natural frequency (mode 1) from Solution 2 + +All extraction is automated - you just need to ensure the solutions are configured correctly. + +## Optional Enhancements + +If you want more realistic results: + +1. **Add Gravity Load**: + - Apply -9.81 m/s² gravity in addition to tip load + - Represents arm's own weight during flight + +2. **Add Damping** to modal analysis: + - Structural damping ratio: ~0.02 (2%) + - More realistic frequency response + +3. **Refine Mesh** at stress concentrations: + - Around holes + - At base constraint + - Better stress accuracy + +But these are NOT required for the optimization to run successfully. diff --git a/studies/uav_arm_optimization/README.md b/studies/uav_arm_optimization/README.md new file mode 100644 index 00000000..53dcbf6a --- /dev/null +++ b/studies/uav_arm_optimization/README.md @@ -0,0 +1,193 @@ +# Drone Camera Gimbal Support Arm Optimization + +## Engineering Scenario + +**Application**: Professional aerial cinematography drone +**Component**: Camera gimbal support arm +**Goal**: Lightweight design for extended flight time while maintaining camera stability + +## Problem Statement + +The current production arm weighs **145g** and meets all requirements. Marketing wants to advertise "30% longer flight time" by reducing weight. Your task: optimize the arm geometry to minimize weight while ensuring it doesn't compromise camera stability or structural integrity. + +### Real-World Constraints + +- **Camera Payload**: 850g (camera + gimbal mechanism) +- **Maximum Deflection**: 1.5mm (required for image stabilization systems) +- **Material**: Aluminum 6061-T6 (aerospace grade) +- **Safety Factor**: 2.3 on yield strength (276 MPa) +- **Vibration Avoidance**: Natural frequency must be > 150 Hz to avoid coupling with rotor frequencies (80-120 Hz) + +## Multi-Objective Optimization + +This study explores the **trade-off between two competing objectives**: + +### Objectives +1. **MINIMIZE Mass** - Every gram saved increases flight time + - Target: < 120g (17% weight savings) + - Current: 145g baseline + +2. **MAXIMIZE Fundamental Frequency** - Higher frequency = better vibration isolation + - Target: > 150 Hz (safety margin above 80-120 Hz rotor range) + - Trade-off: Lighter designs typically have lower frequencies + +### Constraints +1. **Max Displacement** < 1.5mm under 850g load +2. **Max von Mises Stress** < 120 MPa (Al 6061-T6 yield = 276 MPa, SF = 2.3) +3. **Natural Frequency** > 150 Hz (hard requirement) + +## Design Variables (Parametric Beam Model) + +- **beam_half_core_thickness**: 20-30 mm (affects stiffness and weight) +- **beam_face_thickness**: 1-3 mm (face sheets for bending resistance) +- **holes_diameter**: 180-280 mm (lightening holes for weight reduction) +- **hole_count**: 8-14 (number of lightening holes) + +## Expected Outcomes + +- **Pareto Front**: Shows designs on the optimal trade-off curve between mass and frequency +- **Weight Savings**: 10-20% reduction from 145g baseline +- **Constraint Analysis**: Clear visualization of which constraints are active/limiting +- **Design Insights**: Understand how design variables affect both objectives + +## Study Configuration + +- **Protocol**: Protocol 11 (Multi-Objective Optimization) +- **Sampler**: NSGA-II (genetic algorithm for Pareto fronts) +- **Trials**: 30 (sufficient for Pareto front exploration) +- **Duration**: ~1-2 hours (2-4 minutes per trial) + +## Files in This Study + +``` +drone_gimbal_arm_optimization/ +├── 1_setup/ +│ ├── model/ +│ │ ├── Beam.prt # Parametric beam geometry +│ │ ├── Beam_sim1.sim # Simulation setup (needs modal analysis!) +│ │ └── Beam_fem1.fem # Finite element mesh +│ ├── optimization_config.json # Multi-objective config +│ └── workflow_config.json # Extractor definitions +├── 2_results/ # Created during optimization +│ ├── study.db # Optuna database +│ ├── optimization_history_incremental.json +│ └── ... +├── run_optimization.py # Main execution script +├── NX_FILE_MODIFICATIONS_REQUIRED.md # IMPORTANT: Read this first! +└── README.md # This file +``` + +## Before You Run + +**CRITICAL**: You MUST modify the NX simulation files before running. + +Read [NX_FILE_MODIFICATIONS_REQUIRED.md](NX_FILE_MODIFICATIONS_REQUIRED.md) for detailed instructions. + +**Summary of Required Changes**: +1. Add **Modal Analysis Solution** (SOL 103) to extract natural frequencies +2. Update **static load** to 8.34 N (850g camera payload) +3. Verify **material** is Al 7075-T6 + +## Running the Optimization + +```bash +# Quick test (5 trials, ~10-20 minutes) +cd studies/drone_gimbal_arm_optimization +python run_optimization.py --trials 5 + +# Full study (30 trials, ~1-2 hours) +python run_optimization.py --trials 30 + +# Resume existing study +python run_optimization.py --resume +``` + +## Monitoring in Dashboard + +While optimization runs, monitor in real-time: + +1. **Start Dashboard Backend** (separate terminal): + ```bash + cd atomizer-dashboard/backend + python -m uvicorn api.main:app --reload --port 8000 + ``` + +2. **Start Dashboard Frontend** (another terminal): + ```bash + cd atomizer-dashboard/frontend + npm run dev + ``` + +3. **Open Browser**: http://localhost:3003 + +4. **Select Study**: drone_gimbal_arm_optimization + +### Dashboard Features You'll See + +- **Real-time trial updates** via WebSocket +- **Pareto front visualization** (mass vs frequency scatter plot) +- **Constraint violation tracking** (which trials failed which constraints) +- **Progress monitoring** (30 trials total) +- **New best notifications** when Pareto front expands + +## Interpreting Results + +### Pareto Front Analysis + +The Pareto front will show: +- **Lower-left designs**: Lighter but lower frequency (more prone to vibration) +- **Upper-right designs**: Heavier but higher frequency (better vibration isolation) +- **Middle region**: Balanced trade-offs + +### Selecting Final Design + +Choose based on flight profile: +- **Stable hovering flights**: Select lighter design (mass priority) +- **Dynamic maneuvers**: Select higher frequency design (vibration priority) +- **Balanced missions**: Mid-Pareto design + +### Constraint Active Check + +Look for designs where: +- Displacement constraint is just satisfied (1.4-1.5mm) = efficient use of deflection budget +- Frequency constraint is marginally above 150 Hz = not over-designed +- Stress well below limit = safety margin confirmed + +## Why This is Realistic + +This scenario reflects real engineering trade-offs in aerospace: + +1. **Weight vs Performance**: Classic aerospace dilemma +2. **Multi-Physics Constraints**: Static strength + dynamic vibration +3. **Safety Margins**: Realistic stress limits with safety factors +4. **Operational Requirements**: Specific to drone camera applications +5. **Pareto Decision-Making**: No single "best" design, requires engineering judgment + +## Comparison with Bracket Study + +Unlike the bracket study (single objective), this study shows: +- **Multiple optimal solutions** (Pareto set, not single optimum) +- **Trade-off visualization** (can't optimize both objectives simultaneously) +- **Richer decision support** (choose based on priorities) +- **More complex analysis** (static + modal) + +## Next Steps After Optimization + +1. **Review Pareto front** in dashboard +2. **Select 2-3 candidate designs** from different regions of Pareto front +3. **Detailed FEA verification** of selected candidates +4. **Fatigue analysis** for repeated flight cycles +5. **Prototype testing** to validate predictions +6. **Down-select** based on test results + +## Technical Notes + +- Uses **NSGA-II** multi-objective optimizer (Optuna) +- Handles **3 constraints** with penalty methods +- Extracts **4 quantities** from 2 different solutions (static + modal) +- Fully automated - no manual intervention during run +- Results compatible with all dashboard visualization features + +## Questions? + +This study demonstrates the full power of multi-objective optimization for real engineering problems. The Pareto front provides engineering insights that single-objective optimization cannot offer. diff --git a/studies/uav_arm_optimization/reset_study.py b/studies/uav_arm_optimization/reset_study.py new file mode 100644 index 00000000..494a9f45 --- /dev/null +++ b/studies/uav_arm_optimization/reset_study.py @@ -0,0 +1,16 @@ +"""Reset drone gimbal arm optimization study by deleting database.""" +import optuna +from pathlib import Path + +study_dir = Path(__file__).parent +storage = f"sqlite:///{study_dir / '2_results' / 'study.db'}" +study_name = "drone_gimbal_arm_optimization" + +try: + # Delete the study + optuna.delete_study(study_name=study_name, storage=storage) + print(f"[OK] Deleted study: {study_name}") +except KeyError: + print(f"[WARNING] Study '{study_name}' not found (database may not exist)") +except Exception as e: + print(f"[ERROR] Error: {e}") diff --git a/studies/uav_arm_optimization/run_optimization.py b/studies/uav_arm_optimization/run_optimization.py new file mode 100644 index 00000000..156585ef --- /dev/null +++ b/studies/uav_arm_optimization/run_optimization.py @@ -0,0 +1,322 @@ +""" +UAV Arm Optimization - Protocol 11 (Multi-Objective NSGA-II) +============================================================ + +Multi-objective optimization using NSGA-II to find Pareto front: +1. Minimize mass (target < 120g) +2. Maximize fundamental frequency (target > 150 Hz) + +Constraints: +- Max displacement < 1.5mm (850g camera payload) +- Max stress < 120 MPa (Al 6061-T6, SF=2.3) +- Natural frequency > 150 Hz (avoid rotor resonance) + +Usage: + python run_optimization.py --trials 50 + python run_optimization.py --trials 5 # Quick test + python run_optimization.py --resume # Continue existing study +""" + +import sys +import json +import argparse +from pathlib import Path +from datetime import datetime + +# Add project root to path +project_root = Path(__file__).resolve().parents[2] +sys.path.insert(0, str(project_root)) + +import optuna +from optuna.samplers import NSGAIISampler +from optimization_engine.nx_solver import NXSolver +from optimization_engine.extractors.extract_displacement import extract_displacement +from optimization_engine.extractors.extract_von_mises_stress import extract_solid_stress +from optimization_engine.extractors.op2_extractor import OP2Extractor +from optimization_engine.extractors.extract_frequency import extract_frequency +from optimization_engine.extractors.extract_mass_from_bdf import extract_mass_from_bdf +from optimization_engine.logger import get_logger + +# Import central configuration +try: + import config as atomizer_config +except ImportError: + atomizer_config = None + + +def load_config(config_file: Path) -> dict: + """Load configuration from JSON file.""" + with open(config_file, 'r') as f: + return json.load(f) + + +def main(): + parser = argparse.ArgumentParser(description='Run UAV arm multi-objective optimization') + parser.add_argument('--trials', type=int, default=50, help='Number of optimization trials') + parser.add_argument('--resume', action='store_true', help='Resume existing study') + args = parser.parse_args() + + # Get study directory + study_dir = Path(__file__).parent + results_dir = study_dir / "2_results" + results_dir.mkdir(exist_ok=True) + + # Initialize logger with file logging + logger = get_logger( + "uav_arm", + study_dir=results_dir + ) + + logger.info("=" * 80) + logger.info("UAV ARM OPTIMIZATION - PROTOCOL 11 (NSGA-II)") + logger.info("=" * 80) + logger.info("") + logger.info("Engineering Scenario:") + logger.info(" Unmanned aerial vehicle camera gimbal support arm") + logger.info("") + logger.info("Objectives:") + logger.info(" 1. MINIMIZE mass (target < 4000g, baseline = 4500g)") + logger.info(" 2. MAXIMIZE fundamental frequency (target > 150 Hz)") + logger.info("") + logger.info("Constraints:") + logger.info(" - Max displacement < 1.5mm (850g camera payload)") + logger.info(" - Max von Mises stress < 120 MPa (Al 6061-T6, SF=2.3)") + logger.info(" - Natural frequency > 150 Hz (avoid rotor resonance 80-120 Hz)") + logger.info("") + logger.info("Design Variables:") + logger.info(" - beam_half_core_thickness: 5-10 mm") + logger.info(" - beam_face_thickness: 1-3 mm") + logger.info(" - holes_diameter: 10-50 mm") + logger.info(" - hole_count: 8-14") + logger.info("") + logger.info(f"Running {args.trials} trials with NSGA-II sampler...") + logger.info("=" * 80) + logger.info("") + + # Load configuration + opt_config_file = study_dir / "1_setup" / "optimization_config.json" + + if not opt_config_file.exists(): + logger.error(f"Optimization config not found: {opt_config_file}") + sys.exit(1) + + opt_config = load_config(opt_config_file) + + logger.info(f"Loaded optimization config: {opt_config['study_name']}") + logger.info(f"Protocol: {opt_config['optimization_settings']['protocol']}") + logger.info("") + + # Setup paths + model_dir = study_dir / "1_setup" / "model" + model_file = model_dir / "Beam.prt" + sim_file = model_dir / "Beam_sim1.sim" + + # Initialize NX solver + nx_solver = NXSolver( + nastran_version=atomizer_config.NX_VERSION if atomizer_config else "2412", + timeout=atomizer_config.NASTRAN_TIMEOUT if atomizer_config else 600, + use_journal=True, + enable_session_management=True, + study_name="uav_arm_optimization" + ) + + def objective(trial: optuna.Trial) -> tuple: + """ + Multi-objective function for NSGA-II. + + Returns: + (mass, frequency): Tuple for NSGA-II (minimize mass, maximize frequency) + """ + # Sample design variables + design_vars = {} + for dv in opt_config['design_variables']: + design_vars[dv['parameter']] = trial.suggest_float( + dv['parameter'], + dv['bounds'][0], + dv['bounds'][1] + ) + + logger.trial_start(trial.number, design_vars) + + # Run simulation + logger.info("Running simulation...") + try: + result = nx_solver.run_simulation( + sim_file=sim_file, + working_dir=model_dir, + expression_updates=design_vars, + solution_name=None # Solve all solutions (static + modal) + ) + + if not result['success']: + error_msg = result.get('error', 'Unknown error') + logger.trial_failed(trial.number, error_msg) + trial.set_user_attr("feasible", False) + trial.set_user_attr("error", error_msg) + # Prune failed simulations instead of returning penalty values + raise optuna.TrialPruned(f"Simulation failed: {error_msg}") + + op2_file = result['op2_file'] + logger.info(f"Simulation successful: {op2_file}") + + # Extract all objectives and constraints + logger.info("Extracting results...") + + # Extract mass (grams) from CAD expression p173 + # This expression measures the CAD mass directly + from optimization_engine.extractors.extract_mass_from_expression import extract_mass_from_expression + + prt_file = model_file # Beam.prt + mass_kg = extract_mass_from_expression(prt_file, expression_name="p173") + mass = mass_kg * 1000.0 # Convert to grams + logger.info(f" mass: {mass:.3f} g (from CAD expression p173)") + + # Extract frequency (Hz) - from modal analysis (solution 2) + # The drone gimbal has TWO solutions: solution_1 (static) and solution_2 (modal) + op2_modal = str(op2_file).replace("solution_1", "solution_2") + freq_result = extract_frequency(op2_modal, subcase=1, mode_number=1) + frequency = freq_result['frequency'] + logger.info(f" fundamental_frequency: {frequency:.3f} Hz") + + # Extract displacement (mm) - from static analysis (subcase 1) + disp_result = extract_displacement(op2_file, subcase=1) + max_disp = disp_result['max_displacement'] + logger.info(f" max_displacement_limit: {max_disp:.3f} mm") + + # Extract stress (MPa) - from static analysis (subcase 1) + stress_result = extract_solid_stress(op2_file, subcase=1, element_type='cquad4') + max_stress = stress_result['max_von_mises'] + logger.info(f" max_stress_limit: {max_stress:.3f} MPa") + + # Frequency constraint uses same value as objective + min_freq = frequency + logger.info(f" min_frequency_limit: {min_freq:.3f} Hz") + + # Check constraints + constraint_values = { + 'max_displacement_limit': max_disp, + 'max_stress_limit': max_stress, + 'min_frequency_limit': min_freq + } + + constraint_violations = [] + for constraint in opt_config['constraints']: + name = constraint['name'] + value = constraint_values[name] + threshold = constraint['threshold'] + c_type = constraint['type'] + + if c_type == 'less_than' and value > threshold: + violation = (value - threshold) / threshold + constraint_violations.append(f"{name}: {value:.2f} > {threshold} (violation: {violation:.1%})") + elif c_type == 'greater_than' and value < threshold: + violation = (threshold - value) / threshold + constraint_violations.append(f"{name}: {value:.2f} < {threshold} (violation: {violation:.1%})") + + if constraint_violations: + logger.warning("Constraint violations:") + for v in constraint_violations: + logger.warning(f" - {v}") + trial.set_user_attr("constraint_violations", constraint_violations) + trial.set_user_attr("feasible", False) + # NSGA-II handles constraints through constraint_satisfied flag - no penalty needed + else: + logger.info("All constraints satisfied") + trial.set_user_attr("feasible", True) + + # Store all results as trial attributes for dashboard + trial.set_user_attr("mass", mass) + trial.set_user_attr("frequency", frequency) + trial.set_user_attr("max_displacement", max_disp) + trial.set_user_attr("max_stress", max_stress) + trial.set_user_attr("design_vars", design_vars) + + # Log successful trial completion + objectives = {"mass": mass, "frequency": frequency} + constraints_dict = { + "max_displacement_limit": max_disp, + "max_stress_limit": max_stress, + "min_frequency_limit": min_freq + } + feasible = len(constraint_violations) == 0 + logger.trial_complete(trial.number, objectives, constraints_dict, feasible) + + # Return tuple for NSGA-II: (minimize mass, maximize frequency) + # Using proper semantic directions in study creation + return (mass, frequency) + + except optuna.TrialPruned: + # Re-raise pruned exceptions (don't catch them) + raise + except Exception as e: + logger.trial_failed(trial.number, str(e)) + logger.error("Full traceback:", exc_info=True) + trial.set_user_attr("error", str(e)) + trial.set_user_attr("feasible", False) + # Prune corrupted trials instead of returning penalty values + raise optuna.TrialPruned(f"Trial failed with exception: {str(e)}") + + # Create Optuna study with NSGA-II sampler + study_name = opt_config['study_name'] + storage = f"sqlite:///{results_dir / 'study.db'}" + + if args.resume: + logger.info(f"Resuming existing study: {study_name}") + study = optuna.load_study( + study_name=study_name, + storage=storage, + sampler=NSGAIISampler() + ) + logger.info(f"Loaded study with {len(study.trials)} existing trials") + else: + logger.info(f"Creating new study: {study_name}") + study = optuna.create_study( + study_name=study_name, + storage=storage, + directions=['minimize', 'maximize'], # Minimize mass, maximize frequency + sampler=NSGAIISampler(), + load_if_exists=True # Always allow resuming existing study + ) + + # Log study start + logger.study_start(study_name, n_trials=args.trials, sampler="NSGAIISampler") + logger.info("") + + study.optimize( + objective, + n_trials=args.trials, + show_progress_bar=True + ) + + # Log study completion + n_successful = len([t for t in study.trials if t.state == optuna.trial.TrialState.COMPLETE]) + logger.study_complete(study_name, n_trials=len(study.trials), n_successful=n_successful) + + logger.info("") + logger.info(f"Pareto front solutions: {len(study.best_trials)}") + logger.info("") + + # Show Pareto front + logger.info("Pareto Front (non-dominated solutions):") + logger.info("") + for i, trial in enumerate(study.best_trials): + mass = trial.values[0] + freq = trial.values[1] # Frequency is stored as positive now + feasible = trial.user_attrs.get('feasible', False) + logger.info(f" Solution #{i+1} (Trial {trial.number}):") + logger.info(f" Mass: {mass:.2f} g") + logger.info(f" Frequency: {freq:.2f} Hz") + logger.info(f" Feasible: {feasible}") + logger.info("") + + logger.info("Results available in: studies/uav_arm_optimization/2_results/") + logger.info("") + logger.info("View in Dashboard:") + logger.info(" 1. Ensure backend is running: cd atomizer-dashboard/backend && python -m uvicorn api.main:app --reload") + logger.info(" 2. Open dashboard: http://localhost:3003") + logger.info(" 3. Select study: uav_arm_optimization") + logger.info("") + + +if __name__ == "__main__": + main()