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>
This commit is contained in:
@@ -195,6 +195,18 @@ material = extractor.material_name
|
||||
- `NXOpen.Body.GetBodies()`
|
||||
- `NXOpen.PhysicalMaterial`
|
||||
|
||||
**IMPORTANT - Mass Accuracy Note**:
|
||||
> **Always prefer E11 (geometry-based) over E4 (BDF-based) for mass extraction.**
|
||||
>
|
||||
> Testing on hex-dominant meshes with tet/pyramid fill elements revealed that:
|
||||
> - **E11 from .prt**: 97.66 kg (accurate - matches NX GUI)
|
||||
> - **E4 pyNastran get_mass_breakdown()**: 90.73 kg (~7% under-reported)
|
||||
> - **E4 pyNastran sum(elem.Volume())*rho**: 100.16 kg (~2.5% over-reported)
|
||||
>
|
||||
> The `get_mass_breakdown()` function in pyNastran has known issues with mixed-element
|
||||
> meshes (CHEXA + CPENTA + CPYRAM + CTETRA). Use E11 with the NX journal for reliable
|
||||
> mass values. Only use E4 if material properties are overridden at FEM level.
|
||||
|
||||
### E6: Field Data Extraction
|
||||
|
||||
**Module**: `optimization_engine.extractors.field_data_extractor`
|
||||
|
||||
Reference in New Issue
Block a user