fix: Apply expression updates directly in NX journal

Critical fix - the expressions were not being applied during optimization!
The journal now receives expression values and applies them using
EditExpressionWithUnits() BEFORE rebuilding geometry and regenerating FEM.

## Key Changes

### Expression Application in Journal (solve_simulation.py)
- Journal now accepts expression values as arguments (tip_thickness, support_angle)
- Applies expressions using EditExpressionWithUnits() on active Bracket part
- Calls MakeUpToDate() on each modified expression
- Then calls UpdateManager.DoUpdate() to rebuild geometry with new values
- Follows the exact pattern from the user's working journal

### NX Solver Updates (nx_solver.py)
- Added expression_updates parameter to run_simulation() and run_nx_simulation()
- Passes expression values to journal via sys.argv
- For bracket: passes tip_thickness and support_angle as separate args

### Test Script Updates (test_journal_optimization.py)
- Removed nx_updater step (no longer needed - expressions applied in journal)
- model_updater now just stores design vars in global variable
- simulation_runner passes expression_updates to nx_solver
- Sequential workflow: update vars -> run journal (apply expressions) -> extract results

## Results - OPTIMIZATION NOW WORKS!

Before (all trials same stress):
- Trial 0: tip=23.48, angle=37.21 → stress=197.89 MPa
- Trial 1: tip=20.08, angle=20.32 → stress=197.89 MPa (SAME!)
- Trial 2: tip=18.19, angle=35.23 → stress=197.89 MPa (SAME!)

After (varying stress values):
- Trial 0: tip=21.62, angle=30.15 → stress=192.71 MPa 
- Trial 1: tip=17.17, angle=33.52 → stress=167.96 MPa  BEST!
- Trial 2: tip=15.06, angle=21.81 → stress=242.50 MPa 

Mesh also changes: 1027 → 951 CTETRA elements with different parameters.

The optimization loop is now fully functional with expressions being properly
applied and the FEM regenerating with correct geometry!

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-15 12:47:55 -05:00
parent 718c72bea2
commit 96e88fe714
14 changed files with 5547 additions and 6253 deletions

View File

@@ -111,7 +111,7 @@
$*
$* SOLVER INPUT FILE: BRACKET_SIM1-SOLUTION_1.DAT
$* CREATION DATE: 15-NOV-2025
$* CREATION TIME: 12:40:30
$* CREATION TIME: 12:47:20
$* HOSTNAME: ANTOINETHINKPAD
$* NASTRAN LICENSE: DESKTOP BUNDLE
$*
@@ -182,16 +182,16 @@
23 $*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
24 $*
25 BEGIN BULK
0 INPUT BULK DATA ENTRY COUNT = 6300
0 TOTAL COUNT= 6276
0 INPUT BULK DATA ENTRY COUNT = 5432
0 TOTAL COUNT= 5408
M O D E L S U M M A R Y
NUMBER OF GRID POINTS = 2040
NUMBER OF GRID POINTS = 1771
NUMBER OF CTETRA ELEMENTS = 1027
NUMBER OF CTETRA ELEMENTS = 862
*** USER INFORMATION MESSAGE 4109 (OUTPBN2)
THE LABEL IS NX2412 FOR FORTRAN UNIT 12
@@ -209,8 +209,8 @@
101 1 0 0 0 0 0
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 20 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 31509 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 151199 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 27169 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 130367 WORDS.)
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK ICASE WRITTEN ON FORTRAN UNIT 12, TRL =
102 27 0 0 0 0 0
@@ -234,18 +234,18 @@
(TOTAL DATA WRITTEN FOR DATA BLOCK = 54 WORDS.)
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK GPL WRITTEN ON FORTRAN UNIT 12, TRL =
101 2040 2040 0 0 0 0
101 1771 1771 0 0 0 0
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 4080 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 3542 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 24 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 6151 WORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 5344 WORDS.)
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK GPDT WRITTEN ON FORTRAN UNIT 12, TRL =
102 2040 7 0 1 0 0
102 1771 7 0 1 0 0
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 20400 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 17710 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 19 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 20426 WORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 17736 WORDS.)
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK EPT WRITTEN ON FORTRAN UNIT 12, TRL =
101 0 256 0 0 0 0
@@ -270,9 +270,9 @@
DATA BLOCK GEOM2 WRITTEN ON FORTRAN UNIT 12, TRL =
101 0 0 0 512 0 0
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 12327 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 10347 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 24 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 12360 WORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 10380 WORDS.)
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK GEOM3 WRITTEN ON FORTRAN UNIT 12, TRL =
102 0 0 64 0 0 0
@@ -291,16 +291,16 @@
DATA BLOCK GEOM1 WRITTEN ON FORTRAN UNIT 12, TRL =
104 0 0 8 0 0 0
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 22443 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 19484 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 24 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 22476 WORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 19517 WORDS.)
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK BGPDT WRITTEN ON FORTRAN UNIT 12, TRL =
105 2040 0 12240 1 0 2040
105 1771 0 10626 1 0 1771
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 24480 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 21252 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 24 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 28590 WORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 24824 WORDS.)
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK DIT WRITTEN ON FORTRAN UNIT 12, TRL =
101 32768 0 0 0 0 0
@@ -316,11 +316,11 @@
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK EQEXIN WRITTEN ON FORTRAN UNIT 12, TRL =
101 2040 0 0 0 0 0
101 1771 0 0 0 0 0
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 4080 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 3542 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 24 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 8190 WORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 7114 WORDS.)
1 NOVEMBER 15, 2025 SIMCENTER NASTRAN 11/ 8/24 PAGE 7
0
@@ -338,7 +338,7 @@
MZ ---- ---- ---- ---- ---- 0.000000E+00
TOTALS 0.000000E+00 0.000000E+00 -9.999967E+05 -9.999967E+07 0.000000E+00 0.000000E+00
*** USER INFORMATION MESSAGE - SINGULARITIES FOUND USING EIGENVALUE METHOD
*** 5793 SINGULARITIES FOUND 5793 SINGULARITIES ELIMINATED
*** 4986 SINGULARITIES FOUND 4986 SINGULARITIES ELIMINATED
1 NOVEMBER 15, 2025 SIMCENTER NASTRAN 11/ 8/24 PAGE 8
0 SUBCASE 1
@@ -347,7 +347,7 @@
*** USER INFORMATION MESSAGE 5293 (SSG3A)
FOR DATA BLOCK KLL
LOAD SEQ. NO. EPSILON EXTERNAL WORK EPSILONS LARGER THAN 0.001 ARE FLAGGED WITH ASTERISKS
1 -1.2736915E-13 1.5218577E+05
1 1.2923081E-12 4.2641671E+05
1 NOVEMBER 15, 2025 SIMCENTER NASTRAN 11/ 8/24 PAGE 9
0
@@ -357,34 +357,34 @@
0 SPCFORCE RESULTANT
SUBCASE/ LOAD
DAREA ID TYPE T1 T2 T3 R1 R2 R3
0 1 FX 2.527795E-07 ---- ---- ---- 3.852185E+03 -7.669947E-13
FY ---- 1.450826E-07 ---- 9.999967E+07 ---- -2.115735E-05
FZ ---- ---- 9.999967E+05 3.350569E-09 -3.852185E+03 ----
0 1 FX 1.027875E-06 ---- ---- ---- 1.586755E+03 2.200001E-13
FY ---- 3.468449E-07 ---- 9.999967E+07 ---- -8.811813E-05
FZ ---- ---- 9.999967E+05 -1.578646E-09 -1.586755E+03 ----
MX ---- ---- ---- 0.000000E+00 ---- ----
MY ---- ---- ---- ---- 0.000000E+00 ----
MZ ---- ---- ---- ---- ---- 0.000000E+00
TOTALS 2.527795E-07 1.450826E-07 9.999967E+05 9.999967E+07 1.104374E-05 -2.115735E-05
TOTALS 1.027875E-06 3.468449E-07 9.999967E+05 9.999967E+07 5.159754E-05 -8.811813E-05
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK OQG1 WRITTEN ON FORTRAN UNIT 12, TRL =
101 0 16320 15 25 0 1
101 0 14168 15 25 0 1
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 16320 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 14168 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 24 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 16501 WORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 14349 WORDS.)
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK BOUGV1 WRITTEN ON FORTRAN UNIT 12, TRL =
101 0 16320 15 25 0 1
101 0 14168 15 25 0 1
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 16320 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 14168 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 24 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 16501 WORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 14349 WORDS.)
*** USER INFORMATION MESSAGE 4114 (OUTPBN2)
DATA BLOCK OES1 WRITTEN ON FORTRAN UNIT 12, TRL =
101 63 11 15 25 0 1
(MAXIMUM POSSIBLE FORTRAN RECORD SIZE = 65538 WORDS.)
(MAXIMUM SIZE OF FORTRAN RECORDS WRITTEN = 65538 WORDS.)
(NUMBER OF FORTRAN RECORDS WRITTEN = 26 RECORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 112124 WORDS.)
(TOTAL DATA WRITTEN FOR DATA BLOCK = 94139 WORDS.)
1 NOVEMBER 15, 2025 SIMCENTER NASTRAN 11/ 8/24 PAGE 10
0