Skip to content

Solid mechanics

This page derives the weak formulation for solid mechanics and describes the available loads, constraints, and couplings in Allsolve.

The strong form of deformable solids is given by the Cauchy momentum equation

σ+f=ρu¨\begin{align*} \nabla \cdot \boldsymbol{\sigma} + \boldsymbol{f} = \rho \boldsymbol{\ddot{u}} \tag{1} \end{align*}

where

  • σ\boldsymbol{\sigma} is the stress tensor
  • f\boldsymbol{f} is the volumetric body force vector
  • ρ\rho is the mass density
  • u\boldsymbol{u} is the displacement field vector
  • u¨\boldsymbol{\ddot{u}} is the acceleration vector

Generalized Hooke’s law defines the relation between the stress and strain components

σ=Cε, \boldsymbol{\sigma} = \boldsymbol{C} \boldsymbol{\varepsilon},

where C\boldsymbol{C} is a fourth-order elasticity tensor and ε\boldsymbol{\varepsilon} is the strain tensor.

  • Small displacement theory: \qquad
ε=12(u+(u)T) \boldsymbol{\varepsilon} = \dfrac{1}{2} \left( \nabla \boldsymbol{u} + (\nabla \boldsymbol{u})^T \right)
  • Large displacement theory: \qquad
ε=12(u+(u)T+(u)Tu) \boldsymbol{\varepsilon} = \dfrac{1}{2} \left( \nabla \boldsymbol{u} + (\nabla \boldsymbol{u})^T + (\nabla \boldsymbol{u})^T \nabla \boldsymbol{u} \right)

In Voigt notation, the stress and strain tensors are represented as vectors. Consequently, the constitutive relation takes the form

σv=Hεv, \boldsymbol{\sigma}_v = \boldsymbol{H} \boldsymbol{\varepsilon}_v,

where H\boldsymbol{H} is the elasticity matrix which is a symmetric 6×66 \times 6 matrix.

To obtain the weak form, multiply (1)\text{(1)} by the test function u\boldsymbol{u}^\prime and integrate over the domain Ω\Omega:

Ω  ρu¨u  dΩ+Ω  (σ)u  dΩ+Ω  fu  dΩ=0 \int_{\Omega}\; -\rho \boldsymbol{\ddot{u}} \cdot \boldsymbol{u}^\prime \; d\Omega + \int_{\Omega}\; (\nabla \cdot \boldsymbol{\sigma}) \cdot \boldsymbol{u}^\prime \; d\Omega + \int_{\Omega}\; \boldsymbol{f} \cdot \boldsymbol{u}^\prime \; d\Omega = 0

Applying Leibniz rule on the divergence term, we get

Ω  ρu¨u  dΩ+Ω  σ ⁣:u  dΩ+Ω  (σu)  dΩ+Ω  fu  dΩ=0. \int_{\Omega}\; -\rho \boldsymbol{\ddot{u}} \cdot \boldsymbol{u}^\prime \; d\Omega + \int_{\Omega}\; -\boldsymbol{\sigma} \colon \nabla \boldsymbol{u}^\prime \; d\Omega + \int_{\Omega}\; \nabla \cdot (\boldsymbol{\sigma} \cdot \boldsymbol{u}^\prime) \; d\Omega + \int_{\Omega}\; \boldsymbol{f} \cdot \boldsymbol{u}^\prime \; d\Omega = 0.

Applying Divergence theorem on the divergence term, we get

Ω  ρu¨u  dΩ+Ω  σ ⁣:u  dΩ+Γ  u(σn)  dΓ+Ω  fu  dΩ=0. \int_{\Omega}\; -\rho \boldsymbol{\ddot{u}} \cdot \boldsymbol{u}^\prime \; d\Omega + \int_{\Omega}\; -\boldsymbol{\sigma} \colon \nabla \boldsymbol{u}^\prime \; d\Omega + \int_{\Gamma}\; \boldsymbol{u}^\prime \cdot (\boldsymbol{\sigma} \cdot \boldsymbol{n}) \; d\Gamma + \int_{\Omega}\; \boldsymbol{f} \cdot \boldsymbol{u}^\prime \; d\Omega = 0.

Since the stress tensor is symmetric, the following relation holds.

σ ⁣:u=σ ⁣:(u)T=σ ⁣:12((u)T+(u)T)=σ ⁣:12(u+(u)T)=σ ⁣:ε\begin{align*} \boldsymbol{\sigma} \colon \nabla \boldsymbol{u}^\prime &= \boldsymbol{\sigma} \colon (\nabla {\boldsymbol{u}^\prime})^T \\ &= \boldsymbol{\sigma} \colon \dfrac{1}{2} \left((\nabla {\boldsymbol{u}^\prime})^T + (\nabla {\boldsymbol{u}^\prime})^T \right) \\ &= \boldsymbol{\sigma} \colon \dfrac{1}{2} \left(\nabla {\boldsymbol{u}^\prime} + (\nabla {\boldsymbol{u}^\prime})^T \right) \\ &= \boldsymbol{\sigma} \colon \boldsymbol{\varepsilon}^\prime \end{align*}

Substituting in the above relation σ ⁣:u=σ ⁣:ε\boldsymbol{\sigma} \colon \nabla \boldsymbol{u}^\prime = \boldsymbol{\sigma} \colon \boldsymbol{\varepsilon}^\prime and following the definition of traction vector t=σn\boldsymbol{t} = \boldsymbol{\sigma \cdot n}, we get the final form of our weak formulation,

Ω  ρu¨u  dΩ+Ω  σ ⁣:ε  dΩ+Ω  fu  dΩ+Γ  tu  dΓ=0. \int_{\Omega}\; -\rho \boldsymbol{\ddot{u}} \cdot \boldsymbol{u}^\prime \; d\Omega + \int_{\Omega}\; -\boldsymbol{\sigma} \colon \boldsymbol{\varepsilon}^\prime \; d\Omega + \int_{\Omega}\; \boldsymbol{f} \cdot \boldsymbol{u}^\prime \; d\Omega + \int_{\Gamma}\; \boldsymbol{t} \cdot \boldsymbol{u}^\prime \; d\Gamma = 0.

Applies an external mechanical load to a selected region by prescribing a force vector f\boldsymbol{f}, resulting in deformation and stress.

Fixes all components of the displacement field u\boldsymbol{u}. Use this interaction to fix displacements at a node, boundary, or within a region of the solid. Use Clamp interaction to fix displacement values to zero.

How to useYou can use either the matrix editor or the expression editor. Matrix editor is the default, just enable a dimension/dimensions to constrain and enter the displacement value. With the expression editor, provide a 3×2 matrix with the first column containing 1 or 0 (whether a constraint is applied in that dimension or not), and the second column containing the displacement values.
Exampleexpression editor: [0, 0; 1, 42; 0, 0] applies a 3D displacement constraint of uy=42u_y = 42 in the y-direction, while the other dimensions remain unconstrained.
UnitDisplacement values in meters (m)

Clamp is a special case of a Constraint where the displacement is fixed to zero. This boundary condition will constrain all components of the displacement vector u\boldsymbol{u} in the targeted region to zero displacement: ux=0,uy=0,uz=0u_x = 0, u_y = 0, u_z = 0

Applies a lumped displacement U\boldsymbol{U} or force F\boldsymbol{F} through a boundary of some surface, replacing detailed field distribution with an equivalent lumped value.

How to useSpecify the target curve (must be a connected loop). From Actuation mode, select either displacement, force or circuit coupling. Use the matrix editor or the expression editor to define values: provide a 3×2 matrix for a 3D problem (2×2 for 2D, etc.), where the first column contains 1 or 0 (whether a constraint is applied or not) and the second column contains the values.
Example[0, 0; 1, 0.01; 0, 0] applies a 3D lumped displacement constraint of uy=0.01u_y = 0.01 in the y-direction, while the other dimensions remain unconstrained.
UnitDisplacement values in meters (m) or force in Newtons (N)

Applies a scalar pressure load normal to a boundary surface. Positive pressure acts inward (compression), negative pressure acts outward (tension). Unlike a general Load which requires specifying a force vector, Pressure only needs a scalar value — the direction is determined automatically from the surface normal.

How to useSelect the target boundary (surface for 3D, curve for 2D). Provide a scalar pressure value. Positive values push into the solid, negative values pull outward.
Example1e6 applies 1 MPa of compressive pressure to the selected surface.
UnitPressure in Pascals (Pa)

Applies an initial stress state σ0\boldsymbol{\sigma}_0 to a region before the primary analysis begins. Use this to model residual stresses from manufacturing, thermal history, or prior loading stages. Prestress modifies structural stiffness — tensile prestress increases stiffness while compressive prestress reduces it, affecting eigenfrequencies and buckling behavior.

How to useProvide the initial stress tensor components using the matrix editor or the expression editor. For a 3D problem, specify 6 Voigt components (σxx\sigma_{xx}, σyy\sigma_{yy}, σzz\sigma_{zz}, σxy\sigma_{xy}, σyz\sigma_{yz}, σxz\sigma_{xz}).
Example[1e6; 0; 0; 0; 0; 0] applies a uniaxial prestress of 1 MPa in the xx-direction to the target region.
UnitStress in Pascals (Pa)

Imposes periodic boundary conditions for the vector field u\boldsymbol{u}. Reduces computational domain size for symmetric problems.

ExamplePeriodicity follows the same principles, regardless of which physics module it belongs to. See how periodicity is used in magnetism as a reference: Periodicity in electric motors

Imposes a symmetry boundary condition on a plane, constraining the normal displacement component to zero (un=0u_n = 0) while leaving tangential displacements free. Use this to model only a fraction of a symmetric structure (where both geometry and loads are symmetric about the cut plane), reducing computational cost.

How to useSelect the boundary that represents the symmetry plane.
ExampleCutting a beam with a centered load along its midplane and applying Symmetry to the cut face halves the number of degrees of freedom while producing the same result as the full model.

Applies Rayleigh damping to the structure, where the damping matrix is a linear combination of the mass and stiffness matrices: C=αM+βK\boldsymbol{C} = \alpha \boldsymbol{M} + \beta \boldsymbol{K}. The mass-proportional coefficient α\alpha damps low-frequency modes, while the stiffness-proportional coefficient β\beta damps high-frequency modes.

How to useProvide the mass damping coefficient α\alpha and the stiffness damping coefficient β\beta. These can be determined from known damping ratios at two reference frequencies.
Exampleα=0.1\alpha = 0.1 and β=0.001\beta = 0.001 applies Rayleigh damping tuned to a target damping ratio across the frequency range of interest.
Unitα\alpha in 1/s, β\beta in s

Enables large-deformation analysis by accounting for changes in geometry during loading. With Geometric nonlinearity applied, the Solid mechanics formulation uses the Green-Lagrange strain tensor instead of the Linear strain tensor.

How to useEnable this interaction from the options. Geometric nonlinearity is applied on the same region as Solid Mechanics, so no target region needs to be specified.

Defines a contact interaction between two surfaces that may come into contact during deformation. Prevents interpenetration of bodies and computes contact pressures when surfaces touch.

The spacing parameter is your error margin for contact: the surfaces are said to be touching if the gap becomes less than or equal to the spacing parameter.

Stiction (static friction) is the tendency for smooth surfaces to stick together. As surfaces come into contact, a threshold force has to be overcome to break them apart and induce relative motion.

How to useSelect the two boundary surfaces that may come into contact as Gamma 1/2. Select the volumes with the boundary surfaces as Gamma side 1/2. Set the spacing parameter as your error margin (m) for contact. Set stiction as the threshold force (N) that is needed to break the contacting surfaces apart.
UnitSpacing in meters (m) and Stiction in Newtons (N)

This formulation supports the following couplings:

  • Thermal expansion
    • Heat solid
    • Heat fluid
  • Piezoelectricity
    • Electrostatics
  • Electric force
    • Current flow
    • Electromagnetic waves
    • Electrostatics
    • Magnetism H
  • Magnetic force
    • Magnetism A
    • Magnetism 𝜑
    • Magnetism H
  • Large displacement
    • Mesh deformation