Total Lagrangian SPH

A Total Lagrangian framework is used wherein the governing equations are formulated such that all relevant quantities and operators are measured with respect to the initial configuration (O’Connor & Rogers, 2021, Belytschko et al., 2000).

The governing equations with respect to the initial configuration are given by:

\[\frac{\mathrm{D}\bm{v}}{\mathrm{D}t} = \frac{1}{\rho_0} \nabla_0 \cdot \bm{P} + \bm{g},\]

where the zero subscript denotes a derivative with respect to the initial configuration and $\bm{P}$ is the first Piola-Kirchhoff (PK1) stress tensor.

The discretized version of this equation is given by O’Connor & Rogers (2021):

\[\frac{\mathrm{d}\bm{v}_a}{\mathrm{d}t} = \sum_b m_{0b} \left( \frac{\bm{P}_a \bm{L}_{0a}}{\rho_{0a}^2} + \frac{\bm{P}_b \bm{L}_{0b}}{\rho_{0b}^2} \right) \nabla_{0a} W(\bm{X}_{ab}) + \frac{\bm{f}_a^{PF}}{m_{0a}} + \bm{g},\]

with the correction matrix (see also GradientCorrection)

\[\bm{L}_{0a} := \left( -\sum_{b} \frac{m_{0b}}{\rho_{0b}} \nabla_{0a} W(\bm{X}_{ab}) \bm{X}_{ab}^T \right)^{-1} \in \R^{d \times d}.\]

The subscripts $a$ and $b$ denote quantities of particle $a$ and $b$, respectively. The zero subscript on quantities denotes that the quantity is to be measured in the initial configuration. The difference in the initial coordinates is denoted by $\bm{X}_{ab} = \bm{X}_a - \bm{X}_b$, the difference in the current coordinates is denoted by $\bm{x}_{ab} = \bm{x}_a - \bm{x}_b$.

For the computation of the PK1 stress tensor, the deformation gradient $\bm{F}$ is computed per particle as

\[\bm{F}_a = \sum_b \frac{m_{0b}}{\rho_{0b}} \bm{x}_{ba} (\bm{L}_{0a}\nabla_{0a} W(\bm{X}_{ab}))^T \\ \qquad = -\left(\sum_b \frac{m_{0b}}{\rho_{0b}} \bm{x}_{ab} (\nabla_{0a} W(\bm{X}_{ab}))^T \right) \bm{L}_{0a}^T\]

with $1 \leq i,j \leq d$. From the deformation gradient, the Green-Lagrange strain

\[\bm{E} = \frac{1}{2}(\bm{F}^T\bm{F} - \bm{I})\]

and the second Piola-Kirchhoff stress tensor

\[\bm{S} = \lambda \operatorname{tr}(\bm{E}) \bm{I} + 2\mu \bm{E}\]

are computed to obtain the PK1 stress tensor as

\[\bm{P} = \bm{F}\bm{S}.\]

Here,

\[\mu = \frac{E}{2(1 + \nu)}\]

and

\[\lambda = \frac{E\nu}{(1 + \nu)(1 - 2\nu)}\]

are the Lamé coefficients, where $E$ is the Young's modulus and $\nu$ is the Poisson ratio.

The term $\bm{f}_a^{PF}$ is an optional penalty force. See e.g. PenaltyForceGanzenmueller.

TrixiParticles.TotalLagrangianSPHSystemType
TotalLagrangianSPHSystem(initial_condition,
                         smoothing_kernel, smoothing_length,
                         young_modulus, poisson_ratio;
                         n_fixed_particles=0, boundary_model=nothing,
                         acceleration=ntuple(_ -> 0.0, NDIMS),
                         penalty_force=nothing, source_terms=nothing)

System for particles of an elastic structure.

A Total Lagrangian framework is used wherein the governing equations are formulated such that all relevant quantities and operators are measured with respect to the initial configuration (O’Connor & Rogers 2021, Belytschko et al. 2000). See Total Lagrangian SPH for more details on the method.

Arguments

  • initial_condition: Initial condition representing the system's particles.
  • young_modulus: Young's modulus.
  • poisson_ratio: Poisson ratio.
  • smoothing_kernel: Smoothing kernel to be used for this system. See Smoothing Kernels.
  • smoothing_length: Smoothing length to be used for this system. See Smoothing Kernels.

Keyword Arguments

  • n_fixed_particles: Number of fixed particles which are used to clamp the structure particles. Note that the fixed particles must be the last particles in the InitialCondition. See the info box below.
  • boundary_model: Boundary model to compute the hydrodynamic density and pressure for fluid-structure interaction (see Boundary Models).
  • penalty_force: Penalty force to ensure regular particle position under large deformations (see PenaltyForceGanzenmueller).
  • acceleration: Acceleration vector for the system. (default: zero vector)
  • source_terms: Additional source terms for this system. Has to be either nothing (by default), or a function of (coords, velocity, density, pressure) (which are the quantities of a single particle), returning a Tuple or SVector that is to be added to the acceleration of that particle. See, for example, SourceTermDamping.
Note

The fixed particles must be the last particles in the InitialCondition. To do so, e.g. use the union function:

solid = union(beam, fixed_particles)

where beam and fixed_particles are of type InitialCondition.

source

Penalty Force

In FEM, underintegrated elements can deform without an associated increase of energy. This is caused by the stiffness matrix having zero eigenvalues (so-called hourglass modes). The name "hourglass modes" comes from the fact that elements can deform into an hourglass shape.

Similar effects can occur in SPH as well. Particles can change positions without changing the SPH approximation of the deformation gradient $\bm{F}$, thus, without causing an increase of energy. To ensure regular particle positions, we can apply similar correction forces as are used in FEM.

Ganzenmüller (2015) introduced a so-called hourglass correction force or penalty force $f^{PF}$, which is given by

\[\bm{f}_a^{PF} = \frac{1}{2} \alpha \sum_b \frac{m_{0a} m_{0b} W_{0ab}}{\rho_{0a}\rho_{0b} |\bm{X}_{ab}|^2} \left( E \delta_{ab}^a + E \delta_{ba}^b \right) \frac{\bm{x}_{ab}}{|\bm{x}_{ab}|}\]

The subscripts $a$ and $b$ denote quantities of particle $a$ and $b$, respectively. The zero subscript on quantities denotes that the quantity is to be measured in the initial configuration. The difference in the initial coordinates is denoted by $\bm{X}_{ab} = \bm{X}_a - \bm{X}_b$, the difference in the current coordinates is denoted by $\bm{x}_{ab} = \bm{x}_a - \bm{x}_b$. Note that Ganzenmüller (2015) has a flipped sign here because they define $\bm{x}_{ab}$ the other way around.

This correction force is based on the potential energy density of a Hookean material. Thus, $E$ is the Young's modulus and $\alpha$ is a dimensionless coefficient that controls the amplitude of hourglass correction. The separation vector $\delta_{ab}^a$ indicates the change of distance which the particle separation should attain in order to minimize the error and is given by

\[ \delta_{ab}^a = \frac{\bm{\epsilon}_{ab}^a \cdot \bm{x_{ab}}}{|\bm{x}_{ab}|},\]

where the error vector is defined as

\[ \bm{\epsilon}_{ab}^a = \bm{F}_a \bm{X}_{ab} - \bm{x}_{ab}.\]

TrixiParticles.PenaltyForceGanzenmuellerType
PenaltyForceGanzenmueller(; alpha=0.1)

Penalty force to ensure regular particle positions under large deformations.

Keywords

  • alpha: Coefficient to control the amplitude of hourglass correction.
source