Feel++

CSM Toolbox

Computational Solid Mechanics

Benchmarks are available at CSM Benchmarks.

1. Notations and units

Notation

Quantity

Unit

\(\boldsymbol{\eta}_s\)

displacement

\(m\)

\(\rho_s\)

density

\(kg.m^{-3}\)

\(\lambda_s\)

first Lamé coefficients

\(N.m^{-2}\)

\(\mu_s\)

second Lamé coefficients

\(N.m^{-2}\)

\(E_s\)

Young modulus

\(kg.m^{-1}.s^{-2}\)

\(\nu_s\)

Poisson’s ratio

dimensionless

\(\boldsymbol{F}_s\)

deformation gradient

\(\boldsymbol{\Sigma}_s\)

second Piola-Kirchhoff tensor

\(f_s^t\)

body force

  • strain tensor \(\boldsymbol{F}_s = \boldsymbol{I} + \nabla \boldsymbol{\eta}_s\)

  • Cauchy-Green tensor \(\boldsymbol{C}_s = \boldsymbol{F}_s^{T} \boldsymbol{F}_s\)

  • Green-Lagrange tensor

\begin{align} \boldsymbol{E}_s &= \frac{1}{2} \left( \boldsymbol{C}_s - \boldsymbol{I} \right) \\ &= \underbrace{\frac{1}{2} \left( \nabla \boldsymbol{\eta}_s + \left(\nabla \boldsymbol{\eta}_s\right)^{T} \right)}_{\boldsymbol{\epsilon}_s} + \underbrace{\frac{1}{2} \left(\left(\nabla \boldsymbol{\eta}_s\right)^{T} \nabla \boldsymbol{\eta}_s \right)}_{\boldsymbol{\gamma}_s} \end{align}

2. Equations

The second Newton’s law allows us to define the fundamental equation of the solid mechanic, as follows

\[ \rho^*_{s} \frac{\partial^2 \boldsymbol{\eta}_s}{\partial t^2} - \nabla \cdot \left(\boldsymbol{F}_s \boldsymbol{\Sigma}_s\right) = \boldsymbol{f}^t_s\]

2.1. Linear elasticity

\[\begin{align} \boldsymbol{F}_s &= \text{Identity} \\ \boldsymbol{\Sigma}_s &=\lambda_s tr( \boldsymbol{\epsilon}_s)\boldsymbol{I} + 2\mu_s\boldsymbol{\epsilon}_s \end{align}\]

2.2. Hyper-elasticity

2.2.1. Saint-Venant-Kirchhoff

\[\boldsymbol{\Sigma}_s=\lambda_s tr( \boldsymbol{E}_s)\boldsymbol{I} + 2\mu_s\boldsymbol{E}_s\]

2.2.2. Neo-Hookean

\[\boldsymbol{\Sigma}_s= \mu_s J^{-2/3}(\boldsymbol{I} - \frac{1}{3} \text{tr}(\boldsymbol{C}) \ \boldsymbol{C}^{-1})\]
\[\boldsymbol{\Sigma}_s^ = \boldsymbol{\Sigma}_s^\text{iso} + \boldsymbol{\Sigma}_s^\text{vol}\]
Isochoric part : \(\boldsymbol{\Sigma}_s^\text{iso}\)
Table 1. Isochoric law
Name \(\mathcal{W}_S(J_s)\) \(\boldsymbol{\Sigma}_s^{\text{iso}}\)

Neo-Hookean

\(\mu_s J^{-2/3}(\boldsymbol{I} - \frac{1}{3} \text{tr}(\boldsymbol{C}) \ \boldsymbol{C}^{-1}) \)

Volumetric part : \(\boldsymbol{\Sigma}_s^\text{vol}\)
Table 2. Volumetric law
Name \(\mathcal{W}_S(J_s)\) \(\boldsymbol{\Sigma}_s^\text{vol}\)

classic

\(\frac{\kappa}{2} \left( J_s - 1 \right)^2\)

simo1985

\(\frac{\kappa}{2} \left( ln(J_s) \right)\)

2.3. Axisymmetric reduced model

We interest us here to a 1D reduced model, named generalized string.

The axisymmetric form, which will interest us here, is a tube of length \(L\) and radius \(R_0\). It is oriented following the axis \(z\) and \(r\) represent the radial axis. The reduced domain, named \(\Omega_s^*\) is represented by the dotted line. So the domain, where radial displacement \(\eta_s\) is calculated, is \(\Omega_s^*=\lbrack0,L\rbrack\).

We introduce then \(\Omega_s^{'*}\), where we also need to estimate a radial displacement as before. The unique variance is this displacement direction.

Reduced Model Geometry
Figure 1 : Geometry of the reduce model

The mathematical problem associated to this reduce model can be describe as

\[ \rho^*_s h \frac{\partial^2 \eta_s}{\partial t^2} - k G_s h \frac{\partial^2 \eta_s}{\partial x^2} + \frac{E_s h}{1-\nu_s^2} \frac{\eta_s}{R_0^2} - \gamma_v \frac{\partial^3 \eta}{\partial x^2 \partial t} = f_s.\]

where \(\eta_s\), the radial displacement that satisfy this equation, \(k\) is the Timoshenko’s correction factor, and \(\gamma_v\) is a viscoelasticity parameter. The material is defined by its density \(\rho_s^*\), its Young’s modulus \(E_s\), its Poisson’s ratio \(\nu_s\) and its shear modulus \(G_s\)

At the end, we take \( \eta_s=0\text{ on }\partial\Omega_s^*\) as a boundary condition, which will fixed the wall to its extremities.

3. CSM Toolbox

3.1. Models

The solid mechanics model can be selected in json file :

Listing : select solid model
"Model":"Hyper-Elasticity"
Table 3. Table of Models for model option
Model Name in json

Linear Elasticity

Elasticity

Hyper Elasticity

Hyper-Elasticity

When materials are closed to incompressibility formulation in displacement/pressure are available.

Table 4. Table of Models for material_law with hyper elasticity model
Model Name Volumic law

Saint-Venant-Kirchhoff

SaintVenantKirchhoff

classic, simo1985

NeoHookean

NeoHookean

classic, simo1985

option: mechanicalproperties.compressible.volumic_law

3.2. Materials

The Lamé coefficients are deducing from the Young’s modulus \(E_s\) and the Poisson’s ratio \(\nu_s\) of the material we work on and can be express

\[\lambda_s = \frac{E_s\nu_s}{(1+\nu_s)(1-2\nu_s)} \hspace{0.5 cm} , \hspace{0.5 cm} \mu_s = \frac{E_s}{2(1+\nu_s)}\]
Materials section
"Materials":
{
    "<marker>":
    {
        "name":"solid",
        "E":"1.4e6",
        "nu":"0.4",
        "rho":"1e3"
    }
}

where E stands for the Young’s modulus in Pa, nu the Poisson’s ratio ( dimensionless ) and rho the density in \(kg\cdot m^{-3}\).

3.3. Boundary Conditions

Table 5. Boundary conditions
Name Options Type

Dirichlet

faces, edges and component-wise

"Dirichlet"

Neumann

scalar, vectorial

"Neumann_scalar" or "Neumann_vectorial"

Pressure follower ,

Nonlinear boundary condition set in deformed domain

TODO

Robin

TODO

TODO

3.4. Body forces

Table 6. Volumic forces
Name Options Type

Expression

Vectorial

"VolumicForces"

3.5. Post Process

3.5.1. Exports for visualisation

The fields allowed to be exported in the Fields section are:

  • displacement

  • velocity

  • acceleration

  • stress or normal-stress

  • pressure

  • material-properties

  • pid

  • fsi

  • Von-Mises

  • Tresca

  • principal-stresses

  • all

3.5.2. Measures

  • Points

  • Maximum

  • Minimum

  • VolumeVariation

Points

Same syntax as FluidMechanics with available Fields :

  • displacement

  • velocity

  • acceleration

  • pressure

  • principal-stress-0

  • principal-stress-1

  • principal-stress-2

  • sigma_xx, sigma_xy, …​

Maximum/Minimum

The Maximum and minimum can be evaluated and save on .csv file. User need to define (i) <Type> ("Maximum" or "Minimum"), (ii) "<tag>" representing this data in the .csv file, (iii) "<marker>" representing the name of marked entities and (iv) the field where extremum is computed.

"<Type>":
{
    "<tag>":
    {
        "markers":"marker>",
        "fields":["displacement","velocity"]
    }
}
VolumeVariation
"VolumeVariation":<marker>

3.6. Run simulations

programme avalaible :

  • feelpp_toolbox_solid_2d

  • feelpp_toolbox_solid_3d

mpirun -np 4 feelpp_toolbox_solid_2d --config-file=<myfile.cfg>