Files
Atomizer/studies/bracket_displacement_maximizing/optimization_log_old.txt
Anto01 2f3afc3813 feat: Add substudy system with live history tracking and workflow fixes
Major Features:
- Hierarchical substudy system (like NX Solutions/Subcases)
  * Shared model files across all substudies
  * Independent configuration per substudy
  * Continuation support from previous substudies
  * Real-time incremental history updates
- Live history tracking with optimization_history_incremental.json
- Complete bracket_displacement_maximizing study with substudy examples

Core Fixes:
- Fixed expression update workflow to pass design_vars through simulation_runner
  * Restored working NX journal expression update mechanism
  * OP2 timestamp verification instead of file deletion
  * Resolved issue where all trials returned identical objective values
- Fixed LLMOptimizationRunner to pass design variables to simulation runner
- Enhanced NXSolver with timestamp-based file regeneration verification

New Components:
- optimization_engine/llm_optimization_runner.py - LLM-driven optimization runner
- optimization_engine/optimization_setup_wizard.py - Phase 3.3 setup wizard
- studies/bracket_displacement_maximizing/ - Complete substudy example
  * run_substudy.py - Substudy runner with continuation
  * run_optimization.py - Standalone optimization runner
  * config/substudy_template.json - Template for new substudies
  * substudies/coarse_exploration/ - 20-trial coarse search
  * substudies/fine_tuning/ - 50-trial refinement (continuation example)
  * SUBSTUDIES_README.md - Complete substudy documentation

Technical Improvements:
- Incremental history saving after each trial (optimization_history_incremental.json)
- Expression update workflow: .prt update → NX journal receives values → geometry update → FEM update → solve
- Trial indexing fix in substudy result saving
- Updated README with substudy system documentation

Testing:
- Successfully ran 20-trial coarse_exploration substudy
- Verified different objective values across trials (workflow fix validated)
- Confirmed live history updates in real-time
- Tested shared model file usage across substudies

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16 21:29:54 -05:00

2161 lines
108 KiB
Plaintext

fatal: not a git repository (or any of the parent directories): .git
================================================================================
BRACKET DISPLACEMENT MAXIMIZATION STUDY
================================================================================
Study Configuration:
- Objective: Maximize displacement
- Constraint: Safety factor >= 4.0
- Material: Aluminum 6061-T6 (Yield = 276 MPa)
- Design Variables:
* tip_thickness: 15-25 mm
* support_angle: 20-40 degrees
- Optimization trials: 20
Part file: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt
Simulation file: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket_sim1.sim
================================================================================
STEP 1: INITIALIZATION
================================================================================
Initializing Optimization Setup Wizard...
[OK] Wizard initialized
================================================================================
STEP 2: MODEL INTROSPECTION
================================================================================
Reading NX model expressions...
Found 4 expressions:
- support_angle: 38.0 degrees
- tip_thickness: 17.0 mm
- p3: 10.0 mm
- support_blend_radius: 10.0 mm
================================================================================
STEP 3: BASELINE SIMULATION
================================================================================
Running baseline simulation to generate reference OP2...
(This validates that NX simulation works before optimization)
[NX SOLVER] Starting simulation...
Input file: Bracket_sim1.sim
Working dir: c:\Users\antoi\Documents\Atomaste\Atomizer\tests
Mode: Journal
Deleted 1 old result file(s) to force fresh solve
[JOURNAL OUTPUT]
Mesh-Based Errors Summary
-------------------------
Total: 0 errors and 0 warnings
Material-Based Errors Summary
-----------------------------
Total: 0 errors and 0 warnings
Solution-Based Errors Summary
-----------------------------
Iterative Solver Option
More than 80 percent of the elements in this model are 3D elements.
It is therefore recommended that you turn ON the Element Iterative Solver in the "Edit
Solution" dialog.
Total: 0 errors and 0 warnings
Load/BC-Based Errors Summary
----------------------------
Total: 0 errors and 0 warnings
Nastran Model Setup Check completed
*** 20:43:54 ***
Starting Nastran Exporter
*** 20:43:54 ***
Writing file
c:\Users\antoi\Documents\Atomaste\Atomizer\tests\bracket_sim1-solution_1.dat
*** 20:43:54 ***
Writing SIMCENTER NASTRAN 2412.0 compatible deck
*** 20:43:54 ***
Writing Nastran System section
*** 20:43:54 ***
Writing File Management section
*** 20:43:54 ***
Writing Executive Control section
*** 20:43:54 ***
Writing Case Control section
*** 20:43:54 ***
Writing Bulk Data section
*** 20:43:54 ***
Writing Nodes
*** 20:43:54 ***
Writing Elements
*** 20:43:54 ***
Writing Physical Properties
*** 20:43:54 ***
Writing Materials
*** 20:43:54 ***
Writing Degree-of-Freedom Sets
*** 20:43:54 ***
Writing Loads and Constraints
*** 20:43:54 ***
Writing Coordinate Systems
*** 20:43:54 ***
Validating Solution Setup
*** 20:43:54 ***
Summary of Bulk Data cards written
+----------+----------+
| NAME | NUMBER |
+----------+----------+
| CHEXA | 306 |
| CPENTA | 10 |
| FORCE | 3 |
| GRID | 585 |
| MAT1 | 1 |
| MATT1 | 1 |
| PARAM | 6 |
| PSOLID | 1 |
| SPC | 51 |
| TABLEM1 | 3 |
+----------+----------+
*** 20:43:54 ***
Nastran Deck Successfully Written
[JOURNAL] Opening simulation: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket_sim1.sim
[JOURNAL] Checking for open parts...
[JOURNAL] Opening simulation fresh from disk...
[JOURNAL] STEP 1: Updating Bracket.prt geometry...
[JOURNAL] Rebuilding geometry with new expression values...
[JOURNAL] Bracket geometry updated (0 errors)
[JOURNAL] STEP 2: Opening Bracket_fem1.fem...
[JOURNAL] Updating FE Model...
[JOURNAL] FE Model updated with new geometry!
[JOURNAL] STEP 3: Switching back to sim part...
[JOURNAL] Switched back to sim part
[JOURNAL] Starting solve...
[JOURNAL] Solve submitted!
[JOURNAL] Solutions solved: -1786238346
[JOURNAL] Solutions failed: 32764
[JOURNAL] Solutions skipped: 2055733824
[JOURNAL] Saving simulation to ensure output files are written...
[JOURNAL] Save complete!
[JOURNAL ERRORS]
Journal execution results for c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py...
Syntax errors:
Line 0: Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py", line 247, in <module>
sys.exit(0 if success else 1)
[NX SOLVER] Waiting for solve to complete...
[NX SOLVER] Output files detected after 0.5s
[NX SOLVER] Complete in 4.3s
[NX SOLVER] Results: bracket_sim1-solution_1.op2
[OK] Baseline OP2: bracket_sim1-solution_1.op2
================================================================================
STEP 4: OP2 INTROSPECTION
================================================================================
Analyzing OP2 file to auto-detect element types...
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
OP2 Contents:
- Element types with stress: CHEXA, CPENTA
- Available result types: displacement, stress
- Subcases: [1]
- Nodes: 0
- Elements: 0
================================================================================
STEP 5: WORKFLOW CONFIGURATION
================================================================================
Building LLM workflow with auto-detected element types...
Using detected element type: CHEXA
================================================================================
STEP 6: PIPELINE VALIDATION
================================================================================
Validating complete pipeline with baseline OP2...
(Dry-run test of extractors, calculations, hooks, objective)
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
Required input 'min_force' not found in context
Hook 'ratio_hook' failed: Missing required input: min_force
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\min_to_avg_ratio_hook.py", line 38, in ratio_hook
raise ValueError(f"Missing required input: min_force")
ValueError: Missing required input: min_force
Hook 'ratio_hook' failed: Missing required input: min_force
Required input 'max_stress' not found in context
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\safety_factor_hook.py", line 38, in safety_factor_hook
raise ValueError(f"Missing required input: max_stress")
ValueError: Missing required input: max_stress
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Required input 'norm_stress' not found in context
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\weighted_objective_test.py", line 38, in weighted_objective_hook
raise ValueError(f"Missing required input: norm_stress")
ValueError: Missing required input: norm_stress
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
[WARNING] No explicit objective, using: max_displacement
[I 2025-11-16 20:43:58,153] A new study created in RDB with name: bracket_displacement_maximizing
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
Validation Results:
[OK] extractor: ['max_displacement', 'max_disp_node', 'max_disp_x', 'max_disp_y', 'max_disp_z']
[OK] extractor: ['max_von_mises', 'max_stress_element']
[OK] calculation: Created ['safety_factor']
[OK] calculation: Created ['safety_factor', 'neg_displacement']
[OK] hook: 3 results
[OK] objective: 0.36178338527679443
[SUCCESS] All pipeline components validated!
================================================================================
STEP 7: OPTIMIZATION SETUP
================================================================================
Creating model updater and simulation runner...
[OK] Model updater ready
[OK] Simulation runner ready
Initializing LLM optimization runner...
[OK] Output directory: c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_results\bracket_displacement_maximizing
[OK] Extractors generated: 2
[OK] Inline calculations: 2
[OK] Hooks loaded: 9
================================================================================
STEP 8: RUNNING OPTIMIZATION
================================================================================
Starting 20-trial optimization...
(This will take several minutes)
Updating 2 expressions in Bracket.prt:
Updated: tip_thickness = 17 -> 24
Updated: support_angle = 38 -> 25
Successfully updated 2/2 expressions
Backup created: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt.bak_20251116_204358
Saved to: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt
[NX SOLVER] Starting simulation...
Input file: Bracket_sim1.sim
Working dir: c:\Users\antoi\Documents\Atomaste\Atomizer\tests
Mode: Journal
Warning: Could not delete bracket_sim1-solution_1.log: [WinError 32] The process cannot access the file because it is being used by another process: 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.log'
Deleted 2 old result file(s) to force fresh solve
[JOURNAL OUTPUT]
Mesh-Based Errors Summary
-------------------------
Total: 0 errors and 0 warnings
Material-Based Errors Summary
-----------------------------
Total: 0 errors and 0 warnings
Solution-Based Errors Summary
-----------------------------
Iterative Solver Option
More than 80 percent of the elements in this model are 3D elements.
It is therefore recommended that you turn ON the Element Iterative Solver in the "Edit
Solution" dialog.
Total: 0 errors and 0 warnings
Load/BC-Based Errors Summary
----------------------------
Total: 0 errors and 0 warnings
Nastran Model Setup Check completed
*** 20:44:01 ***
Starting Nastran Exporter
*** 20:44:01 ***
Writing file
c:\Users\antoi\Documents\Atomaste\Atomizer\tests\bracket_sim1-solution_1.dat
*** 20:44:01 ***
Writing SIMCENTER NASTRAN 2412.0 compatible deck
*** 20:44:01 ***
Writing Nastran System section
*** 20:44:01 ***
Writing File Management section
*** 20:44:01 ***
Writing Executive Control section
*** 20:44:01 ***
Writing Case Control section
*** 20:44:01 ***
Writing Bulk Data section
*** 20:44:01 ***
Writing Nodes
*** 20:44:01 ***
Writing Elements
*** 20:44:01 ***
Writing Physical Properties
*** 20:44:01 ***
Writing Materials
*** 20:44:01 ***
Writing Degree-of-Freedom Sets
*** 20:44:01 ***
Writing Loads and Constraints
*** 20:44:01 ***
Writing Coordinate Systems
*** 20:44:01 ***
Validating Solution Setup
*** 20:44:01 ***
Summary of Bulk Data cards written
+----------+----------+
| NAME | NUMBER |
+----------+----------+
| CHEXA | 306 |
| CPENTA | 10 |
| FORCE | 3 |
| GRID | 585 |
| MAT1 | 1 |
| MATT1 | 1 |
| PARAM | 6 |
| PSOLID | 1 |
| SPC | 51 |
| TABLEM1 | 3 |
+----------+----------+
*** 20:44:01 ***
Nastran Deck Successfully Written
[JOURNAL] Opening simulation: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket_sim1.sim
[JOURNAL] Checking for open parts...
[JOURNAL] Opening simulation fresh from disk...
[JOURNAL] STEP 1: Updating Bracket.prt geometry...
[JOURNAL] Rebuilding geometry with new expression values...
[JOURNAL] Bracket geometry updated (0 errors)
[JOURNAL] STEP 2: Opening Bracket_fem1.fem...
[JOURNAL] Updating FE Model...
[JOURNAL] FE Model updated with new geometry!
[JOURNAL] STEP 3: Switching back to sim part...
[JOURNAL] Switched back to sim part
[JOURNAL] Starting solve...
[JOURNAL] Solve submitted!
[JOURNAL] Solutions solved: -1472058762
[JOURNAL] Solutions failed: 32764
[JOURNAL] Solutions skipped: -630324672
[JOURNAL] Saving simulation to ensure output files are written...
[JOURNAL] Save complete!
[JOURNAL ERRORS]
Journal execution results for c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py...
Syntax errors:
Line 0: Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py", line 247, in <module>
sys.exit(0 if success else 1)
[NX SOLVER] Waiting for solve to complete...
[NX SOLVER] Output files detected after 0.5s
[NX SOLVER] Complete in 4.4s
[NX SOLVER] Results: bracket_sim1-solution_1.op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
Extraction failed: extract_solid_stress - 1
Extraction failed for extract_solid_stress: 1
Inline calculation failed: name 'max_von_mises' is not defined
Required input 'min_force' not found in context
Hook 'ratio_hook' failed: Missing required input: min_force
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\min_to_avg_ratio_hook.py", line 38, in ratio_hook
raise ValueError(f"Missing required input: min_force")
ValueError: Missing required input: min_force
Hook 'ratio_hook' failed: Missing required input: min_force
Required input 'max_stress' not found in context
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\safety_factor_hook.py", line 38, in safety_factor_hook
raise ValueError(f"Missing required input: max_stress")
ValueError: Missing required input: max_stress
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Required input 'norm_stress' not found in context
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\weighted_objective_test.py", line 38, in weighted_objective_hook
raise ValueError(f"Missing required input: norm_stress")
ValueError: Missing required input: norm_stress
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
No explicit objective found, using: max_displacement
[I 2025-11-16 20:44:03,240] Trial 0 finished with value: 0.36178338527679443 and parameters: {'tip_thickness': 24.057174360465407, 'support_angle': 25.35525889588185}. Best is trial 0 with value: 0.36178338527679443.
DEBUG: op2.py:648 finished reading op2
Updating 2 expressions in Bracket.prt:
Updated: tip_thickness = 24 -> 18
Updated: support_angle = 25 -> 25
Successfully updated 2/2 expressions
Backup created: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt.bak_20251116_204403
Saved to: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt
[NX SOLVER] Starting simulation...
Input file: Bracket_sim1.sim
Working dir: c:\Users\antoi\Documents\Atomaste\Atomizer\tests
Mode: Journal
Warning: Could not delete bracket_sim1-solution_1.log: [WinError 32] The process cannot access the file because it is being used by another process: 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.log'
Deleted 2 old result file(s) to force fresh solve
[JOURNAL OUTPUT]
Mesh-Based Errors Summary
-------------------------
Total: 0 errors and 0 warnings
Material-Based Errors Summary
-----------------------------
Total: 0 errors and 0 warnings
Solution-Based Errors Summary
-----------------------------
Iterative Solver Option
More than 80 percent of the elements in this model are 3D elements.
It is therefore recommended that you turn ON the Element Iterative Solver in the "Edit
Solution" dialog.
Total: 0 errors and 0 warnings
Load/BC-Based Errors Summary
----------------------------
Total: 0 errors and 0 warnings
Nastran Model Setup Check completed
*** 20:44:06 ***
Starting Nastran Exporter
*** 20:44:06 ***
Writing file
c:\Users\antoi\Documents\Atomaste\Atomizer\tests\bracket_sim1-solution_1.dat
*** 20:44:06 ***
Writing SIMCENTER NASTRAN 2412.0 compatible deck
*** 20:44:06 ***
Writing Nastran System section
*** 20:44:06 ***
Writing File Management section
*** 20:44:06 ***
Writing Executive Control section
*** 20:44:06 ***
Writing Case Control section
*** 20:44:06 ***
Writing Bulk Data section
*** 20:44:06 ***
Writing Nodes
*** 20:44:06 ***
Writing Elements
*** 20:44:06 ***
Writing Physical Properties
*** 20:44:06 ***
Writing Materials
*** 20:44:06 ***
Writing Degree-of-Freedom Sets
*** 20:44:06 ***
Writing Loads and Constraints
*** 20:44:06 ***
Writing Coordinate Systems
*** 20:44:06 ***
Validating Solution Setup
*** 20:44:06 ***
Summary of Bulk Data cards written
+----------+----------+
| NAME | NUMBER |
+----------+----------+
| CHEXA | 306 |
| CPENTA | 10 |
| FORCE | 3 |
| GRID | 585 |
| MAT1 | 1 |
| MATT1 | 1 |
| PARAM | 6 |
| PSOLID | 1 |
| SPC | 51 |
| TABLEM1 | 3 |
+----------+----------+
*** 20:44:06 ***
Nastran Deck Successfully Written
[JOURNAL] Opening simulation: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket_sim1.sim
[JOURNAL] Checking for open parts...
[JOURNAL] Opening simulation fresh from disk...
[JOURNAL] STEP 1: Updating Bracket.prt geometry...
[JOURNAL] Rebuilding geometry with new expression values...
[JOURNAL] Bracket geometry updated (0 errors)
[JOURNAL] STEP 2: Opening Bracket_fem1.fem...
[JOURNAL] Updating FE Model...
[JOURNAL] FE Model updated with new geometry!
[JOURNAL] STEP 3: Switching back to sim part...
[JOURNAL] Switched back to sim part
[JOURNAL] Starting solve...
[JOURNAL] Solve submitted!
[JOURNAL] Solutions solved: -1925305738
[JOURNAL] Solutions failed: 32764
[JOURNAL] Solutions skipped: 1225720384
[JOURNAL] Saving simulation to ensure output files are written...
[JOURNAL] Save complete!
[JOURNAL ERRORS]
Journal execution results for c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py...
Syntax errors:
Line 0: Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py", line 247, in <module>
sys.exit(0 if success else 1)
[NX SOLVER] Waiting for solve to complete...
[NX SOLVER] Output files detected after 0.5s
[NX SOLVER] Complete in 4.4s
[NX SOLVER] Results: bracket_sim1-solution_1.op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
Extraction failed: extract_solid_stress - 1
Extraction failed for extract_solid_stress: 1
Inline calculation failed: name 'max_von_mises' is not defined
Required input 'min_force' not found in context
Hook 'ratio_hook' failed: Missing required input: min_force
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\min_to_avg_ratio_hook.py", line 38, in ratio_hook
raise ValueError(f"Missing required input: min_force")
ValueError: Missing required input: min_force
Hook 'ratio_hook' failed: Missing required input: min_force
Required input 'max_stress' not found in context
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\safety_factor_hook.py", line 38, in safety_factor_hook
raise ValueError(f"Missing required input: max_stress")
ValueError: Missing required input: max_stress
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Required input 'norm_stress' not found in context
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\weighted_objective_test.py", line 38, in weighted_objective_hook
raise ValueError(f"Missing required input: norm_stress")
ValueError: Missing required input: norm_stress
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
No explicit objective found, using: max_displacement
[I 2025-11-16 20:44:08,320] Trial 1 finished with value: 0.36178338527679443 and parameters: {'tip_thickness': 18.304620477081855, 'support_angle': 25.394969100877468}. Best is trial 0 with value: 0.36178338527679443.
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
Updating 2 expressions in Bracket.prt:
Updated: tip_thickness = 18 -> 19
Updated: support_angle = 25 -> 31
Successfully updated 2/2 expressions
Backup created: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt.bak_20251116_204408
Saved to: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt
[NX SOLVER] Starting simulation...
Input file: Bracket_sim1.sim
Working dir: c:\Users\antoi\Documents\Atomaste\Atomizer\tests
Mode: Journal
Warning: Could not delete bracket_sim1-solution_1.log: [WinError 32] The process cannot access the file because it is being used by another process: 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.log'
Deleted 2 old result file(s) to force fresh solve
[JOURNAL OUTPUT]
Mesh-Based Errors Summary
-------------------------
Total: 0 errors and 0 warnings
Material-Based Errors Summary
-----------------------------
Total: 0 errors and 0 warnings
Solution-Based Errors Summary
-----------------------------
Iterative Solver Option
More than 80 percent of the elements in this model are 3D elements.
It is therefore recommended that you turn ON the Element Iterative Solver in the "Edit
Solution" dialog.
Total: 0 errors and 0 warnings
Load/BC-Based Errors Summary
----------------------------
Total: 0 errors and 0 warnings
Nastran Model Setup Check completed
*** 20:44:11 ***
Starting Nastran Exporter
*** 20:44:11 ***
Writing file
c:\Users\antoi\Documents\Atomaste\Atomizer\tests\bracket_sim1-solution_1.dat
*** 20:44:11 ***
Writing SIMCENTER NASTRAN 2412.0 compatible deck
*** 20:44:11 ***
Writing Nastran System section
*** 20:44:11 ***
Writing File Management section
*** 20:44:11 ***
Writing Executive Control section
*** 20:44:11 ***
Writing Case Control section
*** 20:44:11 ***
Writing Bulk Data section
*** 20:44:11 ***
Writing Nodes
*** 20:44:11 ***
Writing Elements
*** 20:44:11 ***
Writing Physical Properties
*** 20:44:11 ***
Writing Materials
*** 20:44:11 ***
Writing Degree-of-Freedom Sets
*** 20:44:11 ***
Writing Loads and Constraints
*** 20:44:11 ***
Writing Coordinate Systems
*** 20:44:11 ***
Validating Solution Setup
*** 20:44:11 ***
Summary of Bulk Data cards written
+----------+----------+
| NAME | NUMBER |
+----------+----------+
| CHEXA | 306 |
| CPENTA | 10 |
| FORCE | 3 |
| GRID | 585 |
| MAT1 | 1 |
| MATT1 | 1 |
| PARAM | 6 |
| PSOLID | 1 |
| SPC | 51 |
| TABLEM1 | 3 |
+----------+----------+
*** 20:44:11 ***
Nastran Deck Successfully Written
[JOURNAL] Opening simulation: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket_sim1.sim
[JOURNAL] Checking for open parts...
[JOURNAL] Opening simulation fresh from disk...
[JOURNAL] STEP 1: Updating Bracket.prt geometry...
[JOURNAL] Rebuilding geometry with new expression values...
[JOURNAL] Bracket geometry updated (0 errors)
[JOURNAL] STEP 2: Opening Bracket_fem1.fem...
[JOURNAL] Updating FE Model...
[JOURNAL] FE Model updated with new geometry!
[JOURNAL] STEP 3: Switching back to sim part...
[JOURNAL] Switched back to sim part
[JOURNAL] Starting solve...
[JOURNAL] Solve submitted!
[JOURNAL] Solutions solved: -1928254858
[JOURNAL] Solutions failed: 32764
[JOURNAL] Solutions skipped: -613678528
[JOURNAL] Saving simulation to ensure output files are written...
[JOURNAL] Save complete!
[JOURNAL ERRORS]
Journal execution results for c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py...
Syntax errors:
Line 0: Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py", line 247, in <module>
sys.exit(0 if success else 1)
[NX SOLVER] Waiting for solve to complete...
[NX SOLVER] Output files detected after 0.5s
[NX SOLVER] Complete in 4.5s
[NX SOLVER] Results: bracket_sim1-solution_1.op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
Extraction failed: extract_solid_stress - 1
Extraction failed for extract_solid_stress: 1
Inline calculation failed: name 'max_von_mises' is not defined
Required input 'min_force' not found in context
Hook 'ratio_hook' failed: Missing required input: min_force
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\min_to_avg_ratio_hook.py", line 38, in ratio_hook
raise ValueError(f"Missing required input: min_force")
ValueError: Missing required input: min_force
Hook 'ratio_hook' failed: Missing required input: min_force
Required input 'max_stress' not found in context
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\safety_factor_hook.py", line 38, in safety_factor_hook
raise ValueError(f"Missing required input: max_stress")
ValueError: Missing required input: max_stress
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Required input 'norm_stress' not found in context
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\weighted_objective_test.py", line 38, in weighted_objective_hook
raise ValueError(f"Missing required input: norm_stress")
ValueError: Missing required input: norm_stress
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
No explicit objective found, using: max_displacement
[I 2025-11-16 20:44:13,424] Trial 2 finished with value: 0.36178338527679443 and parameters: {'tip_thickness': 19.533548039349455, 'support_angle': 31.844371833801826}. Best is trial 0 with value: 0.36178338527679443.
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
Updating 2 expressions in Bracket.prt:
Updated: tip_thickness = 19 -> 22
Updated: support_angle = 31 -> 22
Successfully updated 2/2 expressions
Backup created: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt.bak_20251116_204413
Saved to: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt
[NX SOLVER] Starting simulation...
Input file: Bracket_sim1.sim
Working dir: c:\Users\antoi\Documents\Atomaste\Atomizer\tests
Mode: Journal
Warning: Could not delete bracket_sim1-solution_1.log: [WinError 32] The process cannot access the file because it is being used by another process: 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.log'
Deleted 2 old result file(s) to force fresh solve
[JOURNAL OUTPUT]
Mesh-Based Errors Summary
-------------------------
Total: 0 errors and 0 warnings
Material-Based Errors Summary
-----------------------------
Total: 0 errors and 0 warnings
Solution-Based Errors Summary
-----------------------------
Iterative Solver Option
More than 80 percent of the elements in this model are 3D elements.
It is therefore recommended that you turn ON the Element Iterative Solver in the "Edit
Solution" dialog.
Total: 0 errors and 0 warnings
Load/BC-Based Errors Summary
----------------------------
Total: 0 errors and 0 warnings
Nastran Model Setup Check completed
*** 20:44:16 ***
Starting Nastran Exporter
*** 20:44:16 ***
Writing file
c:\Users\antoi\Documents\Atomaste\Atomizer\tests\bracket_sim1-solution_1.dat
*** 20:44:16 ***
Writing SIMCENTER NASTRAN 2412.0 compatible deck
*** 20:44:16 ***
Writing Nastran System section
*** 20:44:16 ***
Writing File Management section
*** 20:44:16 ***
Writing Executive Control section
*** 20:44:16 ***
Writing Case Control section
*** 20:44:16 ***
Writing Bulk Data section
*** 20:44:16 ***
Writing Nodes
*** 20:44:16 ***
Writing Elements
*** 20:44:16 ***
Writing Physical Properties
*** 20:44:16 ***
Writing Materials
*** 20:44:16 ***
Writing Degree-of-Freedom Sets
*** 20:44:16 ***
Writing Loads and Constraints
*** 20:44:16 ***
Writing Coordinate Systems
*** 20:44:16 ***
Validating Solution Setup
*** 20:44:16 ***
Summary of Bulk Data cards written
+----------+----------+
| NAME | NUMBER |
+----------+----------+
| CHEXA | 306 |
| CPENTA | 10 |
| FORCE | 3 |
| GRID | 585 |
| MAT1 | 1 |
| MATT1 | 1 |
| PARAM | 6 |
| PSOLID | 1 |
| SPC | 51 |
| TABLEM1 | 3 |
+----------+----------+
*** 20:44:16 ***
Nastran Deck Successfully Written
[JOURNAL] Opening simulation: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket_sim1.sim
[JOURNAL] Checking for open parts...
[JOURNAL] Opening simulation fresh from disk...
[JOURNAL] STEP 1: Updating Bracket.prt geometry...
[JOURNAL] Rebuilding geometry with new expression values...
[JOURNAL] Bracket geometry updated (0 errors)
[JOURNAL] STEP 2: Opening Bracket_fem1.fem...
[JOURNAL] Updating FE Model...
[JOURNAL] FE Model updated with new geometry!
[JOURNAL] STEP 3: Switching back to sim part...
[JOURNAL] Switched back to sim part
[JOURNAL] Starting solve...
[JOURNAL] Solve submitted!
[JOURNAL] Solutions solved: -1930483082
[JOURNAL] Solutions failed: 32764
[JOURNAL] Solutions skipped: -1732705728
[JOURNAL] Saving simulation to ensure output files are written...
[JOURNAL] Save complete!
[JOURNAL ERRORS]
Journal execution results for c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py...
Syntax errors:
Line 0: Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py", line 247, in <module>
sys.exit(0 if success else 1)
[NX SOLVER] Waiting for solve to complete...
[NX SOLVER] Output files detected after 0.5s
[NX SOLVER] Complete in 4.7s
[NX SOLVER] Results: bracket_sim1-solution_1.op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
Extraction failed: extract_solid_stress - 1
Extraction failed for extract_solid_stress: 1
Inline calculation failed: name 'max_von_mises' is not defined
Required input 'min_force' not found in context
Hook 'ratio_hook' failed: Missing required input: min_force
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\min_to_avg_ratio_hook.py", line 38, in ratio_hook
raise ValueError(f"Missing required input: min_force")
ValueError: Missing required input: min_force
Hook 'ratio_hook' failed: Missing required input: min_force
Required input 'max_stress' not found in context
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\safety_factor_hook.py", line 38, in safety_factor_hook
raise ValueError(f"Missing required input: max_stress")
ValueError: Missing required input: max_stress
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Required input 'norm_stress' not found in context
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\weighted_objective_test.py", line 38, in weighted_objective_hook
raise ValueError(f"Missing required input: norm_stress")
ValueError: Missing required input: norm_stress
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
No explicit objective found, using: max_displacement
[I 2025-11-16 20:44:18,839] Trial 3 finished with value: 0.36178338527679443 and parameters: {'tip_thickness': 22.92830934942418, 'support_angle': 22.883083847442386}. Best is trial 0 with value: 0.36178338527679443.
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
Updating 2 expressions in Bracket.prt:
Updated: tip_thickness = 22 -> 23
Updated: support_angle = 22 -> 32
Successfully updated 2/2 expressions
Backup created: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt.bak_20251116_204418
Saved to: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt
[NX SOLVER] Starting simulation...
Input file: Bracket_sim1.sim
Working dir: c:\Users\antoi\Documents\Atomaste\Atomizer\tests
Mode: Journal
Warning: Could not delete bracket_sim1-solution_1.log: [WinError 32] The process cannot access the file because it is being used by another process: 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.log'
Deleted 2 old result file(s) to force fresh solve
[JOURNAL OUTPUT]
Mesh-Based Errors Summary
-------------------------
Total: 0 errors and 0 warnings
Material-Based Errors Summary
-----------------------------
Total: 0 errors and 0 warnings
Solution-Based Errors Summary
-----------------------------
Iterative Solver Option
More than 80 percent of the elements in this model are 3D elements.
It is therefore recommended that you turn ON the Element Iterative Solver in the "Edit
Solution" dialog.
Total: 0 errors and 0 warnings
Load/BC-Based Errors Summary
----------------------------
Total: 0 errors and 0 warnings
Nastran Model Setup Check completed
*** 20:44:22 ***
Starting Nastran Exporter
*** 20:44:22 ***
Writing file
c:\Users\antoi\Documents\Atomaste\Atomizer\tests\bracket_sim1-solution_1.dat
*** 20:44:22 ***
Writing SIMCENTER NASTRAN 2412.0 compatible deck
*** 20:44:22 ***
Writing Nastran System section
*** 20:44:22 ***
Writing File Management section
*** 20:44:22 ***
Writing Executive Control section
*** 20:44:22 ***
Writing Case Control section
*** 20:44:22 ***
Writing Bulk Data section
*** 20:44:22 ***
Writing Nodes
*** 20:44:22 ***
Writing Elements
*** 20:44:22 ***
Writing Physical Properties
*** 20:44:22 ***
Writing Materials
*** 20:44:22 ***
Writing Degree-of-Freedom Sets
*** 20:44:22 ***
Writing Loads and Constraints
*** 20:44:22 ***
Writing Coordinate Systems
*** 20:44:22 ***
Validating Solution Setup
*** 20:44:22 ***
Summary of Bulk Data cards written
+----------+----------+
| NAME | NUMBER |
+----------+----------+
| CHEXA | 306 |
| CPENTA | 10 |
| FORCE | 3 |
| GRID | 585 |
| MAT1 | 1 |
| MATT1 | 1 |
| PARAM | 6 |
| PSOLID | 1 |
| SPC | 51 |
| TABLEM1 | 3 |
+----------+----------+
*** 20:44:22 ***
Nastran Deck Successfully Written
[JOURNAL] Opening simulation: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket_sim1.sim
[JOURNAL] Checking for open parts...
[JOURNAL] Opening simulation fresh from disk...
[JOURNAL] STEP 1: Updating Bracket.prt geometry...
[JOURNAL] Rebuilding geometry with new expression values...
[JOURNAL] Bracket geometry updated (0 errors)
[JOURNAL] STEP 2: Opening Bracket_fem1.fem...
[JOURNAL] Updating FE Model...
[JOURNAL] FE Model updated with new geometry!
[JOURNAL] STEP 3: Switching back to sim part...
[JOURNAL] Switched back to sim part
[JOURNAL] Starting solve...
[JOURNAL] Solve submitted!
[JOURNAL] Solutions solved: -1932776842
[JOURNAL] Solutions failed: 32764
[JOURNAL] Solutions skipped: -1299054016
[JOURNAL] Saving simulation to ensure output files are written...
[JOURNAL] Save complete!
[JOURNAL ERRORS]
Journal execution results for c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py...
Syntax errors:
Line 0: Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py", line 247, in <module>
sys.exit(0 if success else 1)
[NX SOLVER] Waiting for solve to complete...
[NX SOLVER] Output files detected after 0.5s
[NX SOLVER] Complete in 4.7s
[NX SOLVER] Results: bracket_sim1-solution_1.op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:634 -------- reading op2 with read_mode=2 (array filling) --------
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
Extraction failed: extract_solid_stress - 1
Extraction failed for extract_solid_stress: 1
Inline calculation failed: name 'max_von_mises' is not defined
Required input 'min_force' not found in context
Hook 'ratio_hook' failed: Missing required input: min_force
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\min_to_avg_ratio_hook.py", line 38, in ratio_hook
raise ValueError(f"Missing required input: min_force")
ValueError: Missing required input: min_force
Hook 'ratio_hook' failed: Missing required input: min_force
Required input 'max_stress' not found in context
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\safety_factor_hook.py", line 38, in safety_factor_hook
raise ValueError(f"Missing required input: max_stress")
ValueError: Missing required input: max_stress
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Required input 'norm_stress' not found in context
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\weighted_objective_test.py", line 38, in weighted_objective_hook
raise ValueError(f"Missing required input: norm_stress")
ValueError: Missing required input: norm_stress
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
No explicit objective found, using: max_displacement
[I 2025-11-16 20:44:24,252] Trial 4 finished with value: 0.36178338527679443 and parameters: {'tip_thickness': 23.722396426593477, 'support_angle': 32.99896902425434}. Best is trial 0 with value: 0.36178338527679443.
Extraction failed: extract_displacement - There was a Nastran FATAL Error. Check the F06.
last table=b'EQEXIN'; post=-1 version='nx'
Extraction failed for extract_displacement: There was a Nastran FATAL Error. Check the F06.
last table=b'EQEXIN'; post=-1 version='nx'
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
DEBUG: op2_scalar.py:2173 table_name=b'OQG1' (spc/mpc forces)
DEBUG: op2_scalar.py:2173 table_name=b'BOUGV1' (g-set U in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'OES1' (linear stress)
DEBUG: oes.py:2840 numwide_real=193
DEBUG: oes.py:2840 numwide_real=151
DEBUG: op2.py:932 combine_results
DEBUG: op2.py:648 finished reading op2
Updating 2 expressions in Bracket.prt:
Updated: tip_thickness = 23 -> 21
Updated: support_angle = 32 -> 28
Successfully updated 2/2 expressions
Backup created: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt.bak_20251116_204424
Saved to: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket.prt
[NX SOLVER] Starting simulation...
Input file: Bracket_sim1.sim
Working dir: c:\Users\antoi\Documents\Atomaste\Atomizer\tests
Mode: Journal
Warning: Could not delete bracket_sim1-solution_1.log: [WinError 32] The process cannot access the file because it is being used by another process: 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.log'
Deleted 2 old result file(s) to force fresh solve
[JOURNAL OUTPUT]
Mesh-Based Errors Summary
-------------------------
Total: 0 errors and 0 warnings
Material-Based Errors Summary
-----------------------------
Total: 0 errors and 0 warnings
Solution-Based Errors Summary
-----------------------------
Iterative Solver Option
More than 80 percent of the elements in this model are 3D elements.
It is therefore recommended that you turn ON the Element Iterative Solver in the "Edit
Solution" dialog.
Total: 0 errors and 0 warnings
Load/BC-Based Errors Summary
----------------------------
Total: 0 errors and 0 warnings
Nastran Model Setup Check completed
*** 20:44:27 ***
Starting Nastran Exporter
*** 20:44:27 ***
Writing file
c:\Users\antoi\Documents\Atomaste\Atomizer\tests\bracket_sim1-solution_1.dat
*** 20:44:27 ***
Writing SIMCENTER NASTRAN 2412.0 compatible deck
*** 20:44:27 ***
Writing Nastran System section
*** 20:44:27 ***
Writing File Management section
*** 20:44:27 ***
Writing Executive Control section
*** 20:44:27 ***
Writing Case Control section
*** 20:44:27 ***
Writing Bulk Data section
*** 20:44:27 ***
Writing Nodes
*** 20:44:27 ***
Writing Elements
*** 20:44:27 ***
Writing Physical Properties
*** 20:44:27 ***
Writing Materials
*** 20:44:27 ***
Writing Degree-of-Freedom Sets
*** 20:44:27 ***
Writing Loads and Constraints
*** 20:44:27 ***
Writing Coordinate Systems
*** 20:44:27 ***
Validating Solution Setup
*** 20:44:27 ***
Summary of Bulk Data cards written
+----------+----------+
| NAME | NUMBER |
+----------+----------+
| CHEXA | 306 |
| CPENTA | 10 |
| FORCE | 3 |
| GRID | 585 |
| MAT1 | 1 |
| MATT1 | 1 |
| PARAM | 6 |
| PSOLID | 1 |
| SPC | 51 |
| TABLEM1 | 3 |
+----------+----------+
*** 20:44:27 ***
Nastran Deck Successfully Written
[JOURNAL] Opening simulation: c:\Users\antoi\Documents\Atomaste\Atomizer\tests\Bracket_sim1.sim
[JOURNAL] Checking for open parts...
[JOURNAL] Opening simulation fresh from disk...
[JOURNAL] STEP 1: Updating Bracket.prt geometry...
[JOURNAL] Rebuilding geometry with new expression values...
[JOURNAL] Bracket geometry updated (0 errors)
[JOURNAL] STEP 2: Opening Bracket_fem1.fem...
[JOURNAL] Updating FE Model...
[JOURNAL] FE Model updated with new geometry!
[JOURNAL] STEP 3: Switching back to sim part...
[JOURNAL] Switched back to sim part
[JOURNAL] Starting solve...
[JOURNAL] Solve submitted!
[JOURNAL] Solutions solved: -1934939530
[JOURNAL] Solutions failed: 32764
[JOURNAL] Solutions skipped: -803732928
[JOURNAL] Saving simulation to ensure output files are written...
[JOURNAL] Save complete!
[JOURNAL ERRORS]
Journal execution results for c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py...
Syntax errors:
Line 0: Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\tests\_temp_solve_journal.py", line 247, in <module>
sys.exit(0 if success else 1)
[NX SOLVER] Waiting for solve to complete...
[NX SOLVER] Output files detected after 0.5s
[NX SOLVER] Complete in 4.6s
[NX SOLVER] Results: bracket_sim1-solution_1.op2
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
ndata = 0:
strings = (b'',)
ints = ()
floats = ()
ERROR: op2_reader.py:2988 finished table_name = b'EQEXIN'
ERROR: op2_reader.py:2993 There was a Nastran FATAL Error. Check the F06.
last table=b'EQEXIN'; post=-1 version='nx'
DEBUG: op2.py:614 combine=True
DEBUG: op2.py:615 -------- reading op2 with read_mode=1 (array sizing) --------
Extraction failed: extract_solid_stress - There was a Nastran FATAL Error. Check the F06.
last table=b'EQEXIN'; post=-1 version='nx'
Extraction failed for extract_solid_stress: There was a Nastran FATAL Error. Check the F06.
last table=b'EQEXIN'; post=-1 version='nx'
Inline calculation failed: name 'max_von_mises' is not defined
Inline calculation failed: name 'max_displacement' is not defined
Required input 'min_force' not found in context
Hook 'ratio_hook' failed: Missing required input: min_force
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\min_to_avg_ratio_hook.py", line 38, in ratio_hook
raise ValueError(f"Missing required input: min_force")
ValueError: Missing required input: min_force
Hook 'ratio_hook' failed: Missing required input: min_force
Required input 'max_stress' not found in context
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\safety_factor_hook.py", line 38, in safety_factor_hook
raise ValueError(f"Missing required input: max_stress")
ValueError: Missing required input: max_stress
Hook 'safety_factor_hook' failed: Missing required input: max_stress
Required input 'norm_stress' not found in context
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\hooks.py", line 72, in execute
result = self.function(context)
^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\plugins\post_calculation\weighted_objective_test.py", line 38, in weighted_objective_hook
raise ValueError(f"Missing required input: norm_stress")
ValueError: Missing required input: norm_stress
Hook 'weighted_objective_hook' failed: Missing required input: norm_stress
[W 2025-11-16 20:44:29,500] Trial 5 failed with parameters: {'tip_thickness': 21.549788562837012, 'support_angle': 28.710108728807292} because of the following error: ValueError('Could not determine objective value from results/calculations/hooks').
Traceback (most recent call last):
File "C:\Users\antoi\anaconda3\envs\test_env\Lib\site-packages\optuna\study\_optimize.py", line 201, in _run_trial
value_or_values = func(trial)
^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\llm_optimization_runner.py", line 328, in _objective
raise ValueError("Could not determine objective value from results/calculations/hooks")
ValueError: Could not determine objective value from results/calculations/hooks
[W 2025-11-16 20:44:29,502] Trial 5 failed with value None.
INFO: op2_scalar.py:1960 op2_filename = 'c:\\Users\\antoi\\Documents\\Atomaste\\Atomizer\\tests\\bracket_sim1-solution_1.op2'
DEBUG: op2_reader.py:323 date = (11, 16, 25)
WARNING: version.py:88 nx version='2412' is not supported
DEBUG: op2_reader.py:403 mode='nx' version='2412'
DEBUG: op2_scalar.py:2173 table_name=b'IBULK' (explicit bulk data)
DEBUG: op2_scalar.py:2173 table_name=b'ICASE' (explicit case control)
DEBUG: op2_scalar.py:2173 table_name=b'CASECC' (case control)
DEBUG: op2_scalar.py:2173 table_name=b'PVT0' (PARAM cards)
DEBUG: op2_scalar.py:2173 table_name=b'GPL' (grid point list)
DEBUG: op2_scalar.py:2173 table_name=b'GPDT' (grid point locations)
DEBUG: op2_scalar.py:2173 table_name=b'EPT' (property cards)
DEBUG: op2_scalar.py:2173 table_name=b'MPT' (material cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM2' (element cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM3' (constraint cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM4' (load cards)
DEBUG: op2_scalar.py:2173 table_name=b'GEOM1' (grid/coord cards)
DEBUG: op2_scalar.py:2173 table_name=b'BGPDT' (grid points in cid=0 frame)
DEBUG: op2_scalar.py:2173 table_name=b'DIT' (TABLEx cards)
DEBUG: op2_scalar.py:2173 table_name=b'EQEXIN' (internal/external ids)
DEBUG: op2_reader.py:672 eqexin idata=(101, 585, 0, 0, 0, 0, 0)
ndata = 0:
strings = (b'',)
ints = ()
floats = ()
ERROR: op2_reader.py:2988 finished table_name = b'EQEXIN'
ERROR: op2_reader.py:2993 There was a Nastran FATAL Error. Check the F06.
last table=b'EQEXIN'; post=-1 version='nx'
Traceback (most recent call last):
File "c:\Users\antoi\Documents\Atomaste\Atomizer\studies\bracket_displacement_maximizing\run_optimization.py", line 283, in <module>
main()
File "c:\Users\antoi\Documents\Atomaste\Atomizer\studies\bracket_displacement_maximizing\run_optimization.py", line 245, in main
results = runner.run_optimization(n_trials=20)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\llm_optimization_runner.py", line 368, in run_optimization
self.study.optimize(self._objective, n_trials=n_trials)
File "C:\Users\antoi\anaconda3\envs\test_env\Lib\site-packages\optuna\study\study.py", line 490, in optimize
_optimize(
File "C:\Users\antoi\anaconda3\envs\test_env\Lib\site-packages\optuna\study\_optimize.py", line 63, in _optimize
_optimize_sequential(
File "C:\Users\antoi\anaconda3\envs\test_env\Lib\site-packages\optuna\study\_optimize.py", line 160, in _optimize_sequential
frozen_trial_id = _run_trial(study, func, catch)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\antoi\anaconda3\envs\test_env\Lib\site-packages\optuna\study\_optimize.py", line 258, in _run_trial
raise func_err
File "C:\Users\antoi\anaconda3\envs\test_env\Lib\site-packages\optuna\study\_optimize.py", line 201, in _run_trial
value_or_values = func(trial)
^^^^^^^^^^^
File "c:\Users\antoi\Documents\Atomaste\Atomizer\optimization_engine\llm_optimization_runner.py", line 328, in _objective
raise ValueError("Could not determine objective value from results/calculations/hooks")
ValueError: Could not determine objective value from results/calculations/hooks