a17752a49f
Lattice Boltzmann flow on the CPU: model, solver, engine (M12) ( #36 )
...
Model: Newtonian fluid materials; fluid domains (box, spacing, conditions on
the box faces, obstacle bodies with conditions on their named faces, initial
velocity, body acceleration); fluid steps with caps. Deck writers refuse
fluid steps; a fluid-only model needs no mesh in model.check; one step
selector (Model::select_step) for every solver.
New L2 crate modelcraft-lbm: D3Q19 two-relaxation-time collision with Guo
forcing; halfway bounce-back walls (moving walls after Ladd), slip faces,
periodic pairs; Zou–He velocity and pressure faces with the D3Q19
transverse correction; obstacles voxelised from the face-tagged boundary
surface with exact predicates and symbolic perturbation; momentum-exchange
forces per box face and per B-rep face; unit conversion, automatic time step
and Mach/tau limits; bounded runs with frames and force histories.
Engine: model.fluid_domain.create/edit/delete, model.fluid_domain.boundary,
solve.fluid (obstacles from the open design or imported surfaces, lowerable
caps), solve.probe for fluid fields and wall force histories. Fluid Domain,
Inlet & Outlet and Lattice Boltzmann toolbar entries are ready.
Verification (analytic): plane Poiseuille exact with Λ = 3/16 and second
order (2.000) with Λ = 1/4; Couette exact with the wall shear; Taylor–Green
decay second order (2.01, 2.00); staircase pipe; Stokes drag of a sphere
array within 1.7% of Hasimoto at R = 6; Zou–He channel; mass conserved to
round-off; bit-for-bit reproducibility. Benchmark: Schäfer–Turek 2D-1.
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
Co-authored-by: jyviko <[email protected] >
Co-authored-by: Claude Opus 5.5 <[email protected] >
2026-10-13 20:03:12 -04:00
d45a2da5b5
Explicit dynamics core: central differences, one-point hex8 with hourglass control, nodal-pressure tet4, solve.explicit (M10 X1) ( #27 )
...
* Model: explicit dynamic steps (end time, increment scale and cap, output intervals, initial velocities, rigid walls, hourglass and bulk viscosity controls); deck writers refuse them
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* fem: uniform-strain hex8 and tet4 kinematics, Flanagan–Belytschko hourglass shape vectors, element frequency bound
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* Explicit solver crate (L2): central differences with lumped mass, one-point hex8 with Flanagan–Belytschko hourglass control, Bonet–Burton tet4, bulk viscosity, rigid walls, energy account; wave and impact verification
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* Engine: solve.explicit and solve.history commands, explicit results in the session and solve.probe; cantilever period against the modal solver
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* Docs: explicit solver in the architecture, roadmap (M10 started), parity and literature (Part H)
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* Simplify: Model::select_step shared by both solvers, Procedure::sets/is_dynamic, fused per-increment passes without allocation, shared element tail, generic command caps
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* Catalogue: solve.explicit is ready; solve.history beside solve.probe
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* Rebase onto the implicit couplings work: Procedure is no longer Copy
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
---------
Co-authored-by: jyviko <[email protected] >
Co-authored-by: Claude Opus 5.5 <[email protected] >
2026-10-13 18:28:32 -04:00
81fa8d7220
LS-DYNA keyword writer (implicit static and eigenvalue, M3) ( #25 )
...
* decks: LS-DYNA keyword writer (long format, implicit static and eigenvalue)
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* decks: LS-DYNA golden files, Jacobian-sign node-order tests, re-reader and refusals
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* docs: LS-DYNA writer status and deck notes
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* decks: simplify the LS-DYNA writer (plan decides once, cards written in place, shared test tables)
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* decks: LS-DYNA joins FORMATS (deck.write lsdyna), refusals reported together, shared concentrated loads
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* decks: LS-DYNA on main's shared deck API (steps parameter, model helpers)
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
---------
Co-authored-by: jyviko <[email protected] >
Co-authored-by: Claude Opus 5.5 <[email protected] >
2026-10-13 17:39:45 -04:00
f4a0333d28
Nastran bulk data writer (SOL 101/103) and deck.write steps (M3) ( #24 )
...
* Nastran bulk data writer: fixed-format entries, exact large-field reals, SOL 101/103 decks
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* Nastran writer tests: golden decks, a re-reader of our output, node order against Nastran's conventions
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* docs: Nastran writer in the roadmap, parity table and deck notes
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* Nastran writer: simplify planning (subcases, one property table), stream cards into the deck, write through the VFS
ElementKind::corner_count/is_quadratic and Dofs::bits/from_bits join the model.
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* Nastran joins the shared deck formats; deck.write chooses steps for every format
nastran::write_resolved is the FORMATS row; Format::write_steps and with_steps write a subset of
steps (a Nastran run is static or frequency steps); problems go through the shared unsupported().
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
---------
Co-authored-by: jyviko <[email protected] >
Co-authored-by: Claude Opus 5.5 <[email protected] >
2026-10-13 17:34:26 -04:00
a71f85eb58
Abaqus input writer and deck.write (M3) ( #22 )
...
* decks: Abaqus input writer with golden decks, read-back, Jacobian and unsupported tests
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* engine: deck.write command (format dispatch, atomic file write), docs
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
* decks: format table, one resolve per write, direct buffer writes; engine: shared path parameter
Co-Authored-By: Claude Opus 5.5 <[email protected] >
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
---------
Co-authored-by: jyviko <[email protected] >
Co-authored-by: Claude Opus 5.5 <[email protected] >
2026-10-13 17:27:44 -04:00
9fb00317ad
Add the modelcraft-decks crate (empty: error type only) ( #19 )
...
So the Abaqus, Nastran and LS-DYNA writer tasks add their modules in parallel.
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
Co-authored-by: jyviko <[email protected] >
Co-authored-by: Claude Opus 5.5 <[email protected] >
2026-10-13 16:54:25 -04:00