Composition of bi-coupling schemes
To combine multiple coupling schemes, simply add 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, simply 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 participants needs to have
control. preCICE computes the convergence measures and the acceleration on this participant. Be careful: this participant needs to have
m2n connections to all other participants and the
exchange tags needs to be properly configured.
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.