fix: Complete stress extraction fix for NX Nastran OP2 files
THREE critical fixes applied:
1. API Access Pattern
- Support dotted attribute names (e.g., 'stress.chexa_stress')
- Compatible with newer pyNastran versions (NX 2412.5)
- Fallback to older API formats for compatibility
2. Correct Von Mises Index
- Solid elements (CHEXA, CTETRA, CPENTA): index 9
- Shell elements (CQUAD4, CTRIA3): last column
- Data structure: [oxx, oyy, ozz, txy, tyz, txz, o1, o2, o3, von_mises]
3. Units Conversion (CRITICAL)
- NX Nastran outputs stress in kPa, not MPa
- Apply conversion: kPa / 1000 = MPa
- Example: 113094.73 kPa -> 113.09 MPa
Test Results:
- Before: 0.00 MPa (FAIL)
- After: 113.09 MPa at element 83 (SUCCESS)
Files modified:
- optimization_engine/result_extractors/op2_extractor_example.py
Test files added:
- examples/test_stress_direct.py
- examples/test_stress_fix.py
- examples/debug_op2_stress.py
- STRESS_EXTRACTION_FIXED.md
- TESTING_STRESS_FIX.md