Computer-Aided Engineering (CAE). CAE is simulation and analysis: structures, thermal, fluids, electromagnetics, and motion. It answers whether the designed body works under stated loads and environments — evidence, not release.
In industry this is Ansys / Nastran / Abaqus-class simulation capability. In N23D it is not a seat next to someone else’s stack. It is a peer module on one native Rust binary — N23D — 100% Rust we write.

Same product. The mesh is work product on the CAD identity, not a forked geometry. Results check in. They do not become a side PDF. A pretty plot that cannot name the VariantId is a slide, not engineering. Missing material numbers stay unknown — we do not invent modulus to make the color plot close.
What CAE actually does
- Pipeline: CAD body plus associativity map, then idealization, then discretization, then physics statement, then solve, then results on the mesh and projected to CAD faces, then report, QIF, and design feedback.
- A physics catalog with a shared mesh and linear-algebra backbone. Not a single unnamed solver.
- First ship, design-engineer seat: linear static structural, modal and frequency, and steady thermal, on tetrahedral meshes, with CAD-associative loads. The architecture can grow into nonlinear, contact, CFD, electromagnetics, multibody, chemistry, and mixing. Those are later phases, not first-ship marketing.
- Defeaturing produces a derived analysis body owned by the study. The design body is untouched. Map analysis face to design face where possible. Suppress small fillets, holes, and chamfers by size threshold or pick. Split bodies for multi-material. Symmetry cut plus plane boundary condition. Solid remains the default. Beam and shell later, flagged on the body, not forced.
- Surface triangulation from B-rep that respects edges. Tet fill, TET4 and TET10. Local size on faces, edges, bodies. Curvature- and proximity-based sizing. Quality metrics: Jacobian, aspect, skew, min dihedral. User-visible fail: this sliver face, with a CAD highlight. Mesh persists and invalidates on geometry change. Mesh a CAD bracket with holes, TET10, no inverted elements, min Jacobian above a stated floor, face sets recover all load faces.
- We write the mesher in Rust. Gmsh gold files in tests are fine. Calling gmsh as the shipped mesher is not.
- Linear static: solid constitutive from Materials at reference temperature. First ship uses isotropic E, ν, ρ pulled from a variant, not typed in the study. Displacement and traction boundary conditions, gravity, small-sliding bonded contact as tie constraints. Reaction forces. Stress, strain, displacement, von Mises. Safety factor versus yield if yield is present. Units check, with a warning on N versus N/mm² mistakes. Pressures integrate against the current mesh using face quadrature mapped from the CAD face, not a handful of nodes. NAFEMS LE10 or equivalent plate-with-hole benchmark within published tolerance. Cantilever analytic check.
- Modal: generalized eigenproblem. Free-free and constrained. N lowest modes, frequencies, mass participation, mode-shape visualization, rigid-body mode detection. A free-free cube shows six rigid modes near zero.
- Steady thermal: conductivity from the Materials variant, isotropic constant or k(T) table. Temperature, heat flux, convection (h, T∞), heat generation as a body load. Temperature field and heat-flux plot. A 1D wall with convection matches closed form. A study at 200 °C uses E(200) and k(200), not room-temperature scalars. Missing k(T) refuses the thermal study and names the variant. Unknown is not zero and not silent reuse of room temperature.
- Results: contour, probe, path plot. Min/max table per face and body. Deformed shape scale. Animation of modes. Export VTK/VTU. One-page PDF or Markdown report: mesh stats, boundary conditions, max stress, factor of safety. Study reproducibility: solver version, element type, mesh hash. Replay from the stored card plus mesh hash plus solver version.
- Validation is the product. NAFEMS-style cases in-tree. Analytic cases (tension, torsion, pressurized sphere subset). Mesh-refinement study helper. Golden-file CI with norms, not screenshots. Every released solver change prints a validation scoreboard. A CAE product without a validation pack is a visualizer.
- Materials: bind VariantId and ContactPairId (already assigned in CAD, or overridden per study). Evaluate constitutive hooks at local state against a pinned snapshot. Pin a snapshot hash on any released report. Refuse missing properties required by the physics. Changing assigned VariantId on a CAD body dirties studies that inherited it. Live library edits do not mutate a signed report.
- Appearance (CAD color) is never thermal emissivity. Emissivity lives on surface state. Friction is a contact-pair property (two materials, two surfaces, lubricant). A single friction coefficient of 0.3 on a material is a product defect. Same steel pair, polished-dry versus blasted-oily, two μ values. Vacuum pair is a third card.
- Structural FEA may keep using a named solid variant. Process and mixing studies must go through a Mixture. Do not give a CSTR the density of 316. Composition change (new heat) is a new variant. Interpolation in composition only when a model is declared. Environment is study data. Variants declare environments they are valid in. A vacuum study disables convection. Space data (TML/CVCM, atomic-oxygen yield) is content we ingest into Materials. We do not call MAPTIS at runtime. We do not invent LEO erosion yields.
- When nonlinear opens: geometric nonlinearity, von Mises plasticity with isotropic hardening, contact (frictionless penalty or augmented Lagrangian, then frictional), load stepping, Newton, line search. Do not advertise it until contact is boring on regression parts.
- When multibody opens: rigid bodies from CAD solids (mass from Materials evaluation), joints mapped from CAD mates, gravity, actuators versus time, export load histories to structural steps.
- When CFD opens: incompressible laminar in ducts, then steady RANS, boundary-layer mesh, residual and y+ reports. Lid-driven cavity and pipe-flow Poiseuille before any airfoil marketing.
- Chemistry and mixing, when opened: 0-D and 1-D reactors and flash consume Materials chemistry. They do not own species data. Batch tank, CSTR, PFR, jacketed vessel, impeller catalog, species transport, energy balance, mixing metrics, non-Newtonian viscosity from Materials, vessel geometry from CAD.
- Escape hatch: a documented INP/BDF subset (GRID, CQUAD4/CTETRA, MAT1, SPC, FORCE, PLOAD) opens in a third-party checker. Laptop linear static of 200k–500k TET10 degrees of freedom is a reasonable first-ship target. A 20-million-DOF crash model is not. Parallel assembly on the workstation is first ship. MPI is later.
- Simulation never writes design features. It may propose a parameter change through PLM. A passed simulation is not a release. Release stays a PLM state. External solvers may be test oracles only. We do not ship CalculiX, Code_Aster, Elmer, or OpenFOAM as the runtime. 100% Rust we write. No Fortran or C++ solver as the product core. No vendor materials or process product at runtime.

How N23D puts this in one place
Most stacks fail the day after save, when the model, the ticket, or the invoice becomes someone else’s import. N23D removes that day. This module reads the same record as the others.
- one native Rust binary: N23D. 100% Rust we write. No vendor kernel, ledger, PLC runtime, HRIS, or ITSM as the source of truth. File readers and protocol bridges are interchange.
- One identity plane: Item, VariantId, Person, and AssetId are global. Invoice, work order, inventory, quote, pay result, and NCR sit on a LegalEntityId.
- One digital thread: modules read the same record. There is no daily STEP shuffle as the workflow. Check-in is PLM save. CAM does not fork the body.
- Command::Core is the identity and policy plane. CCB is the full-spectrum change spine (not a second vault). TIX holds operational life of assets; ERP sees only the financial view.

- Materials only from MAT. CAD selects VariantId. Missing density means mass is unknown — we do not invent a number so a BOM or plot closes.
- ERP is one company’s books. BUS holds HR, org, legal entities, and group consolidation. HoldCo is not a plant. No fake Form 1120. No fake Lohnsteuer.
- FaceIds stay stable across revisions when possible so loads survive a fillet change. Analysis body is derived; CAD is the input.
- CAE evaluates a pinned MAT snapshot. A passed study is evidence. Release stays a PLM state; CCB may authorize the change that follows.
- Gravity and mass loads refuse fake density. If MAT has no density, mass is unknown.

What we will not fake
This is the product promise, not a claim that every solver and every pack already ships in the binary today. Industry-class names below are capability equals. They are not products we ship.
- We do not ship Ansys or Nastran as the runtime. File readers are interchange.
- We do not invent constitutive values to close a job. Defeaturing is not an edit of the design part.
- A result that cannot name VariantId and ECO/effectivity is not product evidence.
If CAE still lives in a sidecar PDF that PLM cannot query, or invents modulus to close a plot, we failed.

Natively connected, not glued together
N23D runs one data model across design, make, operate, and the business. Nothing is exported as the daily path. Nothing is re-keyed. Nothing is lost in translation between vendors.
- One data model. A part, an order, a nonconformance, a ticket, and a change point at the same objects. No mapping tables, no nightly sync, no drift.
- No export/import loss. Geometry, tolerances, revisions, asset state, and history stay intact because they never leave the system as the daily path.
- Auditability by default. Every change is versioned and attributable, so traceability is a query, not a project.
- Speed. 100% Rust: native performance, small footprint, no runtime surprises.
- Sovereignty. Your data, your infrastructure, your rules. No lock-in.
