Solid Mechanics Model¶
Introduction¶
The solid-mechanics model describes the mechanical response of solid bodies under applied loads in the small-strain, quasi-static regime. It solves for the displacement field \(\mathbf{u}(\mathbf{x})\) in static equilibrium
\[
\nabla \cdot \boldsymbol{\sigma} + \mathbf{f} = \mathbf{0}
\qquad \text{in } \Omega,
\]
with the infinitesimal strain tensor
\[
\boldsymbol{\varepsilon}(\mathbf{u})
= \tfrac{1}{2}
\left( \nabla \mathbf{u} + \nabla \mathbf{u}^{\mathsf{T}} \right)
\]
and the isotropic linear-elastic stress–strain relation
\[
\boldsymbol{\sigma}
= 2 \mu \, \boldsymbol{\varepsilon}
+ \lambda \, \mathrm{tr}(\boldsymbol{\varepsilon}) \, \mathbf{I},
\]
where the Lamé parameters are derived from Young's modulus \(E\) and Poisson's ratio \(\nu\):
\[
\mu = \frac{E}{2(1+\nu)},
\qquad
\lambda = \frac{E \, \nu}{(1+\nu)(1-2\nu)}.
\]
The model has typical industrial applications:
- Cantilever and pressure-vessel analysis.
- Support-bracket sizing.
- Mechanical-strength verification of electronics enclosures.
- The structural arm of magnet–mechanical coupling (motor housings, MRI gradient coils, magnet brackets).
Model¶
You create the model and add it to the simulation with
structural_model = StructuralModel(
marker=structural_domain,
order=2,
)
sim.get_model_manager().add_model(structural_model)
where
markerspecifies the domain on which the model is solved (defaults to the whole volume),orderis the polynomial order of the displacement discretisation (default1). \(p = 2\) is a common choice for bending-dominated problems where linear elements suffer from shear locking.
Materials¶
The model currently supports a single constitutive law — the Linear Elastic Material — characterised by Young's modulus \(E\) and Poisson's ratio \(\nu\):
from mufem.structural import LinearElasticMaterial
steel = LinearElasticMaterial(
name="Steel",
marker="Beam" @ Vol,
youngs_modulus=210.0e9,
poissons_ratio=0.30,
)
structural_model.add_material(steel)
Conditions¶
| Name | Supported Entities | Description |
|---|---|---|
| Fixed Displacement | Boundary | Clamps the displacement to zero on the boundary (homogeneous Dirichlet, $\mathbf{u} = \mathbf{0}$). |
| Traction | Boundary | Prescribes a surface traction $\boldsymbol{\sigma}\,\mathbf{n} = \bar{\mathbf{t}}$ (inhomogeneous Neumann). |
Coefficients¶
| Name | Field Type | Description |
|---|---|---|
| Displacement | Vector | The displacement field $\mathbf{u}$ [m]. |
| Von Mises Stress | Scalar | The von Mises equivalent stress $$ \sigma_\mathrm{vM} = \sqrt{\tfrac{3}{2}\, \boldsymbol{s} : \boldsymbol{s}}, $$ where $\boldsymbol{s} = \boldsymbol{\sigma} - \tfrac{1}{3}\mathrm{tr}(\boldsymbol{\sigma})\,\mathbf{I}$ is the deviatoric stress. Standard yield criterion for ductile metals. |