Determines the phase compositions, pressures and saturations given the total mass of all components.
More...
template<class Scalar, class FluidSystem>
class Dumux::NcpFlash< Scalar, FluidSystem >
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:
- M pressures
- M saturations
- M*N mole fractions
This sums up to M*(N + 2). On the equations side of things, we have:
- (M - 1)*N equation stemming from the fact that the fugacity of any component is the same in all phases
- 1 equation from the closure condition of all saturations (they sum up to 1)
- M - 1 constraints from the capillary pressures \((-> p_\beta = p_\alpha + p_c\alpha,\beta)\)
- N constraints from the fact that the total mass of each component is given \((-> sum_\alpha rhoMolar_\alpha * x_\alpha^\kappa = const)\)
- M model constraints. Here we use the NCP constraints (-> 0 = min \( {S_\alpha, 1 - \sum_\kappa x_\alpha^\kappa}\))
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:
- 1 pressure
- M - 1 saturations
- M*N mole fractions
|
template<class FluidState > |
void | printFluidState_ (const FluidState &fs) |
|
template<class MaterialLaw , class FluidState > |
void | linearize_ (Matrix &J, Vector &b, FluidState &fluidState, ParameterCache ¶mCache, const typename MaterialLaw::Params &matParams, 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 typename MaterialLaw::Params &matParams, const Vector &deltaX) |
|
template<class MaterialLaw , class FluidState > |
void | completeFluidState_ (FluidState &fluidState, ParameterCache ¶mCache, const typename MaterialLaw::Params &matParams) |
|
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 typename MaterialLaw::Params &matParams, 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) |
|