The finite volume model for the solution of the compositional pressure equation. More...
#include <dumux/porousmediumflow/2p2c/sequential/fv3dpressureadaptive.hh>
The finite volume model for the solution of the compositional pressure equation.
Provides a Finite Volume implementation for the pressure equation of a compressible system with two components. An IMPES-like method is used for the sequential solution of the problem. Diffusion is neglected, capillarity can be regarded. Isothermal conditions and local thermodynamic equilibrium are assumed. Gravity is included.
\[ c_{total}\frac{\partial p}{\partial t} + \sum_{\kappa} \frac{\partial v_{total}}{\partial C^{\kappa}} \nabla \cdot \left( \sum_{\alpha} X^{\kappa}_{\alpha} \varrho_{\alpha} \bf{v}_{\alpha}\right) = \sum_{\kappa} \frac{\partial v_{total}}{\partial C^{\kappa}} q^{\kappa}, \]
where \(\bf{v}_{\alpha} = - \lambda_{\alpha} \bf{K} \left(\nabla p_{\alpha} + \rho_{\alpha} \bf{g} \right) \). \( c_{total} \) represents the total compressibility, for constant porosity this yields \( - \frac{\partial V_{total}}{\partial p_{\alpha}} \), \(p_{\alpha} \) denotes the phase pressure, \( \bf{K} \) the absolute permeability, \( \lambda_{\alpha} \) the phase mobility, \( \rho_{\alpha} \) the phase density and \( \bf{g} \) the gravity constant and \( C^{\kappa} \) the total Component concentration. See paper SPE 99619 or "Analysis of a Compositional Model for Fluid Flow in Porous Media" by Chen, Qin and Ewing for derivation.
The pressure base class FVPressure assembles the matrix and right-hand-side vector and solves for the pressure vector, whereas this class provides the actual entries for the matrix and RHS vector. The partial derivatives of the actual fluid volume \( v_{total} \) are gained by using a secant method.
TypeTag | The Type Tag |
Public Member Functions | |
void | update () |
void | initializeMatrix () |
initializes the matrix to store the system of equations More... | |
void | initializeMatrixRowSize () |
Initialize the row sizes of the sparse global matrix. More... | |
void | initializeMatrixIndices () |
Determine position of matrix entries. More... | |
void | initialize (bool solveTwice=false) |
void | assemble (bool first) |
function which assembles the system of equations to be solved More... | |
void | getMpfaFlux (const IntersectionIterator &, const CellData &) |
Compute flux through an irregular interface using a mpfa method. More... | |
void | get1pMpfaFlux (const IntersectionIterator &, const CellData &) |
Compute single-phase flux through an irregular interface using a mpfa method. More... | |
void | updateMaterialLaws (bool fromPostTimestep=false) |
int | computeTransmissibilities (const IntersectionIterator &, TransmissivityMatrix &, GlobalPosition &, int &, GlobalPosition &, int &) |
Computes the transmissibility coefficients for the MPFA-l method in 3D. More... | |
void | adaptPressure () |
Adapt primary variables vector after adapting the grid. More... | |
FV3dPressure2P2CAdaptive (Problem &problem) | |
Constructs a FVPressure2P2C object. More... | |
void | get1pSource (EntryType &sourceEntry, const Element &elementI, const CellData &cellDataI) |
Assembles the source term. More... | |
void | get1pStorage (EntryType &storageEntry, const Element &elementI, CellData &cellDataI) |
Assembles the storage term for a 1p cell in a multiphysics framework. More... | |
void | get1pFlux (EntryType &entries, const Intersection &intersection, const CellData &cellDataI) |
The compositional single-phase flux in the multiphysics framework. More... | |
void | get1pFluxOnBoundary (EntryType &entries, const Intersection &intersection, const CellData &cellDataI) |
The compositional single-phase flux in the multiphysics framework. More... | |
void | initialize () |
Initialize pressure model. More... | |
void | serializeEntity (std::ostream &outstream, const Element &element) |
Function for serialization of the pressure field. More... | |
void | deserializeEntity (std::istream &instream, const Element &element) |
Function for deserialization of the pressure field. More... | |
void | update1pMaterialLawsInElement (const Element &elementI, CellData &cellData, bool postTimeStep) |
updates secondary variables of one single phase cell More... | |
template<class MultiWriter > | |
void | addOutputVtkFields (MultiWriter &writer) |
Write data files. More... | |
void | getSource (EntryType &sourceEntry, const Element &elementI, const CellData &cellDataI, const bool first) |
Assembles the source term. More... | |
void | getStorage (EntryType &storageEntry, const Element &elementI, const CellData &cellDataI, const bool first) |
Assembles the storage term. More... | |
void | getFlux (EntryType &entries, const Intersection &intersection, const CellData &cellDataI, const bool first) |
Get flux at an interface between two cells. More... | |
void | getFluxOnBoundary (EntryType &entries, const Intersection &intersection, const CellData &cellDataI, const bool first) |
Get flux on Boundary. More... | |
void | updateMaterialLawsInElement (const Element &elementI, bool postTimeStep) |
Updates secondary variables of one cell. More... | |
void | initialMaterialLaws (bool compositional) |
initializes the fluid distribution and hereby the variables container More... | |
void | volumeDerivatives (const GlobalPosition &, const Element &ep) |
Partial derivatives of the volumes w.r.t. changes in total concentration and pressure. More... | |
const Scalar | pressure (const int eIdxGlobal) const |
Public access function for the primary pressure variable. More... | |
const Matrix & | globalMatrix () |
Returns the global matrix of the last pressure solution step. More... | |
const RHSVector & | rightHandSide () |
Returns the right hand side vector of the last pressure solution step. More... | |
void | calculateVelocity () |
void | updateVelocity () |
void | setFixPressureAtIndex (Scalar pressure, int eIdxGlobal) |
Set a pressure to be fixed at a certain cell. More... | |
void | unsetFixPressureAtIndex (int eIdxGlobal) |
Reset the fixed pressure state. More... | |
void | resetFixPressureAtIndex () |
Protected Types | |
enum | { rhs = 1 , matrix = 0 } |
Indices of matrix and rhs entries. More... | |
using | ElementMapper = typename SolutionTypes::ElementMapper |
using | DataHandle = VectorCommDataHandleEqual< ElementMapper, Dune::BlockVector< Dune::FieldVector< int, 1 > >, 0 > |
enum | { rhs = 1 , matrix = 0 } |
Indices of matrix and rhs entries. More... | |
enum | { pressEqIdx = Indices::pressureEqIdx } |
Protected Member Functions | |
int | transmissibilityAdapter_ (const IntersectionIterator &isIt, InteractionVolume &interactionVolume, const int &subVolumeFaceIdx, bool properFluxDirection, Element &additional2, Element &additional3, TransmissivityMatrix &additionalT) |
Adapter to use the general implementation of the mpfa-l for the compositional models. More... | |
void | solve () |
Solves the global system of equations to get the spatial distribution of the pressure. More... | |
PressureSolution & | pressure () |
Returns the vector containing the pressure solution. More... | |
const PressureSolution & | pressure () const |
Returns the vector containing the pressure solution. More... | |
void | initializePressure () |
Initialization of the pressure solution vector: Initialization with meaningful values may. More... | |
Protected Attributes | |
std::map< int, std::vector< int > > | irregularCellMap_ |
Container to store all cell's Indice with a hanging node. More... | |
bool | enableVolumeIntegral_ |
Calculates the volume integral (on by default) More... | |
bool | enableMPFA |
Enables mpfa on hanging nodes (on by default) More... | |
int | maxInteractionVolumes |
Maximum number of interaction volumes considered (4 by default) More... | |
InteractionVolumeContainer * | interactionVolumesContainer_ |
A pointer to the adaptive interaction volumes container. More... | |
FvMpfaL3dTransmissibilityCalculator< TypeTag > | mpfal3DTransmissibilityCalculator_ |
The common implementation to calculate the Transmissibility with the mpfa-L-method. More... | |
Dune::BlockVector< Dune::FieldVector< int, 1 > > | nextSubdomain |
vector holding next subdomain More... | |
const GlobalPosition & | gravity_ |
Dune::Timer | timer_ |
A timer for the time spent on the multiphysics framework. More... | |
Problem & | problem_ |
bool | enableVolumeIntegral |
Enables the volume integral of the pressure equation. More... | |
bool | regulateBoundaryPermeability |
Enables regulation of permeability in the direction of a Dirichlet Boundary Condition. More... | |
Scalar | minimalBoundaryPermeability |
Minimal limit for the boundary permeability. More... | |
Scalar | ErrorTermFactor_ |
Handling of error term: relaxation factor. More... | |
Scalar | ErrorTermLowerBound_ |
Handling of error term: lower bound for error dampening. More... | |
Scalar | ErrorTermUpperBound_ |
Matrix | A_ |
Global stiffnes matrix (sparse matrix which is build by the initializeMatrix() function) More... | |
RHSVector | f_ |
Right hand side vector. More... | |
Static Protected Attributes | |
static constexpr int | pressureType = getPropValue<TypeTag, Properties::PressureFormulation>() |
gives kind of pressure used ( \( 0 = p_w \), \( 1 = p_n \), \( 2 = p_{global} \)) More... | |
general methods for output | |
TransportSolutionType | updateEstimate_ |
Update estimate for changes in volume for the pressure equation. More... | |
VtkMultiWriter< GridView > | initializationOutputWriter_ |
output for the initialization procedure More... | |
Scalar | maxError_ |
Maximum volume error of all cells. More... | |
Scalar | incp_ |
Increment for the volume derivative w.r.t pressure. More... | |
void | initializationOutput (double pseudoTS=0.) |
Write additional debug info in a special writer. More... | |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Indices of matrix and rhs entries.
During the assembling of the global system of equations get-functions are called (getSource(), getFlux(), etc.), which return global matrix or right hand side entries in a vector. These can be accessed using following indices:
Enumerator | |
---|---|
rhs | index for the right hand side entry |
matrix | index for the global matrix entry |
|
protectedinherited |
Indices of matrix and rhs entries.
During the assembling of the global system of equations get-functions are called (getSource(), getFlux(), etc.), which return global matrix or right hand side entries in a vector. These can be accessed using following indices:
Enumerator | |
---|---|
rhs | index for the right hand side entry |
matrix | index for the global matrix entry |
|
inline |
Constructs a FVPressure2P2C object.
problem | a problem class object |
|
inline |
Adapt primary variables vector after adapting the grid.
|
inlineinherited |
Write data files.
writer | The writer |
void Dumux::FV3dPressure2P2CAdaptive< TypeTag >::assemble | ( | bool | first | ) |
function which assembles the system of equations to be solved
This function assembles the Matrix and the RHS vectors to solve for a pressure field with an Finite-Volume Discretization in an implicit fashion. Compared to the method in FVPressure, this implementation calculates fluxes near hanging nodes with the mpfa method using the method getMpfaFlux(). Matrix and Right-hand-side entries are done therein.
first | Flag if pressure field is unknown |
|
inlineinherited |
int Dumux::FV3dPressure2P2CAdaptive< TypeTag >::computeTransmissibilities | ( | const IntersectionIterator & | isIt, |
TransmissivityMatrix & | T, | ||
GlobalPosition & | globalPos4, | ||
int & | eIdxGlobal4, | ||
GlobalPosition & | globalPos6, | ||
int & | eIdxGlobal6 | ||
) |
Computes the transmissibility coefficients for the MPFA-l method in 3D.
For faces with a hanging node in 3D, there are four sub-faces. The first subface contains a unique interaction volume, with is directly calculated by this method. For the remainder of the sub-faces, the interaction volumes are build and calculated by the common mpfa-l–implementation of the 2p models. The latter is established via the protected method FV3dPressure2P2CAdaptive::transmissibilityAdapter_(). The calculated Transmissivity Matrices are (along with some geometric information) stored for later use in Variableclass2p2cadaptive .
isIt | Iterator to the current intersection |
T | Transmissitivity matrix of the first unique interaction volume |
globalPos4 | Position of the 3rd cell (with local Idx 4) of the unique interaction volume |
eIdxGlobal4 | Index of the 3rd cell (with local Idx 4) of the unique interaction volume |
globalPos6 | Position of the 4th cell (with local Idx 6) of the unique interaction volume |
eIdxGlobal6 | Index of the 4th cell (with local Idx 6) of the unique interaction volume |
1) get geometrical information of interaction triangle
2) Calculate omega, chi for matrices
3) Calculate A, B, C, D and solve for T
4) Store and/or calculate additional half edges
|
inlineinherited |
Function for deserialization of the pressure field.
Function needed for restart option. Reads the pressure of a grid element from a restart file.
instream | Stream from the restart file. |
element | Grid element |
|
inherited |
The compositional single-phase flux in the multiphysics framework.
If only single-phase conditions are encountered, the flux expression simplifies to (written for the case where the wetting phase is only present):
\[ A_{\gamma} \mathbf{n}_{\gamma}^T \mathbf{K} \lambda_w \mathbf{d}_{ij} \left( \frac{p_{w,j}^t - p^{t}_{w,i}}{\Delta x} + \varrho_{w} \mathbf{g}^T \mathbf{d}_{ij} \right) . \]
entries | The Matrix and RHS entries |
intersection | Intersection between cell I and J |
cellDataI | Data of cell I |
|
inherited |
The compositional single-phase flux in the multiphysics framework.
If only single-phase conditions are encountered, the flux expression simplifies to (written for the case where the wetting phase is only present):
\[ A_{\gamma} \mathbf{n}_{\gamma}^T \mathbf{K} \varrho_w \lambda_w \mathbf{d}_{i-Boundary} \left( \frac{p_{w,Boundary}^t - p^{t}_{w,i}}{\Delta x} + \varrho_{w} \mathbf{g}^T \mathbf{d}_{i-Boundary} \right) . \]
If a Neumann BC is set, the given (mass-)flux is directly multiplied by the volume derivative and inserted.
entries | The Matrix and RHS entries |
intersection | Intersection between cell I and J |
cellDataI | Data of cell I |
void Dumux::FV3dPressure2P2CAdaptive< TypeTag >::get1pMpfaFlux | ( | const IntersectionIterator & | isIt, |
const CellData & | cellDataI | ||
) |
Compute single-phase flux through an irregular interface using a mpfa method.
A mpfa l-method is applied to calculate fluxes near hanging nodes for multiphysics models, using:
\[ - \lambda_{\alpha} \left( \sum_k \tau_{2k} p^t_{\alpha,k} + \varrho_{\alpha} \sum_k \tau_{2k} \mathbf{g}^T \mathbf{x}_{k} \right) \sum_{\kappa} X^{\kappa}_{\alpha} \]
Depending on the applied interaction volumes (e.g. on the boundary only a single interaction volume might be applied), the stencil also spans over neighboring cells. The contribution in other cells than I or J make it necessary that the matrix and rhs entries are filled up within this function.
isIt | Iterator of the intersection between cell I and J |
cellDataI | Data of cell I |
get geometrical Info, transmissibility matrix
compute matrix entry: advective fluxes
compute matrix entry: advective fluxes
|
inherited |
Assembles the source term.
The source is translated into a volumentric source term:
\[ V_i \sum_{\kappa} \frac{1}{\varrho} q^{\kappa}_i \; , \]
because under singlephase conditions
\[ \frac{\partial v_{t}}{\partial C^{\kappa}} \approx \frac{1}{\varrho} \]
.
sourceEntry | The Matrix and RHS entries |
elementI | The element I |
cellDataI | Data of cell I |
|
inherited |
Assembles the storage term for a 1p cell in a multiphysics framework.
The storage term comprises the (single-phase) compressibility (due to a change in pressure from last timestep):
\[ V_i c_{i} \frac{p^t_i - p^{t-\Delta t}_i}{\Delta t} \]
and the damped error introduced by the incorrect transport of the last timestep:
\[ V_i \alpha_r \frac{v_{t} - \phi}{\Delta t} \]
. The latter is damped according to Fritz 2011.
storageEntry | The Matrix and RHS entries |
elementI | The element I |
cellDataI | Data of cell I |
|
inherited |
Get flux at an interface between two cells.
for first == true, the flux is calculated in traditional fractional-flow forn as in FVPressure2P. for first == false, the flux thorugh \( \gamma \) is calculated via a volume balance formulation
\[ - A_{\gamma} \mathbf{n}^T_{\gamma} \mathbf{K} \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \mathbf{d}_{ij} \left( \frac{p_{\alpha,j}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha} \mathbf{g}^T \mathbf{d}_{ij} \right) \sum_{\kappa} X^{\kappa}_{\alpha} \frac{\partial v_{t}}{\partial C^{\kappa}} + V_i \frac{A_{\gamma}}{U_i} \mathbf{d}^T \mathbf{K} \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \mathbf{d}_{ij} \left( \frac{p_{\alpha,j}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha} \mathbf{g}^T \mathbf{d}_{ij} \right) \sum_{\kappa} X^{\kappa}_{\alpha} \frac{\frac{\partial v_{t,j}}{\partial C^{\kappa}_j}-\frac{\partial v_{t,i}}{\partial C^{\kappa}_i}}{\Delta x} \]
This includes a boundary integral and a volume integral, because \( \frac{\partial v_{t,i}}{\partial C^{\kappa}_i} \) is not constant. Here, \( \mathbf{d}_{ij} \) is the normalized vector connecting the cell centers, and \( \mathbf{n}_{\gamma} \) represents the normal of the face \( \gamma \).
entries | The Matrix and RHS entries |
intersection | Intersection between cell I and J |
cellDataI | Data of cell I |
first | Flag if pressure field is unknown |
|
inherited |
Get flux on Boundary.
for first == true, the flux is calculated in traditional fractional-flow forn as in FVPressure2P. for first == false, the flux thorugh \( \gamma \) is calculated via a volume balance formulation
\[ - A_{\gamma} \mathbf{n}^T_{\gamma} \mathbf{K} \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \mathbf{d}_{ij} \left( \frac{p_{\alpha,j}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha} \mathbf{g}^T \mathbf{d}_{ij} \right) \sum_{\kappa} \frac{\partial v_{t}}{\partial C^{\kappa}} X^{\kappa}_{\alpha} \;, \]
where we skip the volume integral assuming \( \frac{\partial v_{t,i}}{\partial C^{\kappa}_i} \) to be constant at the boundary. Here, \( \mathbf{d}_{ij} \) is the normalized vector connecting the cell centers, and \( \mathbf{n}_{\gamma} \) represents the normal of the face \( \gamma \).
If a Neumann BC is set, the given (mass-)flux is directly multiplied by the volume derivative and inserted.
entries | The Matrix and RHS entries |
intersection | Intersection between cell I and J |
cellDataI | Data of cell I |
first | Flag if pressure field is unknown |
void Dumux::FV3dPressure2P2CAdaptive< TypeTag >::getMpfaFlux | ( | const IntersectionIterator & | isIt, |
const CellData & | cellDataI | ||
) |
Compute flux through an irregular interface using a mpfa method.
A mpfa l-method is applied to calculate fluxes near hanging nodes, using:
\[ - \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \left( \sum_k \tau_{2k} p^t_{\alpha,k} + \varrho_{\alpha} \sum_k \tau_{2k} \mathbf{g}^T \mathbf{x}_{k} \right) \sum_{\kappa} X^{\kappa}_{\alpha} \frac{\partial v_{t}}{\partial C^{\kappa}} + \frac{ V_i}{U_i} \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \left( \sum_k \tau_{2k} p^t_{\alpha,k} + \varrho_{\alpha} \sum_k \tau_{2k} \mathbf{g}^T \mathbf{x}_{k} \right) \sum_{\kappa} X^{\kappa}_{\alpha} \frac{\frac{\partial v_{t,j}}{\partial C^{\kappa}_j} -\frac{\partial v_{t,i}}{\partial C^{\kappa}_i}}{\Delta x} \]
Depending on the applied interaction volumes (e.g. on the boundary only a single interaction volume might be applied), the stencil also spans over neighboring cells. The contribution in other cells than I or J make it necessary that the matrix and rhs entries are filled up within this function.
isIt | Iterator of the intersection between cell I and J |
cellDataI | Data of cell I |
|
inherited |
Assembles the source term.
for first == true, a source is implemented as in FVPressure2P. for first == false, the source is translated into a volumentric source term:
\[ V_i \sum_{\kappa} \frac{\partial v_{t}}{\partial C^{\kappa}} q^{\kappa}_i \]
.
sourceEntry | The Matrix and RHS entries |
elementI | The element I |
cellDataI | Data of cell I |
first | Flag if pressure field is unknown |
|
inherited |
Assembles the storage term.
for first == true, there is no storage contribution. for first == false, the storage term comprises the compressibility (due to a change in pressure from last timestep):
\[ V_i c_{t,i} \frac{p^t_i - p^{t-\Delta t}_i}{\Delta t} \]
and the damped error introduced by the incorrect transport of the last timestep:
\[ V_i \alpha_r \frac{v_{t} - \phi}{\Delta t} \]
. The latter is damped according to Fritz 2011.
storageEntry | The Matrix and RHS entries |
elementI | The element I |
cellDataI | Data of cell I |
first | Flag if pressure field is unknown |
|
inlineinherited |
Returns the global matrix of the last pressure solution step.
|
inlineinherited |
Write additional debug info in a special writer.
To visualize the different steps through the initialization procedure, we use very small pseudo time steps only for the writer! This is only for debugging of the initialization procedure.
pseudoTS | Time steps that only appear in the writer, not real. |
|
inlineinherited |
Initialize pressure model.
Function initializes the sparse matrix to solve the global system of equations and sets/calculates the initial pressure
|
inline |
void Dumux::FV3dPressure2P2CAdaptive< TypeTag >::initializeMatrix |
initializes the matrix to store the system of equations
In comparison with the Tpfa method, an mpfa uses a larger flux stencil, hence more matrix entries are required if not only the unique interaction region on the hanging nodes are considered. The method checks weather the additonally regarded cells through mpfa are already "normal" neighbors for fluxes through other interfaces, or if they need to be added.
void Dumux::FV3dPressure2P2CAdaptive< TypeTag >::initializeMatrixIndices |
Determine position of matrix entries.
void Dumux::FV3dPressure2P2CAdaptive< TypeTag >::initializeMatrixRowSize |
Initialize the row sizes of the sparse global matrix.
|
inlineprotectedinherited |
Initialization of the pressure solution vector: Initialization with meaningful values may.
|
inherited |
initializes the fluid distribution and hereby the variables container
It differs from updateMaterialLaws() because there are two possible initial conditions: saturations and concentration.
compositional | flag that determines if compositional effects are regarded, i.e. a reasonable pressure field is known with which compositions can be calculated. |
|
inlineprotectedinherited |
Returns the vector containing the pressure solution.
|
inlineprotectedinherited |
Returns the vector containing the pressure solution.
|
inlineinherited |
Public access function for the primary pressure variable.
Function returns the cell pressure value at index eIdxGlobal
eIdxGlobal | Global index of a grid cell |
|
inlineinherited |
|
inlineinherited |
Returns the right hand side vector of the last pressure solution step.
|
inlineinherited |
Function for serialization of the pressure field.
Function needed for restart option. Writes the pressure of a grid element to a restart file.
outstream | Stream into the restart file. |
element | Grid element |
|
inlineinherited |
Set a pressure to be fixed at a certain cell.
Allows to fix a pressure somewhere (at one certain cell) in the domain. This can be necessary e.g. if only Neumann boundary conditions are defined. The pressure is fixed until the unsetFixPressureAtIndex()
function is called
pressure | Pressure value at eIdxGlobal |
eIdxGlobal | Global index of a grid cell |
|
protectedinherited |
Solves the global system of equations to get the spatial distribution of the pressure.
|
protected |
Adapter to use the general implementation of the mpfa-l for the compositional models.
Depending on the subVolumeFaceIdx, the appropriate method in FvMpfaL2dTransmissibilityCalculator (potentially specifying certain cases) gets called and the transmissibility and geometric information of the applied additional cells of the interaction regions are passed back.
isIt | Iterator to the current intersection | |
interactionVolume | The current interaction Volume object of interest | |
subVolumeFaceIdx | The local index of the intersection of interest in the interaction volume | |
properFluxDirection | True if the intersection normal coincides with the local indexing in the interaction volume | |
[out] | additional2 | The 3rd cell's element in the interaction volume |
[out] | additional3 | The 4th cell's element in the interaction volume |
[out] | additionalT | Transmissitivity matrix calculated |
|
inlineinherited |
Reset the fixed pressure state.
No pressure is fixed inside the domain until setFixPressureAtIndex()
function is called again.
eIdxGlobal | Global index of a grid cell |
|
inline |
update of interaction volumes
|
inherited |
updates secondary variables of one single phase cell
For each element, the secondary variables are updated according to the primary variables. Only a simple flash calulation has to be carried out, as phase distribution is already known: single-phase.
elementI | The element |
cellData | The cell data of the current element |
postTimeStep | Flag indicating if we have just completed a time step |
void Dumux::FV3dPressure2P2CAdaptive< TypeTag >::updateMaterialLaws | ( | bool | fromPostTimestep = false | ) |
constitutive functions are updated once if new concentrations are calculated and stored in the variables container
In contrast to the standard sequential 2p2c model, this method also holds routines to adapt the subdomain. The subdomain indicates weather we are in 1p domain (value = 1) or in the two phase subdomain (value = 2). After the grid adaption, update of the subdomain is explicitly avoided.
|
inherited |
Updates secondary variables of one cell.
For each element, the secondary variables are updated according to the primary variables. In case the method is called after the Transport, i.e. at the end / post time step, CellData2p2c.reset() resets the volume derivatives for the next time step.
element | The element |
postTimeStep | Flag indicating if we have just completed a time step |
|
inlineinherited |
|
inherited |
Partial derivatives of the volumes w.r.t. changes in total concentration and pressure.
This method calculates the volume derivatives via a secant method, where the secants are gained in a pre-computational step via the transport equation and the last TS size. The partial derivatives w.r.t. mass are defined as \( \frac{\partial v}{\partial C^{\kappa}} = \frac{\partial V}{\partial m^{\kappa}}\)
globalPos | The global position of the current element |
element | The current element |
|
protectedinherited |
Global stiffnes matrix (sparse matrix which is build by the initializeMatrix()
function)
|
protected |
Enables mpfa on hanging nodes (on by default)
|
protectedinherited |
Enables the volume integral of the pressure equation.
|
protected |
Calculates the volume integral (on by default)
|
protectedinherited |
Handling of error term: relaxation factor.
|
protectedinherited |
Handling of error term: lower bound for error dampening.
|
protectedinherited |
Handling of error term: upper bound for error dampening
|
protectedinherited |
Right hand side vector.
|
protectedinherited |
vector including the gravity constant
|
protectedinherited |
Increment for the volume derivative w.r.t pressure.
|
protectedinherited |
output for the initialization procedure
|
protected |
A pointer to the adaptive interaction volumes container.
|
protected |
Container to store all cell's Indice with a hanging node.
|
protectedinherited |
Maximum volume error of all cells.
|
protected |
Maximum number of interaction volumes considered (4 by default)
|
protectedinherited |
Minimal limit for the boundary permeability.
|
protected |
The common implementation to calculate the Transmissibility with the mpfa-L-method.
|
protectedinherited |
vector holding next subdomain
|
staticconstexprprotectedinherited |
gives kind of pressure used ( \( 0 = p_w \), \( 1 = p_n \), \( 2 = p_{global} \))
|
protectedinherited |
|
protectedinherited |
Enables regulation of permeability in the direction of a Dirichlet Boundary Condition.
|
protectedinherited |
A timer for the time spent on the multiphysics framework.
|
protectedinherited |
Update estimate for changes in volume for the pressure equation.