CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   Fluid Structure Interaction using icoFsiFoam Problems (

lr103476 April 13, 2007 02:49

Dear all, Besides the 3D fl
Dear all,

Besides the 3D flapping wing stuff I am also working on some fluid structure interaction problems.

In order to test the icoFsiFoam solver which came with the latest development sources (from prof. Jasak, 28 March 2007), I created a test case of a flexible plate attached to a rigid cylinder. At low Reynolds numbers the plate will start oscillating according to the von karman vortex street. This is particular interesting when the density of the structure approaches the density value of the fluid and when the structure equals very low stiffness. Only then significant deformation can be observed, which is what we want.

Unfortunately, at similar densities (structure / fluid) and low structural stiffness this problem is very strongly coupled. Together with the partitioned approach which is used by icoFsiFoam, this lead to serious divergence problems when:

1) The density ratio is of the order O(1),
2) The structural stiffness is low,
3) movingWallVelocity BC is chosen on the flexible plate. The divergence of the solution due to this BC is thought to be the result of the alternating correction of the ALE flux which is accounted for in movingWallVelocity BC.

Detailed info on this problem can be found on my website:

I really hope that someone may provide some usefull hints and / or solutions. Eventually, when anyone would like to try this testcase I could post it here or on my site.

Thanks and regards,


lr103476 April 13, 2007 10:46

Are there some guidelines when
Are there some guidelines when icoFsiFoam runs stable?

At various mechanical property settings the movingWallVelocity BC. blow the solution up very fast. Is someone running icoFsiFoam with this necessary boundary condition?

Could anyone please comment on this.

Regards, Frank

ed_teller May 14, 2007 07:33

Hi Frank... Where did you
Hi Frank...

Where did you download IcoFsiFoam from...?
I am trying to build a multiphysics, moving mesh solver, and think that studying and hacking IcoFsiFoam might be a good start...


lr103476 May 14, 2007 07:37

Dear Alex, icoFsiFoam is no
Dear Alex,

icoFsiFoam is not available in the official build of openFoam. You have to obtain a development version, maintained by prof. Jasak, which you can download from:

Rergards, Frank

fw407 June 21, 2008 10:44

Hi everyone, I have been us
Hi everyone,

I have been using icoFsiFoam for several weeks, but there are still several basic points I am not 100% sure:

(1) only the pressure of the fluid is transfered to the solid but the shear stress is not.

(2) as the solid domain is updated at every step, at each time step, the pressure transfered from fluid is loaded on the boundary of the current configuration of the solid doamin, not on the initial configuration.

If I am wrong, please correct me!

Thanks in advance!


gschaider June 25, 2008 08:05

Hi Mathieu! Yes. You're rig
Hi Mathieu!

Yes. You're right. The icoStructFoam requires that the meshes on the boundary zone of fluid and solid are exactly the same. Am not very proud of that, but it was the best I could do at the time


fw407 June 26, 2008 15:02

Hi Mathieu, Thanks for your
Hi Mathieu,

Thanks for your help! I really appreciate it.

I have tried your code on my case, but I get totally different results, I think the problems may come from:

vectorField solidPatchTraction =
(sigmaFluid.boundaryField()[fluidPatchID]) & n

and I replace:
(sigmaFluid.boundaryField()[fluidPatchID]) & n
((-1)*sigmaFluid.boundaryField()[fluidPatchID]) & n

then I get results which is close to ones without considering shear stress.

So I think at the interface, the traction vector of the solid should be in the opposite direction to the traction vetor of the fluid.

If I am wrong, please correct me!

Kind regards


mathieu June 27, 2008 10:51

Hi Feng, You are right for
Hi Feng,

You are right for the minus sign. However, it depends on the sign implemented in your traction boundary condition. Also, I replaced the code in the setPressure.H file with the following (which is expressed in terms of the surface normal vector of the structural part) and I get better results :

vectorField n = (stressMesh.Sf().boundaryField()[solidPatchID])/(stressMesh.magSf().boundaryFiel d()[solidPatchID]);

symmTensorField solidPatchTraction =

solidPatchTraction *= rhoFluid.value();

tForce.traction() = solidPatchTraction & n;

Keep me posted if you find some bugs or mismatches. I appreciate your comments.


fw407 June 27, 2008 14:06

Hi Mathieu, Thanks for your
Hi Mathieu,

Thanks for your kind help!

Your codes are working fine with me. I ave hmade a test case which is to calculate the shear stress on a flat plate due to the laminar flow on it, the result looks reasonable, and I will compare it with the analytical solution for validation.

On the other hand, I think I will find a way of how to merge the code of the structural solver using updated configuration in the paper you posted above with icoFsiFoam, so that icoFsiFoam can deal with large deformation for the structure.

Kind regards


christoph_heinrich August 26, 2008 09:13

Hi all, I'm trying to imple
Hi all,

I'm trying to implement a strong coupling scheme within the icoFsiFoam-solver. To do that I'd like to use a Quasi-Newton approach, which means, that I'm approximating the product of the jacobian and a vector by a finite difference. And that's the only thing I need for an iterative solver like GMRES. Now my problem:
as I'm calculating only on the interface variables, I don't know how to move the solid mesh. For the fluid it's no problem, because here the only thing that I need to move the mesh are the interface variables. But to move the solid mesh I need its internal field.
Would it be a good idea to do one more solid solve with the interface positions as a fixed value-bc in order to get the solid internal field?
If yes, how can I do that, that means, how can I change my boundary conditions from "tractionDisplacement" to "fixedValue" from within the solver?

Can anyone help me?

Kind regards,

mathieu August 26, 2008 10:42

Hi Christoph, I am not fami
Hi Christoph,

I am not familiar with the method you are using. Is it a monolithic coupling procedure or an iterative partitioned coupling procedure. Could you give more details so that I can see if I can help you. Regarding your idea to change the interface boundary condition from "tractionDisplacement" to "fixedValue", I don't think it's a good idea since it would not reproduce the physics. Can't you solve the solid field using the "tractionDisplacement" BC ? Regards,


christoph_heinrich August 26, 2008 11:12

Hi Mathieu, thank you for y
Hi Mathieu,

thank you for your answer. I'm using an iterative partitioned coupling procedure as it is described in section 4.3 of
Here I have 3 iteration levels. One time level, one "strong-coupling"-level and one GMRES-level. In every level I'm only calculating on interface values. And in every "strong-coupling"- and GMRES-level I need to compute one full FSI-cycle. Before I can do that I need to move the fluid and the solid meshin the desired position. If I want to move the solid mesh like in icoFsiFoam I need to know the internal field of the solid. But as I'm computing on interface values I don't know the internal field and this is my problem. Is this explanation helpful?


mathieu August 26, 2008 13:17

Hi Christoph, The structura
Hi Christoph,

The structural solver in icoFsiFoam is a linear elasticity solver (small deformation only). The mesh motion of the "solid" mesh is a trick to take large deformation into account.

The structural problem in the paper you sent is set in the initial reference frame. In this case, you don't need to move the "solid" mesh. So I guess you should modify the structural solver of icoFsiFoam to make it work in the initial reference frame with the appropriate constitutive law. I think that would make things easier for you.


christoph_heinrich August 27, 2008 09:54

Thanks a lot Mathieu, but now
Thanks a lot Mathieu,
but now I have some new questions, I hope you can help me:
1. Could the structural solver in icoFsiFoam be seen as some kind of Updated-Lagrange-Solver?
2. What would be the difference in the results if I just commented out the solid mesh motion in icoFsiFoam?
3. The structural solver contained in icoFsiFoam is using the 2nd Piola-Kirchhoff stress tensor (right?) and therefore isn't it already the right consitutive law? Or could you give me any hint how to change the structural solver?

Kind regards,

mathieu August 27, 2008 14:34

Hi Christoph, 1. I would sa
Hi Christoph,

1. I would say yes but take a look to this paper for the right formulation of an Updated-Lagrange-Solver: ics_FAMENA_18-06-2007.pdf

2. The solid geometry would be distorted for large deformation (but it is a good idea to try it...).

3. See the paper for the right constitutive law. I modify the structural solver in icoFsiFoam so that it can take large deformation into account. The solver "works" in the initial (not updated though) reference frame. Contact me by email and I will send you some stuff... looks like I can't write code in my messages anymore...



christoph_heinrich September 4, 2008 03:08

Hi Mathieu and all the others,
Hi Mathieu and all the others,
some new problems...
I'm trying to implement a strong coupling scheme based on a fixed point iteration and Aitken relaxation. I was surprised by the results and I located the error in the following problem:


#include "solveFluid.H"
#include "setPressure.H"
#include "solveSolid.H"

#include "solveFluid.H"
#include "setPressure.H"
#include "solveSolid.H"
I expected to get the same pressure in both FSI-cycles, because the geometry and the mesh remains the same. But actually I get a different (higher) pressure in the second case.
Why? And how can I fix it?

I would be very happy if someone could help me!


mathieu September 4, 2008 10:08

Hi Christoph, Suggestion :
Hi Christoph,

Suggestion : try with a large value of nCorrector in the PISO dictionary so that you can be sure the solution is converged at each call of the fluid solver.

In fact (correct me if I'm wrong), the fluid solver in icoFsiFoam uses a SIMPLE loop but the PISO dictionary is used to provide the number of iteration via the nCorrector parameter. Good luck,


christoph_heinrich September 5, 2008 11:16

Thank you Mathieu, but that do
Thank you Mathieu, but that doesn't help

When I use a coarse mesh, this effect is very small. But with a finer mesh I get a significant higher pressure at the interface and as a consequence wrong displacements.

But I need to solve fluid and solid several times per timestep when I want to use a strong coupling scheme like fixed point iteration with Aitken relaxation. This is an essential part of my Master's thesis, which I have to hand in soon. So I'm running out of time

Could anyone help me or could you, Prof. Jasak, please give me a hint of what is going wrong?
I would be so happy...



mathieu September 5, 2008 16:44

Hi Christoph, Is your setPr
Hi Christoph,

Is your setPressure.H file independent of the solid solution (the displacement) ? In the case of large deformation, it should. If it is your case, then it might be what causes the difference in the pressure force. But if you were talking about the pressure field itself, then I don't know what to say. I ran a similar case and both FSI cycles gave me the same results after I modified my setPressure.H file to make it independent of Usolid (no iteration occurred in the second cycle since the solution is already converged). Keep me posted and again, good luck !


pkleb September 30, 2008 08:38

Hi, I see that you are work

I see that you are working quite a lot on this FSI features of OpenFOAM . We are interesting to simulate the fluid structure interaction between a flow and a flexible panel . Can these cases below be simulated with openFOAM ?:
- FSI with a thin flexible panel (with and without large displacement) ?
- FSI with a thin flexible porous panel (with and without large displacement) ?.

Do these cases require a huge amount of implementation and development?. For example these cases can be more or less be solved with FLUENT/MpCCI/Abaqus , is it possible with OpenFOAM ?

Thank for your help

All times are GMT -4. The time now is 16:12.