Files
Atomizer/mesh_update_issue.txt
Anto01 718c72bea2 feat: Implement complete FEM regeneration workflow
This commit completes the optimization loop infrastructure by implementing
the full FEM regeneration workflow based on the user's working journal.

## Changes

### FEM Regeneration Workflow (solve_simulation.py)
- Added STEP 1: Switch to Bracket.prt and update geometry
  - Uses SetActiveDisplay() to make Bracket.prt active
  - Calls UpdateManager.DoUpdate() to rebuild CAD geometry with new expressions
- Added STEP 2: Switch to Bracket_fem1 and update FE model
  - Uses SetActiveDisplay() to make FEM active
  - Calls fEModel1.UpdateFemodel() to regenerate FEM with updated geometry
- Added STEP 3: Switch back to sim part before solving
- Close and reopen .sim file to force reload from disk

### Enhanced Journal Output (nx_solver.py)
- Display journal stdout output for debugging
- Shows all journal steps: geometry update, FEM regeneration, solve, save
- Helps verify workflow execution

### Verification Tools
- Added verify_parametric_link.py journal to check expression dependencies
- Added FEM_REGENERATION_STATUS.md documenting the complete status

## Status

###  Fully Functional Components
1. Parameter updates - nx_updater.py modifies .prt expressions
2. NX solver - ~4s per solve via journal
3. Result extraction - pyNastran reads .op2 files
4. History tracking - saves to JSON/CSV
5. Optimization loop - Optuna explores parameter space
6. **FEM regeneration workflow** - Journal executes all steps successfully

###  Remaining Issue: Expressions Not Linked to Geometry
The optimization returns identical stress values (197.89 MPa) for all trials
because the Bracket.prt expressions are not referenced by any geometry features.

Evidence:
- Journal verification shows FEM update steps execute successfully
- Feature dependency check shows no features reference the expressions
- All optimization infrastructure is working correctly

The code is ready - waiting for Bracket.prt to have its expressions properly
linked to the geometry features in NX.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 12:43:31 -05:00

24 lines
968 B
Plaintext

The optimization loop is working, but the results show that:
1. ✅ Parameter updates are happening in Bracket.prt
2. ✅ NX solver is running successfully
3. ✅ Results are being extracted from .op2 files
4. ✅ Optimization loop completes
5. ❌ BUT: All trials return the SAME stress/displacement values
This indicates that the bracket geometry is NOT actually changing when we update
the tip_thickness and support_angle parameters.
The issue is that these expressions exist in Bracket.prt, but they may not be
linked to any geometric features (sketches, extrudes, etc.) that define the
actual bracket shape.
To fix this, the Bracket.prt file needs to be set up so that:
- The 'tip_thickness' expression controls an actual dimension
- The 'support_angle' expression controls an actual angle
- These dimensions are used in sketches/features to define the geometry
Without this, changing the expressions has no effect on the mesh or the analysis results.