13#ifndef DUMUX_3P_VOLUME_VARIABLES_HH
14#define DUMUX_3P_VOLUME_VARIABLES_HH
28template <
class Traits>
36 using Scalar =
typename Traits::PrimaryVariables::value_type;
37 using PermeabilityType =
typename Traits::PermeabilityType;
38 using Idx =
typename Traits::ModelTraits::Indices;
39 using FS =
typename Traits::FluidSystem;
43 wPhaseIdx = FS::wPhaseIdx,
44 gPhaseIdx = FS::gPhaseIdx,
45 nPhaseIdx = FS::nPhaseIdx,
49 pressureIdx = Idx::pressureIdx
73 template<
class ElemSol,
class Problem,
class Element,
class Scv>
75 const Problem &problem,
76 const Element &element,
86 const auto fluidMatrixInteraction = problem.spatialParams().fluidMatrixInteraction(element, scv, elemSol);
89 mobility_[phaseIdx] = fluidMatrixInteraction.kr(phaseIdx, sw, sn)
95 EnergyVolVars::updateSolidEnergyParams(elemSol, problem, element, scv,
solidState_);
96 permeability_ = problem.spatialParams().permeability(element, scv, elemSol);
97 EnergyVolVars::updateEffectiveThermalConductivity();
113 template<
class ElemSol,
class Problem,
class Element,
class Scv>
115 const Problem& problem,
116 const Element& element,
123 const auto&
priVars = elemSol[scv.localDofIndex()];
125 const auto fluidMatrixInteraction = problem.spatialParams().fluidMatrixInteraction(element, scv, elemSol);
127 const Scalar sw =
priVars[swIdx];
128 const Scalar sn =
priVars[snIdx];
129 const Scalar sg = 1.0 - sw - sn;
136 const Scalar pg =
priVars[pressureIdx];
139 const Scalar pcgw = fluidMatrixInteraction.pcgw(sw, sn);
140 const Scalar pcnw = fluidMatrixInteraction.pcnw(sw, sn);
141 const Scalar pcgn = fluidMatrixInteraction.pcgn(sw, sn);
143 const Scalar pcAlpha = fluidMatrixInteraction.pcAlpha(sw, sn);
144 const Scalar pcNW1 = 0.0;
146 const Scalar pn = pg- pcAlpha * pcgn - (1.0 - pcAlpha)*(pcgw - pcNW1);
147 const Scalar pw = pn - pcAlpha * pcnw - (1.0 - pcAlpha)*pcNW1;
153 typename FluidSystem::ParameterCache paramCache;
167 const Scalar h = EnergyVolVars::enthalpy(
fluidState, paramCache, phaseIdx);
229 return mobility_[phaseIdx];
248 {
return permeability_; }
256 PermeabilityType permeability_;
Definition: porousmediumflow/nonisothermal/volumevariables.hh:63
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
static constexpr int numFluidPhases()
Return number of phases considered by the model.
Definition: porousmediumflow/volumevariables.hh:38
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
Contains the quantities which are constant within a finite volume in the three-phase model.
Definition: porousmediumflow/3p/volumevariables.hh:32
const SolidState & solidState() const
Returns the phase state for the control volume.
Definition: porousmediumflow/3p/volumevariables.hh:181
const PermeabilityType & permeability() const
Returns the permeability within the control volume in .
Definition: porousmediumflow/3p/volumevariables.hh:247
Idx Indices
Export the indices.
Definition: porousmediumflow/3p/volumevariables.hh:58
Scalar saturation(const int phaseIdx) const
Returns the effective saturation of a given phase within the control volume.
Definition: porousmediumflow/3p/volumevariables.hh:190
void completeFluidState(const ElemSol &elemSol, const Problem &problem, const Element &element, const Scv &scv, FluidState &fluidState, SolidState &solidState)
Sets complete fluid state.
Definition: porousmediumflow/3p/volumevariables.hh:114
typename Traits::SolidSystem SolidSystem
Export type of solid system.
Definition: porousmediumflow/3p/volumevariables.hh:62
SolidState solidState_
Definition: porousmediumflow/3p/volumevariables.hh:252
typename Traits::FluidState FluidState
Export fluid state type.
Definition: porousmediumflow/3p/volumevariables.hh:54
Scalar porosity() const
Returns the average porosity within the control volume.
Definition: porousmediumflow/3p/volumevariables.hh:241
Scalar mobility(const int phaseIdx) const
Returns the effective mobility of a given phase within the control volume.
Definition: porousmediumflow/3p/volumevariables.hh:227
typename Traits::FluidSystem FluidSystem
Export fluid system type.
Definition: porousmediumflow/3p/volumevariables.hh:56
void update(const ElemSol &elemSol, const Problem &problem, const Element &element, const Scv &scv)
Updates all quantities for a given control volume.
Definition: porousmediumflow/3p/volumevariables.hh:74
const FluidState & fluidState() const
Returns the phase state for the control-volume.
Definition: porousmediumflow/3p/volumevariables.hh:175
FluidState fluidState_
Definition: porousmediumflow/3p/volumevariables.hh:251
Scalar temperature() const
Returns temperature inside the sub-control volume.
Definition: porousmediumflow/3p/volumevariables.hh:218
Scalar density(const int phaseIdx) const
Returns the mass density of a given phase within the control volume.
Definition: porousmediumflow/3p/volumevariables.hh:199
typename Traits::SolidState SolidState
Export type of solid state.
Definition: porousmediumflow/3p/volumevariables.hh:60
Scalar capillaryPressure() const
Returns the effective capillary pressure within the control volume.
Definition: porousmediumflow/3p/volumevariables.hh:235
Scalar pressure(const int phaseIdx) const
Returns the effective pressure of a given phase within the control volume.
Definition: porousmediumflow/3p/volumevariables.hh:208
A central place for various physical constants occurring in some equations.
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
Represents all relevant thermodynamic quantities of a multi-phase fluid system assuming immiscibility...
std::string viscosity(int phaseIdx) noexcept
I/O name of viscosity for multiphase systems.
Definition: name.hh:62
std::string density(int phaseIdx) noexcept
I/O name of density for multiphase systems.
Definition: name.hh:53
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.