RunMat
GitHub

Models

A model attaches physics data to geometry. It defines what material exists where, how the model is constrained, what loads or sources apply, which domains are active, and which analysis steps can be run.

What A Model Contains

PartPurpose
Geometry identityThe geometry id, revision, units, and reference frame the model belongs to.
MaterialsMechanical, thermal, electrical, and plastic material properties.
Material assignmentsWhich regions use which materials, with optional confidence evidence.
Boundary conditionsConstraints, prescribed displacements, electromagnetic anchors, and related boundary data.
Loads and sourcesForces, moments/torques, pressures, body forces, current density, coil currents, and similar inputs.
DomainsThermo-mechanical, electro-thermal, electromagnetic, or CFD domain data.
InterfacesContact and coupling interfaces between regions.
StepsThe analysis steps the model supports, such as static, modal, thermal, transient, nonlinear, electromagnetic, or CFD.

Model Profiles

Profiles create the starting model shape and select the solver used by run:

ProfileSelected solver
linear_static_structurallinear_static
modal_structuralmodal
acoustic_harmonicacoustic
thermal_standalonethermal
transient_structuraltransient
nonlinear_structuralnonlinear
thermo_mechanical_coupledtransient
electromagnetic_staticelectromagnetic
cfd_steady_state, cfd_transientcfd
cht_coupledcht
fsi_coupledfsi

In a .fea file, model.defaults: profile_scaffold lets RunMat create the scaffold from the profile. model.defaults: none starts from an empty model and expects the file to provide the model data it needs.

Define Model Data

Model data can be written in a .fea file or assembled in RunMat code with typed constructors such as fea.material(...), fea.boundaryCondition(...), fea.loadCase(...), fea.domain(...), and fea.model(...). Use a .fea file when the model definition is a portable study artifact. Use .m code when the model is generated from parameters, calculations, or loops.

model:
  id: bracket_static_model
  profile: linear_static_structural
  defaults: none
  frame: global

materials:
  steel:
    mechanical:
      youngs_modulus_pa: 200000000000.0
      poisson_ratio: 0.30

material_assignments:
  - region: bracket_body
    material: steel

boundary_conditions:
  - id: fixed_base
    region: bracket_base
    kind: fixed

loads:
  - id: tip_force
    region: bracket_tip
    type: force
    vector: [0.0, -1000.0, 0.0]

steps:
  - id: static_step
    kind: static

Region references can point directly at geometry region ids or use named aliases from the regions block.

type: moment uses a global-frame vector in N*m. type: torque is accepted as an alias but resolves to the canonical moment load kind. Direct moment loads require rotational-DOF structural elements. Beam nodes and shell/plate nodes can own rx, ry, and rz; displacement-only solid regions reject moment loads with an invalid-model error instead of silently converting them to forces.

loads:
  - id: tip_moment
    region: node:2
    type: moment
    vector: [0.0, 0.0, 125.0]

When rotational DOFs are present, structural results include structural.rotation and structural.reaction_moment. Beam results can also include structural.beam_torsion_moment, structural.beam_bending_moment, structural.beam_bending_stress, and structural.beam_torsion_stress; shell results can include structural.shell_membrane_force, structural.shell_bending_moment, structural.shell_transverse_shear, and structural.shell_von_mises.

Validate Before Solving

Validation checks the model and study shape before a run starts. It catches problems such as:

  • empty study or model ids,
  • missing geometry meshes,
  • unspecified units,
  • legacy run-kind/profile mismatches,
  • missing required steps,
  • invalid family-specific options,
  • missing or incompatible domain data.
  • direct moment loads on non-structural families or displacement-only structural regions.

runmat check model.fea is the usual CLI path. Host integrations can call fea.validate_study/v1 or lower-level model validation operations.

Scaffolds And Engineering Data

Profile scaffolds are useful for tests, examples, early integration, and simple exploratory runs. Engineering runs should explicitly review or provide the materials, assignments, loads, constraints, domains, and assumptions that matter for the result.

Validation proves the model is shaped correctly enough to run. Verification and validation evidence is still required before treating a result as production-grade physics. See Verification & Validation.