25#ifndef DUMUX_DISCRETIZATION_CC_MPFA_INTERACTIONVOLUMEDATAHANDLE_HH
26#define DUMUX_DISCRETIZATION_CC_MPFA_INTERACTIONVOLUMEDATAHANDLE_HH
31#include <dune/common/dynvector.hh>
36namespace CCMpfaDataHandleBases {
59template<
class MVT,
int size1,
int size2>
62 using AMatrix =
typename MVT::AMatrix;
63 using BMatrix =
typename MVT::BMatrix;
64 using CMatrix =
typename MVT::CMatrix;
65 using TMatrix =
typename MVT::TMatrix;
66 using CellVector =
typename MVT::CellVector;
67 using OutsideTij = std::vector< std::vector<CellVector> >;
68 using OmegaStorage =
typename MVT::OmegaStorage;
99 std::array< std::array<OmegaStorage, size2>, size1 >
wijk_;
101 std::array< std::array<TMatrix, size2>, size1 >
T_;
102 std::array< std::array<AMatrix, size2>, size1 >
A_;
103 std::array< std::array<BMatrix, size2>, size1 >
AB_;
104 std::array< std::array<CMatrix, size2>, size1 >
CA_;
117template<
class MVT,
int size1,
int size2>
120 using CellVector =
typename MVT::CellVector;
137 std::array< std::array<CellVector, size2>, size1 >
u_;
146template<
class MatVecTraits,
class PhysicsTraits,
bool EnableAdvection>
156 static constexpr int numPhases = PhysicsTraits::numPhases;
159 using UnknownVector =
typename MatVecTraits::AMatrix::row_type;
160 using FaceVector =
typename MatVecTraits::FaceVector;
161 using FaceScalar =
typename FaceVector::value_type;
162 using OutsideGravityStorage = std::vector< std::vector<FaceScalar> >;
181 std::array< FaceVector, numPhases > g_;
182 std::array< UnknownVector, numPhases > deltaG_;
183 std::array< OutsideGravityStorage, numPhases > outsideG_;
187template<
class MatVecTraits,
class PhysicsTraits,
bool EnableDiffusion>
192 static constexpr int numPhases = PhysicsTraits::numPhases;
193 static constexpr int numComponents = PhysicsTraits::numComponents;
206template<
class MatVecTraits,
class PhysicsTraits,
bool enableHeatConduction>
213template<
class MatVecTraits,
class PhysicsTraits>
215template<
class MatVecTraits,
class PhysicsTraits>
217template<
class MatVecTraits,
class PhysicsTraits>
227template<
class MVT,
class PT>
The infrastructure to retrieve run-time parameters from Dune::ParameterTrees.
Common base class to all handles. Stores arrays of the matrices involved in the interaction volume-lo...
Definition: interactionvolumedatahandle.hh:61
std::array< std::array< OutsideTij, size2 >, size1 > tijOutside_
The transmissibilities for "outside" faces (on surface grids)
Definition: interactionvolumedatahandle.hh:105
std::array< std::array< CMatrix, size2 >, size1 > CA_
A_ right multiplied to C.
Definition: interactionvolumedatahandle.hh:104
void setContextIndex1(unsigned int idx) const
functionality to set the context indices
Definition: interactionvolumedatahandle.hh:91
std::array< std::array< TMatrix, size2 >, size1 > T_
The transmissibility matrix.
Definition: interactionvolumedatahandle.hh:101
unsigned int contextIdx2_
Definition: interactionvolumedatahandle.hh:97
const OmegaStorage & omegas() const
Definition: interactionvolumedatahandle.hh:87
BMatrix & AB()
Definition: interactionvolumedatahandle.hh:79
OutsideTij & tijOutside()
Definition: interactionvolumedatahandle.hh:85
std::array< std::array< BMatrix, size2 >, size1 > AB_
A_ left multiplied to B.
Definition: interactionvolumedatahandle.hh:103
const OutsideTij & tijOutside() const
Definition: interactionvolumedatahandle.hh:84
TMatrix & T()
Definition: interactionvolumedatahandle.hh:82
CMatrix & CA()
Definition: interactionvolumedatahandle.hh:73
const BMatrix & AB() const
Definition: interactionvolumedatahandle.hh:78
unsigned int contextIdx1_
indices to be set before accessing data
Definition: interactionvolumedatahandle.hh:96
AMatrix & A()
Definition: interactionvolumedatahandle.hh:76
std::array< std::array< OmegaStorage, size2 >, size1 > wijk_
The omega factors that form the entries of the matrices.
Definition: interactionvolumedatahandle.hh:99
const CMatrix & CA() const
Access functions to context-dependent data.
Definition: interactionvolumedatahandle.hh:72
std::array< std::array< AMatrix, size2 >, size1 > A_
Inverse of the iv-local system matrix.
Definition: interactionvolumedatahandle.hh:102
const AMatrix & A() const
Definition: interactionvolumedatahandle.hh:75
OmegaStorage & omegas()
Definition: interactionvolumedatahandle.hh:88
void setContextIndex2(unsigned int idx) const
Definition: interactionvolumedatahandle.hh:92
const TMatrix & T() const
Definition: interactionvolumedatahandle.hh:81
Common base class to all handles. Stores arrays of the vectors involved in the interaction volume-loc...
Definition: interactionvolumedatahandle.hh:119
unsigned int contextIdx1_
indices to be set before accessing data
Definition: interactionvolumedatahandle.hh:133
CellVector & uj()
Definition: interactionvolumedatahandle.hh:125
std::array< std::array< CellVector, size2 >, size1 > u_
The interaction volume-local known values.
Definition: interactionvolumedatahandle.hh:137
void setContextIndex2(unsigned int idx) const
Definition: interactionvolumedatahandle.hh:130
const CellVector & uj() const
Access to the iv-wide known cell/Dirichlet values.
Definition: interactionvolumedatahandle.hh:124
unsigned int contextIdx2_
Definition: interactionvolumedatahandle.hh:134
void setContextIndex1(unsigned int idx) const
functionality to set the context indices
Definition: interactionvolumedatahandle.hh:129
Empty data handle class.
Definition: interactionvolumedatahandle.hh:143
Data handle for quantities related to advection.
Definition: interactionvolumedatahandle.hh:150
const UnknownVector & deltaG() const
The deltaG vector for gravity within the iv-local eq-system.
Definition: interactionvolumedatahandle.hh:173
const OutsideGravityStorage & gOutside() const
The gravitational acceleration for one phase on "outside" faces (used on surface grids)
Definition: interactionvolumedatahandle.hh:177
void setPhaseIndex(unsigned int phaseIdx) const
Set the phase index of the context.
Definition: interactionvolumedatahandle.hh:166
OutsideGravityStorage & gOutside()
Definition: interactionvolumedatahandle.hh:178
UnknownVector & deltaG()
Definition: interactionvolumedatahandle.hh:174
const FaceVector & g() const
The gravitational flux contributions for a phase on all faces.
Definition: interactionvolumedatahandle.hh:169
FaceVector & g()
Definition: interactionvolumedatahandle.hh:170
Data handle for quantities related to diffusion.
Definition: interactionvolumedatahandle.hh:191
void setComponentIndex(unsigned int compIdx) const
Definition: interactionvolumedatahandle.hh:201
void setPhaseIndex(unsigned int phaseIdx) const
diffusion caches need to set phase and component index
Definition: interactionvolumedatahandle.hh:199
Data handle for quantities related to heat conduction.
Definition: interactionvolumedatahandle.hh:210
Class for the interaction volume data handle.
Definition: interactionvolumedatahandle.hh:229
HeatConductionDataHandle< MVT, PT, PT::enableHeatConduction > HeatConductionHandle
Definition: interactionvolumedatahandle.hh:235
DiffusionDataHandle< MVT, PT, PT::enableMolecularDiffusion > DiffusionHandle
Definition: interactionvolumedatahandle.hh:234
DiffusionHandle & diffusionHandle()
Definition: interactionvolumedatahandle.hh:243
HeatConductionHandle & heatConductionHandle()
Definition: interactionvolumedatahandle.hh:247
const HeatConductionHandle & heatConductionHandle() const
return references to the handle containing data related to heat conduction
Definition: interactionvolumedatahandle.hh:246
AdvectionHandle & advectionHandle()
Definition: interactionvolumedatahandle.hh:239
const DiffusionHandle & diffusionHandle() const
return references to the handle containing data related to diffusion
Definition: interactionvolumedatahandle.hh:242
AdvectionDataHandle< MVT, PT, PT::enableAdvection > AdvectionHandle
export the underlying process-specific handle types
Definition: interactionvolumedatahandle.hh:233
const AdvectionHandle & advectionHandle() const
return references to the handle containing data related to advection
Definition: interactionvolumedatahandle.hh:238