Files
Antoine 70ac34e3d3 feat: Add E11 Part Mass extractor, document pyNastran mass accuracy issue
New E11 Part Mass Extractor:
- Add nx_journals/extract_part_mass_material.py - NX journal using
  NXOpen.MeasureManager.NewMassProperties() for accurate geometry-based mass
- Add optimization_engine/extractors/extract_part_mass_material.py - Python
  wrapper that reads JSON output from journal
- Add E11 entry to extractors/catalog.json

Documentation Updates:
- SYS_12_EXTRACTOR_LIBRARY.md: Add mass accuracy warning noting pyNastran
  get_mass_breakdown() under-reports ~7% on hex-dominant meshes with
  tet/pyramid fill elements. E11 (geometry .prt) should be preferred over
  E4 (BDF) unless material is overridden at FEM level.
- 01_CHEATSHEET.md: Add mass extraction tip

V14 Config:
- Expand design variable bounds (blank_backface_angle max 4.5°,
  whiffle_triangle_closeness max 80mm, whiffle_min max 60mm)

Testing showed:
- E11 from .prt: 97.66 kg (accurate - matches NX GUI)
- E4 pyNastran get_mass_breakdown(): 90.73 kg (~7% under-reported)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 22:15:36 -05:00

52 lines
1.7 KiB
JSON

{
"381739e9cada3a48": {
"name": "extract_displacement",
"filename": "extract_displacement.py",
"action": "extract_displacement",
"domain": "result_extraction",
"description": "Extract maximum displacement from structural analysis",
"params": {
"result_type": "displacement",
"metric": "maximum"
},
"signature": "381739e9cada3a48"
},
"63d54f297f2403e4": {
"name": "extract_von_mises_stress",
"filename": "extract_von_mises_stress.py",
"action": "extract_von_mises_stress",
"domain": "result_extraction",
"description": "Extract maximum von Mises stress from structural analysis",
"params": {
"result_type": "von_mises_stress",
"metric": "maximum"
},
"signature": "63d54f297f2403e4"
},
"2f58f241a96afb1f": {
"name": "extract_mass",
"filename": "extract_mass.py",
"action": "extract_mass",
"domain": "result_extraction",
"description": "Extract total structural mass",
"params": {
"result_type": "mass",
"metric": "total"
},
"signature": "2f58f241a96afb1f"
},
"e11_part_mass_material": {
"name": "extract_part_mass_material",
"filename": "extract_part_mass_material.py",
"action": "extract_part_mass_material",
"domain": "cad_extraction",
"description": "Extract mass, volume, surface area, CoG, and material from NX .prt files via NXOpen.MeasureManager",
"params": {
"result_type": "part_mass",
"metric": "total",
"requires_journal": "nx_journals/extract_part_mass_material.py"
},
"signature": "e11_part_mass_material",
"notes": "Requires running NX journal first: run_journal.exe nx_journals/extract_part_mass_material.py <prt_file> -args <prt_path> <output_dir>"
}
}