version 3.9-dev
Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > Class Template Reference

Manages the coupling between bulk elements and lower dimensional elements. More...

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

Inheritance diagram for Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection >:

Description

template<class MDTraits>
class Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection >

The method is described in detail in the article "Projection-based resolved interface mixed-dimension method for embedded tubular network systems" by Timo Koch (2021) available at https://arxiv.org/abs/2106.06358

The network is represented as a line segment network. The bulk domain explicitly resolves the wall of the tube network (e.g. blood vessel wall, outer root wall), so this generally requires an unstructured grid. The coupling term coupling the PDEs on the network and in the bulk domain is integrated over the coupling surface and each integration point couples to quantities evaluated at the closest point on the graph. There is a unique mapping from every point on the virtual tube surface to the tube centerline, therefore this coupling is determined by mapping to the closest point on the virtual surface and then evaluating the 1D quantity on the mapped centerline point. (The inverse mapping may be non-unique.)

The original paper also includes an algorithm for computing exact intersection for the surface quadrature in case of simple straight vessels. However, as a comparison in the paper shows that the suggested approximate quadrature is exact enough (configured by parameter MixedDimension.Projection.SimplexIntegrationRefine specifying the number of (adaptive local) virtual refinements of a surface facet for integration), only the approximate general purpose algorithm is included in this implementation. Only one quadrature point will be added for each surface element and coupled 1D dof including all contribution evaluated by local refinement. That means the virtual refinement doesn't increase the number of integration points and additionally is also optimized by using local adaptive refinement only in the places where the index mapping to the 1D degree of freedom is still multivalent.

Coupling sources are implement in terms of point sources at quadrature points to make it easy to reuse code written for other 1D-3D coupling manager modes.

This algorithm can be configured by several parameters (although this is usually not necessary as there are sensible defaults):

  • MixedDimension.Projection.SimplexIntegrationRefine number of virtual refinement steps to determine coupled surface area
  • MixedDimension.Projection.EnableIntersectionOutput set to true to enable debug VTK output for intersections
  • MixedDimension.Projection.EstimateNumberOfPointSources provide an estimate for the expected number of coupling points for memory allocation
  • MixedDimension.Projection.CoupledRadiusFactor threshold distance in which to search for coupled elements (specified as multiple of radius, default 0.1)
  • MixedDimension.Projection.CoupledAngleFactor angle threshold in which to search for coupled elements (angle in radians from surface normal vector, default 0.3)
  • MixedDimension.Projection.ConsiderFacesWithinBoundingBoxCoupled determines if all 3D boundary facets within the mesh bounding box should be considered as coupling faces
  • MixedDimension.Projection.CoupledBoundingBoxShrinkingFactor if ConsiderFacesWithinBoundingBoxCoupled=true shrink the bounding box in all directions by this factor

Public Types

using MultiDomainTraits = MDTraits
 export traits More...
 
using PointSourceTraits = DefaultPointSourceTraits< MDTraits >
 export the point source traits More...
 
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 init (std::shared_ptr< Problem< bulkIdx > > bulkProblem, std::shared_ptr< Problem< lowDimIdx > > lowDimProblem, const SolutionVector &curSol)
 
void computePointSourceData (std::size_t order=1, bool verbose=false)
 
Scalar radius (std::size_t id) const
 Methods to be accessed by the subproblems. More...
 
const std::vector< int > & bulkElementMarker () const
 Marker that is non-zero for bulk elements that are coupled. More...
 
const std::vector< int > & bulkVertexMarker () const
 Marker that is non-zero for bulk vertices that belong to coupled surface facets. More...
 
const std::vector< Scalar > & localAreaFactor () const
 
void updateAfterGridAdaption (std::shared_ptr< const GridGeometry< bulkIdx > > bulkGridGeometry, std::shared_ptr< const GridGeometry< lowDimIdx > > lowDimGridGeometry)
 call this after grid adaption 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...
 
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...
 
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...
 
const PointSourceData & pointSourceData (std::size_t id) const
 Methods to be accessed by the subproblems. More...
 
const std::vector< PointSourceData > & pointSourceData () const
 Return reference to point source data vector member. More...
 
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...
 
const std::vector< PointSource< i > > & pointSources (Dune::index_constant< i > dom) const
 Return the point source if domain i. More...
 
const CouplingStencils< i > & couplingStencils (Dune::index_constant< i > dom) const
 Return reference to bulk coupling stencil member of domain i. More...
 
const CouplingStencil< i > & emptyStencil (Dune::index_constant< i > dom) const
 Return a reference to an empty stencil. More...
 
auto & curSol (Dune::index_constant< i > domainIdx)
 the solution vector of the subproblem More...
 
const auto & curSol (Dune::index_constant< i > domainIdx) const
 the solution vector of the subproblem More...
 
void computeColorsForAssembly ()
 Compute colors for multithreaded assembly. More...
 
void assembleMultithreaded (Dune::index_constant< i > domainId, AssembleElementFunc &&assembleElement) const
 Execute assembly kernel in parallel. More...
 
const CouplingStencil< bulkIdx > & extendedSourceStencil (std::size_t eIdx) const
 Extended source stencil (for the bulk 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 Embedded1d3dCouplingMode::Projection couplingMode {}
 

Protected Types

using SolutionVectorStorage = typename Traits::template TupleOfSharedPtr< SubSolutionVector >
 the type in which the solution vector is stored in the manager More...
 

Protected Member Functions

std::vector< PointSourceData > & pointSourceData ()
 Return reference to point source data vector member. More...
 
std::vector< PointSource< i > > & pointSources (Dune::index_constant< i > dom)
 Return the point source if domain i. More...
 
CouplingStencils< i > & couplingStencils (Dune::index_constant< i > dom)
 Return reference to bulk coupling stencil member of domain i. More...
 
void precomputeVertexIndices (Dune::index_constant< id > domainIdx)
 computes the vertex indices per element for the box method More...
 
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< Scalar > & averageDistanceToBulkCell ()
 Return reference to average distances to bulk cell. More...
 
std::vector< GridIndex< i > > & vertexIndices (Dune::index_constant< i > dom, GridIndex< i > eIdx)
 Return a reference to the vertex indices. More...
 
std::vector< std::vector< GridIndex< i > > > & vertexIndices (Dune::index_constant< i > dom)
 Return a reference to the vertex indices container. More...
 
const GlueTypeglue () const
 
Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > & asImp_ ()
 Returns the implementation of the problem (i.e. static polymorphism) More...
 
const Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > & asImp_ () const
 Returns the implementation of the problem (i.e. static polymorphism) More...
 

Protected Attributes

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

member functions concerning variable caching for element residual evaluations

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 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 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...
 
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...
 
void attachSolution (SolutionVectorStorage &curSol)
 Attach a solution vector stored outside of this class. More...
 

Member Typedef Documentation

◆ CouplingStencils

using Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::CouplingStencils = std::unordered_map<GridIndex<id>, CouplingStencil<id> >
inherited

◆ CouplingStencilType

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

◆ MultiDomainTraits

using Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::MultiDomainTraits = MDTraits
inherited

◆ PointSourceTraits

◆ SolutionVectorStorage

using Dumux::CouplingManager< MDTraits >::SolutionVectorStorage = typename Traits::template TupleOfSharedPtr<SubSolutionVector>
protectedinherited

Member Function Documentation

◆ asImp_() [1/2]

◆ asImp_() [2/2]

◆ assembleMultithreaded()

void Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::assembleMultithreaded ( Dune::index_constant< i >  domainId,
AssembleElementFunc &&  assembleElement 
) const
inlineinherited
Parameters
domainIdthe domain index of domain i
assembleElementkernel function to execute for one element

◆ attachSolution()

void Dumux::CouplingManager< MDTraits >::attachSolution ( SolutionVectorStorage curSol)
inlineprotectedinherited
Note
The caller has to make sure that curSol stays alive for the lifetime of the coupling manager. Otherwise we have a dangling reference here. Use with care.

◆ averageDistance()

Scalar Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::averageDistance ( std::size_t  id) const
inlineinherited

◆ averageDistanceToBulkCell()

std::vector< Scalar > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::averageDistanceToBulkCell ( )
inlineprotectedinherited

◆ bindCouplingContext()

void Dumux::CouplingManager< MDTraits >::bindCouplingContext ( Dune::index_constant< i >  domainI,
const Element< i > &  elementI,
const Assembler &  assembler 
)
inlineinherited
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

◆ bulkElementMarker()

template<class MDTraits >
const std::vector< int > & Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection >::bulkElementMarker ( ) const
inline

◆ bulkPointSources()

const std::vector< PointSource< bulkIdx > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::bulkPointSources ( ) const
inlineinherited

◆ bulkPriVars()

PrimaryVariables< bulkIdx > Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::bulkPriVars ( std::size_t  id) const
inlineinherited

◆ bulkVertexMarker()

template<class MDTraits >
const std::vector< int > & Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection >::bulkVertexMarker ( ) const
inline

◆ clear()

void Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::clear ( )
inlineprotectedinherited

◆ computeColorsForAssembly()

void Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::computeColorsForAssembly ( )
inlineinherited

◆ computePointSourceData()

template<class MDTraits >
void Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection >::computePointSourceData ( std::size_t  order = 1,
bool  verbose = false 
)
inline

◆ couplingStencil()

const CouplingStencil< j > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::couplingStencil ( Dune::index_constant< i >  domainI,
const Element< i > &  element,
Dune::index_constant< j >  domainJ 
) const
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

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]

CouplingStencils< i > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::couplingStencils ( Dune::index_constant< i >  dom)
inlineprotectedinherited

◆ couplingStencils() [2/2]

const CouplingStencils< i > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::couplingStencils ( Dune::index_constant< i >  dom) const
inlineinherited

◆ curSol() [1/2]

auto & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::curSol ( Dune::index_constant< i >  domainIdx)
inlineinherited
Parameters
domainIdxThe domain index
Note
in case of numeric differentiation the solution vector always carries the deflected solution

◆ curSol() [2/2]

const auto & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::curSol ( Dune::index_constant< i >  domainIdx) const
inlineinherited
Parameters
domainIdxThe domain index
Note
in case of numeric differentiation the solution vector always carries the deflected solution

◆ emptyStencil()

const CouplingStencil< i > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::emptyStencil ( Dune::index_constant< i >  dom) const
inlineinherited

◆ 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
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]

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

◆ extendedSourceStencil()

const CouplingStencil< bulkIdx > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::extendedSourceStencil ( std::size_t  eIdx) const
inlineinherited
Note
The default returns an empty stencil but some of the embedded coupling managers use this

◆ extendJacobianPattern()

void Dumux::CouplingManager< MDTraits >::extendJacobianPattern ( Dune::index_constant< id >  domainI,
JacobianPattern &  pattern 
) const
inlineinherited
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
if you overload this also implement evalAdditionalDomainDerivatives

◆ getShapeValues()

void Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::getShapeValues ( Dune::index_constant< i >  domainI,
const FVGG &  gridGeometry,
const Geometry &  geo,
const GlobalPosition &  globalPos,
ShapeValues &  shapeValues 
)
inlineprotectedinherited

◆ glue()

const GlueType & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::glue ( ) const
inlineprotectedinherited

◆ glueGrids()

void Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::glueGrids ( )
inlineprotectedinherited

◆ gridView()

const GridView< id > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::gridView ( Dune::index_constant< id >  domainIdx) const
inlineinherited

◆ init() [1/2]

template<class MDTraits >
void Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection >::init ( std::shared_ptr< Problem< bulkIdx > >  bulkProblem,
std::shared_ptr< Problem< lowDimIdx > >  lowDimProblem,
const SolutionVector &  curSol 
)
inline

◆ init() [2/2]

void Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::init ( std::shared_ptr< Problem< bulkIdx > >  bulkProblem,
std::shared_ptr< Problem< lowDimIdx > >  lowDimProblem,
const SolutionVector curSol 
)
inlineinherited

◆ localAreaFactor()

template<class MDTraits >
const std::vector< Scalar > & Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection >::localAreaFactor ( ) const
inline

For each 1D element, the ratio of associated discrete bulk surface area to the theoretical bulk surface area resulting from assuming a cylinder-shaped segment (excluding cylinder caps).

◆ lowDimPointSources()

const std::vector< PointSource< lowDimIdx > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::lowDimPointSources ( ) const
inlineinherited

◆ lowDimPriVars()

PrimaryVariables< lowDimIdx > Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::lowDimPriVars ( std::size_t  id) const
inlineinherited

◆ numericEpsilon()

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

◆ pointSourceData() [1/3]

std::vector< PointSourceData > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::pointSourceData ( )
inlineprotectedinherited

◆ pointSourceData() [2/3]

const std::vector< PointSourceData > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::pointSourceData ( ) const
inlineinherited

◆ pointSourceData() [3/3]

const PointSourceData & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::pointSourceData ( std::size_t  id) const
inlineinherited

Return a reference to the pointSource data

◆ pointSources() [1/2]

std::vector< PointSource< i > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::pointSources ( Dune::index_constant< i >  dom)
inlineprotectedinherited

◆ pointSources() [2/2]

const std::vector< PointSource< i > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::pointSources ( Dune::index_constant< i >  dom) const
inlineinherited

◆ precomputeVertexIndices()

void Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::precomputeVertexIndices ( Dune::index_constant< id >  domainIdx)
inlineprotectedinherited

◆ problem()

const Problem< i > & Dumux::CouplingManager< MDTraits >::problem ( Dune::index_constant< i >  domainIdx) const
inlineinherited
Parameters
domainIdxThe domain index We avoid exception handling here because the performance of this function is critical

◆ radius()

template<class MDTraits >
Scalar Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection >::radius ( std::size_t  id) const
inline

Return a reference to the bulk problem

◆ setSubProblem()

void Dumux::CouplingManager< MDTraits >::setSubProblem ( std::shared_ptr< SubProblem >  problem,
Dune::index_constant< i >  domainIdx 
)
inlineinherited
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
Parameters
problemsA tuple of shared pointers to the sub problems

◆ updateAfterGridAdaption()

void Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::updateAfterGridAdaption ( std::shared_ptr< const GridGeometry< bulkIdx > >  bulkGridGeometry,
std::shared_ptr< const GridGeometry< lowDimIdx > >  lowDimGridGeometry 
)
inlineinherited

◆ updateCoupledVariables()

void Dumux::CouplingManager< MDTraits >::updateCoupledVariables ( Dune::index_constant< i >  domainI,
const LocalAssemblerI &  localAssemblerI,
UpdatableElementVolVars &  elemVolVars,
UpdatableFluxVarCache &  elemFluxVarsCache 
)
inlineinherited
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 (mechanics) 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
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 update 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

◆ vertexIndices() [1/2]

std::vector< std::vector< GridIndex< i > > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::vertexIndices ( Dune::index_constant< i >  dom)
inlineprotectedinherited

◆ vertexIndices() [2/2]

std::vector< GridIndex< i > > & Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::vertexIndices ( Dune::index_constant< i >  dom,
GridIndex< i >  eIdx 
)
inlineprotectedinherited

Member Data Documentation

◆ couplingMode

template<class MDTraits >
constexpr Embedded1d3dCouplingMode::Projection Dumux::Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection >::couplingMode {}
staticconstexpr

◆ idCounter_

std::size_t Dumux::EmbeddedCouplingManagerBase< MDTraits, Embedded1d3dCouplingManager< MDTraits, Embedded1d3dCouplingMode::Projection > , DefaultPointSourceTraits<MDTraits> >::idCounter_
protectedinherited

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