28#ifndef EWOMS_RICHARDS_INTENSIVE_QUANTITIES_HH
29#define EWOMS_RICHARDS_INTENSIVE_QUANTITIES_HH
33#include <opm/material/fluidstates/ImmiscibleFluidState.hpp>
35#include <dune/common/fvector.hh>
36#include <dune/common/fmatrix.hh>
46template <
class TypeTag>
48 :
public GetPropType<TypeTag, Properties::DiscIntensiveQuantities>
49 ,
public GetPropType<TypeTag, Properties::FluxModule>::FluxIntensiveQuantities
61 enum { pressureWIdx = Indices::pressureWIdx };
62 enum { numPhases = FluidSystem::numPhases };
65 enum { dimWorld = GridView::dimensionworld };
67 using FluxIntensiveQuantities =
typename FluxModule::FluxIntensiveQuantities;
68 using DimMatrix = Dune::FieldMatrix<Scalar, dimWorld, dimWorld>;
69 using ScalarPhaseVector = Dune::FieldVector<Scalar, numPhases>;
70 using PhaseVector = Dune::FieldVector<Evaluation, numPhases>;
92 fluidState_.setTemperature(T);
95 const auto& problem =
elemCtx.problem();
105 fluidState_.setSaturation(liquidPhaseIdx, 1.0);
106 fluidState_.setSaturation(gasPhaseIdx, 0.0);
107 ScalarPhaseVector
pC;
113 const Evaluation&
pW = priVars.makeEvaluation(pressureWIdx,
timeIdx);
116 pW + (
pC[gasPhaseIdx] -
pC[liquidPhaseIdx]));
121 fluidState_.setPressure(liquidPhaseIdx,
pW);
122 fluidState_.setPressure(gasPhaseIdx,
pN);
126 fluidState_.setSaturation(liquidPhaseIdx, sat[liquidPhaseIdx]);
127 fluidState_.setSaturation(gasPhaseIdx, sat[gasPhaseIdx]);
133 const Evaluation&
mu = FluidSystem::viscosity(fluidState_,
paramCache, liquidPhaseIdx);
134 fluidState_.setViscosity(liquidPhaseIdx,
mu);
135 fluidState_.setViscosity(gasPhaseIdx, 1
e-20);
138 const Evaluation& rho = FluidSystem::density(fluidState_,
paramCache, liquidPhaseIdx);
139 fluidState_.setDensity(liquidPhaseIdx, rho);
140 fluidState_.setDensity(gasPhaseIdx, 1
e-20);
143 MaterialLaw::relativePermeabilities(relativePermeability_,
materialParams, fluidState_);
163 {
return fluidState_; }
169 {
return porosity_; }
175 {
return intrinsicPerm_; }
181 {
return relativePermeability_[
phaseIdx]; }
191 DimMatrix intrinsicPerm_;
192 std::array<Evaluation,numPhases> relativePermeability_;
193 std::array<Evaluation,numPhases> mobility_;
194 Evaluation porosity_;
Intensive quantities required by the Richards model.
Definition richardsintensivequantities.hh:50
const Evaluation & mobility(unsigned phaseIdx) const
Returns the effective mobility of a given phase within the control volume.
Definition richardsintensivequantities.hh:186
const FluidState & fluidState() const
Returns the phase state for the control-volume.
Definition richardsintensivequantities.hh:162
const Evaluation & porosity() const
Returns the average porosity within the control volume.
Definition richardsintensivequantities.hh:168
const DimMatrix & intrinsicPermeability() const
Returns the intrinsic permeability tensor a degree of freedom.
Definition richardsintensivequantities.hh:174
void update(const ElementContext &elemCtx, unsigned dofIdx, unsigned timeIdx)
Definition richardsintensivequantities.hh:87
Opm::ImmiscibleFluidState< Evaluation, FluidSystem > FluidState
The type returned by the fluidState() method.
Definition richardsintensivequantities.hh:75
const Evaluation & relativePermeability(unsigned phaseIdx) const
Returns the relative permeability of a given phase within the control volume.
Definition richardsintensivequantities.hh:180
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilboundaryratevector.hh:37
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:242
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(....
Definition propertysystem.hh:235
Contains the property declarations for the Richards model.