Fluid-structure interaction in a tube (non-symmetric external constraints)

This is an extension of the symmetric case. Now, we include a different constraint on the top part of the tube. Additionally, we use a time-dependent velocity profile for the inlet.

1. Introduction

Blood flow and blood vessel walls mechanically deform each other. We study this fluid-structure interaction in a simplified geometry : a tube. The tube is a simplified model for a part of either an artery or a vein. The inside of the tube represents blood, and its wall has a certain thickness to represent the vessel wall.

More specifically, we use this simple test to study the variability of the external constraints. This corresponds to the reaction of the surrounding tissues to the deformation of the blood vessel wall. These tissues may be softer or stiffer in certain parts of the body.

2. Geometry

The tube geometry is adapted from the Feel++ wavepressure3D FSI example. // TODO link It consists in a cylinder (the fluid domain) with an external layer (the solid domain). The surface between the two domains is the fluid-structure interface.

20% 20%

2.1. Dimensions

We changed the scale and the length/diam ratio as follows :

internal radius

\(0.01mm\)

external radius

\(0.012mm\)

length

\(0.3mm\)

This makes the tube reasonably close to the dorsal aorta (radius \(~0.01mm\)).

20% 20%

2.2. Physical measures and units

We use the following physical input expressed in \(mm, g, s\)

/ / I will include this a csv later

For the fluid:

Notation

Quantity

Value

Units (mm, g, s)

\(\boldsymbol{u}_f\)

fluid velocity

\( 1 \)

\( mm \cdot s^{-1} \)

\(\rho_f\)

fluid density

\( 1 \times 10^{-3} \)

\( g \cdot mm^{-3}\)

\(\mu_f\)

dynamic viscosity

\( 2.2 \times 10^{-3} \)

\( g \cdot mm^{-1} \cdot s^{-1}\)

And for the solid:

Notation

Quantity

Value

Units (mm, g, s)

\(E_s\)

Young modulus

\( 3 \times 10^3 \)

\( g.mm^{-1}.s^{-2} \)

\(\nu_s\)

Poisson’s ratio

\( 0.3 \)

dimensionless

\(\rho_s\)

solid density

\( 1.2 \times 10^{-3} \)

\( g.mm^{-3} \)

The Poisson’s ratio used here is lower than it should be. We should try with 0.45 later.

3. Dirichlet-Neumann FSI coupling

3.1. Data files

The case data files are available in Github

3.2. Boundary conditions

We use the following boundary conditions for the fluid:

  • Dirichlet condition at the inlet : a time-dependent function matching the cardiac cycle of the DMSO profile

  • Neumann condition at the outlet : free outlet

And for the solid:

  • Dirichlet condition at the "inlet ring" : the displacement is 0

  • Dirichlet condition at the "outlet ring" : the displacement is 0

  • Robin condition at the exterior surface to model the surrounding tissue constraint :

    • for z>0, the external tissues are stiff, the coefficient is high

    • for z<0, the external tissues are soft, the coefficient is low

We used the following coefficients :

Coefficient

Value

Stiff

\( 10^6 \)

Soft

\( 10^2 \)

We obtain a maximum displacement of \( ~8 \times 10^{-4} mm \) which is close to \( 5\% \) of the tube diameter, which is our goal. Further tuning is required though.

3.3. Solvers settings

3.3.1. Dirichlet-Neumann FSI coupling scheme

We start with a Dirichlet-Neumann semi-implicit scheme, using the following settings:

Name

Value

tolerance

\( 1 \times 10^{-5} \) (default)

maximum fixed-point iterations

\( 1000 \) (default)

Results

This simulation was tested successfully with the following time steps: \( 10^{-5}, 10^{-4}, 10^{-3}, 5 \times 10^{-3} \). The total simulated time was \( 0.3s \).

We get the following results:

Solver performance

Fluid preconditioner

We compare the convergence speed of two preconditioning strategies:

  • the first one is described in the case CFG file,

  • the second one was used in the CAD ZF FSI simulations and is described in this CFG file.

We limit the simulation to 10 time steps.

The comparison scripts used can be found here.

  1. Performance table (8 cores on atlas node)

Name

GASM (first)

GAMG (second)

Number of KSP iterations

\( ~40 \)

\( ~20 \)

Assembling time (fluid)

\( ~1.5 s \)

\( ~1.4 s \)

Solving time (fluid)

\( ~12 s \)

\( ~0.75 s \)

One FSI iteration time

\( ~160 s \)

\( ~50 s \)

Full simulation time

\( ~32 min \)

\( ~11 min \)

Scaling

With GASM, the solver failed to converge with 24 cores. With GAMG, we successfully scaled to 24 cores.

  1. GAMG scaling

Number of cores

8

24

Number of KSP iterations

\( ~20 \)

\( ~22 \)

Assembling time (fluid)

\( ~1.4 s \)

\( ~0.4 s \)

Solving time (fluid)

\( ~0.75 s \)

\( ~0.40 s \)

One FSI iteration time

\( ~50 s \)

\( ~20 s \)

Full simulation time

\( ~11 min \)

\( ~4 min \)

4. Robin-Robin FSI coupling scheme

4.1. Data files

The data files are available here:

4.2. Settings

To try to accelerate our simulation, we keep our GAMG preconditioning strategy and try to switch to a Robin-Robin semi-implicit coupling scheme.

We use the following settings:

Name

Value

\( \gamma \)

\( 2500 \) (default)

\( \gamma_0 \)

\( 1 \) (default)

\( \alpha \)

\( 1 \) (default)

maximum fixed-point iterations

\( 3 \)

This does not work correctly because the FSI convergence is too slow.