www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PorousFlowRelativePermeabilityBase Class Referenceabstract

Base class for PorousFlow relative permeability materials. More...

#include <PorousFlowRelativePermeabilityBase.h>

Inheritance diagram for PorousFlowRelativePermeabilityBase:
[legend]

Public Member Functions

 PorousFlowRelativePermeabilityBase (const InputParameters &parameters)
 

Protected Member Functions

virtual void computeQpProperties () override
 
virtual Real effectiveSaturation (Real saturation) const
 Effective saturation of fluid phase. More...
 
virtual Real relativePermeability (Real seff) const =0
 Relative permeability equation (must be overriden in derived class) More...
 
virtual Real dRelativePermeability (Real seff) const =0
 Derivative of relative permeability with respect to effective saturation. More...
 

Protected Attributes

const Real _scaling
 Relative permeability is multiplied by this quantity. More...
 
const MaterialProperty< std::vector< Real > > & _saturation
 Saturation material property. More...
 
MaterialProperty< Real > & _relative_permeability
 Relative permeability material property. More...
 
MaterialProperty< Real > & _drelative_permeability_ds
 Derivative of relative permeability wrt phase saturation. More...
 
const Real _s_res
 Residual saturation of specified phase. More...
 
const Real _sum_s_res
 Sum of residual saturations over all phases. More...
 
const Real _dseff_ds
 Derivative of effective saturation with respect to saturation. More...
 
const unsigned int _phase_num
 Phase number of fluid. More...
 
const std::string _phase
 Stringified fluid phase number. More...
 

Detailed Description

Base class for PorousFlow relative permeability materials.

All materials that derive from this class must override relativePermeability() and dRelativePermeability()

Definition at line 25 of file PorousFlowRelativePermeabilityBase.h.

Constructor & Destructor Documentation

◆ PorousFlowRelativePermeabilityBase()

PorousFlowRelativePermeabilityBase::PorousFlowRelativePermeabilityBase ( const InputParameters &  parameters)

Definition at line 34 of file PorousFlowRelativePermeabilityBase.C.

36  : PorousFlowMaterialBase(parameters),
37  _scaling(getParam<Real>("scaling")),
38  _saturation(_nodal_material
39  ? getMaterialProperty<std::vector<Real>>("PorousFlow_saturation_nodal")
40  : getMaterialProperty<std::vector<Real>>("PorousFlow_saturation_qp")),
42  _nodal_material ? declareProperty<Real>("PorousFlow_relative_permeability_nodal" + _phase)
43  : declareProperty<Real>("PorousFlow_relative_permeability_qp" + _phase)),
45  _nodal_material
46  ? declarePropertyDerivative<Real>("PorousFlow_relative_permeability_nodal" + _phase,
47  _saturation_variable_name)
48  : declarePropertyDerivative<Real>("PorousFlow_relative_permeability_qp" + _phase,
49  _saturation_variable_name)),
50  _s_res(getParam<Real>("s_res")),
51  _sum_s_res(getParam<Real>("sum_s_res")),
52  _dseff_ds(1.0 / (1.0 - _sum_s_res))
53 {
54  if (_sum_s_res < _s_res)
55  mooseError("Sum of residual saturations sum_s_res cannot be smaller than s_res in ", name());
56 }
const Real _scaling
Relative permeability is multiplied by this quantity.
MaterialProperty< Real > & _relative_permeability
Relative permeability material property.
const Real _dseff_ds
Derivative of effective saturation with respect to saturation.
const MaterialProperty< std::vector< Real > > & _saturation
Saturation material property.
PorousFlowMaterialBase(const InputParameters &parameters)
const std::string name
Definition: Setup.h:22
const std::string _phase
Stringified fluid phase number.
MaterialProperty< Real > & _drelative_permeability_ds
Derivative of relative permeability wrt phase saturation.
const Real _sum_s_res
Sum of residual saturations over all phases.
const Real _s_res
Residual saturation of specified phase.

Member Function Documentation

◆ computeQpProperties()

void PorousFlowRelativePermeabilityBase::computeQpProperties ( )
overrideprotectedvirtual

Definition at line 59 of file PorousFlowRelativePermeabilityBase.C.

60 {
61  // Effective saturation
62  Real seff = effectiveSaturation(_saturation[_qp][_phase_num]);
63  Real relperm, drelperm;
64 
65  if (seff < 0.0)
66  {
67  // Relative permeability is 0 for saturation less than residual
68  relperm = 0.0;
69  drelperm = 0.0;
70  }
71  else if (seff >= 0.0 && seff <= 1)
72  {
73  relperm = relativePermeability(seff);
74  drelperm = dRelativePermeability(seff);
75  }
76  else // seff > 1
77  {
78  // Relative permeability is 1 when fully saturated
79  relperm = 1.0;
80  drelperm = 0.0;
81  }
82 
83  _relative_permeability[_qp] = relperm * _scaling;
84  _drelative_permeability_ds[_qp] = drelperm * _dseff_ds * _scaling;
85 }
const Real _scaling
Relative permeability is multiplied by this quantity.
MaterialProperty< Real > & _relative_permeability
Relative permeability material property.
const Real _dseff_ds
Derivative of effective saturation with respect to saturation.
const MaterialProperty< std::vector< Real > > & _saturation
Saturation material property.
virtual Real effectiveSaturation(Real saturation) const
Effective saturation of fluid phase.
const unsigned int _phase_num
Phase number of fluid.
virtual Real relativePermeability(Real seff) const =0
Relative permeability equation (must be overriden in derived class)
virtual Real dRelativePermeability(Real seff) const =0
Derivative of relative permeability with respect to effective saturation.
MaterialProperty< Real > & _drelative_permeability_ds
Derivative of relative permeability wrt phase saturation.

◆ dRelativePermeability()

virtual Real PorousFlowRelativePermeabilityBase::dRelativePermeability ( Real  seff) const
protectedpure virtual

Derivative of relative permeability with respect to effective saturation.

Parameters
seffeffective saturation
Returns
derivative of relative permeability wrt effective saturation

Implemented in PorousFlowRelativePermeabilityVG, PorousFlowRelativePermeabilityBC, PorousFlowRelativePermeabilityBW, PorousFlowRelativePermeabilityCorey, PorousFlowRelativePermeabilityFLAC, and PorousFlowRelativePermeabilityConst.

Referenced by computeQpProperties().

◆ effectiveSaturation()

Real PorousFlowRelativePermeabilityBase::effectiveSaturation ( Real  saturation) const
protectedvirtual

Effective saturation of fluid phase.

Parameters
saturationtrue saturation
Returns
effective saturation

Definition at line 88 of file PorousFlowRelativePermeabilityBase.C.

Referenced by computeQpProperties().

89 {
90  return (saturation - _s_res) / (1.0 - _sum_s_res);
91 }
const Real _sum_s_res
Sum of residual saturations over all phases.
const Real _s_res
Residual saturation of specified phase.

◆ relativePermeability()

virtual Real PorousFlowRelativePermeabilityBase::relativePermeability ( Real  seff) const
protectedpure virtual

Relative permeability equation (must be overriden in derived class)

Parameters
seffeffective saturation
Returns
relative permeability

Implemented in PorousFlowRelativePermeabilityVG, PorousFlowRelativePermeabilityBC, PorousFlowRelativePermeabilityBW, PorousFlowRelativePermeabilityCorey, PorousFlowRelativePermeabilityFLAC, and PorousFlowRelativePermeabilityConst.

Referenced by computeQpProperties().

Member Data Documentation

◆ _drelative_permeability_ds

MaterialProperty<Real>& PorousFlowRelativePermeabilityBase::_drelative_permeability_ds
protected

Derivative of relative permeability wrt phase saturation.

Definition at line 64 of file PorousFlowRelativePermeabilityBase.h.

Referenced by computeQpProperties().

◆ _dseff_ds

const Real PorousFlowRelativePermeabilityBase::_dseff_ds
protected

Derivative of effective saturation with respect to saturation.

Definition at line 73 of file PorousFlowRelativePermeabilityBase.h.

Referenced by computeQpProperties().

◆ _phase

const std::string PorousFlowMaterialBase::_phase
protectedinherited

Stringified fluid phase number.

Definition at line 38 of file PorousFlowMaterialBase.h.

◆ _phase_num

const unsigned int PorousFlowMaterialBase::_phase_num
protectedinherited

◆ _relative_permeability

MaterialProperty<Real>& PorousFlowRelativePermeabilityBase::_relative_permeability
protected

Relative permeability material property.

Definition at line 61 of file PorousFlowRelativePermeabilityBase.h.

Referenced by computeQpProperties().

◆ _s_res

const Real PorousFlowRelativePermeabilityBase::_s_res
protected

Residual saturation of specified phase.

Definition at line 67 of file PorousFlowRelativePermeabilityBase.h.

Referenced by effectiveSaturation(), and PorousFlowRelativePermeabilityBase().

◆ _saturation

const MaterialProperty<std::vector<Real> >& PorousFlowRelativePermeabilityBase::_saturation
protected

Saturation material property.

Definition at line 58 of file PorousFlowRelativePermeabilityBase.h.

Referenced by computeQpProperties().

◆ _scaling

const Real PorousFlowRelativePermeabilityBase::_scaling
protected

Relative permeability is multiplied by this quantity.

Definition at line 55 of file PorousFlowRelativePermeabilityBase.h.

Referenced by computeQpProperties().

◆ _sum_s_res

const Real PorousFlowRelativePermeabilityBase::_sum_s_res
protected

Sum of residual saturations over all phases.

Definition at line 70 of file PorousFlowRelativePermeabilityBase.h.

Referenced by effectiveSaturation(), and PorousFlowRelativePermeabilityBase().


The documentation for this class was generated from the following files: