The interface of the coupling manager for free flow systems. More...
#include <dumux/multidomain/freeflow/couplingmanager_diamond.hh>
The interface of the coupling manager for free flow systems.
Public Types | |
using | SolutionVectorStorage = typename ParentType::SolutionVectorStorage |
Public Member Functions | |
void | init (std::shared_ptr< Problem< freeFlowMomentumIndex > > momentumProblem, std::shared_ptr< Problem< freeFlowMassIndex > > massProblem, GridVariablesTuple &&gridVariables, const SolutionVector &curSol) |
Methods to be accessed by main. More... | |
void | init (std::shared_ptr< Problem< freeFlowMomentumIndex > > momentumProblem, std::shared_ptr< Problem< freeFlowMassIndex > > massProblem, GridVariablesTuple &&gridVariables, const SolutionVector &curSol, const SolutionVector &prevSol) |
use as regular coupling manager in a transient setting More... | |
void | init (std::shared_ptr< Problem< freeFlowMomentumIndex > > momentumProblem, std::shared_ptr< Problem< freeFlowMassIndex > > massProblem, GridVariablesTuple &&gridVariables, typename ParentType::SolutionVectorStorage &curSol) |
use as binary coupling manager in multi model context More... | |
member functions concerning the coupling stencils | |
Scalar | pressure (const Element< freeFlowMomentumIndex > &element, const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf) const |
Returns the pressure at a given sub control volume face. More... | |
Scalar | density (const Element< freeFlowMomentumIndex > &element, const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf, const bool considerPreviousTimeStep=false) const |
Returns the density at a given sub control volume face. More... | |
Scalar | density (const Element< freeFlowMomentumIndex > &element, const SubControlVolume< freeFlowMomentumIndex > &scv, const bool considerPreviousTimeStep=false) const |
Returns the density at a given sub control volume. More... | |
Scalar | effectiveViscosity (const Element< freeFlowMomentumIndex > &element, const FVElementGeometry< freeFlowMomentumIndex > &fvGeometry, const SubControlVolumeFace< freeFlowMomentumIndex > &scvf) const |
Returns the pressure at a given sub control volume face. More... | |
VelocityVector | faceVelocity (const Element< freeFlowMassIndex > &element, const SubControlVolumeFace< freeFlowMassIndex > &scvf) const |
Returns the velocity at a given sub control volume face. More... | |
VelocityVector | elementVelocity (const FVElementGeometry< freeFlowMassIndex > &fvGeometry) const |
Returns the velocity at the element center. More... | |
template<std::size_t j> | |
const CouplingStencilType & | couplingStencil (Dune::index_constant< freeFlowMomentumIndex > domainI, const Element< freeFlowMomentumIndex > &elementI, const SubControlVolume< freeFlowMomentumIndex > &scvI, Dune::index_constant< j > domainJ) const |
The coupling stencil of domain I, i.e. which domain J DOFs the given domain I element's residual depends on. More... | |
const CouplingStencilType & | couplingStencil (Dune::index_constant< freeFlowMassIndex > domainI, const Element< freeFlowMassIndex > &elementI, Dune::index_constant< freeFlowMomentumIndex > domainJ) const |
returns an iterable container of all indices of degrees of freedom of domain j that couple with / influence the element residual of the given element of domain i More... | |
const CouplingStencilType & | couplingStencil (Dune::index_constant< freeFlowMomentumIndex > domainI, const Element< freeFlowMomentumIndex > &elementI, Dune::index_constant< freeFlowMassIndex > domainJ) const |
returns an iterable container of all indices of degrees of freedom of domain j that couple with / influence the element residual of the given element of domain i More... | |
member functions concerning the coupling stencils | |
template<std::size_t i, std::size_t j> | |
const CouplingStencilType< i, j > & | couplingStencil (Dune::index_constant< i > domainI, const Element< i > &elementI, Dune::index_constant< j > domainJ) const |
returns an iterable container of all indices of degrees of freedom of domain j that couple with / influence the element residual of the given element of domain i More... | |
template<std::size_t id, class JacobianPattern > | |
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 | freeFlowMomentumIndex = typename Traits::template SubDomain<0>::Index() |
static constexpr auto | freeFlowMassIndex = typename Traits::template SubDomain<1>::Index() |
static constexpr auto | pressureIdx = VolumeVariables<freeFlowMassIndex>::Indices::pressureIdx |
member functions concerning variable caching for element residual evaluations | |
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) |
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... | |
void | computeColorsForAssembly () |
Compute colors for multithreaded assembly. More... | |
template<std::size_t i, class AssembleElementFunc > | |
void | assembleMultithreaded (Dune::index_constant< i > domainId, AssembleElementFunc &&assembleElement) const |
Execute assembly kernel in parallel. More... | |
member functions concerning variable caching for element residual evaluations | |
template<std::size_t i, class Assembler > | |
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... | |
template<std::size_t i, class LocalAssemblerI , class UpdatableElementVolVars , class UpdatableFluxVarCache > | |
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... | |
template<std::size_t i, std::size_t j, class LocalAssemblerI > | |
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... | |
template<std::size_t i, class LocalAssemblerI , class JacobianMatrixDiagBlock , class GridVariables > | |
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... | |
template<std::size_t i> | |
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... | |
template<typename... SubProblems> | |
void | setSubProblems (const std::tuple< std::shared_ptr< SubProblems >... > &problems) |
set the pointers to the sub problems More... | |
template<class SubProblem , std::size_t i> | |
void | setSubProblem (std::shared_ptr< SubProblem > problem, Dune::index_constant< i > domainIdx) |
set a pointer to one of the sub problems More... | |
template<std::size_t i> | |
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... | |
template<std::size_t i> | |
SubSolutionVector< i > & | curSol (Dune::index_constant< i > domainIdx) |
the solution vector of the subproblem More... | |
template<std::size_t i> | |
const SubSolutionVector< i > & | curSol (Dune::index_constant< i > domainIdx) const |
the solution vector of the subproblem More... | |
using Dumux::FCDiamondFreeFlowCouplingManager< Traits >::SolutionVectorStorage = typename ParentType::SolutionVectorStorage |
|
inline |
Execute assembly kernel in parallel.
domainI | the domain index of domain i |
assembleElement | kernel function to execute for one element |
|
inlineprotectedinherited |
Attach a solution vector stored outside of this class.
|
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 |
Compute colors for multithreaded assembly.
|
inline |
returns an iterable container of all indices of degrees of freedom of domain j that couple with / influence the element residual of the given element of domain i
domainI | the domain index of domain i |
elementI | the coupled element of domain í |
domainJ | the domain index of domain j |
|
inline |
The coupling stencil of domain I, i.e. which domain J DOFs the given domain I element's residual depends on.
|
inline |
returns an iterable container of all indices of degrees of freedom of domain j that couple with / influence the element residual of the given element of domain i
domainI | the domain index of domain i |
elementI | the coupled element of domain í |
domainJ | the domain index of domain j |
|
inlineinherited |
returns an iterable container of all indices of degrees of freedom of domain j that couple with / influence the element residual of the given element of domain i
domainI | the domain index of domain i |
elementI | the coupled element of domain í |
domainJ | the domain index of domain j |
|
inlineprotectedinherited |
the solution vector of the subproblem
domainIdx | The domain index |
|
inlineprotectedinherited |
the solution vector of the subproblem
domainIdx | The domain index |
|
inline |
Returns the density at a given sub control volume face.
|
inline |
Returns the density at a given sub control volume.
|
inline |
Returns the pressure at a given sub control volume face.
|
inline |
Returns the velocity at the element center.
|
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 |
extend the jacobian pattern of the diagonal block of domain i by those entries that are not already in the uncoupled pattern
|
inline |
Returns the velocity at a given sub control volume face.
|
inline |
Methods to be accessed by main.
use as regular coupling manager
|
inline |
use as regular coupling manager in a transient setting
|
inline |
use as binary coupling manager in multi model context
|
inlineinherited |
return the numeric epsilon used for deflecting primary variables of coupled domain i
|
inline |
Returns the pressure at a given sub control volume face.
|
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 |
|
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 |
|
staticconstexpr |