[Mortar] incorporate features from mortar coupling project
In the projects related to mortar coupling, a bunch of functionality has been developed that could/should be brought into the master branch (implementing it more composable and more generic):
- Helper class to extract the trace of a domain as a separate grid, including mapping of elements/scvf to trace grid elements (!3916 (merged))
- Trace operator that extracts primary values or fluxes on the trace of a domain (!3918)
- General decomposition class that takes a bunch of domain & mortar grids, and finds which subdomains intersect with which mortars to generate a sort of coupling map (!3919)
- Interface operator, in the form of a
Dune::LinearOperator
, that takes a decomposition and in each iteration (!3922):- projects the mortar data into the subdomains
- solves the subdomains in parallel, using the mortar data as boundary condition
- project the trace data from the subdomains back onto the mortar and computes a residual (wrt which the solution is seeked)
- Example Darcy-Darcy application (Note that the solution algorithm requires invoking the interface operator once including external (non-mortar) boundary data, then solving the homogeneous problem (all non-mortar boundary data = 0), and then computing the solution via superposition) (!3922)
- Example Stokes-Darcy application (!3922)
... + potentially (maybe in a separate issue):
- support for floating domains (not connected to any dirichlet boundaries). This is only needed for flux mortars...
Edited by Dennis Gläser