Coupling of several regular DuMux problems. More...
Coupling of several regular DuMux problems.
The multi domain module allows coupling regular DuMux problems. Several coupling modes are currently available.
Modules | |
Boundary coupling mode | |
Couples problems of different or equal dimension that touch at the domain boundary. Examples are equal-dimension multi-physics problems like Darcy-Stokes coupling or PNM (pore network model)-Darcy coupling. | |
Embedded mixed-dimension coupling mode | |
Couples problems of different dimensions where one or more lower-dimensional problems (lowdim) are embedded in a higher-dimensional domain (bulk). Examples are embedded one-dimensional networks for the simulation of blood tissue perfusion, or root-soil interaction, and embedded fracture models. | |
Conforming mixed-dimension facet coupling mode | |
Couples problems of different dimensions where one or more lower-dimensional problems (lowdim) live on the facets of the higher-dimensional domain (bulk). Examples are discrete facet conforming fracture models and problems with physics on a domain surface. | |
Files | |
file | couplingjacobianpattern.hh |
Helper function to generate Jacobian pattern for multi domain models. | |
file | multidomain/couplingmanager.hh |
The interface of the coupling manager for multi domain problems. | |
file | multidomain/couplingmanager.hh |
The interface of the coupling manager for multi domain problems. | |
file | multidomain/fvassembler.hh |
A linear system assembler (residual and Jacobian) for finite volume schemes with multiple domains. | |
file | multidomain/fvgridgeometry.hh |
Multidomain wrapper for multiple grid geometries. | |
file | multidomain/fvgridvariables.hh |
Multidomain wrapper for multiple grid variables. | |
file | multidomain/fvproblem.hh |
Multidomain wrapper for multiple problems. | |
file | glue.hh |
A class glueing two grids of potentially different dimension geometrically. Intersections are computed using axis-aligned bounding box trees. | |
file | multidomain/io/vtkoutputmodule.hh |
Multidomain wrapper for multiple vtk output modules. | |
file | multidomain/newtonsolver.hh |
file | staggeredcouplingmanager.hh |
The interface of the coupling manager for multi domain problems. | |
file | staggeredtraits.hh |
Linear algebra traits for mixeddimension problems. | |
file | subdomainboxlocalassembler.hh |
An assembler for Jacobian and residual contribution per element (box methods) for multidomain problems. | |
file | subdomaincclocalassembler.hh |
A multidomain local assembler for Jacobian and residual contribution per element (cell-centered methods) | |
file | subdomainstaggeredlocalassembler.hh |
A multidomain assembler for Jacobian and residual contribution per element (staggered method) | |
file | traits.hh |
Traits for multidomain problems. | |
Classes | |
class | Dumux::MultiDomainFVAssembler< MDTraits, CMType, diffMethod, useImplicitAssembly > |
A linear system assembler (residual and Jacobian) for finite volume schemes (box, tpfa, mpfa, ...) with multiple domains. More... | |
class | Dumux::MultiDomainFVGridGeometry< MDTraits > |
A multidomain wrapper for multiple grid geometries. More... | |
class | Dumux::MultiDomainFVGridVariables< MDTraits > |
A multidomain wrapper for multiple grid variables. More... | |
class | Dumux::MultiDomainFVProblem< MDTraits > |
A multidomain wrapper for multiple problems. More... | |
class | Dumux::Glue::Intersection< DomainGridView, TargetGridView, DomainMapper, TargetMapper > |
An intersection object representing the intersection between two grid entites of different grids. More... | |
class | Dumux::MultiDomainGlue< DomainGridView, TargetGridView, DomainMapper, TargetMapper > |
Manages the coupling between domain elements and lower dimensional elements Point sources on each integration point are computed by an AABB tree. Both domain are assumed to be discretized using a cc finite volume scheme. More... | |
class | Dumux::MultiDomainVtkOutputModule< MDTraits, Module > |
A multidomain wrapper for multiple vtk output modules. More... | |
class | Dumux::MultiDomainNewtonSolver< Assembler, LinearSolver, CouplingManager, Reassembler, Comm > |
Newton sover for coupled problems. More... | |
class | Dumux::StaggeredCouplingManager< MDTraits > |
Base coupling manager for the staggered discretization. More... | |
class | Dumux::SubDomainBoxLocalAssemblerBase< id, TypeTag, Assembler, Implementation, implicit > |
A base class for all box local assemblers. More... | |
class | Dumux::SubDomainBoxLocalAssembler< id, TypeTag, Assembler, DM, implicit > |
The box scheme multidomain local assembler. More... | |
class | Dumux::SubDomainBoxLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, true > |
Box scheme multi domain local assembler using numeric differentiation and implicit time discretization. More... | |
class | Dumux::SubDomainBoxLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, false > |
Box scheme multi domain local assembler using numeric differentiation and explicit time discretization. More... | |
class | Dumux::SubDomainCCLocalAssemblerBase< id, TypeTag, Assembler, Implementation, implicit > |
A base class for all multidomain local assemblers. More... | |
class | Dumux::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DM, implicit > |
The cell-centered scheme multidomain local assembler. More... | |
class | Dumux::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, true > |
Cell-centered scheme multidomain local assembler using numeric differentiation and implicit time discretization. More... | |
class | Dumux::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, false > |
Cell-centered scheme multidomain local assembler using numeric differentiation and explicit time discretization. More... | |
class | Dumux::SubDomainStaggeredLocalAssemblerBase< id, TypeTag, Assembler, Implementation, isImplicit > |
A base class for all multidomain local assemblers (staggered) More... | |
class | Dumux::SubDomainStaggeredLocalAssemblerImplicitBase< id, TypeTag, Assembler, Implementation > |
A base class for all implicit multidomain local assemblers (staggered) More... | |
class | Dumux::SubDomainStaggeredLocalAssembler< id, TypeTag, Assembler, DM, implicit > |
The staggered multidomain local assembler. More... | |
class | Dumux::SubDomainStaggeredLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, true > |
Staggered scheme local assembler using numeric differentiation and implicit time discretization. More... | |
Functions | |
template<bool isImplicit, class CouplingManager , class GridGeometryI , class GridGeometryJ , std::size_t i, std::size_t j, typename std::enable_if_t<((GridGeometryI::discMethod==DiscretizationMethod::cctpfa)||(GridGeometryI::discMethod==DiscretizationMethod::ccmpfa)), int > = 0> | |
Dune::MatrixIndexSet | Dumux::getCouplingJacobianPattern (const CouplingManager &couplingManager, Dune::index_constant< i > domainI, const GridGeometryI &gridGeometryI, Dune::index_constant< j > domainJ, const GridGeometryJ &gridGeometryJ) |
Helper function to generate coupling Jacobian pattern (off-diagonal blocks) for cell-centered schemes. More... | |
template<class DomainGridView , class TargetGridView , class DomainMapper , class TargetMapper > | |
Dune::IteratorRange< typename MultiDomainGlue< DomainGridView, TargetGridView, DomainMapper, TargetMapper >::Intersections::const_iterator > | Dumux::intersections (const MultiDomainGlue< DomainGridView, TargetGridView, DomainMapper, TargetMapper > &glue) |
Range generator to iterate with range-based for loops over all intersections as follows: for (const auto& is : intersections(glue)) { ... }. More... | |
template<class DomainGG , class TargetGG > | |
MultiDomainGlue< typename DomainGG::GridView, typename TargetGG::GridView, typename DomainGG::ElementMapper, typename TargetGG::ElementMapper > | Dumux::makeGlue (const DomainGG &domainGridGeometry, const TargetGG &targetGridGeometry) |
Creates the glue object containing the intersections between two grids obtained from given grid geometries. More... | |
template<class LocalAssemblerI , std::size_t j> | |
decltype(auto) | Dumux::StaggeredCouplingManager< MDTraits >::evalCouplingResidual (Dune::index_constant< faceIdx > domainI, const SubControlVolumeFace &scvfI, const LocalAssemblerI &localAssemblerI, Dune::index_constant< j > domainJ, std::size_t dofIdxGlobalJ) const |
evaluates the face residual of a coupled face of domain i which depends on the variables at the degree of freedom with index dofIdxGlobalJ of domain j More... | |
member functions concerning variable caching for element residual evaluations | |
template<std::size_t i, std::size_t j, class LocalAssemblerI > | |
void | Dumux::CouplingManager< Traits >::updateCouplingContext (Dune::index_constant< i > domainI, const LocalAssemblerI &localAssemblerI, Dune::index_constant< j > domainJ, std::size_t dofIdxGlobalJ, const PrimaryVariables< j > &priVarsJ, int pvIdxJ) |
updates all data and variables that are necessary to evaluate the residual of the element of domain i this is called whenever one of the primary variables that the element residual depends on changes in domain j More... | |
template<std::size_t i, std::size_t j, class LocalAssemblerI > | |
decltype(auto) | Dumux::CouplingManager< Traits >::evalCouplingResidual (Dune::index_constant< i > domainI, const LocalAssemblerI &localAssemblerI, Dune::index_constant< j > domainJ, std::size_t dofIdxGlobalJ) const |
evaluates the element residual of a coupled element of domain i which depends on the variables at the degree of freedom with index dofIdxGlobalJ of domain j More... | |
|
inline |
evaluates the face residual of a coupled face of domain i which depends on the variables at the degree of freedom with index dofIdxGlobalJ of domain j
domainI | the domain index of domain i |
scvfI | the subcontrol volume face whose residual shall be evaluated of domain i |
localAssemblerI | the local assembler assembling the element residual of an element of domain i |
domainJ | the domain index of domain j |
dofIdxGlobalJ | the index of the degree of freedom of domain j which has an influence on the element residual of domain i |
|
inline |
evaluates the element residual of a coupled element of domain i which depends on the variables at the degree of freedom with index dofIdxGlobalJ of domain j
domainI | the domain index of domain i |
localAssemblerI | the local assembler assembling the element residual of an element of domain i |
domainJ | the domain index of domain j |
dofIdxGlobalJ | the index of the degree of freedom of domain j which has an influence on the element residual of domain i |
Dune::MatrixIndexSet Dumux::getCouplingJacobianPattern | ( | const CouplingManager & | couplingManager, |
Dune::index_constant< i > | domainI, | ||
const GridGeometryI & | gridGeometryI, | ||
Dune::index_constant< j > | domainJ, | ||
const GridGeometryJ & | gridGeometryJ | ||
) |
Helper function to generate coupling Jacobian pattern (off-diagonal blocks) for cell-centered schemes.
Helper function to generate coupling Jacobian pattern (off-diagonal blocks) for the staggered scheme (degrees of freedom on faces)
Helper function to generate coupling Jacobian pattern (off-diagonal blocks) for the staggered scheme (degrees of freedom on cell centers)
Helper function to generate coupling Jacobian pattern (off-diagonal blocks) for the box scheme.
Dune::IteratorRange< typename MultiDomainGlue< DomainGridView, TargetGridView, DomainMapper, TargetMapper >::Intersections::const_iterator > Dumux::intersections | ( | const MultiDomainGlue< DomainGridView, TargetGridView, DomainMapper, TargetMapper > & | glue | ) |
Range generator to iterate with range-based for loops over all intersections as follows: for (const auto& is : intersections(glue)) { ... }.
MultiDomainGlue< typename DomainGG::GridView, typename TargetGG::GridView, typename DomainGG::ElementMapper, typename TargetGG::ElementMapper > Dumux::makeGlue | ( | const DomainGG & | domainGridGeometry, |
const TargetGG & | targetGridGeometry | ||
) |
Creates the glue object containing the intersections between two grids obtained from given grid geometries.
domainGridGeometry | The grid geometry of the domain |
targetGridGeometry | The grid geometry of the target domain |
|
inline |
updates all data and variables that are necessary to evaluate the residual of the element of domain i this is called whenever one of the primary variables that the element residual depends on changes in domain j
domainI | the domain index of domain i |
localAssemblerI | the local assembler assembling the element residual of an element of domain i |
domainJ | the domain index of domain j |
dofIdxGlobalJ | the index of the degree of freedom of domain j whose solution changed |
priVarsJ | the new solution at the degree of freedom of domain j with index dofIdxGlobalJ |
pvIdxJ | the index of the primary variable of domain j which has been updated |