FSI2 FSI3 Turek Hron benchmark comparison

Hi everyone,
after the interesting conversation during the latest preCICE community hour, I’d like to share my configuration and to see if there is something that could be improved.
As a short recap, I am working on an MBDyn adapter and I’m using it to couple beam elements in a FSI coupling. Up to now I have managed to replicate the Turek Hron benchmark results for the FSI2 benchmark (some results are in this post: preCICE adapter for MBDyn solver for beam elements).

  • FSI2 converges quite slowly (mainly at the beginning many iterations are needed)
  • At the beginning I need to apply a ramp to the loads applied to the structure. It looks to me that the slope of the ramp is crucial for convergence (if too steep the simulation diverges), much more than the type of ramp (linear or 0.5\cdot(1-\cos))
  • I am using serial-implicit coupling with solid as first participant. this configuration works much better than other kinds of coupling
  • IQN-ILS seems the best acceleration
  • filter type QR1 outperforms QR2, as the residuals keep reducing over iterations
  • I am using the same Fluid configuration as the OpenFOAM-CalculiX tutorial

I’d like to share my configuration file precice-config.xml (3.8 KB) . My goal would be to improve convergence time and to make the FSI3 benchmark converge.


Hi Claudio,
thanks for sharing, I will try the config later with deal.II. Here some comments:

Yes, the ramp is also given in the original paper. One crucial difference of my setup is, that I use the original inlet profile with groovyBC and a parabolic profile. For some reason, the OpenFOAM ramp introduces instabilities, seems to be a bug; Benjamins guess was that it is related to the kink in the profile.

Agree! Nevertheless, it is good practice to tune a case with parallel-implicit coupling to see, whether the selected parameters are a good choice. Afterwards running it in serial mode still works better.

I don’t have observed differences in the type, but setting the limit in both cases has a crucial impact.

I pushed my whole case in my fork including the result files, so that you can see, if this is what you are looking for.

Note that it might not yet be perfect, some restrictions might even be too strict. Hope this helps.


Hi David,
first of all thank you for sharing your configuration and your experience. I have made some tests and I’d like to comment and ask you some questions.

I agree that the original parabolic profile performs much better than the constant profile (which I was using) while the time ramp in the velocity profile is much worse than using a ramp in applying the fluid forces on the structure. Btw: which version of OpenFOAM are you using? with your fluid configuration and OF19.12 I have problems in looking at the results in paraFoam.

I still haven’t found a satisfying set of parameters in parallel coupling. Convergence is much slower or the timestep doesn’t even converge. It might be that the parameters need to be tuned better.

That’s interesting. I might have to try to play more with the limit.

That said, I observe that:

  • Using a finer mesh (as in your example) and the parabolic velocity profile make the system more stable, even if at the moment I can’t reach the end of the ramp of the load. I can reach around 50% of the load (once I reached 83%. In the past I never reached more than 10-11%)
  • If I use a finer mesh only for the Fluid (i.e. a ratio 1:2 in the number of cells) the execution seems much faster and the convergence is mostly good
  • I noticed that you use a mesh thickness of 0.2, which is much bigger than what I use (0.01). I would like to ask why. In my case, even if nothing should change (the structural mesh must be thicker too), using a thicker mesh makes the coupling diverge much more quickly. The only obvious difference is that you exchange stresses and not Forces.


So you ramp the coupling? How do you do this? Can you describe this more in detail?
I’m computing with openfoam 1912, but use openfoam 7 for local visualization. Since I haven’t uploaded the Fluid results, I’m not sure which results you are referring to. Nevertheless the visualization should be compatible, at least with some minor changes.

So, it doesn’t work with my parametrization?

Have you tried the time ramping? You are using your own structural solver, right? Have you computed the CSM benchmarks?

Yes, I don’t even made an attempt to keep the number of coupling unknowns equally for both participants, since the solid resolution should be sufficient. Nevertheless, the ratio should not have a crucial impact i.e. your simulation should not become unstable, when you start refining your structural side.

Yes, so this depends on your solid solver. In case you use Stress data (as I do and as oftentimes applied in FE) the overall mesh thickness should not have any impact. The main contribution here is the Fluid pressure, which is independent of the cell thickness. In my case, I just use a more or less arbitrary ‘small enough’ thickness for an appropriate visualization.
The forces are on the other hand are integral values i.e. the stress integrated (in FV just multiplied) over the faces. Therefore, the thickness of the coupling interface has a crucial impact and must be consistent with your solid solver. In case you have a real 2D mesh (not as in OF a volumetric cell layer) you need to choose a unit thickness of 1 in OF as it is done in some tutorial cases. If you have a quasi 2D mesh in your solid solver, you need to ensure consistency with OF.


I simply ramp the application of forces to the structure: i.e. I apply a coefficient to the forces that come from the interface. I usually find it useful or necessary to use small forces at the beginning of the simulation. For example I start the simulation applying only 10% of the force for the first 0.5s then gradually go to 100% (linearly or with a 1-\cos law or in steps) for 0.5 to 1s.

The approach above works much better than time ramping for me. I saw that you use a 1-\cos time ramping in your setup.

Well it is not exactly my own solver: it is developed and maintained at Politecnico of Milan: This solver is mainly used for multibody dynamics. There are many benchmarks for this solver, but not in FSI simulations. I have benchmarked it with FSI2 (as described here: preCICE adapter for MBDyn solver for beam elements - #6 by Claudio) and I think that in that case the results are good.

Your parametrization is interesting and makes the simulation a little better, meaning that I can reach higher values of the coefficient in the ramp. Nevertheless I cannot manage to run a complete simulation for FSI3.
FSI2 is good, it runs smoothly: if I use your setup (preCICE parameters and finer mesh) it runs better, but the results are close to the ones I get with the setup of the tutorial.
FSI3 crashes no matter what. Simulation parameters influence only the time when the simulation crashes. Note that the structural configuration is the same I use for FSI2 (apart from density and Young modulus, of course).

  • A finer mesh is better, I also tried an even finer mesh
  • I used different a different number of structural elements
  • for me the thickness of the domain is important, meaning that the narrower the better
  • I even tried with an unrealistic structural damping. In this latter case I manage to apply 100% of the force (which is otherwise impossible) but nevertheless after 0.4s it crashes anyway.

Crash means that at some point the convergence start to become slower and slower up to a point where the simulation blows up. At each coupling iteration the forces become higher and the fluid stops for some floating point exception.
It seems to me that the structural solver is not enough dissipative for this simulation, but I am not sure.