Feature/multithreaded multidomain with freeflow
What this MR does / why does DuMux need it:
Add multithreaded assembly support for multidomain (via traits of the coupling manager), and uses this new support to enable multithreaded for the free flow coupling manager which assembles on one grid. Therefore the coloring is especially easy since we just use the coloring of fcstaggered, which includes the tpfa stencil as well. For the cell-centered block we might be able to use less colors but this is not implemented here.
This requires one change in the coupling managers: This switches from mutable class member coupling contexts to thread local singletons. This turns the context into global variables that are unique for every thread. Both mutable and thread local are bad implementations, and we really want to pass around the context instead. However, like this, we at least enable multithreaded assembly.
Before you request a review from someone, make sure to revise the following points:
-
does the new code follow the style guide? -
do the test pipelines pass? (see guide on how to run pipelines for a merge request) -
is the code you changed and/or the new code you wrote covered in the test suite? (if not, extend the existing tests or write new ones) -
is the list of the header includes complete? ("include what you use") -
all files have to end with a \n
character. Make sure there is no\ No newline at end of file
comment in "Changes" of this MR.