Determines the phase compositions, pressures and saturations given the total mass of all components. More...
#include <dumux/material/constraintsolvers/ncpflash.hh>
Determines the phase compositions, pressures and saturations given the total mass of all components.
In a M-phase, N-component context, we have the following unknowns:
This sums up to M*(N + 2). On the equations side of things, we have:
this also sums up to M*(N + 2).
We use the following catches: Capillary pressures are taken into account explicitly, so that only the pressure of the first phase is solved implicitly, also the closure condition for the saturations is taken into account explicitly, which means, that we don't need to implicitly solve for the last saturation. These two measures reduce the number of unknowns to M*(N + 1), namely:
Public Types | |
using | ComponentVector = Dune::FieldVector< Scalar, numComponents > |
Public Member Functions | |
NcpFlash (int wettingPhaseIdx=0) | |
Contruct a new flash. More... | |
template<class FluidState > | |
void | guessInitial (FluidState &fluidState, ParameterCache ¶mCache, const ComponentVector &globalMolarities) |
Guess initial values for all quantities. More... | |
template<class MaterialLaw , class FluidState > | |
void | solve (FluidState &fluidState, ParameterCache ¶mCache, const MaterialLaw &material, const ComponentVector &globalMolarities) |
Calculates the chemical equilibrium from the component fugacities in a phase. More... | |
Protected Member Functions | |
template<class FluidState > | |
void | printFluidState_ (const FluidState &fs) |
template<class MaterialLaw , class FluidState > | |
void | linearize_ (Matrix &J, Vector &b, FluidState &fluidState, ParameterCache ¶mCache, const MaterialLaw &material, const ComponentVector &globalMolarities) |
template<class FluidState > | |
void | calculateDefect_ (Vector &b, const FluidState &fluidStateEval, const FluidState &fluidState, const ComponentVector &globalMolarities) |
template<class MaterialLaw , class FluidState > | |
Scalar | update_ (FluidState &fluidState, ParameterCache ¶mCache, const MaterialLaw &material, const Vector &deltaX) |
template<class MaterialLaw , class FluidState > | |
void | completeFluidState_ (FluidState &fluidState, ParameterCache ¶mCache, const MaterialLaw &material) |
bool | isPressureIdx_ (int pvIdx) |
bool | isSaturationIdx_ (int pvIdx) |
bool | isMoleFracIdx_ (int pvIdx) |
template<class FluidState > | |
Scalar | getQuantity_ (const FluidState &fs, int pvIdx) |
template<class MaterialLaw , class FluidState > | |
void | setQuantity_ (FluidState &fs, ParameterCache ¶mCache, const MaterialLaw &material, int pvIdx, Scalar value) |
template<class FluidState > | |
void | setQuantityRaw_ (FluidState &fs, int pvIdx, Scalar value) |
template<class FluidState > | |
Scalar | quantityWeight_ (const FluidState &fs, int pvIdx) |
using Dumux::NcpFlash< Scalar, FluidSystem >::ComponentVector = Dune::FieldVector<Scalar, numComponents> |
|
inlineexplicit |
Contruct a new flash.
wettingPhaseIdx | the phase index of the wetting phase |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
Guess initial values for all quantities.
fluidState | Thermodynamic state of the fluids |
paramCache | Container for cache parameters |
globalMolarities |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
Calculates the chemical equilibrium from the component fugacities in a phase.
fluidState | Thermodynamic state of the fluids |
paramCache | Container for cache parameters |
globalMolarities | |
material | The material law object |
The phase's fugacities must already be set.
|
inlineprotected |