The multidomain framework uses block-structured matrices to assemble a single system matrix for the linear system arising from the coupled problem (for example, in each Newton iteration of a nonlinear solver).
The matrix is structured such that each of the diagonal blocks correspond to one of the subproblems. The off-diagonal blocks correspond to the coupling derivatives that represent interactions between the subproblems. The block-structured matrix can directly be used with compatible linear solvers. The block structure is also useful to construct partitioned solvers.
Any regular ("single domain") DuMux problem can be turned into a subproblem of a coupled simulation. The subproblems can model arbitrary physics, can have different dimensions, or be discretized with different methods. The only requirement is that the subproblems are compatible with the coupling manager.
In addition to a regular DuMux problem, the subproblems gets a pointer to the coupling manager which is used to transfer data between the subproblems and obtain data from other subproblems.
The coupling manager is the central object in the multidomain framework, which is responsible for the coupling of the subproblems. Coupling managers implement the interface of the Dumux::CouplingManager class.
|
| struct | Dumux::CouplingManagerSupportsMultithreadedAssembly< CM > |
| | Type trait that is specialized for coupling manager supporting multithreaded assembly. More...
|
| |
| class | Dumux::Experimental::MultiStageMultiDomainFVAssembler< MDTraits, CMType, diffMethod > |
| | A linear system assembler (residual and Jacobian) for finite volume schemes (box, tpfa, mpfa, ...) with multiple domains. More...
|
| |
| class | Dumux::Experimental::SubDomainCCLocalAssemblerBase< id, TypeTag, Assembler, Implementation, dm > |
| | A base class for all multidomain local assemblers. More...
|
| |
| class | Dumux::Experimental::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DM > |
| | The cell-centered scheme multidomain local assembler. More...
|
| |
| class | Dumux::Experimental::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric > |
| | Cell-centered scheme multidomain local assembler using numeric differentiation. More...
|
| |
| class | Dumux::Experimental::SubDomainCVFELocalAssemblerBase< id, TypeTag, Assembler, Implementation, dm > |
| | A base class for all CVFE subdomain local assemblers. More...
|
| |
| class | Dumux::Experimental::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DM > |
| | The CVFE scheme multidomain local assembler. More...
|
| |
| class | Dumux::Experimental::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric > |
| | CVFE scheme multi domain local assembler using numeric differentiation. More...
|
| |
| class | Dumux::MultiDomainAssemblerSubDomainView< MDAssembler, domainId > |
| | Subdomain-specific view on a multidomain assembler. Allows retrieval of sub-domain specific objects w/o passing a domain id. More...
|
| |
| class | Dumux::CouplingManager< Traits > |
| | The interface of the coupling manager for multi domain problems. More...
|
| |
| class | Dumux::CVFEFreeFlowCouplingManager< Traits > |
| | The interface of the coupling manager for free flow systems. More...
|
| |
| class | Dumux::FCStaggeredFreeFlowCouplingManager< Traits > |
| | The interface of the coupling manager for free flow systems. More...
|
| |
| 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::MultiDomainVtkOutputModule< MDTraits, Module > |
| | A multidomain wrapper for multiple vtk output modules. More...
|
| |
| class | Dumux::MultiBinaryCouplingManager< MDTraits, CouplingMap, CouplingMgrs > |
| | Coupling manager that combines an arbitrary number of binary coupling manager (coupling two domains each) More...
|
| |
| class | Dumux::MultiDomainNewtonConvergenceWriter< MDTraits > |
| | Writes the intermediate solutions for every Newton iteration. More...
|
| |
| class | Dumux::MultiDomainNewtonSolver< Assembler, LinearSolver, CouplingManager, Reassembler, Comm > |
| | Newton solver for coupled problems. 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::SubDomainCCLocalAssembler< id, TypeTag, Assembler, DiffMethod::analytic, true > |
| | Cell-centered scheme local assembler using analytic differentiation and implicit time discretization. More...
|
| |
| class | Dumux::SubDomainCVFELocalAssemblerBase< id, TypeTag, Assembler, Implementation, dm, implicit > |
| | A base class for all CVFE subdomain local assemblers. More...
|
| |
| class | Dumux::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DM, implicit > |
| | The CVFE scheme multidomain local assembler. More...
|
| |
| class | Dumux::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, true > |
| | CVFE scheme multi domain local assembler using numeric differentiation and implicit time discretization. More...
|
| |
| class | Dumux::SubDomainCVFELocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, false > |
| | CVFE scheme multi domain local assembler using numeric differentiation and explicit time discretization. More...
|
| |
| class | Dumux::SubDomainFaceCenteredLocalAssemblerBase< id, TypeTag, Assembler, Implementation, dm, implicit > |
| | A base class for all face-centered staggered local assemblers. More...
|
| |
| class | Dumux::SubDomainFaceCenteredLocalAssembler< id, TypeTag, Assembler, DM, implicit > |
| | The face-centered staggered scheme multidomain local assembler. More...
|
| |
| class | Dumux::SubDomainFaceCenteredLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, true > |
| | Face-centered staggered scheme multi domain local assembler using numeric differentiation and implicit time discretization. More...
|
| |
| class | Dumux::SubDomainFaceCenteredLocalAssembler< id, TypeTag, Assembler, DiffMethod::numeric, false > |
| | Face-centered staggered scheme multi domain local assembler using numeric differentiation and explicit time discretization. More...
|
| |
|
| template<bool isImplicit, class CouplingManager , class GridGeometryI , class GridGeometryJ , std::size_t i, std::size_t j, typename std::enable_if_t<((GridGeometryI::discMethod==DiscretizationMethods::cctpfa)||(GridGeometryI::discMethod==DiscretizationMethods::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 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<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...
|
| |