14#ifndef DUMUX_MPNC_VOLUME_VARIABLES_HH 
   15#define DUMUX_MPNC_VOLUME_VARIABLES_HH 
   29template <
class Traits, 
bool enableChemicalNonEquilibrium>
 
   37template <
class Traits>
 
   40template <
class Traits>
 
   48    using Scalar = 
typename Traits::PrimaryVariables::value_type;
 
   49    using PermeabilityType = 
typename Traits::PermeabilityType;
 
   51    using ModelTraits = 
typename Traits::ModelTraits;
 
   52    static constexpr auto pressureFormulation = ModelTraits::pressureFormulation();
 
   54    static constexpr bool enableThermalNonEquilibrium = ModelTraits::enableThermalNonEquilibrium();
 
   55    static constexpr bool enableChemicalNonEquilibrium = ModelTraits::enableChemicalNonEquilibrium();
 
   56    static constexpr bool enableDiffusion = ModelTraits::enableMolecularDiffusion();
 
   58    using ComponentVector = Dune::FieldVector<Scalar, ModelTraits::numFluidComponents()>;
 
   60    using EffDiffModel = 
typename Traits::EffectiveDiffusivityModel;
 
   61    using DiffusionCoefficients = 
typename Traits::DiffusionType::DiffusionCoefficientsContainer;
 
   65    using Indices = 
typename Traits::ModelTraits::Indices;
 
   76    static constexpr int numFluidPhases() { 
return ModelTraits::numFluidPhases(); }
 
   89    template<
class ElemSol, 
class Problem, 
class Element, 
class Scv>
 
   91                const Problem& problem,
 
   92                const Element& element,
 
  100        const auto& spatialParams = problem.spatialParams();
 
  101        const int wPhaseIdx = spatialParams.template wettingPhase<FluidSystem>(element, scv, elemSol);
 
  102        const auto fluidMatrixInteraction = spatialParams.fluidMatrixInteraction(element, scv, elemSol);
 
  103        const auto relPerm = fluidMatrixInteraction.relativePermeabilities(
fluidState_, wPhaseIdx);
 
  106        typename FluidSystem::ParameterCache paramCache;
 
  112        if constexpr (enableDiffusion)
 
  114            auto getEffectiveDiffusionCoefficient = [&](
int phaseIdx, 
int compIIdx, 
int compJIdx)
 
  115            { 
return EffDiffModel::effectiveDiffusionCoefficient(*
this, phaseIdx, compIIdx, compJIdx); };
 
  120        EnergyVolVars::updateSolidEnergyParams(elemSol, problem, element, scv, 
solidState_);
 
  121        permeability_ = problem.spatialParams().permeability(element, scv, elemSol);
 
  122        EnergyVolVars::updateEffectiveThermalConductivity();
 
 
  137    template<
class ElemSol, 
class Problem, 
class Element, 
class Scv>
 
  139                            const Problem& problem,
 
  140                            const Element& element,
 
  154        auto&& 
priVars = elemSol[scv.localDofIndex()];
 
  156        for (
int phaseIdx = 0; phaseIdx < 
numFluidPhases() - 1; ++phaseIdx) {
 
  157            sumSat += 
priVars[Indices::s0Idx + phaseIdx];
 
  166        const auto& spatialParams = problem.spatialParams();
 
  167        const int wPhaseIdx = spatialParams.template wettingPhase<FluidSystem>(element, scv, elemSol);
 
  171        const auto fluidMatrixInteraction = spatialParams.fluidMatrixInteraction(element, scv, elemSol);
 
  172        const auto capPress = fluidMatrixInteraction.capillaryPressures(
fluidState, wPhaseIdx);
 
  179            const Scalar pw = 
priVars[Indices::p0Idx];
 
  181                fluidState.setPressure(phaseIdx, pw - capPress[0] + capPress[phaseIdx]);
 
  186            const Scalar pn = 
priVars[Indices::p0Idx];
 
  187            for (
int phaseIdx = 
numFluidPhases()-1; phaseIdx >= 0; --phaseIdx)
 
  191            DUNE_THROW(Dune::InvalidStateException, 
"MPNCVolumeVariables do not support the chosen pressure formulation");
 
  196        typename FluidSystem::ParameterCache paramCache;
 
  202            fug[compIdx] = 
priVars[Indices::fug0Idx + compIdx];
 
  209                if (FluidSystem::fugacityCoefficient(
fluidState, paramCache, phaseIdx, compIdx) == 0.0)
 
  210                    DUNE_THROW(
NumericalProblem, 
"MPNCVolumeVariables do not support fluidsystems with fugacity coefficients of 0");
 
  225            Scalar mu = FluidSystem::viscosity(
fluidState, paramCache, phaseIdx);
 
  229            Scalar h = FluidSystem::enthalpy(
fluidState, paramCache, phaseIdx);
 
 
  264    { 
return fluidState_.massFraction(phaseIdx, compIdx); }
 
 
  274    { 
return fluidState_.moleFraction(phaseIdx, compIdx); }
 
 
  282    Scalar 
molarity(
const int phaseIdx, 
int compIdx)
 const 
  283    { 
return fluidState_.molarity(phaseIdx, compIdx); }
 
 
  340    { 
return FluidSystem::thermalConductivity(
fluidState_, phaseIdx); }
 
 
  412        typename FluidSystem::ParameterCache paramCache;
 
  414        return FluidSystem::binaryDiffusionCoefficient(
fluidState_, paramCache, phaseIdx, compIIdx, compJIdx);
 
 
  445                            const unsigned int phaseIdx)
 const 
 
  456                               const unsigned int phaseIdx)
 const 
  461            a -= 
fluidState.moleFraction(phaseIdx, compIdx);
 
 
 
  478template <
class Traits>
 
  485    using Scalar = 
typename Traits::PrimaryVariables::value_type;
 
  486    using PermeabilityType = 
typename Traits::PermeabilityType;
 
  488    using ModelTraits = 
typename Traits::ModelTraits;
 
  489    static constexpr auto pressureFormulation = ModelTraits::pressureFormulation();
 
  491    static constexpr bool enableThermalNonEquilibrium = ModelTraits::enableThermalNonEquilibrium();
 
  492    static constexpr bool enableChemicalNonEquilibrium = ModelTraits::enableChemicalNonEquilibrium();
 
  493    static constexpr bool enableDiffusion = ModelTraits::enableMolecularDiffusion();
 
  495    using Indices = 
typename ModelTraits::Indices;
 
  496    using ComponentVector = Dune::FieldVector<Scalar,  ModelTraits::numFluidComponents()>;
 
  498    using ParameterCache = 
typename Traits::FluidSystem::ParameterCache;
 
  499    using EffDiffModel = 
typename Traits::EffectiveDiffusivityModel;
 
  500    using DiffusionCoefficients = 
typename Traits::DiffusionType::DiffusionCoefficientsContainer;
 
  527    template<
class ElemSol, 
class Problem, 
class Element, 
class Scv>
 
  529                const Problem& problem,
 
  530                const Element& element,
 
  538        const auto& spatialParams = problem.spatialParams();
 
  539        const int wPhaseIdx = spatialParams.template wettingPhase<FluidSystem>(element, scv, elemSol);
 
  540        const auto fluidMatrixInteraction = spatialParams.fluidMatrixInteraction(element, scv, elemSol);
 
  541        const auto relPerm = fluidMatrixInteraction.relativePermeabilities(
fluidState_, wPhaseIdx);
 
  544        typename FluidSystem::ParameterCache paramCache;
 
  549        if constexpr (enableDiffusion)
 
  551            auto getEffectiveDiffusionCoefficient = [&](
int phaseIdx, 
int compIIdx, 
int compJIdx)
 
  552            { 
return EffDiffModel::effectiveDiffusionCoefficient(*
this, phaseIdx, compIIdx, compJIdx); };
 
  557        EnergyVolVars::updateSolidEnergyParams(elemSol, problem, element, scv, 
solidState_);
 
  558        permeability_ = spatialParams.permeability(element, scv, elemSol);
 
  559        EnergyVolVars::updateEffectiveThermalConductivity();
 
 
  573    template<
class ElemSol, 
class Problem, 
class Element, 
class Scv>
 
  575                            const Problem& problem,
 
  576                            const Element& element,
 
  588        auto&& 
priVars = elemSol[scv.localDofIndex()];
 
  590        for (
int phaseIdx = 0; phaseIdx < 
numFluidPhases() - 1; ++phaseIdx) {
 
  591            sumSat += 
priVars[Indices::s0Idx + phaseIdx];
 
  600        const auto& spatialParams = problem.spatialParams();
 
  601        const int wPhaseIdx = spatialParams.template wettingPhase<FluidSystem>(element, scv, elemSol);
 
  603        const auto fluidMatrixInteraction = spatialParams.fluidMatrixInteraction(element, scv, elemSol);
 
  604        const auto capPress = fluidMatrixInteraction.capillaryPressures(
fluidState, wPhaseIdx);
 
  611            const Scalar pw = 
priVars[Indices::p0Idx];
 
  613                fluidState.setPressure(phaseIdx, pw - capPress[0] + capPress[phaseIdx]);
 
  618            const Scalar pn = 
priVars[Indices::p0Idx];
 
  619            for (
int phaseIdx = 
numFluidPhases()-1; phaseIdx >= 0; --phaseIdx)
 
  623            DUNE_THROW(Dune::InvalidStateException, 
"MPNCVolumeVariables do not support the chosen pressure formulation");
 
  629        typename FluidSystem::ParameterCache paramCache;
 
  637            Scalar mu = FluidSystem::viscosity(
fluidState, paramCache, phaseIdx);
 
  641            Scalar h = FluidSystem::enthalpy(
fluidState, paramCache, phaseIdx);
 
 
  655                            ParameterCache & paramCache,
 
  656                            const typename Traits::PrimaryVariables& 
priVars)
 
  663                    actualFluidState.setMoleFraction(phaseIdx,
 
  665                           priVars[Indices::moleFrac00Idx +
 
  674                const Scalar phi = FluidSystem::fugacityCoefficient(actualFluidState,
 
  678                actualFluidState.setFugacityCoefficient(phaseIdx,
 
  684        equilFluidState.assign(actualFluidState) ;
 
  691                xEquil_[phaseIdx][compIdx] = equilFluidState.moleFraction(phaseIdx, compIdx);
 
  697            const Scalar rho = FluidSystem::density(actualFluidState, paramCache, phaseIdx);
 
  698            actualFluidState.setDensity(phaseIdx, rho);
 
  699            const Scalar rhoMolar = FluidSystem::molarDensity(actualFluidState, paramCache, phaseIdx);
 
  700            actualFluidState.setMolarDensity(phaseIdx, rhoMolar);
 
 
  712    const Scalar 
xEquil(
const unsigned int phaseIdx, 
const unsigned int compIdx)
 const 
  714        return xEquil_[phaseIdx][compIdx] ;
 
 
  747    { 
return fluidState_.massFraction(phaseIdx, compIdx); }
 
 
  757    { 
return fluidState_.moleFraction(phaseIdx, compIdx); }
 
 
  765    Scalar 
molarity(
const int phaseIdx, 
int compIdx)
 const 
  766    { 
return fluidState_.molarity(phaseIdx, compIdx); }
 
 
  820    { 
return FluidSystem::thermalConductivity(
fluidState_, phaseIdx); }
 
 
  892        typename FluidSystem::ParameterCache paramCache;
 
  894        return FluidSystem::binaryDiffusionCoefficient(
fluidState_, paramCache, phaseIdx, compIIdx, compJIdx);
 
 
  925                            const unsigned int phaseIdx)
 const 
 
  936                               const unsigned int phaseIdx)
 const 
  941            a -= 
fluidState.moleFraction(phaseIdx, compIdx);
 
 
 
Calculates the chemical equilibrium from the component fugacities  in the phase .
Definition compositionfromfugacities.hh:41
static void guessInitial(FluidState &fluidState, ParameterCache ¶mCache, int phaseIdx, const ComponentVector &fugVec)
Guess an initial value for the composition of the phase.
Definition compositionfromfugacities.hh:56
static void solve(FluidState &fluidState, ParameterCache ¶mCache, int phaseIdx, const ComponentVector &targetFug)
Calculates the chemical equilibrium from the component fugacities in a phase.
Definition compositionfromfugacities.hh:84
Scalar diffusionCoefficient(int phaseIdx, int compIIdx, int compJIdx) const
Returns the binary diffusion coefficients for a phase in .
Definition porousmediumflow/mpnc/volumevariables.hh:410
typename Traits::SolidState SolidState
Export type of solid state.
Definition porousmediumflow/mpnc/volumevariables.hh:71
Scalar temperature() const
Returns the temperature inside the sub-control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:317
Scalar averageMolarMass(const int phaseIdx) const
Returns the average molar mass  the of the phase.
Definition porousmediumflow/mpnc/volumevariables.hh:351
FluidState fluidState_
Mass fractions of each component within each phase.
Definition porousmediumflow/mpnc/volumevariables.hh:471
Scalar saturation(int phaseIdx) const
Returns the saturation of a given phase within the control volume in .
Definition porousmediumflow/mpnc/volumevariables.hh:253
Scalar pressure(const int phaseIdx) const
Returns the effective pressure  of a given phase within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:299
static constexpr int numFluidComps
Return number of components considered by the model.
Definition porousmediumflow/mpnc/volumevariables.hh:78
const FluidState & fluidState() const
Returns the fluid configuration at the given primary variables.
Definition porousmediumflow/mpnc/volumevariables.hh:238
Scalar fluidThermalConductivity(const int phaseIdx) const
Returns the thermal conductivity  of a fluid phase in the sub-control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:339
Scalar porosity() const
Returns the average porosity within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:384
Scalar mobility(const unsigned int phaseIdx) const
Returns the effective mobility of a given phase within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:360
const SolidState & solidState() const
Returns the phase state for the control-volume.
Definition porousmediumflow/mpnc/volumevariables.hh:244
Scalar relativePermeability(const unsigned int phaseIdx) const
Returns the relative permeability of a given phase within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:378
Scalar massFraction(const int phaseIdx, const int compIdx) const
Returns the mass fraction of a given component in a given phase within the control volume in .
Definition porousmediumflow/mpnc/volumevariables.hh:263
void update(const ElemSol &elemSol, const Problem &problem, const Element &element, const Scv &scv)
Updates all quantities for a given control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:90
Scalar molarity(const int phaseIdx, int compIdx) const
Returns the concentration  of a component in the phase.
Definition porousmediumflow/mpnc/volumevariables.hh:282
typename Traits::ModelTraits::Indices Indices
Export the type encapsulating primary variable indices.
Definition porousmediumflow/mpnc/volumevariables.hh:65
Scalar temperature(const int phaseIdx) const
Definition porousmediumflow/mpnc/volumevariables.hh:320
const PermeabilityType & permeability() const
Returns the permeability within the control volume in .
Definition porousmediumflow/mpnc/volumevariables.hh:390
Scalar fugacity(const int compIdx) const
Returns the fugacity  the of the component.
Definition porousmediumflow/mpnc/volumevariables.hh:345
Scalar enthalpy(const int phaseIdx) const
Return enthalpy  the of the fluid phase.
Definition porousmediumflow/mpnc/volumevariables.hh:326
Scalar effectiveDiffusionCoefficient(int phaseIdx, int compIIdx, int compJIdx) const
Returns the effective diffusion coefficients for a phase in .
Definition porousmediumflow/mpnc/volumevariables.hh:420
SolidState solidState_
Definition porousmediumflow/mpnc/volumevariables.hh:472
Scalar density(const int phaseIdx) const
Returns the density  the of the fluid phase.
Definition porousmediumflow/mpnc/volumevariables.hh:307
Scalar moleFraction(const int phaseIdx, const int compIdx) const
Returns the mole fraction of a given component in a given phase within the control volume in .
Definition porousmediumflow/mpnc/volumevariables.hh:273
std::array< Scalar, ModelTraits::numFluidPhases()> relativePermeability_
Effective relative permeability within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:467
typename Traits::FluidState FluidState
Export the fluid state type.
Definition porousmediumflow/mpnc/volumevariables.hh:69
DiffusionCoefficients effectiveDiffCoeff_
Definition porousmediumflow/mpnc/volumevariables.hh:475
Scalar molarDensity(const int phaseIdx) const
Returns the molar density  the of the fluid phase.
Definition porousmediumflow/mpnc/volumevariables.hh:290
Scalar phaseNcp(const unsigned int phaseIdx) const
Returns the value of the NCP-function for a phase.
Definition porousmediumflow/mpnc/volumevariables.hh:428
static constexpr int numFluidPhases()
Return number of phases considered by the model.
Definition porousmediumflow/mpnc/volumevariables.hh:76
Scalar phasePresentIneq(const FluidState &fluidState, const unsigned int phaseIdx) const
Returns the value of the inequality where a phase is present.
Definition porousmediumflow/mpnc/volumevariables.hh:444
Scalar viscosity(const unsigned int phaseIdx) const
Returns the viscosity of a given phase within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:369
void completeFluidState(const ElemSol &elemSol, const Problem &problem, const Element &element, const Scv &scv, FluidState &fluidState, SolidState &solidState)
Sets complete fluid state.
Definition porousmediumflow/mpnc/volumevariables.hh:138
PermeabilityType permeability_
Definition porousmediumflow/mpnc/volumevariables.hh:468
Scalar internalEnergy(const int phaseIdx) const
Returns the internal energy  the of the fluid phase.
Definition porousmediumflow/mpnc/volumevariables.hh:332
typename Traits::SolidSystem SolidSystem
Export type of solid system.
Definition porousmediumflow/mpnc/volumevariables.hh:73
Scalar phaseNotPresentIneq(const FluidState &fluidState, const unsigned int phaseIdx) const
Returns the value of the inequality where a phase is not present.
Definition porousmediumflow/mpnc/volumevariables.hh:455
typename Traits::FluidSystem FluidSystem
Export the underlying fluid system.
Definition porousmediumflow/mpnc/volumevariables.hh:67
Scalar porosity_
Effective porosity within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:466
bool isPhaseActive(const unsigned int phaseIdx) const
Returns true if the fluid state is in the active set for a phase,.
Definition porousmediumflow/mpnc/volumevariables.hh:399
Scalar fugacity(const int compIdx) const
Returns the fugacity  the of the component.
Definition porousmediumflow/mpnc/volumevariables.hh:825
PermeabilityType permeability_
Definition porousmediumflow/mpnc/volumevariables.hh:947
Scalar fluidThermalConductivity(const int phaseIdx) const
Returns the thermal conductivity  of a fluid phase in the sub-control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:819
Scalar temperature() const
Returns the temperature inside the sub-control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:800
MiscibleMultiPhaseComposition< Scalar, FluidSystem > ConstraintSolver
Definition porousmediumflow/mpnc/volumevariables.hh:516
Scalar mobility(const unsigned int phaseIdx) const
Returns the effective mobility of a given phase within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:840
void updateMoleFraction(FluidState &actualFluidState, ParameterCache ¶mCache, const typename Traits::PrimaryVariables &priVars)
Updates composition of all phases in the mutable parameters from the primary variables.
Definition porousmediumflow/mpnc/volumevariables.hh:654
Scalar pressure(const int phaseIdx) const
Returns the effective pressure  of a given phase within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:782
static constexpr int numFluidComps
Return number of components considered by the model.
Definition porousmediumflow/mpnc/volumevariables.hh:515
const SolidState & solidState() const
Returns the phase state for the control-volume.
Definition porousmediumflow/mpnc/volumevariables.hh:727
Scalar phasePresentIneq(const FluidState &fluidState, const unsigned int phaseIdx) const
Returns the value of the inequality where a phase is present.
Definition porousmediumflow/mpnc/volumevariables.hh:924
typename Traits::SolidSystem SolidSystem
Export type of solid system.
Definition porousmediumflow/mpnc/volumevariables.hh:510
Scalar porosity() const
Returns the average porosity within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:864
typename Traits::SolidState SolidState
Export type of solid state.
Definition porousmediumflow/mpnc/volumevariables.hh:508
Scalar phaseNotPresentIneq(const FluidState &fluidState, const unsigned int phaseIdx) const
Returns the value of the inequality where a phase is not present.
Definition porousmediumflow/mpnc/volumevariables.hh:935
typename Traits::FluidState FluidState
Export the fluid state type.
Definition porousmediumflow/mpnc/volumevariables.hh:506
Scalar enthalpy(const int phaseIdx) const
Returns the enthalpy  the of the fluid phase.
Definition porousmediumflow/mpnc/volumevariables.hh:806
Scalar density(const int phaseIdx) const
Returns the density  the of the fluid phase.
Definition porousmediumflow/mpnc/volumevariables.hh:790
Scalar effectiveDiffusionCoefficient(int phaseIdx, int compIIdx, int compJIdx) const
Returns the effective diffusion coefficients for a phase in .
Definition porousmediumflow/mpnc/volumevariables.hh:900
SolidState solidState_
Definition porousmediumflow/mpnc/volumevariables.hh:952
typename Traits::FluidSystem FluidSystem
Export the underlying fluid system.
Definition porousmediumflow/mpnc/volumevariables.hh:504
Scalar diffusionCoefficient(int phaseIdx, int compIIdx, int compJIdx) const
Returns the binary diffusion coefficients for a phase in .
Definition porousmediumflow/mpnc/volumevariables.hh:890
const PermeabilityType & permeability() const
Returns the permeability within the control volume in .
Definition porousmediumflow/mpnc/volumevariables.hh:870
Scalar molarDensity(const int phaseIdx) const
Returns the molar density  the of the fluid phase.
Definition porousmediumflow/mpnc/volumevariables.hh:773
Scalar viscosity(const unsigned int phaseIdx) const
Returns the viscosity of a given phase within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:849
Scalar internalEnergy(const int phaseIdx) const
Returns the internal energy  the of the fluid phase.
Definition porousmediumflow/mpnc/volumevariables.hh:812
std::array< std::array< Scalar, numFluidComps >, numFluidPhases()> xEquil_
Definition porousmediumflow/mpnc/volumevariables.hh:948
Scalar moleFraction(const int phaseIdx, const int compIdx) const
Returns the mole fraction of a given component in a given phase within the control volume in .
Definition porousmediumflow/mpnc/volumevariables.hh:756
void update(const ElemSol &elemSol, const Problem &problem, const Element &element, const Scv &scv)
Updates all quantities for a given control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:528
static constexpr int numFluidPhases()
Return number of phases considered by the model.
Definition porousmediumflow/mpnc/volumevariables.hh:513
Scalar saturation(int phaseIdx) const
Returns the saturation of a given phase within the control volume in .
Definition porousmediumflow/mpnc/volumevariables.hh:736
FluidState fluidState_
Mass fractions of each component within each phase.
Definition porousmediumflow/mpnc/volumevariables.hh:951
Scalar phaseNcp(const unsigned int phaseIdx) const
Returns the value of the NCP-function for a phase.
Definition porousmediumflow/mpnc/volumevariables.hh:908
Scalar averageMolarMass(const int phaseIdx) const
Returns the average molar mass  the of the phase.
Definition porousmediumflow/mpnc/volumevariables.hh:831
std::array< Scalar, ModelTraits::numFluidPhases()> relativePermeability_
Effective relative permeability within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:946
void completeFluidState(const ElemSol &elemSol, const Problem &problem, const Element &element, const Scv &scv, FluidState &fluidState, SolidState &solidState)
Sets complete fluid state.
Definition porousmediumflow/mpnc/volumevariables.hh:574
DiffusionCoefficients effectiveDiffCoeff_
Definition porousmediumflow/mpnc/volumevariables.hh:955
bool isPhaseActive(const unsigned int phaseIdx) const
Returns true if the fluid state is in the active set for a phase,.
Definition porousmediumflow/mpnc/volumevariables.hh:879
Scalar massFraction(const int phaseIdx, const int compIdx) const
Returns the mass fraction of a given component in a given phase within the control volume in .
Definition porousmediumflow/mpnc/volumevariables.hh:746
const Scalar xEquil(const unsigned int phaseIdx, const unsigned int compIdx) const
The mole fraction we would have in the case of chemical equilibrium / on the interface.
Definition porousmediumflow/mpnc/volumevariables.hh:712
Scalar relativePermeability(const unsigned int phaseIdx) const
Returns the relative permeability of a given phase within the control volume.
Definition porousmediumflow/mpnc/volumevariables.hh:858
const FluidState & fluidState() const
Returns the fluid configuration at the given primary variables.
Definition porousmediumflow/mpnc/volumevariables.hh:721
Scalar molarity(const int phaseIdx, int compIdx) const
Returns the concentration  of a component in the phase.
Definition porousmediumflow/mpnc/volumevariables.hh:765
Definition porousmediumflow/mpnc/volumevariables.hh:30
Computes the composition of all phases of a N-phase, N-component fluid system assuming that all N pha...
Definition misciblemultiphasecomposition.hh:47
static void solve(FluidState &fluidState, ParameterCache ¶mCache, int knownPhaseIdx=0)
Computes the composition of all phases of a N-phase, N-component fluid system assuming that all N pha...
Definition misciblemultiphasecomposition.hh:69
Exception thrown if a fixable numerical problem occurs.
Definition exceptions.hh:27
The isothermal base class.
Definition porousmediumflow/volumevariables.hh:28
static constexpr int numFluidComponents()
Return number of components considered by the model.
Definition porousmediumflow/volumevariables.hh:40
const PrimaryVariables & priVars() const
Returns the vector of primary variables.
Definition porousmediumflow/volumevariables.hh:64
void update(const ElemSol &elemSol, const Problem &problem, const Element &element, const Scv &scv)
Updates all quantities for a given control volume.
Definition porousmediumflow/volumevariables.hh:52
Determines the fluid composition given the component fugacities and an arbitrary equation of state.
MPNCVolumeVariablesImplementation< Traits, Traits::ModelTraits::enableChemicalNonEquilibrium()> MPNCVolumeVariables
Contains the quantities which are constant within a finite volume in the MpNc model.
Definition porousmediumflow/mpnc/volumevariables.hh:38
@ mostWettingFirst
Definition pressureformulation.hh:25
@ leastWettingFirst
Definition pressureformulation.hh:25
EnergyVolumeVariablesImplementation< IsothermalTraits, Impl, IsothermalTraits::ModelTraits::enableEnergyBalance()> EnergyVolumeVariables
Base class for the model specific class which provides access to all volume averaged quantities.
Definition porousmediumflow/nonisothermal/volumevariables.hh:73
void updateSolidVolumeFractions(const ElemSol &elemSol, const Problem &problem, const Element &element, const Scv &scv, SolidState &solidState, const int solidVolFracOffset)
update the solid volume fractions (inert and reacitve) and set them in the solidstate
Definition updatesolidvolumefractions.hh:24
Computes the composition of all phases of a N-phase, N-component fluid system assuming that all N pha...
Base class for the model specific class which provides access to all volume averaged quantities.
Base class for the model specific class which provides access to all volume averaged quantities.
Update the solid volume fractions (inert and reacitve) and set them in the solidstate.