13#ifndef DUMUX_DISCRETIZATION_CC_MPFA_INTERACTIONVOLUMEDATAHANDLE_HH 
   14#define DUMUX_DISCRETIZATION_CC_MPFA_INTERACTIONVOLUMEDATAHANDLE_HH 
   19#include <dune/common/dynvector.hh> 
   47template<
class MVT, 
int size1, 
int size2>
 
   50    using AMatrix = 
typename MVT::AMatrix;
 
   51    using BMatrix = 
typename MVT::BMatrix;
 
   52    using CMatrix = 
typename MVT::CMatrix;
 
   53    using TMatrix = 
typename MVT::TMatrix;
 
   54    using CellVector = 
typename MVT::CellVector;
 
   55    using OutsideTij = std::vector< std::vector<CellVector> >;
 
   56    using OmegaStorage = 
typename MVT::OmegaStorage;
 
   87    std::array< std::array<OmegaStorage, size2>, size1 > 
wijk_;     
 
   89    std::array< std::array<TMatrix, size2>, size1 > 
T_;             
 
   90    std::array< std::array<AMatrix, size2>, size1 > 
A_;             
 
   91    std::array< std::array<BMatrix, size2>, size1 > 
AB_;            
 
   92    std::array< std::array<CMatrix, size2>, size1 > 
CA_;            
 
   93    std::array< std::array<OutsideTij, size2>, size1 > 
tijOutside_; 
 
 
  105template<
class MVT, 
int size1, 
int size2>
 
  108    using CellVector = 
typename MVT::CellVector;
 
  125    std::array< std::array<CellVector, size2>, size1 > 
u_;
 
 
 
  137template<
class MatVecTraits, 
class PhysicsTraits, 
bool EnableAdvection>
 
  147    static constexpr int numPhases = PhysicsTraits::numPhases;
 
  150    using UnknownVector = 
typename MatVecTraits::AMatrix::row_type;
 
  151    using FaceVector = 
typename MatVecTraits::FaceVector;
 
  152    using FaceScalar = 
typename FaceVector::value_type;
 
  153    using OutsideGravityStorage = std::vector< std::vector<FaceScalar> >;
 
  172    std::array< FaceVector, numPhases > g_; 
 
  173    std::array< UnknownVector, numPhases > deltaG_; 
 
  174    std::array< OutsideGravityStorage, numPhases > outsideG_;  
 
 
  181template<
class MatVecTraits, 
class PhysicsTraits, 
bool EnableDiffusion>
 
  186    static constexpr int numPhases = PhysicsTraits::numPhases;
 
  187    static constexpr int numComponents = PhysicsTraits::numComponents;
 
 
  203template<
class MatVecTraits, 
class PhysicsTraits, 
bool enableHeatConduction>
 
  210template<
class MatVecTraits, 
class PhysicsTraits>
 
  212template<
class MatVecTraits, 
class PhysicsTraits>
 
  214template<
class MatVecTraits, 
class PhysicsTraits>
 
  224template<
class MVT, 
class PT>
 
Data handle for quantities related to advection.
Definition interactionvolumedatahandle.hh:141
const UnknownVector & deltaG() const
The deltaG vector for gravity within the iv-local eq-system.
Definition interactionvolumedatahandle.hh:164
const OutsideGravityStorage & gOutside() const
The gravitational acceleration for one phase on "outside" faces (used on surface grids)
Definition interactionvolumedatahandle.hh:168
void setPhaseIndex(unsigned int phaseIdx) const
Set the phase index of the context.
Definition interactionvolumedatahandle.hh:157
OutsideGravityStorage & gOutside()
Definition interactionvolumedatahandle.hh:169
UnknownVector & deltaG()
Definition interactionvolumedatahandle.hh:165
const FaceVector & g() const
The gravitational flux contributions for a phase on all faces.
Definition interactionvolumedatahandle.hh:160
FaceVector & g()
Definition interactionvolumedatahandle.hh:161
Common base class to all handles. Stores arrays of the matrices involved in the interaction volume-lo...
Definition interactionvolumedatahandle.hh:49
std::array< std::array< OutsideTij, size2 >, size1 > tijOutside_
Definition interactionvolumedatahandle.hh:93
std::array< std::array< CMatrix, size2 >, size1 > CA_
Definition interactionvolumedatahandle.hh:92
void setContextIndex1(unsigned int idx) const
functionality to set the context indices
Definition interactionvolumedatahandle.hh:79
std::array< std::array< TMatrix, size2 >, size1 > T_
Definition interactionvolumedatahandle.hh:89
unsigned int contextIdx2_
Definition interactionvolumedatahandle.hh:85
const OmegaStorage & omegas() const
Definition interactionvolumedatahandle.hh:75
BMatrix & AB()
Definition interactionvolumedatahandle.hh:67
OutsideTij & tijOutside()
Definition interactionvolumedatahandle.hh:73
std::array< std::array< BMatrix, size2 >, size1 > AB_
Definition interactionvolumedatahandle.hh:91
const OutsideTij & tijOutside() const
Definition interactionvolumedatahandle.hh:72
TMatrix & T()
Definition interactionvolumedatahandle.hh:70
CMatrix & CA()
Definition interactionvolumedatahandle.hh:61
const BMatrix & AB() const
Definition interactionvolumedatahandle.hh:66
unsigned int contextIdx1_
Definition interactionvolumedatahandle.hh:84
AMatrix & A()
Definition interactionvolumedatahandle.hh:64
std::array< std::array< OmegaStorage, size2 >, size1 > wijk_
Definition interactionvolumedatahandle.hh:87
const CMatrix & CA() const
Access functions to context-dependent data.
Definition interactionvolumedatahandle.hh:60
std::array< std::array< AMatrix, size2 >, size1 > A_
Definition interactionvolumedatahandle.hh:90
const AMatrix & A() const
Definition interactionvolumedatahandle.hh:63
OmegaStorage & omegas()
Definition interactionvolumedatahandle.hh:76
void setContextIndex2(unsigned int idx) const
Definition interactionvolumedatahandle.hh:80
const TMatrix & T() const
Definition interactionvolumedatahandle.hh:69
Common base class to all handles. Stores arrays of the vectors involved in the interaction volume-loc...
Definition interactionvolumedatahandle.hh:107
unsigned int contextIdx1_
Definition interactionvolumedatahandle.hh:121
CellVector & uj()
Definition interactionvolumedatahandle.hh:113
std::array< std::array< CellVector, size2 >, size1 > u_
Definition interactionvolumedatahandle.hh:125
void setContextIndex2(unsigned int idx) const
Definition interactionvolumedatahandle.hh:118
const CellVector & uj() const
Access to the iv-wide known cell/Dirichlet values.
Definition interactionvolumedatahandle.hh:112
unsigned int contextIdx2_
Definition interactionvolumedatahandle.hh:122
void setContextIndex1(unsigned int idx) const
functionality to set the context indices
Definition interactionvolumedatahandle.hh:117
Data handle for quantities related to diffusion.
Definition interactionvolumedatahandle.hh:185
void setComponentIndex(unsigned int compIdx) const
Definition interactionvolumedatahandle.hh:195
void setPhaseIndex(unsigned int phaseIdx) const
diffusion caches need to set phase and component index
Definition interactionvolumedatahandle.hh:193
Empty data handle class.
Definition interactionvolumedatahandle.hh:131
Data handle for quantities related to heat conduction.
Definition interactionvolumedatahandle.hh:207
Class for the interaction volume data handle.
Definition interactionvolumedatahandle.hh:226
HeatConductionDataHandle< PrimaryMatVecTraits, PhysicsTraits, PhysicsTraits::enableHeatConduction > HeatConductionHandle
Definition interactionvolumedatahandle.hh:232
DiffusionDataHandle< PrimaryMatVecTraits, PhysicsTraits, PhysicsTraits::enableMolecularDiffusion > DiffusionHandle
Definition interactionvolumedatahandle.hh:231
DiffusionHandle & diffusionHandle()
Definition interactionvolumedatahandle.hh:240
HeatConductionHandle & heatConductionHandle()
Definition interactionvolumedatahandle.hh:244
const HeatConductionHandle & heatConductionHandle() const
return references to the handle containing data related to heat conduction
Definition interactionvolumedatahandle.hh:243
AdvectionHandle & advectionHandle()
Definition interactionvolumedatahandle.hh:236
const DiffusionHandle & diffusionHandle() const
return references to the handle containing data related to diffusion
Definition interactionvolumedatahandle.hh:239
AdvectionDataHandle< PrimaryMatVecTraits, PhysicsTraits, PhysicsTraits::enableAdvection > AdvectionHandle
Definition interactionvolumedatahandle.hh:230
const AdvectionHandle & advectionHandle() const
return references to the handle containing data related to advection
Definition interactionvolumedatahandle.hh:235
Definition interactionvolumedatahandle.hh:24
The infrastructure to retrieve run-time parameters from Dune::ParameterTrees.