- KB Gen 003: NX version (DesigncenterNX 2512), first real results - sol101-static.md: path resolution lessons, in-place solving, result extraction confirmed - CONTEXT.md: solver pipeline operational, first results (disp=17.93mm, stress=111.9MPa) - DECISIONS.md: DEC-HB-008 to DEC-HB-011 (backup/restore, iteration arch, history DB, git workflow) - optimization_engine/README.md: created (DesigncenterNX support, path resolution, NX file refs) - studies/01_doe_landscape/README.md: updated architecture, iteration folders, history DB - _index.md: closed gaps G3,G4,G6,G10-G14, updated generation to 003
7.7 KiB
SOL 101 — Static Analysis
Simulation: Beam_sim1.sim Solver: NX Nastran SOL 101 (Linear Static) Status: ✅ Running — first real results obtained 2026-02-11. Automated DOE pipeline operational.
Setup — Confirmed
| Item | Value | Source | Notes |
|---|---|---|---|
| Solution type | SOL 101 (Linear Static) | KBS session | "Solution 1 — static subcase" |
| Element type | CQUAD4 (4-node quad shell) | KBS session | ✅ Confirmed — thin shell collectors |
| Property type | Thin shell | KBS session | Material inherited from "beam material" |
| Mesh density | Element size = 33.7 mm (67.4 / 2) | KBS session | Subdivision-based. Future refinement planned. |
| Idealization | Promote body → mid-surface extraction | KBS session | Pair mid-surface function |
Boundary Conditions — Confirmed
| BC | Location | Type | Value | Source |
|---|---|---|---|---|
| Fixed constraint | Left side of beam (full edge) | SPC (all 6 DOF) | Fixed | ✅ KBS session — "left side fixed" |
| Applied force | Right side of beam (free end) | Point/edge force | 10,000 kgf downward (−Y) | ✅ KBS session — "project requirement" |
Loading Details
- Force magnitude: 10,000 kgf = 98,066.5 N (≈ 98.1 kN)
- Direction: Downward (−Y in model coordinates)
- Application: Right side (free end) of beam
- Type: This is a cantilever beam with end loading — classic bending problem
Result Extraction — Confirmed (Gen 003)
| Output | Method | Expression/Sensor | Status |
|---|---|---|---|
| Mass | NX expression | p173 (body_property147.mass in kg) |
✅ Confirmed — journal extracts to _temp_mass.txt |
| Tip displacement | OP2 parse via pyNastran | Max Tz at free end | ✅ Working — 17.93 mm at baseline-ish DVs |
| Von Mises stress | OP2 parse via pyNastran | CQUAD4 shell max VM | ✅ Working — 111.9 MPa at baseline-ish DVs |
Mass extraction: Journal extracts
p173expression after solve and writes_temp_mass.txt. Python reads this file. Expressionp1from KBS session was incorrect —p173confirmed via binary introspection.pyNastran note: Warns "nx version 2512 not supported" but reads OP2 files correctly. Stress output from pyNastran is in kPa — divide by 1000 for MPa.
Mesh Details
| Property | Value | Notes |
|---|---|---|
| Element type | CQUAD4 | 4-node quadrilateral, first-order |
| Element size | 33.7 mm | 67.4 / 2 — Antoine says refinement is "not for now" |
| Mesh method | Subdivision-based | Auto-mesh with size control |
| Shell formulation | Thin shell | Mid-surface extracted from solid |
| Convergence | ❓ NOT VERIFIED | Gap G8 partially closed (type known), but convergence check still needed |
Mesh Estimate
- Beam length 5,000 mm / 33.7 mm ≈ 148 elements along length
- Perimeter of I-beam cross-section ≈ varies — but total mesh likely 10K–50K elements
- Expected DOF: 60K–300K → SOL 101 solve time: seconds to low minutes
Solver Considerations
From Technical Breakdown (Gen 001), updated with KBS data + Gen 003 run data:
- Linear assumption: With 1,133 kg beam under 98 kN load, deflections are ~18 mm at 5,000 mm span. L/δ ≈ 280 — linear assumption is reasonable.
- Mesh sensitivity: Stress at hole edges is mesh-dependent. CQUAD4 at 33.7 mm may not fully resolve SCF at 300 mm diameter holes (~28 elements around circumference — probably adequate but needs verification).
- Mesh morphing vs remesh: Parametric NX models typically remesh on update. Need to confirm behavior across DV range (Gap G7).
- Runtime: ✅ Confirmed ~12 seconds per evaluation (single beam, CQUAD4 thin shell on dalidou). Very fast.
- Unit system: NX model uses kg-mm-s (kgf for force). Nastran output stress in kPa → divide by 1000 for MPa.
Validation Checklist
- Baseline mass matches NX expression
p173(1,133.01 kg) - Displacement measured — 17.93 mm at baseline-ish DVs (G10 closed)
- Stress measured — 111.9 MPa at baseline-ish DVs (G11 closed)
- Mesh convergence verified at baseline
- Mesh quality acceptable at DV range extremes
- Model rebuilds cleanly at all 4 corners of design space (Gap G7)
- Stress at hole edges resolved with current mesh density
NX Version & Environment — Confirmed (Gen 003)
| Item | Value | Notes |
|---|---|---|
| NX Version | DesigncenterNX 2512 | Siemens rebranded NX to "DesigncenterNX" |
| Install path | C:\Program Files\Siemens\DesigncenterNX2512 |
On dalidou (Windows solver node) |
| Previous config | NX 2412 | ❌ Failed — "Part file is from a newer version" |
| pyNastran compat | Warns "nx version 2512 not supported" | ✅ But reads OP2 files correctly |
⚠️ Critical lesson (2026-02-11): Solver was originally configured for NX 2412 but model files are from DesigncenterNX 2512. NX refuses to load with "Part file is from a newer version." Must match version exactly.
Path Resolution on Windows — Critical
Bug discovered: Path.absolute() on Windows does NOT resolve .. components (unlike Path.resolve()).
# WRONG — leaves ".." in path, NX can't find referenced parts
path = Path("../../models/Beam_sim1.sim").absolute()
# → C:\Users\antoi\Atomizer\projects\hydrotech-beam\studies\01_doe_landscape\..\..\models\Beam_sim1.sim
# CORRECT — fully resolves path
path = Path("../../models/Beam_sim1.sim").resolve()
# → C:\Users\antoi\Atomizer\projects\hydrotech-beam\models\Beam_sim1.sim
Rule: Use .resolve() everywhere when constructing paths for NX. NX cannot follow .. references in paths.
NX File References — In-Place Solving Required
NX .sim files store absolute internal references to .fem and .prt files. Copying model files to iteration folders breaks these references (Parts.Open returns None).
Solution: Solve on master model in-place (in the models/ directory) with backup/restore for isolation:
- Backup master model files before each trial
- Write expressions, rebuild, solve in
models/ - Archive outputs (OP2, F06, params, results) to iteration folder
- Restore master from backup
See DEC-HB-008 in DECISIONS.md.
History
- Gen 001 (2026-02-09): Initial documentation from technical breakdown. All solver details pending gap resolution.
- Gen 002 (2026-02-10): Confirmed from KBS session — CQUAD4 thin shell, 33.7 mm element size, cantilever BCs (left fixed, right 10,000 kgf down), mass via
p173. Material: AISI 1005. - Gen 003 (2026-02-11): First real results! DesigncenterNX 2512 version confirmed, path resolution bugs fixed, backup/restore in-place solving architecture, mass extraction via journal. Displacement=17.93mm, Stress=111.9MPa, Solve time ~12s/trial.
NX Automation Workflow
This model uses the SIMPLE workflow (single-part, no assembly FEM).
Simple Workflow Chain
Beam.prt (geometry) → Beam_fem1_i.prt (idealized/mid-surface) → Beam_fem1.fem (mesh) → Beam_sim1.sim (solve)
Steps:
- Open
.simfile (loads chain) - Switch to
Beam.prt— import.expfile, update expressions, rebuild geometry - Switch to
Beam_fem1.fem— update FE model (remesh) - Switch back to
.sim— solve SOL 101
Assembly FEM Workflow (NOT used here)
For multi-part models with .afm files (e.g., SAT3 mirror):
- Additional steps: load all components, update each FEM, merge duplicate nodes, resolve label conflicts
- Detected automatically by presence of
.afmfiles in working directory
Key Automation Notes
hole_countexpression unit =Constant(not MilliMeter)- All length DVs =
MilliMeter - FEM part is
Beam_fem1— NOTBeam_fem1_i(idealized) - Journal:
solve_simulation.pyhandles both workflows