Composition of bi-coupling schemes
preCICE allows us to combine multiple coupling schemes by only specifying them one after the other in the configuration:
<coupling-scheme:parallel-explicit> <participants first="MySolver1" second="MySolver2"/> ... </coupling-scheme:parallel-explicit> <coupling-scheme:parallel-explicit> <participants first="MySolver1" second="MySolver3"/> ... </coupling-scheme:parallel-explicit>
For this example, all three participants are executed in parallel to one another, whereas
MySolver1 exchanges data with
MySolver3, but not the latter two with each other. To also get an interaction between
MySolver3, add a third coupling scheme.
You can probably imagine that you can do very strange combinations, where most of them have only limited practical relevance. To find out more, you can read Section 4.1.5 in Bernhard’s thesis. Numerically, it only makes sense to either only have explicit schemes or to combine one implicit scheme with several explicit ones. To find out more, you can read this paper. If you want to resolve more than one strong interaction, you need a fully-implicit multi-coupling.
In a fully-implicit multi-coupling, an arbitrary number of solvers are executed in parallel to each other in an implicit fashion.
<coupling-scheme:multi> <participant name="MySolver1" control="yes"/> <participant name="MySolver2" /> <participant name="MySolver3" /> ... </coupling-scheme:multi>
Exactly one participant needs to take
control of the coupling. preCICE computes the convergence measures and the acceleration on this participant.
m2nconnections to all other participants and the
exchangetags needs to be properly configured. Version 2.3.0 allows non-centric participants as long as they run in serial.
All other tags are similar to a normal implicit coupling.
To find out more about multi coupling, you can also read Section 3.8 in Benjamin’s thesis or have a look at the tutorial of multiple perpendicular flaps in a channel.