3.3.0
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits > Class Template Reference

Manages the coupling between bulk elements and lower dimensional elements Point sources on each integration point are computed by an AABB tree. More...

#include <dumux/multidomain/embedded/couplingmanagerbase.hh>

Inheritance diagram for Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >:

Description

template<class MDTraits, class Implementation, class PSTraits = DefaultPointSourceTraits<MDTraits>>
class Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >

Manages the coupling between bulk elements and lower dimensional elements Point sources on each integration point are computed by an AABB tree.

Public Types

using MultiDomainTraits = MDTraits
 export traits More...
 
using PointSourceTraits = PSTraits
 export the point source traits More...
 
template<std::size_t id>
using CouplingStencils = std::unordered_map< GridIndex< id >, CouplingStencil< id > >
 export stencil types More...
 
using CouplingStencilType = std::vector< std::size_t >
 default type used for coupling element stencils More...
 

Public Member Functions

void updateAfterGridAdaption (std::shared_ptr< const GridGeometry< bulkIdx > > bulkGridGeometry, std::shared_ptr< const GridGeometry< lowDimIdx > > lowDimGridGeometry)
 call this after grid adaption More...
 
 EmbeddedCouplingManagerBase (std::shared_ptr< const GridGeometry< bulkIdx > > bulkGridGeometry, std::shared_ptr< const GridGeometry< lowDimIdx > > lowDimGridGeometry)
 Constructor. More...
 
void init (std::shared_ptr< Problem< bulkIdx > > bulkProblem, std::shared_ptr< Problem< lowDimIdx > > lowDimProblem, const SolutionVector &curSol)
 Methods to be accessed by main. More...
 
template<std::size_t i, std::size_t j>
const CouplingStencil< j > & couplingStencil (Dune::index_constant< i > domainI, const Element< i > &element, Dune::index_constant< j > domainJ) const
 Methods to be accessed by the assembly. 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)
 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 computePointSourceData (std::size_t order=1, bool verbose=false)
 
const PointSourceData & pointSourceData (std::size_t id) const
 Methods to be accessed by the subproblems. More...
 
template<std::size_t id>
const GridView< id > & gridView (Dune::index_constant< id > domainIdx) const
 Return a reference to the bulk problem. More...
 
PrimaryVariables< bulkIdx > bulkPriVars (std::size_t id) const
 Return data for a bulk point source with the identifier id. More...
 
PrimaryVariables< lowDimIdx > lowDimPriVars (std::size_t id) const
 Return data for a low dim point source with the identifier id. More...
 
Scalar averageDistance (std::size_t id) const
 return the average distance to the coupled bulk cell center More...
 
const std::vector< PointSource< bulkIdx > > & bulkPointSources () const
 Return reference to bulk point sources. More...
 
const std::vector< PointSource< lowDimIdx > > & lowDimPointSources () const
 Return reference to low dim point sources. More...
 
template<std::size_t i>
const std::vector< PointSource< i > > & pointSources (Dune::index_constant< i > dom) const
 Return the point source if domain i. More...
 
template<std::size_t i>
const CouplingStencils< i > & couplingStencils (Dune::index_constant< i > dom) const
 Return reference to bulk coupling stencil member of domain i. More...
 
const std::vector< PointSourceData > & pointSourceData () const
 Return reference to point source data vector member. More...
 
template<std::size_t i>
const CouplingStencil< i > & emptyStencil (Dune::index_constant< i > dom) const
 Return a reference to an empty stencil. 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...
 

Protected Member Functions

template<std::size_t id>
void precomputeVertexIndices (Dune::index_constant< id > domainIdx)
 computes the vertex indices per element for the box method More...
 
template<std::size_t i, class FVGG , class Geometry , class ShapeValues >
void getShapeValues (Dune::index_constant< i > domainI, const FVGG &gridGeometry, const Geometry &geo, const GlobalPosition &globalPos, ShapeValues &shapeValues)
 compute the shape function for a given point and geometry More...
 
void clear ()
 Clear all internal data members. More...
 
void glueGrids ()
 compute the intersections between the two grids More...
 
std::vector< PointSourceData > & pointSourceData ()
 Return reference to point source data vector member. More...
 
std::vector< Scalar > & averageDistanceToBulkCell ()
 Return reference to average distances to bulk cell. More...
 
template<std::size_t i>
std::vector< PointSource< i > > & pointSources (Dune::index_constant< i > dom)
 Return the point source if domain i. More...
 
template<std::size_t i>
CouplingStencils< i > & couplingStencils (Dune::index_constant< i > dom)
 Return reference to bulk coupling stencil member of domain i. More...
 
template<std::size_t i>
std::vector< GridIndex< i > > & vertexIndices (Dune::index_constant< i > dom, GridIndex< i > eIdx)
 Return a reference to the vertex indices. More...
 
template<std::size_t i>
std::vector< std::vector< GridIndex< i > > > & vertexIndices (Dune::index_constant< i > dom)
 Return a reference to the vertex indices container. More...
 
const GlueTypeglue () const
 
Implementation & asImp_ ()
 Returns the implementation of the problem (i.e. static polymorphism) More...
 
const Implementation & asImp_ () const
 Returns the implementation of the problem (i.e. static polymorphism) More...
 

Protected Attributes

std::size_t idCounter_ = 0
 id generator for point sources More...
 

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 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 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. 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 &paramGroup) 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...
 
SolutionVector & curSol ()
 the solution vector of the coupled problem More...
 
const SolutionVector & curSol () const
 the solution vector of the coupled problem More...
 

Member Typedef Documentation

◆ CouplingStencils

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t id>
using Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::CouplingStencils = std::unordered_map<GridIndex<id>, CouplingStencil<id> >

export stencil types

◆ CouplingStencilType

using Dumux::CouplingManager< MDTraits >::CouplingStencilType = std::vector<std::size_t>
inherited

default type used for coupling element stencils

◆ MultiDomainTraits

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
using Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::MultiDomainTraits = MDTraits

export traits

◆ PointSourceTraits

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
using Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::PointSourceTraits = PSTraits

export the point source traits

Constructor & Destructor Documentation

◆ EmbeddedCouplingManagerBase()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::EmbeddedCouplingManagerBase ( std::shared_ptr< const GridGeometry< bulkIdx > >  bulkGridGeometry,
std::shared_ptr< const GridGeometry< lowDimIdx > >  lowDimGridGeometry 
)
inline

Constructor.

Member Function Documentation

◆ asImp_() [1/2]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
Implementation & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::asImp_ ( )
inlineprotected

Returns the implementation of the problem (i.e. static polymorphism)

◆ asImp_() [2/2]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
const Implementation & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::asImp_ ( ) const
inlineprotected

Returns the implementation of the problem (i.e. static polymorphism)

◆ averageDistance()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
Scalar Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::averageDistance ( std::size_t  id) const
inline

return the average distance to the coupled bulk cell center

◆ averageDistanceToBulkCell()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
std::vector< Scalar > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::averageDistanceToBulkCell ( )
inlineprotected

Return reference to average distances to bulk cell.

◆ bindCouplingContext()

void Dumux::CouplingManager< MDTraits >::bindCouplingContext ( Dune::index_constant< i >  domainI,
const Element< i > &  elementI,
const Assembler &  assembler 
)
inlineinherited

prepares all data and variables that are necessary to evaluate the residual of the element of domain i

Parameters
domainIthe domain index of domain i
elementIthe element whose residual we are assemling next
assemblerthe multidomain assembler for access to all data necessary for the assembly of all domains
Note
this concerns all data that is used in the evaluation of the element residual and depends on one of the degrees of freedom returned by CouplingManager::couplingStencil
every coupled element residual depends at least on the solution of another domain, that why we always store a copy of the solution vector in the coupling manager, hence, in case the element residual only depends on primary variables of the other domain this function does nothing
overload this function in case the element residual depends on more than the primary variables of domain j

◆ bulkPointSources()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
const std::vector< PointSource< bulkIdx > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::bulkPointSources ( ) const
inline

Return reference to bulk point sources.

◆ bulkPriVars()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
PrimaryVariables< bulkIdx > Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::bulkPriVars ( std::size_t  id) const
inline

Return data for a bulk point source with the identifier id.

◆ clear()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
void Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::clear ( )
inlineprotected

Clear all internal data members.

◆ computePointSourceData()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
void Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::computePointSourceData ( std::size_t  order = 1,
bool  verbose = false 
)
inline

◆ couplingStencil()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i, std::size_t j>
const CouplingStencil< j > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::couplingStencil ( Dune::index_constant< i >  domainI,
const Element< i > &  element,
Dune::index_constant< j >  domainJ 
) const
inline

Methods to be accessed by the assembly.

returns an iteratable 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

Parameters
domainIthe domain index of domain i
elementthe coupled element of domain í
domainJthe domain index of domain j
Note
The element residual definition depends on the discretization scheme of domain i box: a container of the residuals of all sub control volumes cc : the residual of the (sub) control volume fem: the residual of the element
This function has to be implemented by all coupling managers for all combinations of i and j

◆ couplingStencils() [1/2]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i>
CouplingStencils< i > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::couplingStencils ( Dune::index_constant< i >  dom)
inlineprotected

Return reference to bulk coupling stencil member of domain i.

◆ couplingStencils() [2/2]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i>
const CouplingStencils< i > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::couplingStencils ( Dune::index_constant< i >  dom) const
inline

Return reference to bulk coupling stencil member of domain i.

◆ curSol() [1/2]

SolutionVector & Dumux::CouplingManager< MDTraits >::curSol ( )
inlineprotectedinherited

the solution vector of the coupled problem

Note
in case of numeric differentiation the solution vector always carries the deflected solution

◆ curSol() [2/2]

const SolutionVector & Dumux::CouplingManager< MDTraits >::curSol ( ) const
inlineprotectedinherited

the solution vector of the coupled problem

Note
in case of numeric differentiation the solution vector always carries the deflected solution

◆ emptyStencil()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i>
const CouplingStencil< i > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::emptyStencil ( Dune::index_constant< i >  dom) const
inline

Return a reference to an empty stencil.

◆ evalAdditionalDomainDerivatives()

void Dumux::CouplingManager< MDTraits >::evalAdditionalDomainDerivatives ( Dune::index_constant< i >  domainI,
const LocalAssemblerI &  localAssemblerI,
const typename LocalAssemblerI::LocalResidual::ElementResidualVector &  origResiduals,
JacobianMatrixDiagBlock &  A,
GridVariables &  gridVariables 
)
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)

Note
Such additional dependencies can arise from the coupling, e.g. if a coupling source term depends on a non-local average of a quantity of the same domain

◆ evalCouplingResidual() [1/2]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i, std::size_t j, class LocalAssemblerI >
decltype(auto) Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::evalCouplingResidual ( Dune::index_constant< i >  domainI,
const LocalAssemblerI &  localAssemblerI,
Dune::index_constant< j >  domainJ,
std::size_t  dofIdxGlobalJ 
)
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

Parameters
domainIthe domain index of domain i
localAssemblerIthe local assembler assembling the element residual of an element of domain i
domainJthe domain index of domain j
dofIdxGlobalJthe index of the degree of freedom of domain j which has an influence on the element residual of domain i
Note
we only need to evaluate the source contribution to the residual here as the coupling term is the source
Returns
the element residual

◆ evalCouplingResidual() [2/2]

decltype(auto) Dumux::CouplingManager< MDTraits >::evalCouplingResidual ( Dune::index_constant< i >  domainI,
const LocalAssemblerI &  localAssemblerI,
Dune::index_constant< j >  domainJ,
std::size_t  dofIdxGlobalJ 
) const
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

Parameters
domainIthe domain index of domain i
localAssemblerIthe local assembler assembling the element residual of an element of domain i
domainJthe domain index of domain j
dofIdxGlobalJthe index of the degree of freedom of domain j which has an influence on the element residual of domain i
Note
the element whose residual is to be evaluated can be retrieved from the local assembler as localAssemblerI.element() as well as all up-to-date variables and caches.
the default implementation evaluates the complete element residual if only parts (i.e. only certain scvs, or only certain terms of the residual) of the residual are coupled to dof with index dofIdxGlobalJ the function can be overloaded in the coupling manager
Returns
the element residual

◆ extendJacobianPattern()

void Dumux::CouplingManager< MDTraits >::extendJacobianPattern ( Dune::index_constant< id >  domainI,
JacobianPattern &  pattern 
) const
inlineinherited

extend the jacobian pattern of the diagonal block of domain i by those entries that are not already in the uncoupled pattern

Note
per default we do not add such additional dependencies
Such additional dependencies can arise from the coupling, e.g. if a coupling source term depends on a non-local average of a quantity of the same domain
Warning List:
if you overload this also implement evalAdditionalDomainDerivatives

◆ getShapeValues()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i, class FVGG , class Geometry , class ShapeValues >
void Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::getShapeValues ( Dune::index_constant< i >  domainI,
const FVGG &  gridGeometry,
const Geometry &  geo,
const GlobalPosition &  globalPos,
ShapeValues &  shapeValues 
)
inlineprotected

compute the shape function for a given point and geometry

◆ glue()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
const GlueType & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::glue ( ) const
inlineprotected

◆ glueGrids()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
void Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::glueGrids ( )
inlineprotected

compute the intersections between the two grids

◆ gridView()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t id>
const GridView< id > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::gridView ( Dune::index_constant< id >  domainIdx) const
inline

Return a reference to the bulk problem.

◆ init()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
void Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::init ( std::shared_ptr< Problem< bulkIdx > >  bulkProblem,
std::shared_ptr< Problem< lowDimIdx > >  lowDimProblem,
const SolutionVector &  curSol 
)
inline

Methods to be accessed by main.

◆ lowDimPointSources()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
const std::vector< PointSource< lowDimIdx > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::lowDimPointSources ( ) const
inline

Return reference to low dim point sources.

◆ lowDimPriVars()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
PrimaryVariables< lowDimIdx > Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::lowDimPriVars ( std::size_t  id) const
inline

Return data for a low dim point source with the identifier id.

◆ numericEpsilon()

decltype(auto) Dumux::CouplingManager< MDTraits >::numericEpsilon ( Dune::index_constant< i >  ,
const std::string &  paramGroup 
) const
inlineinherited

return the numeric epsilon used for deflecting primary variables of coupled domain i

◆ pointSourceData() [1/3]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
std::vector< PointSourceData > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::pointSourceData ( )
inlineprotected

Return reference to point source data vector member.

◆ pointSourceData() [2/3]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
const std::vector< PointSourceData > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::pointSourceData ( ) const
inline

Return reference to point source data vector member.

◆ pointSourceData() [3/3]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
const PointSourceData & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::pointSourceData ( std::size_t  id) const
inline

Methods to be accessed by the subproblems.

Return a reference to the pointSource data

◆ pointSources() [1/2]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i>
std::vector< PointSource< i > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::pointSources ( Dune::index_constant< i >  dom)
inlineprotected

Return the point source if domain i.

◆ pointSources() [2/2]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i>
const std::vector< PointSource< i > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::pointSources ( Dune::index_constant< i >  dom) const
inline

Return the point source if domain i.

◆ precomputeVertexIndices()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t id>
void Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::precomputeVertexIndices ( Dune::index_constant< id >  domainIdx)
inlineprotected

computes the vertex indices per element for the box method

◆ problem()

const Problem< i > & Dumux::CouplingManager< MDTraits >::problem ( Dune::index_constant< i >  domainIdx) const
inlineinherited

Return a reference to the sub problem.

Parameters
domainIdxThe domain index

◆ setSubProblem()

void Dumux::CouplingManager< MDTraits >::setSubProblem ( std::shared_ptr< SubProblem >  problem,
Dune::index_constant< i >  domainIdx 
)
inlineinherited

set a pointer to one of the sub problems

Parameters
problema pointer to the sub problem
domainIdxthe domain index of the sub problem

◆ setSubProblems()

void Dumux::CouplingManager< MDTraits >::setSubProblems ( const std::tuple< std::shared_ptr< SubProblems >... > &  problems)
inlineinherited

set the pointers to the sub problems

Parameters
problemsA tuple of shared pointers to the sub problems

◆ updateAfterGridAdaption()

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
void Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::updateAfterGridAdaption ( std::shared_ptr< const GridGeometry< bulkIdx > >  bulkGridGeometry,
std::shared_ptr< const GridGeometry< lowDimIdx > >  lowDimGridGeometry 
)
inline

call this after grid adaption

◆ updateCoupledVariables()

void Dumux::CouplingManager< MDTraits >::updateCoupledVariables ( Dune::index_constant< i >  domainI,
const LocalAssemblerI &  localAssemblerI,
UpdatableElementVolVars &  elemVolVars,
UpdatableFluxVarCache &  elemFluxVarsCache 
)
inlineinherited

update variables of domain i that depend on variables in domain j after the coupling context has been updated

Parameters
domainIthe index of domain i
localAssemblerIthe local assembler assembling the element residual of an element of domain i
elemVolVarsthe element volume variables (all volume variables in the element local stencil) to be updated
elemFluxVarsCachethe element flux variable cache (all flux variables in the element local stencil) to be updated
Note
Such variables do not necessarily exist and then this function does nothing (default)
some examples from geomechanics: the porosity of (physical) domain i (porous medium flow) depends on the displacement vector of physical domain j (mechnanics) from domaindecomposition: the transmissibilities for fluxes of domain i to domain j depend on the permeability in domain j (which might depend in turn on the primary variables of domain i)

◆ updateCouplingContext()

void Dumux::CouplingManager< MDTraits >::updateCouplingContext ( Dune::index_constant< i >  domainI,
const LocalAssemblerI &  localAssemblerI,
Dune::index_constant< j >  domainJ,
std::size_t  dofIdxGlobalJ,
const PrimaryVariables< j > &  priVarsJ,
int  pvIdxJ 
)
inlineinherited

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

Parameters
domainIthe domain index of domain i
localAssemblerIthe local assembler assembling the element residual of an element of domain i
domainJthe domain index of domain j
dofIdxGlobalJthe index of the degree of freedom of domain j whose solution changed
priVarsJthe new solution at the degree of freedom of domain j with index dofIdxGlobalJ
pvIdxJthe index of the primary variable of domain j which has been updated
Note
this concerns all data that is used in the evaluation of the element residual and depends on the primary variables at the degree of freedom location with index dofIdxGlobalJ
the element whose residual is to be evaluated can be retrieved from the local assembler as localAssemblerI.element()
per default, we udpate the solution vector, if the element residual of domain i depends on more than the primary variables of domain j update the other dependent data here by overloading this function

◆ updateSolution()

void Dumux::CouplingManager< MDTraits >::updateSolution ( const SolutionVector curSol)
inlineinherited

Updates the entire solution vector, e.g. before assembly or after grid adaption.

◆ vertexIndices() [1/2]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i>
std::vector< std::vector< GridIndex< i > > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::vertexIndices ( Dune::index_constant< i >  dom)
inlineprotected

Return a reference to the vertex indices container.

◆ vertexIndices() [2/2]

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
template<std::size_t i>
std::vector< GridIndex< i > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::vertexIndices ( Dune::index_constant< i >  dom,
GridIndex< i >  eIdx 
)
inlineprotected

Return a reference to the vertex indices.

Member Data Documentation

◆ idCounter_

template<class MDTraits , class Implementation , class PSTraits = DefaultPointSourceTraits<MDTraits>>
std::size_t Dumux::EmbeddedCouplingManagerBase< MDTraits, Implementation, PSTraits >::idCounter_ = 0
protected

id generator for point sources


The documentation for this class was generated from the following file: