Opm::NcpModel< TypeTag > Class Template Reference A compositional multi-phase model based on non-linear complementarity functions. More...
Inheritance diagram for Opm::NcpModel< TypeTag >:
Detailed Descriptiontemplate<class TypeTag> class Opm::NcpModel< TypeTag > A compositional multi-phase model based on non-linear complementarity functions. This model implements a -phase flow of a fluid mixture composed of chemical species. The phases are denoted by lower index . All fluid phases are mixtures of chemical species which are denoted by the upper index . By default, the standard multi-phase Darcy approach is used to determine the velocity, i.e.
although the actual approach which is used can be specified via the template<class TypeTag>
struct FluxModule<TypeTag, TTag::MyProblemTypeTag> { using type = ForchheimerFluxModule<TypeTag>; };
Specifies a flux module which uses the Forchheimer relation. Definition: forchheimerfluxmodule.hh:62 The core of the model is the conservation mass of each component by means of the equation
For the missing model assumptions, the model uses non-linear complementarity functions. These are based on the observation that if a fluid phase is not present, the sum of the mole fractions of this fluid phase is smaller than , i.e.
Also, if a fluid phase may be present at a given spatial location its saturation must be non-negative:
Since at any given spatial location, a phase is always either present or not present, one of the strict equalities on the right hand side is always true, i.e.
always holds. These three equations constitute a non-linear complementarity problem, which can be solved using so-called non-linear complementarity functions . Such functions have the property
Several non-linear complementarity functions have been suggested, e.g. the Fischer-Burmeister function
This model uses
because of its piecewise linearity. The model assumes local thermodynamic equilibrium and uses the following primary variables:
Constructor & Destructor Documentation◆ NcpModel()
template<class TypeTag >
Member Function Documentation◆ adaptGrid()
template<class TypeTag >
References Opm::NcpModel< TypeTag >::minActivityCoeff_. ◆ eqName()
template<class TypeTag >
Given an equation index, return a human readable name.
◆ eqWeight()
template<class TypeTag >
Returns the relative weight of an equation.
◆ finishInit()
template<class TypeTag >
Apply the initial conditions to the model. References Opm::NcpModel< TypeTag >::minActivityCoeff_. ◆ globalPhaseStorage()
template<class TypeTag >
Compute the total storage inside one phase of all conservation quantities.
References Opm::ThreadedEntityIterator< GridView, codim >::beginParallel(), Opm::ThreadedEntityIterator< GridView, codim >::increment(), Opm::ThreadedEntityIterator< GridView, codim >::isFinished(), and Opm::ThreadManager< TypeTag >::threadId(). ◆ minActivityCoeff()
template<class TypeTag >
Returns the smallest activity coefficient of a component for the most current solution at a vertex.
References Opm::NcpModel< TypeTag >::minActivityCoeff_. ◆ name()
template<class TypeTag >
◆ phaseIsConsidered()
template<class TypeTag >
Returns true iff a fluid phase is used by the model.
◆ primaryVarName()
template<class TypeTag >
Given an primary variable index, return a human readable name.
◆ primaryVarWeight()
template<class TypeTag >
Returns the relative weight of a primary variable for calculating relative errors.
References Opm::NcpModel< TypeTag >::minActivityCoeff_, and Opm::NcpModel< TypeTag >::referencePressure_. ◆ registerOutputModules_()
template<class TypeTag >
◆ registerParameters()
template<class TypeTag >
Register all run-time parameters for the immiscible model. References Opm::MultiPhaseBaseModel< TypeTag >::registerParameters(), Opm::VtkCompositionModule< TypeTag >::registerParameters(), Opm::VtkDiffusionModule< TypeTag >::registerParameters(), and Opm::VtkEnergyModule< TypeTag >::registerParameters(). ◆ updateBegin()
template<class TypeTag >
Called by the update() method before it tries to apply the newton method. This is primary a hook which the actual model can overload. References Opm::NcpModel< TypeTag >::referencePressure_. ◆ updatePVWeights()
template<class TypeTag >
Update the weights of all primary variables within an element given the complete set of intensive quantities. References Opm::NcpModel< TypeTag >::minActivityCoeff_. Member Data Documentation◆ minActivityCoeff_
template<class TypeTag >
◆ referencePressure_
template<class TypeTag >
Referenced by Opm::NcpModel< TypeTag >::primaryVarWeight(), and Opm::NcpModel< TypeTag >::updateBegin(). The documentation for this class was generated from the following file: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||