Files
Atomizer/projects/hydrotech-beam/kb/fea/models/sol101-static.md
Antoine 2fde08daab docs: update KB and project docs with 2026-02-11 progress
- 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
2026-02-11 16:39:21 +00:00

7.7 KiB
Raw Blame History

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 p173 expression after solve and writes _temp_mass.txt. Python reads this file. Expression p1 from KBS session was incorrect — p173 confirmed 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 10K50K elements
  • Expected DOF: 60K300K → 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:

  1. Backup master model files before each trial
  2. Write expressions, rebuild, solve in models/
  3. Archive outputs (OP2, F06, params, results) to iteration folder
  4. 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:

  1. Open .sim file (loads chain)
  2. Switch to Beam.prt — import .exp file, update expressions, rebuild geometry
  3. Switch to Beam_fem1.fem — update FE model (remesh)
  4. 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 .afm files in working directory

Key Automation Notes

  • hole_count expression unit = Constant (not MilliMeter)
  • All length DVs = MilliMeter
  • FEM part is Beam_fem1 — NOT Beam_fem1_i (idealized)
  • Journal: solve_simulation.py handles both workflows