feat: Update create-study skill with Phase 1.3 logging and create UAV arm test study

Phase 1.3.1 Complete - Logging Integration:

1. Updated .claude/skills/create-study.md:
   - Added IMPORTANT section on structured logging from Phase 1.3
   - Documents logger import and initialization
   - Lists all structured logging methods (trial_start, trial_complete, etc.)
   - References drone_gimbal_arm as template

2. Created studies/uav_arm_optimization/:
   - Multi-objective NSGA-II study (50 trials)
   - Same type as drone_gimbal_arm but renamed for UAV context
   - Full integration with Phase 1.3 logging system
   - Configuration: minimize mass + maximize frequency
   - Running to validate complete logging system

Benefits:
- All future studies created via skill will have consistent logging
- Production-ready error handling and file logging from day 1
- Color-coded console output for better monitoring
- Automatic log rotation (50MB, 3 backups)

Related: Phase 1.2 (Configuration), Phase 1.3 (Logger), Phase 1.3.1 (Integration)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-24 10:18:20 -05:00
parent d2c18bb7db
commit 7837255ba8
38 changed files with 2022 additions and 0 deletions

View File

@@ -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

Binary file not shown.

View File

@@ -0,0 +1 @@
4.289393245091135

View File

@@ -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 <sim_file_path>
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 <sim_file_path> [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)

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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
}
}

View File

@@ -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
}
}
}
]
}

Binary file not shown.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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}")

View File

@@ -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()