Integrator::Mechanics

src/Integrator/Mechanics.H

This is a general purpose integrator that focuses on solving elasticity/mechanics equations in the absence of other multiphysics simulations. It is enabled by alamo.program=mechanics if used on its own, in which case there is no prefix. If it is being used by another integrator, see that integrator to determine the value of [prefix] (often equal to elastic).

This integrator inherits from Integrator::Base::Mechanics; see documentation for that integrator for additional parameters.

Model setup There are two basic tools for setting up a mechanics problem in this integrator.

  1. The eta field: this is used to mix models of different types. Use nmodels to specify how many material models to use, and then specify each model as model1, model2, etc. The type of moel is specified using the alamo.program.mechanics.model input.

    Once you have done this, you must determine the spatial distribution of each model. This is done by choosing an IC for the eta field with ic.type. The IC::Expression is the most general and recommended. The models are then mixed linearly, i.e.

    \[W_{\textrm{eff}} = \sum_{i=1}^N W_i\,\eta_i(\mathbf{x})\]

    See the Eshelby test for an example of model mixing.

  2. The psi field: this is used specifically for cases where a “void” region is desired. Its usage is similar to the eta case, and is conceptually similar in that it scales the model field to near-zero in order to mimic the (lack of) mechanical behavior in an empty region. It is important to use psi here, for reasons that are discussed in detail in this paper. The initialization of psi is similar to that for eta.

    See the PlateHole and RubberPlateHole for canonical exmaples. The Integrator::Fracture and Integrator::TopOp integrators are examples of integrators that leverage the psi property.

Body forces currently have limited support due to the relatively low number of times they are needed. See the Integrator::Base::Mechanics documentation for detail. See the TrigTest test for examples of current body force implementation.

Boundary conditions are implemented using the BC::Operator::Elastic classes. See the documentation on these classes for more detail. See any of the mechanics-based tests for examples of boundary condition application.

nmodels
1 conditional

Number of elastic model varieties

Names by executable 4 executables, 4 uses
mechanics-2d-coverage-g++
nmodels
mechanics-3d-coverage-g++
nmodels
thermoelastic-2d-coverage-g++
el.nmodels
thermoelastic-3d-coverage-g++
el.nmodels
model
repeatable conditional

No documentation available.

Names by executable 4 executables, 4 uses
mechanics-2d-coverage-g++
model
mechanics-3d-coverage-g++
model
thermoelastic-2d-coverage-g++
el.model
thermoelastic-3d-coverage-g++
el.model
eta_ref_threshold
0.01 conditional

Refinement threshold for eta field

Names by executable 4 executables, 4 uses
mechanics-2d-coverage-g++
eta_ref_threshold
mechanics-3d-coverage-g++
eta_ref_threshold
thermoelastic-2d-coverage-g++
el.eta_ref_threshold
thermoelastic-3d-coverage-g++
el.eta_ref_threshold
ref_threshold
0.01 conditional

Refinement threshold for strain gradient

Names by executable 4 executables, 4 uses
mechanics-2d-coverage-g++
ref_threshold
mechanics-3d-coverage-g++
ref_threshold
thermoelastic-2d-coverage-g++
el.ref_threshold
thermoelastic-3d-coverage-g++
el.ref_threshold
model_neumann_boundary
0 1 conditional

Explicity impose neumann condition on model at domain boundaries (2d only)

Names by executable 4 executables, 4 uses
mechanics-2d-coverage-g++
model_neumann_boundary
mechanics-3d-coverage-g++
model_neumann_boundary
thermoelastic-2d-coverage-g++
el.model_neumann_boundary
thermoelastic-3d-coverage-g++
el.model_neumann_boundary