1. Notations and units











first Lamé coefficients



second Lamé coefficients



Young modulus



Poisson’s ratio



deformation gradient


second Piola-Kirchhoff tensor


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}}\)


\(\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}\)


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


\(\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
Table 3. Table of Models for model option
Model Name in json

Linear 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



classic, simo1985



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

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


faces, edges and component-wise



scalar, vectorial

"Neumann_scalar" or "Neumann_vectorial"

Pressure follower ,

Nonlinear boundary condition set in deformed domain





3.4. Body forces

Table 6. Volumic forces
Name Options Type




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


Same syntax as FluidMechanics with available Fields :

  • displacement

  • velocity

  • acceleration

  • pressure

  • principal-stress-0

  • principal-stress-1

  • principal-stress-2

  • sigma_xx, sigma_xy, …​


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.


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>


4. Turek Hron CSM Benchmark

In order to validate our fluid-structure interaction solver, we realize here a benchmark on the deformation of an elastic structure, initially proposed by Turek and Hron.

Computer codes, used for the acquisition of results, are from Vincent Chabannes.

This benchmark is linked to the Turek Hron CFD and Turek Hron FSI benchmarks.

4.1. Problem Description

We consider a solid structure, composed of a hyperelastic bar, bound to one of his extremity \(\Gamma_F^*\) to a rigid stationary circular structure. We denote \(\Gamma_{L}^*=\partial\Omega_s^* \backslash \Gamma_F^*\) the other boundaries. The geometry can be represented as follows

CSM Geometry
Figure 1 : Geometry of the Turek & Hron CSM benchmark.

\(\Omega_s^*\) represent the initial domain, before any deformations. We denote \(\Omega^t_s\) the domain obtained during the deformations application, at the time t.

By the Newton’s second law, we can describe the fundamental equation of the solid mechanic in a Lagrangian frame. Furthermore, we will suppose that the hyperelastic material follows a compressible Saint-Venant-Kirchhoff model. The Lamé coefficients, used in this model, are deducing from the Young’s modulus \(E_s\) and the Poisson’s ratio \(\nu_s\) of the material.

We will observe, during this simulation, the displacement of \(A\), on the \(x\) and \(y\) axis, when the elastic structure is subjected to its own weight, and compare our results to the reference ones given Turek and Hron.

In the first two cases, CSM1 and CSM2, we want to determine the steady state condition. To find it, a quasi-static algorithm is used, which increase at each step the gravity parameter.

For the third cases, CSM3, we realise a transient simulation, where we will observe the comportment of \(A\) subjected to its weight during a given time span.

4.1.1. Boundary conditions

We set

  • on \(\Gamma_{F}^*\), a condition that imposes this boundary to be fixed : \(\boldsymbol{\eta}_s=0\)

  • on \(\Gamma_{L}^*\), a condition that lets these boundaries be free from constraints : \((\boldsymbol{F}_s\boldsymbol{\Sigma}_s)\boldsymbol{ n }^*_s=\boldsymbol{0}\)

where \(\boldsymbol{n}_s^*\) is the outer unit normal vector from \(\partial \Omega_s^*\).

4.1.2. Initial conditions

The source term \(\boldsymbol{f}_s\), chosen in order to set in motion the elastic structure, is define by

\[\boldsymbol{f}_s=(0,-\rho^*_s g)\]

where \(g\) is a gravitational constant.

The reference document ( Turek and Hron ) don’t specify the time interval used to obtain their results. In our case, it’s chosen as \(\lbrack0,10\rbrack\).

4.2. Inputs

The following table displays the various fixed and variables parameters of this test-case.

Table 7. Fixed and Variable Input Parameters
Name Description Nominal Value Units


gravitational constant


\(m / s^2\)


elastic structure length




elastic structure height




cylinder radius




cylinder center coordinates




control point coordinates




point coordinates




Young’s modulus

\(1.4\times 10^6\)

\(kg / ms^2\)


Poisson’s ratio






\(kg/ m^3\)

As for solvers we used, Newton’s method is chosen for the non-linear part and a direct method based on LU decomposition is selected for the linear part.

4.3. Outputs

As described before, we have

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

We search the displacement \(\boldsymbol{\eta}_s\), on \(\Omega_s^*\), which will satisfy this equation.

In particular, the displacement of the point \(A\) is the one that interests us.

4.4. Discretization

To realize these tests, we made the choice to used Finite Elements Method, with Lagrangian elements of order \(N\) to discretize space.

Newmark-beta method, presented into Chabannes papers, is the one we used for the time discretization. We used this method with \(\gamma=0.5\) and \(\beta=0.25\).

4.4.1. Solvers

Here are the different solvers ( linear and non-linear ) used during results acquisition.

Table 8. KSP configuration



relative tolerance


max iteration


reuse preconditioner


Table 9. SNES configuration

relative tolerance


steps tolerance


max iteration


max iteration with reuse


reuse jacobian


reuse jacobian rebuild at first Newton step


Table 10. KSP in SNES configuration

relative tolerance


max iteration


reuse preconditioner

CSM1/CSM2 : false | CSM3 : true

reuse preconditioner rebuild at first Newton step


Table 11. Preconditioner configuration





4.5. Implementation

To realize the acquisition of the benchmark results, code files contained and using the Feel++ library will be used. Here is a quick look to the different location of them.

First at all, the main code can be found in


The configuration file for the CSM3 case, the only one we work on, is located at


The result files are then stored by default in


Like that, for the CSM3 case executed on 8 processors, with a \(P_1\) displacement approximation space and a geometric order of 1, the path is


At least, to retrieve results that interested us for the benchmark and to generate graphs, we use a Python script located at


4.6. Results

4.6.1. CSM1



\(x\) displacement \(\lbrack\times 10^{-3}\rbrack\)

\(y\) displacement \(\lbrack\times 10^{-3}\rbrack\)

Reference TurekHron




4620 (\(P_2\))




17540 (\(P_2\))




67464 (\(P_2\))




10112 (\(P_3\))




17900 (\(P_3\))




17726 (\(P_4\))



All the files used for this case can be found in this rep [ geo file, config file, json file ]

4.6.2. CSM2



\(x\) displacement \(\lbrack\times 10^{-3}\rbrack\)

\(y\) displacement \(\lbrack\times 10^{-3}\rbrack\)

Reference TurekHron




4620 (\(P_2\))




17548 (\(P_2\))




67464 (\(P_2\))




10112 (\(P_3\))




150500 (\(P_3\))




17726 (\(P_4\))



All the files used for this case can be found in this rep [geo file, config file, json file].

4.6.3. CSM3

The results of the CSM3 benchmark are detailed below.

Table 12. Results for CSM3

\(\Delta t\)



\(x\) displacement \(\lbrack\times 10^{-3}\rbrack\)

\(y\) displacement \(\lbrack\times 10^{-3}\rbrack\)


Reference TurekHron

−14.305 ± 14.305 [1.0995]

−63.607 ± 65.160 [1.0995]




-14.585 ± 14.590 [1.0953]

-63.981 ± 65.521 [1.0930]



-14.589 ± 14.594 [1.0953]

-63.998 ± 65.522 [1.0930]



-14.591 ± 14.596 [1.0953]

-64.009 ± 65.521 [1.0930]



-14.590 ± 14.595 [1.0953]

-64.003 ± 65.522 [1.0930]




-14.636 ± 14.640 [1.0969]

-63.937 ± 65.761 [1.0945]



-14.642 ± 14.646 [1.0969]

-63.949 ± 65.771 [1.0945]



-14.645 ± 14.649 [1.0961]

-63.955 ± 65.778 [1.0945]



-14.627 ± 14.629 [1.0947]

-63.916 ± 65.739 [1.0947]




-14.645 ± 14.645 [1.0966]

-64.083 ± 65.521 [1.0951]



-14.649 ± 14.650 [1.0966]

-64.092 ± 65.637 [1.0951]



-14.652 ± 14.653 [1.0966]

-64.099 ± 65.645 [1.0951]



-14.650 ± 14.651 [1.0966]

-64.095 ± 65.640 [1.0951]


\(\) \text{Figure 2: x and y displacements} \(\)

All the files used for this case can be found in this rep [ geo file, config file, json file ]

4.6.4. Conclusion

To obtain these data, we used several different mesh refinements and different polynomial approximations for the displacement on the time interval \(\lbrack 0,10 \rbrack\).

Our results are pretty similar to those from Turek and Hron, despite a small gap. This gap can be caused by the difference between our time interval and the one used for the reference acquisitions.

4.7. Bibliography

References for this benchmark
  • [TurekHron] S. Turek and J. Hron, Proposal for numerical benchmarking of fluid-structure interaction between an elastic object and laminar incompressible flow, Lecture Notes in Computational Science and Engineering, 2006.

  • [Chabannes] Vincent Chabannes, Vers la simulation numérique des écoulements sanguins, Équations aux dérivées partielles [math.AP], Université de Grenoble, 2013.

5. Solenoïd Benchmark

An analytical solution of the elasticity equation exists in an infinitely long solenoid. Such a geometry has the advantage to be axisymetrical, we can first expresse the solution with cylindrical coordinates.

5.1. Definition

5.1.1. Equilibrium equation in cylindrical coordinates

The analytical solution comes from the electromagnetism equations, indeed this case of a soleinoid crossed by an electric current can model the behaviour of a resistive magnet. The volumic forces \(\mathbf{f}\) of the equilibrium equation are consequently dependent on the current density \(\mathbf{J}\) and the induced magnetic field \(\mathbf{B}\), which gives :

\[\nabla\cdot\bar{\bar{\sigma}} + \mathbf{J}\times\mathbf{B} = \mathbf{0}\]

We will use the following notations:

\[\mathbf{u} = \begin{pmatrix} u \\ v \\ w \\ \end{pmatrix} \quad \mathbf{J} = \begin{pmatrix} J_{r} \\ J_{\theta} \\ J_{z} \\ \end{pmatrix}, \quad \mathbf{B} = \begin{pmatrix} B_{r} \\ B_{\theta} \\ B_{z} \\ \end{pmatrix}, \quad \text{and} \quad \bar{\bar{\sigma}} = \begin{pmatrix} \sigma_{r r} & \sigma_{r \theta} & \sigma_{r z} \\ \sigma_{\theta r} & \sigma_{\theta \theta} & \sigma_{\theta z} \\ \sigma_{z r} & \sigma_{z \theta} & \sigma_{z z} \\ \end{pmatrix}\]

We consider here that the current distribution in the soleinoid is uniform. That means that \(J_{\theta}\) is constant, and \(J_r = J_z = 0\). The volumic forces \(\mathbf{J} \times \mathbf{B}\) becomes :

\[\mathbf{J}\times\mathbf{B} = \begin{pmatrix} J_{\theta} B_z \\ 0 \\ - J_{\theta} B_r \end{pmatrix}\]

The revwriting of the equilibrium equation in cylindrical coordinates gives :

\[\left\{ \begin{array}{l} \displaystyle{ \frac{\partial \sigma_{rr}}{\partial r} + \frac{1}{r}\frac{\partial \sigma_{r\theta}}{\partial \theta} + \frac{\partial \sigma_{rz}}{\partial z} + \frac{1}{r}( \sigma_{rr} - \sigma_{\theta \theta} ) + J_{\theta} B_z = 0 }\\[0.4cm] \displaystyle{ \frac{\partial \sigma_{\theta r}}{\partial r} + \frac{1}{r}\frac{\partial \sigma_{\theta \theta}}{\partial \theta} + \frac{\partial \sigma_{\theta z}}{\partial z} + \frac{2}{r} \sigma_{\theta r} = 0 }\\[0.4cm] \displaystyle{ \frac{\partial \sigma_{zr}}{\partial r} + \frac{1}{r}\frac{\partial \sigma_{\theta z}}{\partial \theta} + \frac{\partial \sigma_{zz}}{\partial z} + \frac{1}{r} \sigma_{rz} - J_{\theta} B_r = 0 }\\ \end{array} \right.\]

The axisymetrical properties of this geometries means that the displacement is invariant with respect to \(\theta\).
Furthermore, the soleinoid we consider has the particularity to be infinitely long, so there is no displacement along \(z\) axis.
We can consequently get rid of all derivatives \(\frac{\partial \cdot}{\partial \theta}\) and \(\frac{\partial \cdot}{\partial z}\).
Finally, we shall note that components \(\sigma_{\theta r}\) and \(\sigma_{zr}\) of the stress tensor \(\bar{\bar{\sigma}}\) are expressed from Hooke’s law only from the components \(v\) and \(w\) of the displacement vector \(\mathbf{u}\), which nullify the two last equations.

Thus, the equilibrium equation is reduced to:

\[-\sigma_{\theta \theta} + \frac{\partial}{\partial r}(r \sigma_{rr}) = -r J_{\theta} B_z\]

We need to express this equation in terms of the displacement \(\mathbf{u}\), This can be done using Hooke’s law which links the stress tensor to the tensor of small deformation by:

\[\bar{\bar{\sigma}}=2\mu\bar{\bar{\varepsilon}} + \lambda Tr(\bar{\bar{\varepsilon}})Id\]

where \(\mu\) and \(\lambda\) are the Lamé coefficients, and the tensor of small deformation is given in cylindrical coordinates by:

\[\bar{\bar{\varepsilon}} = \frac{1}{2}(\nabla \mathbf{u} + \nabla \mathbf{u}^T) = \begin{pmatrix} \frac{\partial u}{\partial r} & \frac{1}{2}\left( \frac{1}{r}\frac{\partial u}{\partial \theta} - \frac{v}{r} + \frac{\partial v}{\partial r} \right) & \frac{1}{2} \left( \frac{\partial u}{\partial z} + \frac{\partial w}{\partial r} \right) \\ \frac{1}{2}\left( \frac{1}{r}\frac{\partial u}{\partial \theta} - \frac{v}{r} + \frac{\partial v}{\partial r} \right) & \frac{1}{r}\frac{\partial v}{\partial \theta} + \frac{u}{r} & \frac{1}{2} \left( \frac{1}{r}\frac{\partial w}{\partial \theta} + \frac{\partial v}{\partial z} \right) \\ \frac{1}{2} \left( \frac{\partial u}{\partial z} + \frac{\partial w}{\partial r} \right) & \frac{1}{2} \left( \frac{1}{r}\frac{\partial w}{\partial \theta} + \frac{\partial v}{\partial z} \right) & \frac{\partial w}{\partial z} \end{pmatrix}\]

Then, using the last two definitions and the properties of the solenoid (axisymmetric and infinitely long), we can rewrite the equilibrium equation as:

\[\frac{\partial}{\partial r}\left( r \frac{\partial u}{\partial r} \right) - \frac{u}{r} = - \frac{(1+\nu)(1-2\nu)}{E(1-\nu)}r J_{\theta} B_z\]

5.1.2. Analytical solution

We want to find an analytical solution of the form :

\[u_{cyl}(r) = C_1 r + \frac{C_2}{r} + u_p(r)\]

where \(C_1\) and \(C_2\) are constants, and \(u_p(r)\) a particular solution of the equilibrium equation in cylindrical coordinates.

From Ampére’s theorem and considering that the soleinoid is axisymetrical and infinitely long, we deduce that \(B_r = 0\), and \(B_z\) depends only on \(r\), such that :

\[B_z(r_1) - B_z(r) = \frac{1}{\mu} \int_{r_1}^r J_{\theta} dr\]

with \(r_1\) the internal radius of the soleinoid.

For a uniform distribution of current in the solenoid (\(j_{\theta}\) constant), we deduce that \(B_z\) can be expressed as :

\[B_z(r) = B_z(r_1) - \frac{\Delta B_z}{\alpha - 1} \left( \frac{r}{r_1} - 1 \right)\]

Replacing \(b_z\) with his expression in the equilibrium equation, this gives :

\[ \frac{\partial}{\partial r}\left( r \frac{\partial u}{\partial r} \right) - \frac{u}{r} = - \frac{(1+\nu)(1-2\nu)}{E(1-\nu)}r J_{\theta} \left( B_z(r_1) - \frac{\Delta B_z}{\alpha - 1} \left( \frac{r}{r_1} - 1 \right) \right)\]

where \(r_2\) is the external radius, \(\alpha = \frac{r_2}{r_1}\) and \(\Delta b_z = B_z(r_1) - B_z(r_2)\).

A particular solution \(u_p(r)\) for this equation is given by:

\[u_p(r) = \frac{(1+\nu)(1-2\nu)}{E(1-\nu)}r_1 J_{\theta} \left[ -\frac{r_1}{3}\left( B_z(r_1) + \frac{\Delta B_z}{\alpha - 1} \right) \left( \frac{r}{r_1}\right)^2 + \frac{r_1}{8}\frac{\Delta B_z}{\alpha - 1} \left( \frac{r}{r_1}\right)^3 \right]\]

The constants \(C_1\) and \(C_2\) are set by the boundary conditions, we consider here that there is no surface forces. That gives \(\bar{\bar{\sigma}}\cdot\mathbf{n} = 0\) on internal and external radius, that is \(\sigma_{rr}(r_1)=\sigma_{rr}(r_2)=0\).

Using the definition of \(u_{cyl}\) in

\[\sigma_{rr} = \frac{E}{(1+\nu)(1-2\nu)} \left[ (1-\nu)\frac{\partial u}{\partial r} + \nu \frac{u}{r} \right]\]

we can solve the system to find the constants:

\[\begin{align} C_1 = \frac{(1+\nu)(1-2\nu)}{E(1-\nu)}J_{\theta}r_1 &\left[ \left( B_z(r_1) + \frac{\Delta B_z}{\alpha - 1}\right) \left( \frac{2 - \nu}{3} \right) \left( 1 - \frac{r_2^2}{(r_2^2 - r_1^2)}\left( 1 - \frac{r_2}{r_1} \right) \right) \right. \\ &+ \left. \frac{\Delta B_z}{\alpha - 1}\left( \frac{2\nu - 3}{8} \right) \left( 1 - \frac{r_2^2}{(r_2^2 - r_1^2)} \left( 1 - \left( \frac{r_2}{r_1} \right)^2 \right) \right) \right] \end{align}\]
\[C_2 = \frac{-r_1^3 r_2^2 J_{\theta}}{(r_2^2 - r_1^2)}\frac{(1+\nu)}{E(1-\nu)} \left[ \left( B_z(r_1) + \frac{\Delta B_z}{\alpha - 1}\right) \left( \frac{2 - \nu}{3} \right)\left( 1 - \frac{r_2}{r_1} \right) +\frac{\Delta B_z}{\alpha - 1}\left( \frac{2\nu - 3}{8} \right)\left( 1 - \left( \frac{r_2}{r_1} \right)^2 \right) \right]\]

The final step is to translate this analytical solution \(u_{cyl}(r)\) into cartesian coordinates to obtain the analytical cartesian displacement \(\mathbf{u}_{cart}\):

\[\mathbf{u}_{cart}(x,y)= \begin{pmatrix} cos( \theta )u_{cyl}(\sqrt{x^2 + y^2})\\ sin( \theta )u_{cyl}(\sqrt{x^2 + y^2})\\ 0 \end{pmatrix} = \begin{pmatrix} \frac{x}{\sqrt{x^2 + y^2}}u_{cyl}(\sqrt{x^2 + y^2}) \\ \frac{y}{\sqrt{x^2 + y^2}}u_{cyl}(\sqrt{x^2 + y^2}) \\ 0 \end{pmatrix}\]

5.1.3. Geometry

We use a solenoïd of thickness one with \(r_1=1\) and \(r_2=2\) and with a length sufficiently important (\(l=10\,r_2\)) so that the influence of the top and of the bottom of the geometry, which are supposed not to exist, is close to zero.

5.1.4. Boundary conditions

The boundary conditions taken into account for the analytical solution have to be reproduced for the simulation. That means null pressure forces on internal and external radius, and displacement set to zero (Dirichlet) on the top and on the bottom to keep only the radial component.

We set:

  • \(\mathbf{u} = 0\) on \(\Gamma_{top}\cup\Gamma_{bottom}\)

  • \(\bar{\bar{\sigma}}\cdot \mathbf{n} = 0\) on \(\Gamma_{int}\cup\Gamma_{ext}\)

  • \(\mathbf{f} = \begin{pmatrix} \frac{x}{\sqrt{x^2+y^2}}5000(10+20(\sqrt{x^2+y^2}-1))\\ \frac{y}{\sqrt{x^2+y^2}}5000(10+20(\sqrt{x^2+y^2}-1))\\ 0 \end{pmatrix}\) in \(\Omega\)

5.2. Inputs

We use the following parameters:

Table 13. Inputs
Name Value






\(\begin{pmatrix} \frac{x}{\sqrt{x^2+y^2}}5000(10+20(\sqrt{x^2+y^2}-1))\\ \frac{y}{\sqrt{x^2+y^2}}5000(10+20(\sqrt{x^2+y^2}-1))\\ 0 \end{pmatrix}\)

5.3. Output

We compare the radial component of the displacement on the segment \(z=l/2\), \(y=0\) and \(x\in \lbrack 1,2\rbrack \).

5.4. Results

Here are the analytical and the computed \(x\) component of the displacement. This has been obtain with a characteristic size of \(0.1\) and \(646 233\) dofs.

We can see that the errors grows as we approach the external radius. But the max of the error is \(5e^{-4}\) and it converges as the characteristic size decreases.

6. NAFEMS LE1 Benchmarck

This benchmark is extract from the Abaqus Benchmarks Manual.

6.1. Definition

We focus on the LE1 benchmarks in particular.

6.1.1. Geometry

The geometry is given here by :

6.1.2. Boundary conditions

We set:

  • \(u_y = 0\) on DC

  • \(u_x = 0\) on AB

  • \(\bar{\bar{\varepsilon}}\cdot\mathbf{n}=1e^7\) on BC.

6.2. Inputs

We have the following parameters:

Table 14. Inputs
Name Value


\(210\, GPa\)




\(7800\, kg/m^2\)

6.3. Outputs

We want to compare the value of \(\sigma_{yy}\) at the point D. The reference value is \(92.7\, MPa\).

6.4. Results

The value of \(\sigma_{yy}\) at the point D is \(94.09\, MPa\) for \(32 000\) dofs, which is \(1.49%\) higher than the target.

One possibility to get a more accurate output is to use a mixed formulation, where the stress tensor would also be an unknown.

7. NAFEMS LE10 Benchmarck

This benchmark is extract from the Abaqus Benchmarks Manual.

7.1. Definition

We focus on the LE10 benchmarks in particular.

7.1.1. Geometry

The geometry is given here by :


where the thickness is \(0.6\).

In addition, we define the point E which is the midpoint of CC' and E' the midpoint of BB'.

7.1.2. Boundary conditions

We set:

  • \(u_y = 0\) on DCD’C'

  • \(u_x = 0\) on ABA’B'

  • \(u_x = u_y = 0\) on BCB’C'

  • \(\bar{\bar{\varepsilon}}\cdot\mathbf{n}=-1e^6\) on the top surface.

7.2. Inputs

We have the following parameters:

Table 15. Inputs
Name Value


\(210\, GPa\)




\(7800\, kg/m^2\)

7.3. Outputs

We want to compare the value of \(\sigma_{yy}\) at the point D. The reference value is \(5.38\, MPa\).

7.4. Results

The value of \(\sigma_{yy}\) at the point D is \(5.53\, MPa\) for \(300 000\) dofs, which is \(2.78%\) higher than the target.

One possibility to get a more accurate output is to use a mixed formulation, where the stress tensor would also be an unknown.