Coupling manager for Stokes and Darcy domains with equal dimension. More...
#include <dumux/multidomain/boundary/freeflowporousmedium/ffmasspm/couplingmanager.hh>
Coupling manager for Stokes and Darcy domains with equal dimension.
Public Types | |
using | SolutionVectorStorage = typename ParentType::SolutionVectorStorage |
using | CouplingStencilType = std::vector< std::size_t > |
default type used for coupling element stencils More... | |
using | SolutionVector = typename Traits::SolutionVector |
the type of the solution vector More... | |
Public Member Functions | |
void | init (std::shared_ptr< Problem< freeFlowMassIndex > > freeFlowMassProblem, std::shared_ptr< Problem< porousMediumIndex > > darcyProblem, SolutionVectorStorage &curSol) |
Methods to be accessed by main. More... | |
template<std::size_t i, class Assembler > | |
void | bindCouplingContext (Dune::index_constant< i > domainI, const Element< i > &element, const Assembler &assembler) const |
Methods to be accessed by the assembly. More... | |
template<std::size_t i, std::size_t j, class LocalAssemblerI > | |
void | updateCouplingContext (Dune::index_constant< i > domainI, const LocalAssemblerI &localAssemblerI, Dune::index_constant< j > domainJ, std::size_t dofIdxGlobalJ, const PrimaryVariables< j > &priVarsJ, int pvIdxJ) |
Update the coupling context. More... | |
template<std::size_t i> | |
const auto & | couplingContext (Dune::index_constant< i > domainI, const FVElementGeometry< i > &fvGeometry, const SubControlVolumeFace< i > scvf) const |
Access the coupling context needed for the Stokes domain. More... | |
template<std::size_t i, std::size_t j> | |
const CouplingStencil & | couplingStencil (Dune::index_constant< i > domainI, const Element< i > &element, Dune::index_constant< j > domainJ) const |
The coupling stencils. More... | |
template<std::size_t i> | |
bool | isCoupled (Dune::index_constant< i > domainI, const SubControlVolumeFace< i > &scvf) const |
Returns whether a given scvf is coupled to the other domain. More... | |
member functions concerning the coupling stencils | |
void | extendJacobianPattern (Dune::index_constant< id > domainI, JacobianPattern &pattern) const |
extend the jacobian pattern of the diagonal block of domain i by those entries that are not already in the uncoupled pattern More... | |
Static Public Attributes | |
static constexpr auto | freeFlowMassIndex = typename MDTraits::template SubDomain<0>::Index() |
static constexpr auto | porousMediumIndex = typename MDTraits::template SubDomain<1>::Index() |
member functions concerning variable caching for element residual evaluations | |
void | bindCouplingContext (Dune::index_constant< i > domainI, const Element< i > &elementI, const Assembler &assembler) |
prepares all data and variables that are necessary to evaluate the residual of the element of domain i More... | |
void | updateCoupledVariables (Dune::index_constant< i > domainI, const LocalAssemblerI &localAssemblerI, UpdatableElementVolVars &elemVolVars, UpdatableFluxVarCache &elemFluxVarsCache) |
update variables of domain i that depend on variables in domain j after the coupling context has been updated More... | |
void | updateSolution (const SolutionVector &curSol) |
Updates the entire solution vector, e.g. before assembly or after grid adaption Overload might want to overload function if the solution vector is stored outside this class to make sure updates don't happen more than once. More... | |
decltype(auto) | 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... | |
void | evalAdditionalDomainDerivatives (Dune::index_constant< i > domainI, const LocalAssemblerI &localAssemblerI, const typename LocalAssemblerI::LocalResidual::ElementResidualVector &origResiduals, JacobianMatrixDiagBlock &A, GridVariables &gridVariables) |
evaluate additional derivatives of the element residual of a domain with respect to dofs in the same domain that are not in the regular stencil (see CouplingManager::extendJacobianPattern) More... | |
decltype(auto) | numericEpsilon (Dune::index_constant< i >, const std::string ¶mGroup) const |
return the numeric epsilon used for deflecting primary variables of coupled domain i More... | |
void | setSubProblems (const std::tuple< std::shared_ptr< SubProblems >... > &problems) |
set the pointers to the sub problems More... | |
void | setSubProblem (std::shared_ptr< SubProblem > problem, Dune::index_constant< i > domainIdx) |
set a pointer to one of the sub problems More... | |
const Problem< i > & | problem (Dune::index_constant< i > domainIdx) const |
Return a reference to the sub problem. More... | |
void | attachSolution (SolutionVectorStorage &curSol) |
Attach a solution vector stored outside of this class. More... | |
SubSolutionVector< i > & | curSol (Dune::index_constant< i > domainIdx) |
the solution vector of the subproblem More... | |
const SubSolutionVector< i > & | curSol (Dune::index_constant< i > domainIdx) const |
the solution vector of the subproblem More... | |
decltype(auto) | curSol () |
the solution vector of the coupled problem More... | |
decltype(auto) | curSol () const |
the solution vector of the coupled problem More... | |
|
inherited |
default type used for coupling element stencils
|
inherited |
the type of the solution vector
using Dumux::FreeFlowMassPorousMediumCouplingManager< MDTraits >::SolutionVectorStorage = typename ParentType::SolutionVectorStorage |
|
inlineprotectedinherited |
Attach a solution vector stored outside of this class.
|
inline |
Methods to be accessed by the assembly.
prepares all data and variables that are necessary to evaluate the residual (called from the local assembler)
|
inlineinherited |
prepares all data and variables that are necessary to evaluate the residual of the element of domain i
domainI | the domain index of domain i |
elementI | the element whose residual we are assemling next |
assembler | the multidomain assembler for access to all data necessary for the assembly of all domains |
|
inline |
Access the coupling context needed for the Stokes domain.
|
inline |
The coupling stencils.
The Stokes cell center coupling stencil w.r.t. Darcy DOFs
|
inlineprotectedinherited |
the solution vector of the coupled problem
|
inlineprotectedinherited |
the solution vector of the coupled problem
|
inlineprotectedinherited |
the solution vector of the subproblem
domainIdx | The domain index |
|
inlineprotectedinherited |
the solution vector of the subproblem
domainIdx | The domain index |
|
inlineinherited |
evaluate additional derivatives of the element residual of a domain with respect to dofs in the same domain that are not in the regular stencil (see CouplingManager::extendJacobianPattern)
|
inlineinherited |
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 |
|
inlineinherited |
extend the jacobian pattern of the diagonal block of domain i by those entries that are not already in the uncoupled pattern
|
inline |
Methods to be accessed by main.
Initialize the coupling manager
|
inline |
Returns whether a given scvf is coupled to the other domain.
|
inlineinherited |
return the numeric epsilon used for deflecting primary variables of coupled domain i
|
inlineinherited |
Return a reference to the sub problem.
domainIdx | The domain index We avoid exception handling here because the performance of this function is critical |
|
inlineinherited |
set a pointer to one of the sub problems
problem | a pointer to the sub problem |
domainIdx | the domain index of the sub problem |
|
inlineinherited |
set the pointers to the sub problems
problems | A tuple of shared pointers to the sub problems |
|
inlineinherited |
update variables of domain i that depend on variables in domain j after the coupling context has been updated
domainI | the index of domain i |
localAssemblerI | the local assembler assembling the element residual of an element of domain i |
elemVolVars | the element volume variables (all volume variables in the element local stencil) to be updated |
elemFluxVarsCache | the element flux variable cache (all flux variables in the element local stencil) to be updated |
|
inline |
Update the coupling context.
|
inlineinherited |
Updates the entire solution vector, e.g. before assembly or after grid adaption Overload might want to overload function if the solution vector is stored outside this class to make sure updates don't happen more than once.
|
staticconstexpr |
|
staticconstexpr |