How To: Metadata and Physics Types

The metadata object contains solver parameters and configuration options that control the accuracy and speed of simulations.

Metadata Fields

  • resolution or cell_size: resolution is the target number of finite elements. An iterative process determines a cell_size that achieves approximately the specified number of elements. You can directly specify cell_size instead of resolution. Note that decreasing cell_size can quickly result in large numbers of finite elements and long solve times. resolution is recommended for most cases.

  • units: Sets the unit system for the scenario (geometry and results will be in this unit). Note that materials are always specified in MKS units. Available options: "MeterKilogramSecond" (default), "CentimeterGramSecond", "MillimeterMegagramSecond", "FootPoundSecond", "InchPoundSecond".

  • basis_order: The type of finite element used. Default is 1 (linear elements). 2 is for quadratic elements.

  • solver_override: Explicitly specify the solver to use. Default for linear elasticity and modal is AMGCL_amg_rigid_body. Default for thermal is AMGCL_amg. Available options: AMGCL_cg, AMGCL_ilu0_cg, AMGCL_damped_jacobi_cg, AMGCL_amg, AMGCL_amg_rigid_body, Eigen_SparseLU, MKL_PardisoLDLT, MKL_PardisoLLT, MKL_PardisoLU.

  • integrator_override: For some physics types, multiple integrator implementations are available. In general, the default choice is the best choice. Available options: IntactModal, IntactLinearElasticity, MPCStaticThermal, MPCLinearElasticity, LinearBuckling, MPCThermoLinearElasticity, AdaptiveMFEMLinearElasticity (beta — see AMR below).

  • tolerance: The tolerance for iterative solvers. Default is 1e-20 for high accuracy. Increasing the tolerance will decrease solve time but yield less accurate results.

  • max_iterations_multiplier: Changes the max iterations for iterative solvers; scales with the number of degrees of freedom. Use a parameter less than one for faster solve times, with the tradeoff of accuracy.

  • omega_cutoff: A parameter to tune the use of solution structure method for enforcing boundary conditions. By default, there is no cutoff. It is not recommended to tune this parameter without additional input from Intact Solutions.

  • use_caching: By default, Intact.simulation will cache all quadrature rules and material properties for each cell. This can use significant memory for problems with many elements. Set to false to decrease memory footprint at the cost of additional runtime.

  • verbose_solver: Some sparse linear solvers can provide feedback about their progress. Default is false. If set to true, some solvers will report progress to standard output.

Example with all metadata fields:

{
  "metadata": {
    "resolution": 10000,
    "units": "MeterKilogramSecond",
    "basis_order": 2,
    "solver_override": "AMGCL_amg_rigid_body",
    "integrator_override": "MPCLinearElasticity",
    "tolerance": 1e-20,
    "max_iterations_multiplier": 1.0,
    "omega_cutoff": 0.1,
    "use_caching": true,
    "verbose_solver": false
  }
}

Beta Feature: Adaptive Mesh Refinement (AMR)

AMR is available for linear elasticity only. It uses octree subdivision of cells based on error metrics to refine the immersed simulation grid locally. Starts from the grid produced by the standard resolution setting and iteratively refines based on the specified parameters.

AMR parameters:

  • max_iterations — maximum number of solve/refine passes before stopping.

  • max_refinement_depth — maximum number of times a single cell may be subdivided; cells already refined this many times are skipped during marking.

  • refine_energy_threshold — fraction of total error energy (0–1] used to choose which cells to refine each pass. The solver refines the smallest set of cells that together account for this fraction of the total error. Higher values mean broader, more aggressive refinement per pass.

  • max_resolution — maximum number of cells that should not be exceeded, to avoid creating a simulation that will take a long time to solve.

To enable AMR, add an amr object to metadata and set integrator_override:

{
  "metadata": {
    "units": "mm",
    "resolution": 100000,
    "basis_order": 1,
    "amr": {
      "max_iterations": 5,
      "max_refinement_depth": 3,
      "refine_energy_threshold": 0.5,
      "max_resolution": 5000000
    },
    "integrator_override": "AdaptiveMFEMLinearElasticity"
  }
}

Output files — for each refinement iteration N, the solver writes:

  • <name>_surface_N.vtu — solution quantities (displacement, stress) on the domain surface.

  • <name>_adaptive_N.vtu — the simulation grid, for inspecting the refinement pattern.

  • <name>.csv — key quantities per iteration: degrees of freedom, max displacement, and max von Mises stress.

See Adaptive Mesh Refinement (Beta) Example for a complete working configuration.

Physics Types

Linear Elasticity

Linear elasticity simulations require "type": "LinearElasticity" in the scenario JSON.

Supported Materials: Isotropic, Orthotropic

Supported Boundary Conditions: Fixed, Fixed Vector, Sliding, Vector Force, Torque Force, Pressure Force, Bearing Force, Hydrostatic Load, Flexible Remote Load

Supported Internal Conditions: Body Load (Linear Acceleration/Gravity), Rotational Load

{
  "type": "LinearElasticity",
  "scenario_name": "cantilever_beam",
  "geometry": { },
  "materials": { },
  "boundary_conditions": [ ],
  "internal_conditions": [ ],
  "metadata": {
    "resolution": 10000,
    "units": "MeterKilogramSecond"
  }
}

Linear Buckling

Linear buckling simulations require "type": "LinearBuckling" in the scenario JSON. A linear buckling simulation first performs a linear elasticity simulation, then solves a generalized eigenvalue problem to determine the critical load factors.

Additional Required Metadata:

  • desired_eigenvalues: The integer number of critical load factors to solve for. Each eigenvalue corresponds to a critical load factor, which when multiplied by the applied load, determines the critical load. For each critical load factor, a corresponding displacement field (buckling mode shape) will be calculated. Generally, the first critical load factor is most useful; a small number of additional modes may be useful to examine.

Supported Materials: Isotropic, Orthotropic

Supported Boundary Conditions: Any linear elasticity boundary conditions

Supported Internal Conditions: Any linear elasticity internal conditions

Note: The solver_override metadata controls the solver type for the underlying linear elasticity simulation. The linear buckling solver is selected automatically.

{
  "type": "LinearBuckling",
  "scenario_name": "buckling_analysis",
  "geometry": { },
  "materials": { },
  "boundary_conditions": [ ],
  "internal_conditions": [ ],
  "metadata": {
    "resolution": 10000,
    "desired_eigenvalues": 3
  }
}

Static Thermal

Static thermal simulations require "type": "StaticThermal" in the scenario JSON.

Additional Required Metadata:

  • environment_temperature: The temperature of the surrounding environment.

Supported Materials: Thermal materials (must specify thermal_conductivity, specific_heat, and optionally expansion_coefficient)

Supported Boundary Conditions: Fixed Temperature, Convection, Constant Flux

Supported Internal Conditions: Constant Heat (body heat flux)

{
  "type": "StaticThermal",
  "scenario_name": "thermal_analysis",
  "geometry": { },
  "materials": { },
  "boundary_conditions": [ ],
  "internal_conditions": [ ],
  "metadata": {
    "resolution": 10000,
    "environment_temperature": 300.0
  }
}

Thermoelasticity

Thermo linear elasticity scenarios perform a static thermal and linear elasticity simulation, taking into account the strain induced by thermal effects. A thermo linear elasticity scenario is configured with two scenario JSON files.

Additional Required Configuration:

  • thermal_scenario: Path to the static thermal scenario JSON file that will be solved first.

Supported Materials: Materials must have thermal properties defined with expansion_coefficient

Supported Boundary Conditions: Any linear elasticity boundary conditions

Supported Internal Conditions: Any linear elasticity internal conditions

Important Notes:

  • For best results, the thermal scenario resolution should be the same or less than the stress scenario resolution.

  • Ensure that the material has an expansion_coefficient defined so the calculated thermal field can be used to determine thermally induced strain.

  • A thermo linear elasticity scenario will create a sampled solution containing both the temperature field and the displacement, strain, and stress fields expected from a structural analysis.

{
  "type": "ThermoLinearElasticity",
  "scenario_name": "thermoelastic_analysis",
  "thermal_scenario": "thermal_scenario.json",
  "geometry": { },
  "materials": { },
  "boundary_conditions": [ ],
  "internal_conditions": [ ],
  "metadata": {
    "resolution": 10000
  }
}