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 MySolver2
and MySolver3
, but not the latter two with each other. To also get an interaction between MySolver2
and 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.
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.
m2n
connections to all other participants and the exchange
tags 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.