Coupling scheme for steady-state FSI


I am trying to find the steady-state solution of a flexible kite using FEM with dynamic relaxation for the structure and a panel method for the fluid. Both codes are static, which means no real time stepping is involved.

So far I get good results using the constant relaxation which converges after approximately 15 coupling iterations depending on the relaxation parameter. Nevertheless, I would like to accelerate the convergence a bit but so far have not been successful getting a converged solution running different acceleration methods.

I have tried the Aitken acceleration with a range of initial relaxation values, but the coupling always diverges after a few coupling iterations. In the preCICE manual it says that in case the Aitken does not converge a QN method could be better. I also tried IQN-ILS without success and I am a bit clueless whether I have to use time stepping or if QN methods do not apply to steady-state FSI in the first place.

Any advice from you side?

Best regards,


P.S. I am running an older version of preCICE at the moment (Version 1.4.1)

preCICE.xml (4.7 KB)

Hi @Powl!

This sounds like a checkpointing problem to me.

Citing from our new documentation:

You need to implement saveOldState and reloadOldState in such a way that a single coupling iteration becomes a proper function. Meaning, for two times the same input (the values you read from preCICE), the solver also needs to return two times the same output (the values you write to preCICE). Only then can the quasi-Newton acceleration methods work properly. This means, you need to include as much information in the checkpoint as necessary to really be able to go back in time. Storing complete volume data of all variables is the brute-force option. Depending on your solver, there might also be more elegant solutions. Be careful: this also needs to work if you jump back in time more than one timestep.

For saveOldState and reloadOldState, please refer to the code of the adapter example.

Which solvers do you couple?

Dear @uekerman ,

thank you for your reply!

You were right about checkpointing. I hadn’t implemented that part into my adapters. Now the implicit coupling runs without crashing. The Aitken acceleration still takes more iterations than explicit coupling, but I just started to tune the parameters in the xml file.

I am coupling my own FEM solver and the panel code APAME to obtain a static solution of a flying deformed kite for optimization purposes. There are no real dynamics involved, both solvers output a static result and should be in equilibrium after the FSI converges. I am still wondering about time steps and sub-timesteps. In a dynamic coupling scenario it makes sense to use subiterations until both solvers arrive at the same timestep, but how should I approach the coupling in static manner where effectively no real time is involved? Does it even make sense to use IQN in that case if no previous time steps are present?

Sounds interesting!
Would be great if you share the coupling to APAME with the community once it works. Did you develop the FEM from scratch or do you use some FEM library (FEniCS, deal.II, etc.)?

If I understand correctly both your models have no time dependence, right? In this case you could just do 1 timestep (from preCICE perspective) and use an implicit coupling. So if the one timestep converges you are done. You are right that then IQN cannot benefit so much from the past, but it could still be faster than Aitken. Depends on how strong the coupling is and the accuracy you need, I guess. I would be interested in seeing this comparison.