Feel++ Book Contributors https://github.com/feelpp/book.feelpp.org/graphs/contributors
Toolbox is available at FSI Toolbox. 
We will interest now to the different interactions a fluid and a structure can have together with specific conditions.
To describe and solve our fluidstructure interaction problem, we need to define a model, which regroup structure model and fluid model parts.
We have then in one hand the fluid equations, and in the other hand the structure equations.
The solution of this model are \((\mathcal{A}^t, \boldsymbol{u}_f, p_f, \boldsymbol{\eta}_s)\).
Generally, the solid mechanic equations are expressed in a Lagrangian frame, and the fluid part in Eulerian frame. To define and take in account the fluid domain displacement, we use a technique name ALE ( Arbitrary Lagrangian Eulerian ). This allow the flow to follow the fluidstructure interface movements and also permit us to have a different deformation velocity than the fluid one.
Let denote \(\Omega^{t_0}\) the calculation domain, and \(\Omega^t\) the deformed domain at time \(t\). As explain before, we want to conserve the Lagrangian and Eulerian characteristics of each part, and to do this, we introduce \(\mathcal{A}^t\) the ALE map.
This map give us the position of \(x\), a point in the deformed domain at time \(t\) from the position of \(x^*\) in the initial configuration \(\Omega^*\).
\(\mathcal{A}^t\) is a homeomorphism, i.e. a continuous and bijective application we can define as
We denote also \(\forall \mathbf{x}^* \in \Omega^*\), the application :
This ALE map can then be retrieve into the fluidstructure model.
Computer codes, used for the acquisition of results, are from Vincent [Chabannes].
As in the 2D case, the blood flow modelisation, by observing a pressure wave progression into a vessel, is the subjet of this benchmark. But this time, instead of a twodimensional model, we use a threedimensional model, with a cylinder
This represents the domains into the initial condition, with \(\Omega_f\) and \(\Omega_s\) respectively the fluid and the solid domain. The cylinder radius equals to \(r+\epsilon\), where \(r\) is the radius of the fluid domain and \(\epsilon\) the part of the solid domain.
\(\Gamma^*_{fsi}\) is the interface between the fluid and solid domains, whereas \(\Gamma^{e,*}_s\) is the interface between the solid domain and the exterior. \(\Gamma_f^{i,*}\) and \(\Gamma_f^{o,*}\) are respectively the inflow and the outflow of the fluid domain. Likewise, \(\Gamma_s^{i,*}\) and \(\Gamma_s^{o,*}\) are the extremities of the solid domain.
During this benchmark, we will study two different cases, named BC1 and BC2, that differ from boundary conditions. BC2 are conditions imposed to be more physiological than the ones from BC1. So we waiting for more realistics based results from BC2.
on \(\Gamma_f^{i,*}\) the pressure wave pulse \[ \boldsymbol{\sigma}_{f} \boldsymbol_f = \left\{ \begin{aligned} & \left(\frac{1.3332 \cdot 10^4}{2} \left( 1  \cos \left( \frac{ \pi t} {1.5 \cdot 10^{3}} \right) \right), 0 \right)^T \quad & \text{ if } t < 0.003 \\ & \boldsymbol{0} \quad & \text{ else } \end{aligned} \right. \]
We add the coupling conditions on \(\Gamma^*_{fsi}\)
Then we have two different cases :
Case BC1
on \(\Gamma_f^{o,*}\) : \(\boldsymbol{\sigma}_{f} \boldsymbol{n}_f =0\)
on \(\Gamma_s^{i,*} \cup \Gamma_s^{o,*}\) a null displacement : \(\boldsymbol{\eta}_s=0\)
on \(\Gamma^{e,*}_{s}\) : \(\boldsymbol{F}_s\boldsymbol{\Sigma}_s\boldsymbol{n}_s^*=0\)
on \(\Gamma_f^{i,*}U \Gamma_f^{o,*}\) : \(\mathcal{A}^t_f=\boldsymbol{\mathrm{x}}^*\)
Case BC2
on \(\Gamma_f^{o,*}\) : \(\boldsymbol{\sigma}_{f} \boldsymbol{n}_f = P_0\boldsymbol{n}_f\)
on \(\Gamma_s^{i,*}\) a null displacement \(\boldsymbol{\eta}_s=0\)
on \(\Gamma^{e,*}_{s}\) : \(\boldsymbol{F}_s\boldsymbol{\Sigma}_s\boldsymbol{n}_s^* + \alpha \boldsymbol{\eta}_s=0\)
on \(\Gamma^{o,*}_{s}\) : \(\boldsymbol{F}_s\boldsymbol{\Sigma}_s\boldsymbol{n}_s^* =0\)
on \(\Gamma_f^{i,*}\) : \(\mathcal{A}^t_f=\boldsymbol{\mathrm{x}}^*\)
on \(\Gamma_f^{o,*}\) : \(\nabla \mathcal{A}^t_f \boldsymbol{n}_f^*=\boldsymbol{n}_f^*\)
The chosen time step is \(\Delta t=0.0001\)
Name  Description  Nominal Value  Units 

\(E_s\) 
Young’s modulus 
\(3 \times 10^6 \) 
\(dynes.cm^{2}\) 
\(\nu_s\) 
Poisson’s ratio 
\(0.3\) 
dimensionless 
\(r\) 
fluid tube radius 
0.5 
\(cm\) 
\(\epsilon\) 
solid tube radius 
0.1 
\(cm\) 
\(L\) 
tube length 
5 
\(cm\) 
\(A\) 
A coordinates 
(0,0,0) 
\(cm\) 
\(B\) 
B coordinates 
(5,0,0) 
\(cm\) 
\(\mu_f\) 
viscosity 
\(0.03\) 
\(poise\) 
\(\rho_f\) 
density 
\(1\) 
\(g.cm^{3}\) 
\(R_p\) 
proximal resistance 
\(400\) 

\(R_d\) 
distal resistance 
\(6.2 \times 10^3\) 

\(C_d\) 
capacitance 
\(2.72 \times 10^{4}\) 
After solving the fluid struture model, we obtain \((\mathcal{A}^t, \boldsymbol{u}_f, p_f, \boldsymbol{\eta}_s)\)
with \(\mathcal{A}^t\) the ALE map, \(\boldsymbol{u}_f\) the fluid velocity, \(p_f\) the fluid pressure and \(\boldsymbol\eta_s\) the structure displacement.
Here are the different configurations we worked on. The parameter Incomp define if we use the incompressible constraint or not.
Config 
Fluid 
Structure 

\(N_{elt}\) 
\(N_{geo}\) 
\(N_{dof}\) 
\(N_{elt}\) 
\(N_{geo}\) 
\(N_{dof}\) 
Incomp 

\((1)\) 
\(13625\) 
\(1~(P2P1)\) 
\(69836\) 
\(12961\) 
\(1\) 
\(12876~(P1)\) 
No 

\((2)\) 
\(13625\) 
\(1~(P2P1)\) 
\(69836\) 
\(12961\) 
\(1\) 
\(81536~(P1)\) 
Yes 

\((3)\) 
\(1609\) 
\(2~(P3P2)\) 
\(30744\) 
\(3361\) 
\(2\) 
\(19878~(P2)\) 
No 
For the structure time discretization, we will use Newmarkbeta method, with parameters \(\gamma=0.5\) and \(\beta=0.25\).
And for the fluid time discretization, BDF, at order \(2\), is the method we choose.
These two methods can be found in [Chabannes] papers.
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.
Let’s start with the main code, that can be retrieve in
feelpp/applications/models/fsi
The configuration file associated to this test is named wavepressure3d.cfg and is located at
feelpp/applications/models/fsi/wavepressure3d
The result files are then stored by default in
applications/models/fsi/wavepressure3d/P2P1G1P1G1/np_1
All the files used for this case can be found in this rep [geo file, config file, fluid json file, solid json file].