CSM Toolbox
Feel++ Book Contributors https://github.com/feelpp/book.feelpp.org/graphs/contributors
Computational Solid Mechanics
Feel++ Book Contributors https://github.com/feelpp/book.feelpp.org/graphs/contributors
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
2. Equations
The second Newton’s law allows us to define the fundamental equation of the solid mechanic, as follows
2.1. Linear elasticity
2.2. Hyper-elasticity
2.2.1. Saint-Venant-Kirchhoff
2.2.2. Neo-Hookean
Isochoric part : \(\boldsymbol{\Sigma}_s^\text{iso}\)
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}\)
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.

The mathematical problem associated to this reduce model can be describe as
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 :
"Model":"Hyper-Elasticity"
Model | Name in json |
---|---|
Linear Elasticity |
|
Hyper Elasticity |
|
When materials are closed to incompressibility formulation in displacement/pressure are available.
Model | Name | Volumic law |
---|---|---|
Saint-Venant-Kirchhoff |
|
classic, simo1985 |
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
"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
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
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>