https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
PorousFlowPorosityLinear Class Reference

Material designed to provide the porosity in PorousFlow simulations porosity_ref + P_coeff * (P - P_ref) + T_coeff * (T - T_ref) + epv_coeff * (epv - epv_ref), where P is the effective porepressure, T is the temperature and epv is the volumetric strain. More...

#include <PorousFlowPorosityLinear.h>

Inheritance diagram for PorousFlowPorosityLinear:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 PorousFlowPorosityLinear (const InputParameters &parameters)
 
virtual void initialSetup () override
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
void validateDerivativeMaterialPropertyBase (const std::string &base)
 
const MaterialPropertyName derivativePropertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName derivativePropertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName derivativePropertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName derivativePropertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
GenericMaterialProperty< U, is_ad > & declarePropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, const SymbolName &c1, unsigned int v2, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivative (const std::string &base, unsigned int v1, unsigned int v2=libMesh::invalid_uint, unsigned int v3=libMesh::invalid_uint)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< VariableName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
const GenericMaterialProperty< U, is_ad > & getMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2="", const SymbolName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateCoupling (const MaterialPropertyName &base, const std::vector< VariableName > &c, bool validate_aux=true)
 
void validateCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
void validateNonlinearCoupling (const MaterialPropertyName &base, const VariableName &c1="", const VariableName &c2="", const VariableName &c3="")
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyName (const MaterialPropertyName &base, const std::vector< SymbolName > &c) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameFirst (const MaterialPropertyName &base, const SymbolName &c1) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameSecond (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 
const MaterialPropertyName propertyNameThird (const MaterialPropertyName &base, const SymbolName &c1, const SymbolName &c2, const SymbolName &c3) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual void initQpStatefulProperties () override
 
virtual void computeQpProperties () override
 

Protected Attributes

const bool _strain_at_nearest_qp
 When calculating nodal porosity, use the strain at the nearest quadpoint to the node.
 
const Real _porosity_min
 If the linear relationship produces porosity < _porosity_min, then porosity is set to _porosity_min.
 
const VariableValue_phi_ref
 Porosity at reference porepressure, temperature and volumetric strain.
 
const VariableValue_P_ref
 Reference effective porepressure.
 
const VariableValue_T_ref
 Reference temperature.
 
const VariableValue_epv_ref
 Reference volumetric strain.
 
const Real _P_coeff
 coefficient of effective porepressure
 
const Real _T_coeff
 coefficient of temperature
 
const Real _epv_coeff
 coefficient of volumetric strain
 
const bool _uses_volstrain
 whether epv_coeff has been set
 
const OptionalMaterialProperty< Real > & _vol_strain_qp
 Strain (first const means we never want to dereference and change the value, second means we'll always be pointing to the same address after initialization (like a reference))
 
const OptionalMaterialProperty< std::vector< RealGradient > > & _dvol_strain_qp_dvar
 d(strain)/(dvar) (first const means we never want to dereference and change the value, second means we'll always be pointing to the same address after initialization (like a reference))
 
const bool _uses_pf
 whether P_coeff has been set
 
const OptionalMaterialProperty< Real > & _pf_nodal
 Effective porepressure at the quadpoints or nodes.
 
const OptionalMaterialProperty< Real > & _pf_qp
 
const MaterialProperty< Real > * _pf
 
const OptionalMaterialProperty< std::vector< Real > > & _dpf_dvar_nodal
 d(effective porepressure)/(d porflow variable)
 
const OptionalMaterialProperty< std::vector< Real > > & _dpf_dvar_qp
 
const MaterialProperty< std::vector< Real > > * _dpf_dvar
 
const bool _uses_T
 whether T_coeff has been set
 
const OptionalMaterialProperty< Real > & _temperature_nodal
 Temperature at the quadpoints or nodes.
 
const OptionalMaterialProperty< Real > & _temperature_qp
 
const MaterialProperty< Real > * _temperature
 
const OptionalMaterialProperty< std::vector< Real > > & _dtemperature_dvar_nodal
 d(temperature)/(d porflow variable)
 
const OptionalMaterialProperty< std::vector< Real > > & _dtemperature_dvar_qp
 
const MaterialProperty< std::vector< Real > > * _dtemperature_dvar
 
const Real _zero_modifier
 If the linear relationship produces porosity < _porosity_min, then porosity is set to _porosity_min. This means the derivatives of it will be zero. However, this gives poor NR convergence, so the derivatives are set to _zero_modifier * (values that are relevant for porosity_min) to hint to the NR that porosity is not always constant.
 
GenericMaterialProperty< Real, is_ad > & _porosity
 Computed porosity at the nodes or quadpoints.
 
MaterialProperty< std::vector< Real > > *const _dporosity_dvar
 d(porosity)/d(PorousFlow variable)
 
MaterialProperty< std::vector< RealGradient > > *const _dporosity_dgradvar
 d(porosity)/d(grad PorousFlow variable)
 
const unsigned int _num_phases
 Number of phases.
 
const unsigned int _num_components
 Number of fluid components.
 
const unsigned int _num_var
 Number of PorousFlow variables.
 

Private Member Functions

bool haveMaterialProperty (const std::string &prop_name)
 
std::vector< VariableName > buildVariableVector (const VariableName &c1, const VariableName &c2, const VariableName &c3)
 
void validateCouplingHelper (const MaterialPropertyName &base, const std::vector< VariableName > &c, const System &system, std::vector< VariableName > &missing)
 
bool isNotObjectVariable (const VariableName &name)
 

Private Attributes

FEProblemBase_dmi_fe_problem
 

Detailed Description

Material designed to provide the porosity in PorousFlow simulations porosity_ref + P_coeff * (P - P_ref) + T_coeff * (T - T_ref) + epv_coeff * (epv - epv_ref), where P is the effective porepressure, T is the temperature and epv is the volumetric strain.

Definition at line 19 of file PorousFlowPorosityLinear.h.

Constructor & Destructor Documentation

◆ PorousFlowPorosityLinear()

PorousFlowPorosityLinear::PorousFlowPorosityLinear ( const InputParameters parameters)

Definition at line 68 of file PorousFlowPorosityLinear.C.

69 : PorousFlowPorosityBase(parameters),
70 _strain_at_nearest_qp(getParam<bool>("strain_at_nearest_qp")),
71 _porosity_min(getParam<Real>("porosity_min")),
72 _phi_ref(coupledValue("porosity_ref")),
73 _P_ref(_nodal_material ? coupledDofValues("P_ref") : coupledValue("P_ref")),
74 _T_ref(_nodal_material ? coupledDofValues("T_ref") : coupledValue("T_ref")),
75 _epv_ref(coupledValue("epv_ref")),
76 _P_coeff(getParam<Real>("P_coeff")),
77 _T_coeff(getParam<Real>("T_coeff")),
78 _epv_coeff(getParam<Real>("epv_coeff")),
79
80 _uses_volstrain(parameters.isParamSetByUser("epv_coeff") && _epv_coeff != 0.0),
81 _vol_strain_qp(getOptionalMaterialProperty<Real>("PorousFlow_total_volumetric_strain_qp")),
82 _dvol_strain_qp_dvar(getOptionalMaterialProperty<std::vector<RealGradient>>(
83 "dPorousFlow_total_volumetric_strain_qp_dvar")),
84
85 _uses_pf(parameters.isParamSetByUser("P_coeff") && _P_coeff != 0.0),
86 _pf_nodal(getOptionalMaterialProperty<Real>("PorousFlow_effective_fluid_pressure_nodal")),
87 _pf_qp(getOptionalMaterialProperty<Real>("PorousFlow_effective_fluid_pressure_qp")),
88 _dpf_dvar_nodal(getOptionalMaterialProperty<std::vector<Real>>(
89 "dPorousFlow_effective_fluid_pressure_nodal_dvar")),
90 _dpf_dvar_qp(getOptionalMaterialProperty<std::vector<Real>>(
91 "dPorousFlow_effective_fluid_pressure_qp_dvar")),
92
93 _uses_T(parameters.isParamSetByUser("T_coeff") && _T_coeff != 0.0),
94 _temperature_nodal(getOptionalMaterialProperty<Real>("PorousFlow_temperature_nodal")),
95 _temperature_qp(getOptionalMaterialProperty<Real>("PorousFlow_temperature_qp")),
97 getOptionalMaterialProperty<std::vector<Real>>("dPorousFlow_temperature_nodal_dvar")),
99 getOptionalMaterialProperty<std::vector<Real>>("dPorousFlow_temperature_qp_dvar")),
100 _zero_modifier(getParam<Real>("zero_modifier"))
101{
102}
PorousFlowPorosityBaseTempl< false > PorousFlowPorosityBase
const OptionalMaterialProperty< Real > & _pf_nodal
Effective porepressure at the quadpoints or nodes.
const Real _P_coeff
coefficient of effective porepressure
const OptionalMaterialProperty< Real > & _pf_qp
const VariableValue & _P_ref
Reference effective porepressure.
const bool _uses_T
whether T_coeff has been set
const OptionalMaterialProperty< std::vector< RealGradient > > & _dvol_strain_qp_dvar
d(strain)/(dvar) (first const means we never want to dereference and change the value,...
const bool _uses_volstrain
whether epv_coeff has been set
const Real _T_coeff
coefficient of temperature
const OptionalMaterialProperty< std::vector< Real > > & _dtemperature_dvar_qp
const VariableValue & _phi_ref
Porosity at reference porepressure, temperature and volumetric strain.
const VariableValue & _epv_ref
Reference volumetric strain.
const OptionalMaterialProperty< std::vector< Real > > & _dtemperature_dvar_nodal
d(temperature)/(d porflow variable)
const OptionalMaterialProperty< std::vector< Real > > & _dpf_dvar_nodal
d(effective porepressure)/(d porflow variable)
const OptionalMaterialProperty< std::vector< Real > > & _dpf_dvar_qp
const bool _strain_at_nearest_qp
When calculating nodal porosity, use the strain at the nearest quadpoint to the node.
const OptionalMaterialProperty< Real > & _vol_strain_qp
Strain (first const means we never want to dereference and change the value, second means we'll alway...
const bool _uses_pf
whether P_coeff has been set
const Real _zero_modifier
If the linear relationship produces porosity < _porosity_min, then porosity is set to _porosity_min....
const VariableValue & _T_ref
Reference temperature.
const Real _epv_coeff
coefficient of volumetric strain
const OptionalMaterialProperty< Real > & _temperature_qp
const Real _porosity_min
If the linear relationship produces porosity < _porosity_min, then porosity is set to _porosity_min.
const OptionalMaterialProperty< Real > & _temperature_nodal
Temperature at the quadpoints or nodes.
RealVectorValue RealGradient
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Member Function Documentation

◆ computeQpProperties()

void PorousFlowPorosityLinear::computeQpProperties ( )
overrideprotectedvirtual

Definition at line 138 of file PorousFlowPorosityLinear.C.

139{
140 // note the [0] below: _phi_ref is a constant monomial and we use [0] regardless of
141 // _nodal_material
143 if (_uses_pf)
144 porosity += _P_coeff * ((*_pf)[_qp] - _P_ref[_qp]);
145 if (_uses_T)
146 porosity += _T_coeff * ((*_temperature)[_qp] - _T_ref[_qp]);
147 if (_uses_volstrain)
148 {
149 // Note that in the following _strain[_qp] is evaluated at q quadpoint
150 // So _porosity_nodal[_qp], which should be the nodal value of porosity
151 // actually uses the strain at a quadpoint. This
152 // is OK for LINEAR elements, as strain is constant over the element anyway.
153 const unsigned qp_to_use =
154 (_nodal_material && (_bnd || _strain_at_nearest_qp) ? nearestQP(_qp) : _qp);
155 porosity += _epv_coeff * (_vol_strain_qp[qp_to_use] - _epv_ref[0]);
156 }
157
158 if (porosity < _porosity_min)
160 else
161 _porosity[_qp] = porosity;
162
163 (*_dporosity_dvar)[_qp].resize(_num_var);
164 (*_dporosity_dgradvar)[_qp].resize(_num_var);
165 for (unsigned int pvar = 0; pvar < _num_var; ++pvar)
166 {
167 Real deriv = 0.0;
168 if (_uses_pf)
169 deriv += _P_coeff * (*_dpf_dvar)[_qp][pvar];
170 if (_uses_T)
171 deriv += _T_coeff * (*_dtemperature_dvar)[_qp][pvar];
172 if (porosity < _porosity_min)
173 (*_dporosity_dvar)[_qp][pvar] = _zero_modifier * deriv;
174 else
175 (*_dporosity_dvar)[_qp][pvar] = deriv;
176
177 RealGradient deriv_grad(0.0, 0.0, 0.0);
178 if (_uses_volstrain)
179 {
180 const unsigned qp_to_use =
181 (_nodal_material && (_bnd || _strain_at_nearest_qp) ? nearestQP(_qp) : _qp);
182 deriv_grad += _epv_coeff * _dvol_strain_qp_dvar[qp_to_use][pvar];
183 }
184 if (porosity < _porosity_min)
185 (*_dporosity_dgradvar)[_qp][pvar] = _zero_modifier * deriv_grad;
186 else
187 (*_dporosity_dgradvar)[_qp][pvar] = deriv_grad;
188 }
189}
const unsigned int _num_var
Number of PorousFlow variables.
MaterialProperty< std::vector< RealGradient > > *const _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable)
MaterialProperty< std::vector< Real > > *const _dporosity_dvar
d(porosity)/d(PorousFlow variable)
GenericMaterialProperty< Real, is_ad > & _porosity
Computed porosity at the nodes or quadpoints.
Real deriv(unsigned n, unsigned alpha, unsigned beta, Real x)

◆ initialSetup()

void PorousFlowPorosityLinear::initialSetup ( )
overridevirtual

Definition at line 105 of file PorousFlowPorosityLinear.C.

106{
107 _pf = _nodal_material ? _pf_nodal.get() : _pf_qp.get();
108 _dpf_dvar = _nodal_material ? _dpf_dvar_nodal.get() : _dpf_dvar_qp.get();
109 if (!(_pf && _dpf_dvar) && _uses_pf)
110 {
111 mooseError("PorousFlowPorosityLinear: When P_coeff is given you must have an effective fluid "
112 "pressure Material");
113 }
114
115 _temperature = _nodal_material ? _temperature_nodal.get() : _temperature_qp.get();
117 _nodal_material ? _dtemperature_dvar_nodal.get() : _dtemperature_dvar_qp.get();
118 if (!_temperature && _uses_T)
120 "PorousFlowPorosityLinear: When T_coeff is given you must have a temperature Material");
121
123 mooseError("PorousFlowPorosityLinear: When epv_coeff is given you must have a "
124 "volumetric-strain Material");
125
126 PorousFlowPorosityBase::initialSetup();
127}
void mooseError(Args &&... args)
const MooseArray< Moose::GenericType< T, is_ad > > & get() const
const MaterialProperty< std::vector< Real > > * _dtemperature_dvar
const MaterialProperty< Real > * _pf
const MaterialProperty< std::vector< Real > > * _dpf_dvar
const MaterialProperty< Real > * _temperature

◆ initQpStatefulProperties()

void PorousFlowPorosityLinear::initQpStatefulProperties ( )
overrideprotectedvirtual

Definition at line 130 of file PorousFlowPorosityLinear.C.

131{
132 _porosity[_qp] = _phi_ref[0];
133 (*_dporosity_dvar)[_qp].assign(_num_var, 0.0);
134 (*_dporosity_dgradvar)[_qp].assign(_num_var, 0.0);
135}

◆ validParams()

InputParameters PorousFlowPorosityLinear::validParams ( )
static

Definition at line 15 of file PorousFlowPorosityLinear.C.

16{
18 params.addParam<bool>("strain_at_nearest_qp",
19 false,
20 "When calculating nodal porosity that depends on strain, use the strain at "
21 "the nearest quadpoint. This adds a small extra computational burden, and "
22 "is not necessary for simulations involving only linear lagrange elements. "
23 " If you set this to true, you will also want to set the same parameter to "
24 "true for related Kernels and Materials");
26 "porosity_ref",
27 "The porosity at reference effective porepressure, temperature and volumetric strain. This "
28 "must be a real number or a constant monomial variable (not a linear lagrange or other type "
29 "of variable)");
30 params.addCoupledVar(
31 "P_ref",
32 0.0,
33 "The reference effective porepressure. This should usually be a linear-lagrange variable");
34 params.addCoupledVar(
35 "T_ref",
36 0.0,
37 "The reference temperature. This should usually be a linear-lagrange variable");
38 params.addCoupledVar("epv_ref",
39 0.0,
40 "The reference volumetric strain. This must be a real number or a constant "
41 "monomial variable (not a linear lagrange or other type of variable)");
42 params.addParam<Real>("P_coeff", 0.0, "Effective porepressure coefficient");
43 params.addParam<Real>("T_coeff", 0.0, "Temperature coefficient");
44 params.addParam<Real>("epv_coeff", 0.0, "Volumetric-strain coefficient");
46 "porosity_min",
47 0.0,
48 "porosity_min >= 0",
49 "Minimum allowed value of the porosity: if the linear relationship gives "
50 "values less than this value, then porosity is set to this value instead");
51 params.addParam<Real>(
52 "zero_modifier",
53 1E-3,
54 "If the linear relationship produces porosity < porosity_min, then porosity is set "
55 "porosity_min. This means the derivatives of it will be zero. However, these zero "
56 "derivatives often result in poor NR convergence, so the derivatives are set to "
57 "_zero_modifier * (values that are relevant for min porosity) to hint to the NR that "
58 "porosity is not always constant");
59 params.addParamNamesToGroup("zero_modifier", "Advanced");
61 "This Material calculates the porosity in PorousFlow simulations using the relationship "
62 "porosity_ref + P_coeff * (P - P_ref) + T_coeff * (T - T_ref) + epv_coeff * (epv - epv_ref), "
63 "where P is the effective porepressure, T is the temperature and epv is the volumetric "
64 "strain");
65 return params;
66}
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
void addCoupledVar(const std::string &name, const std::string &doc_string)
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)
static InputParameters validParams()

Member Data Documentation

◆ _dpf_dvar

const MaterialProperty<std::vector<Real> >* PorousFlowPorosityLinear::_dpf_dvar
protected

Definition at line 79 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _dpf_dvar_nodal

const OptionalMaterialProperty<std::vector<Real> >& PorousFlowPorosityLinear::_dpf_dvar_nodal
protected

d(effective porepressure)/(d porflow variable)

Definition at line 77 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _dpf_dvar_qp

const OptionalMaterialProperty<std::vector<Real> >& PorousFlowPorosityLinear::_dpf_dvar_qp
protected

Definition at line 78 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _dporosity_dgradvar

template<bool is_ad>
MaterialProperty<std::vector<RealGradient> >* const PorousFlowPorosityBaseTempl< is_ad >::_dporosity_dgradvar
protectedinherited

d(porosity)/d(grad PorousFlow variable)

Definition at line 33 of file PorousFlowPorosityBase.h.

Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties(), and computeQpProperties().

◆ _dporosity_dvar

template<bool is_ad>
MaterialProperty<std::vector<Real> >* const PorousFlowPorosityBaseTempl< is_ad >::_dporosity_dvar
protectedinherited

d(porosity)/d(PorousFlow variable)

Definition at line 30 of file PorousFlowPorosityBase.h.

Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties(), and computeQpProperties().

◆ _dtemperature_dvar

const MaterialProperty<std::vector<Real> >* PorousFlowPorosityLinear::_dtemperature_dvar
protected

Definition at line 92 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _dtemperature_dvar_nodal

const OptionalMaterialProperty<std::vector<Real> >& PorousFlowPorosityLinear::_dtemperature_dvar_nodal
protected

d(temperature)/(d porflow variable)

Definition at line 90 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _dtemperature_dvar_qp

const OptionalMaterialProperty<std::vector<Real> >& PorousFlowPorosityLinear::_dtemperature_dvar_qp
protected

Definition at line 91 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _dvol_strain_qp_dvar

const OptionalMaterialProperty<std::vector<RealGradient> >& PorousFlowPorosityLinear::_dvol_strain_qp_dvar
protected

d(strain)/(dvar) (first const means we never want to dereference and change the value, second means we'll always be pointing to the same address after initialization (like a reference))

Definition at line 66 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties(), and initialSetup().

◆ _epv_coeff

const Real PorousFlowPorosityLinear::_epv_coeff
protected

coefficient of volumetric strain

Definition at line 57 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties().

◆ _epv_ref

const VariableValue& PorousFlowPorosityLinear::_epv_ref
protected

Reference volumetric strain.

Definition at line 48 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties().

◆ _num_components

const unsigned int PorousFlowMaterialVectorBase::_num_components
protectedinherited

◆ _num_phases

const unsigned int PorousFlowMaterialVectorBase::_num_phases
protectedinherited

◆ _num_var

const unsigned int PorousFlowMaterialVectorBase::_num_var
protectedinherited

◆ _P_coeff

const Real PorousFlowPorosityLinear::_P_coeff
protected

coefficient of effective porepressure

Definition at line 51 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties().

◆ _P_ref

const VariableValue& PorousFlowPorosityLinear::_P_ref
protected

Reference effective porepressure.

Definition at line 42 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties().

◆ _pf

const MaterialProperty<Real>* PorousFlowPorosityLinear::_pf
protected

Definition at line 74 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _pf_nodal

const OptionalMaterialProperty<Real>& PorousFlowPorosityLinear::_pf_nodal
protected

Effective porepressure at the quadpoints or nodes.

Definition at line 72 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _pf_qp

const OptionalMaterialProperty<Real>& PorousFlowPorosityLinear::_pf_qp
protected

Definition at line 73 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _phi_ref

const VariableValue& PorousFlowPorosityLinear::_phi_ref
protected

Porosity at reference porepressure, temperature and volumetric strain.

Definition at line 39 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties(), and initQpStatefulProperties().

◆ _porosity

template<bool is_ad>
GenericMaterialProperty<Real, is_ad>& PorousFlowPorosityBaseTempl< is_ad >::_porosity
protectedinherited

◆ _porosity_min

const Real PorousFlowPorosityLinear::_porosity_min
protected

If the linear relationship produces porosity < _porosity_min, then porosity is set to _porosity_min.

Definition at line 36 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties().

◆ _strain_at_nearest_qp

const bool PorousFlowPorosityLinear::_strain_at_nearest_qp
protected

When calculating nodal porosity, use the strain at the nearest quadpoint to the node.

Definition at line 33 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties().

◆ _T_coeff

const Real PorousFlowPorosityLinear::_T_coeff
protected

coefficient of temperature

Definition at line 54 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties().

◆ _T_ref

const VariableValue& PorousFlowPorosityLinear::_T_ref
protected

Reference temperature.

Definition at line 45 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties().

◆ _temperature

const MaterialProperty<Real>* PorousFlowPorosityLinear::_temperature
protected

Definition at line 87 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _temperature_nodal

const OptionalMaterialProperty<Real>& PorousFlowPorosityLinear::_temperature_nodal
protected

Temperature at the quadpoints or nodes.

Definition at line 85 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _temperature_qp

const OptionalMaterialProperty<Real>& PorousFlowPorosityLinear::_temperature_qp
protected

Definition at line 86 of file PorousFlowPorosityLinear.h.

Referenced by initialSetup().

◆ _uses_pf

const bool PorousFlowPorosityLinear::_uses_pf
protected

whether P_coeff has been set

Definition at line 69 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties(), and initialSetup().

◆ _uses_T

const bool PorousFlowPorosityLinear::_uses_T
protected

whether T_coeff has been set

Definition at line 82 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties(), and initialSetup().

◆ _uses_volstrain

const bool PorousFlowPorosityLinear::_uses_volstrain
protected

whether epv_coeff has been set

Definition at line 60 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties(), and initialSetup().

◆ _vol_strain_qp

const OptionalMaterialProperty<Real>& PorousFlowPorosityLinear::_vol_strain_qp
protected

Strain (first const means we never want to dereference and change the value, second means we'll always be pointing to the same address after initialization (like a reference))

Definition at line 63 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties(), and initialSetup().

◆ _zero_modifier

const Real PorousFlowPorosityLinear::_zero_modifier
protected

If the linear relationship produces porosity < _porosity_min, then porosity is set to _porosity_min. This means the derivatives of it will be zero. However, this gives poor NR convergence, so the derivatives are set to _zero_modifier * (values that are relevant for porosity_min) to hint to the NR that porosity is not always constant.

Definition at line 95 of file PorousFlowPorosityLinear.h.

Referenced by computeQpProperties().


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