Interaction volume container for compositional adaptive 3-d (using MPFA L-method) Model. More...
#include <dumux/porousmediumflow/2p2c/sequential/fvmpfal3dinteractionvolumecontaineradaptive.hh>
Interaction volume container for compositional adaptive 3-d (using MPFA L-method) Model.
Container class which stores MPFA-interaction-volume information for each vertex of a DUNE grid.
For the compositional case, we predominantly apply a TPFA, which is the reason why the model loops over all cells and their interfaces. This means that the in the case of a hanging node, the mpfa has to be build from an interface, so the mpfa implementation needs to be access, which is facilitated by this class. Provides methods that determines which MPFA case needs to be considered.
Public Types | |
using | InteractionVolume = typename GET_PROP_TYPE(TypeTag, MPFAInteractionVolume) |
Type for storing an MPFA-interaction-volume. (Usually of type FvMpfaL3dInteractionVolume or FvMpfaL3dInteractionVolumeAdaptive) More... | |
using | GlobalInteractionVolumeVector = std::vector< InteractionVolume > |
using | FaceAreaVector = std::vector< Dune::FieldVector< Dune::FieldVector< Scalar, 2 >, 2 *dim > > |
Public Member Functions | |
void | storeBoundaryInteractionVolume (InteractionVolume &interactionVolume, const Vertex &vertex) |
Overwrites the method from the base class FvMpfaL3dInteractionVolumeContainerAdaptive On each boundary, a TPFA is used in compositional models. Therefore we do not need to store interaction volume containers on the boundary cells. More... | |
int | getMpfaCase8cells (const IntersectionIterator &isIt, const int localidxLarge, InteractionVolume &interactionVolume, bool &properFluxDirection) |
Determine the subVolumeFaceIdx for a given intersection and interactionVolume with 8 cells. More... | |
int | getMpfaCase6cells (const IntersectionIterator &isIt, InteractionVolume &interactionVolume, bool &properFluxDirection) |
Determine the subVolumeFaceIdx for a given intersection and interactionVolume with 6 cells. More... | |
int | getMpfaCase2or4cells (const IntersectionIterator &isIt, InteractionVolume &interactionVolume, bool &properFluxDirection) |
Determine the subVolumeFaceIdx for a given intersection and interactionVolume with 2/4 cells. More... | |
FvMpfaL3d2P2CInteractionVolumeContainerAdaptive (Problem &problem) | |
std::set< int > & | faceVerticeIndices (int eIdxGlobal, int fIdx) |
Returns the set of vertices on an element face. More... | |
void | update () |
Updates the interaction volume container. More... | |
void | initialize (bool solveTwice=true) |
Initializes the interaction volume container. More... | |
InteractionVolume & | interactionVolume (int vertexIdx) |
Returns an interaction volume. More... | |
InteractionVolume & | interactionVolume (int vertexIdx) const |
Returns an interaction volume. More... | |
GlobalInteractionVolumeVector & | interactionVolumesGlobal () |
Returns the interaction volumes container. More... | |
GlobalInteractionVolumeVector & | interactionVolumesGlobal () const |
Returns the interaction volumes container. More... | |
Scalar | faceAreaFactor (InteractionVolume &interactionVolume, int elemGlobalIdx, int elemLocalIdx, int localFaceIdx) |
Returns the area weighting factor for the fluxes. More... | |
Scalar | faceAreaFactor (int elemGlobalIdx, int indexInInside) |
Returns the area weighting factor for the fluxes. More... | |
Scalar | getRealFluxFaceArea (InteractionVolume &interactionVolume, int elemGlobalIdx, int elemLocalIdx, int localFaceIdx) |
Returns the area trough which fluxes are calculated by the MPFA. More... | |
Scalar | getRealFluxFaceArea (int elemGlobalIdx, int indexInInside) |
Returns the area trough which fluxes are calculated by the MPFA. More... | |
Scalar | getRealFaceArea (InteractionVolume &interactionVolume, int elemGlobalIdx, int elemLocalIdx, int localFaceIdx) |
Returns the face area of the element. More... | |
Scalar | getRealFaceArea (int elemGlobalIdx, int indexInInside) |
Returns the face area of the element. More... | |
Protected Member Functions | |
void | storeInnerInteractionVolume (InteractionVolume &interactionVolume, const Vertex &vertex, bool sameLevel=true) |
Stores additional information which can be constructed for interaction volumes of non-boundary vertices. More... | |
void | storeInteractionVolumeInfo () |
Stores interaction volumes for each grid vertex. More... | |
void | storeSubVolumeElements (const Element &element, std::vector< std::vector< int > > &elemVertMap) |
Function for storing the elements of an interaction volume and constructing a map from a vertex to its surrounding elements. More... | |
void | storeIntersectionInfo (const Element &element, std::vector< std::vector< int > > &elemVertMap) |
Stores information with respect to DUNE intersections in the interaction volumes. More... | |
void | addRealFluxFaceArea_ (Scalar faceArea, int eIdxGlobal, int fIdx) |
void | addRealFaceArea_ (Scalar faceArea, int eIdxGlobal, int fIdx) |
Protected Attributes | |
GlobalInteractionVolumeVector | interactionVolumes_ |
FaceAreaVector | realFluxFaceArea_ |
using Dumux::FvMpfaL3d2P2CInteractionVolumeContainerAdaptive< TypeTag >::FaceAreaVector = std::vector<Dune::FieldVector<Dune::FieldVector<Scalar, 2>, 2*dim> > |
using Dumux::FvMpfaL3d2P2CInteractionVolumeContainerAdaptive< TypeTag >::GlobalInteractionVolumeVector = std::vector<InteractionVolume> |
using Dumux::FvMpfaL3d2P2CInteractionVolumeContainerAdaptive< TypeTag >::InteractionVolume = typename GET_PROP_TYPE(TypeTag, MPFAInteractionVolume) |
Type for storing an MPFA-interaction-volume. (Usually of type FvMpfaL3dInteractionVolume or FvMpfaL3dInteractionVolumeAdaptive)
|
inline |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
inlineinherited |
Returns the area weighting factor for the fluxes.
elemGlobalIdx | Global index of an element in the DUNE grid |
indexInInside | Local index of the face in the DUNE reference element |
|
inlineinherited |
Returns the area weighting factor for the fluxes.
interactionVolume | An interaction volume object |
elemGlobalIdx | Global index of an element in the DUNE grid |
elemLocalIdx | Local index of an element in the interaction volume |
localFaceIdx | Local index of a flux face with respect to an element of the interaction volume |
|
inlineinherited |
Returns the set of vertices on an element face.
The DUNE reference elements does not allow to access hanging nodes from a given element face. However, if a flux through a entire element face has to be calculated, e.g. if single fluxes have to be updated in an implicit treatment of the transport equation, it is necessary to get the complete set of vertices on a face: 4 corners + all hanging nodes.
|
inline |
Determine the subVolumeFaceIdx for a given intersection and interactionVolume with 2/4 cells.
The MPFA is about to be calculated through an intersection, and to do so, its place in the local indexing scheme, i.e. its subVolumeFaceIdx, has to be found. This method investigates the case (see FvMpfaL3dInteractionVolumeAdaptive.HangingNodeTypes ) if 2 or 4 cells are present in the current interaction region.
isIt | The iterator of the intersection the mpfa should be calculated for |
interactionVolume | The interaction volume (FvMpfaL3dInteractionVolumeAdaptive) of interest |
properFluxDirection | Indicates whether the flux through the intersection aligns with its normal |
|
inline |
Determine the subVolumeFaceIdx for a given intersection and interactionVolume with 6 cells.
The MPFA is about to be calculated through an intersection, and to do so, its place in the local indexing scheme, i.e. its subVolumeFaceIdx, has to be found. This method investigates the case (see FvMpfaL3dInteractionVolumeAdaptive.HangingNodeTypes ) if 6 cells are present in the current interaction region.
isIt | The iterator of the intersection the mpfa should be calculated for |
interactionVolume | The interaction volume (FvMpfaL3dInteractionVolumeAdaptive) of interest |
properFluxDirection | Indicates whether the flux through the intersection aligns with its normal |
|
inline |
Determine the subVolumeFaceIdx for a given intersection and interactionVolume with 8 cells.
The MPFA is about to be calculated through an intersection, and to do so, its place in the local indexing scheme, i.e. its subVolumeFaceIdx, has to be found. This method investigates the case (see FvMpfaL3dInteractionVolumeAdaptive.HangingNodeTypes ) if 8 cells are present in the current interaction region: A Interaction region where the non-adaptive MPFA-model is applied. This requires a local Index of the "large" cell (where the hanging node rests) to get the right subVolumeFaceIdx.
isIt | The iterator of the intersection the mpfa should be calculated for |
localIdxLarge | The (local) Index of the large cell (on which the hanging node lives) |
interactionVolume | The interaction volume (FvMpfaL3dInteractionVolumeAdaptive) of interest |
properFluxDirection | Indicates whether the flux through the intersection aligns with its normal |
|
inlineinherited |
Returns the face area of the element.
elemGlobalIdx | Global index of an element in the DUNE grid |
indexInInside | Local index of the face in the DUNE reference element |
|
inlineinherited |
Returns the face area of the element.
interactionVolume | An interaction volume object |
elemGlobalIdx | Global index of an element in the DUNE grid |
elemLocalIdx | Local index of an element in the interaction volume |
localFaceIdx | Local index of a flux face with respect to an element of the interaction volume |
|
inlineinherited |
Returns the area trough which fluxes are calculated by the MPFA.
elemGlobalIdx | Global index of an element in the DUNE grid |
indexInInside | Local index of the face in the DUNE reference element |
|
inlineinherited |
Returns the area trough which fluxes are calculated by the MPFA.
interactionVolume | An interaction volume object |
elemGlobalIdx | Global index of an element in the DUNE grid |
elemLocalIdx | Local index of an element in the interaction volume |
localFaceIdx | Local index of a flux face with respect to an element of the interaction volume |
|
inlineinherited |
Initializes the interaction volume container.
Builds and stores the interaction volumes for the entire grid
|
inlineinherited |
Returns an interaction volume.
vertexIdx | Global index of a vertex in the DUNE grid |
|
inlineinherited |
Returns an interaction volume.
vertexIdx | Global index of a vertex in the DUNE grid |
|
inlineinherited |
Returns the interaction volumes container.
|
inlineinherited |
Returns the interaction volumes container.
void Dumux::FvMpfaL3d2P2CInteractionVolumeContainerAdaptive< TypeTag >::storeBoundaryInteractionVolume | ( | InteractionVolume & | interactionVolume, |
const Vertex & | vertex | ||
) |
Overwrites the method from the base class FvMpfaL3dInteractionVolumeContainerAdaptive On each boundary, a TPFA is used in compositional models. Therefore we do not need to store interaction volume containers on the boundary cells.
|
protectedinherited |
Stores additional information which can be constructed for interaction volumes of non-boundary vertices.
Stores additional information which can be constructed for interaction volumes of non-boundary vertices:
Assumes a local storage following the DUNE reference element index, which is performed by the function FvMpfaL3dInteractionVolumeContainer<TypeTag>::storeSubVolumeElements(const Element& element, std::vector < std::vector<int> >& elemVertMap).
interactionVolume | An interaction volume object |
vertex | The vertex (level dim entity) for which the interaction volume is stored |
sameLevel | Level indicator: true if all elements of an interaction volume are of the same level |
|
protectedinherited |
Stores interaction volumes for each grid vertex.
|
protectedinherited |
Stores information with respect to DUNE intersections in the interaction volumes.
Stores information with respect to DUNE intersections, such as normals, in the interaction volumes. Assumes a local storage following the DUNE reference element index, which is performed by the function FvMpfaL3dInteractionVolumeContainer<TypeTag>::storeSubVolumeElements(const Element& element, std::vector < std::vector<int> >& elemVertMap).
element | A level 0 Entity of a DUNE grid |
elemVertMap | Vector containing the global vertex-element map |
|
protectedinherited |
Function for storing the elements of an interaction volume and constructing a map from a vertex to its surrounding elements.
Stores an element in all interaction volumes it belongs to. Additionally, the global index of an element is stored at the position of its local index according to a DUNE reference element for every vertex of the element.
element | A level 0 Entity of a DUNE grid |
elemVertMap | Vector containing the global vertex-element map |
|
inlineinherited |
Updates the interaction volume container.
Rebuilds and stores the interaction volumes for the entire grid
|
protectedinherited |
|
protectedinherited |