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
PorousFlowPorosityExponentialBaseTempl< is_ad > Class Template Referenceabstract

Base class Material designed to provide the porosity. More...

#include <PorousFlowPorosityExponentialBase.h>

Inheritance diagram for PorousFlowPorosityExponentialBaseTempl< is_ad >:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 PorousFlowPorosityExponentialBaseTempl (const InputParameters &parameters)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< U, is_ad > & getDefaultMaterialPropertyByName (const std::string &name)
 
Moose::Kokkos::MaterialProperty< U, dimension > declareKokkosPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
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="")
 
Moose::Kokkos::MaterialProperty< U, dimension > getKokkosMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
Moose::Kokkos::MaterialProperty< U, dimension > getKokkosMaterialPropertyDerivative (const std::string &base, const SymbolName &c1)
 
Moose::Kokkos::MaterialProperty< U, dimension > getKokkosMaterialPropertyDerivative (const std::string &base, const std::vector< SymbolName > &c)
 
Moose::Kokkos::MaterialProperty< U, dimension > getKokkosMaterialPropertyDerivative (const std::string &base, const SymbolName &c1)
 
Moose::Kokkos::MaterialProperty< U, dimension > getKokkosMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
Moose::Kokkos::MaterialProperty< U, dimension > getKokkosMaterialPropertyDerivativeByName (const MaterialPropertyName &base, const std::vector< SymbolName > &c)
 
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
 
virtual GenericReal< is_ad > atNegInfinityQp () const =0
 Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay))
 
virtual Real datNegInfinityQp (unsigned pvar) const =0
 d(a)/d(PorousFlow variable pvar)
 
virtual GenericReal< is_ad > atZeroQp () const =0
 Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay))
 
virtual Real datZeroQp (unsigned pvar) const =0
 d(b)/d(PorousFlow variable pvar)
 
virtual GenericReal< is_ad > decayQp () const =0
 Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay))
 
virtual Real ddecayQp_dvar (unsigned pvar) const =0
 d(decay)/d(PorousFlow variable pvar)
 
virtual RealGradient ddecayQp_dgradvar (unsigned pvar) const =0
 d(decay)/d(grad(PorousFlow variable pvar))
 
void applyPorosityMin ()
 If _porosity[_qp] < porosity_min, set _porosity[_qp] = porosity_min and multiply the derivatives of porosity by _zero_modifier (the derivative material properties for non-AD objects, and the AD derivatives for AD objects).
 

Protected Attributes

const bool _strain_at_nearest_qp
 When calculating nodal porosity, use the strain at the nearest quadpoint to the node.
 
const bool _ensure_positive
 for decayQp() > 0, porosity can be negative when using porosity = a + (b - a) * exp(decay).
 
 usingPorousFlowPorosityBaseMembers
 
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 Real _porosity_min
 Minimum allowed porosity (default zero, so porosity is never negative)
 
const Real _zero_modifier
 When the porosity_min floor is active, the porosity derivatives are multiplied by this.
 
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

template<bool is_ad>
class PorousFlowPorosityExponentialBaseTempl< is_ad >

Base class Material designed to provide the porosity.

In this class porosity = a + (b - a) * exp(decay) where a = atNegInfinityQp() b = atZeroQp() decay = decayQp() Since this expression can become negative for decay > 0, if ensure_positive = true then for decay > 0 the following expression is used instead: porosity = a + (b - a) * exp(c * (1 - Exp(- decay / c))) where c = log(a/(b-a)) This latter expression is C1 continuous at decay=0 with the former expression. It is monotonically decreasing with "decay" and is positive.

Definition at line 32 of file PorousFlowPorosityExponentialBase.h.

Constructor & Destructor Documentation

◆ PorousFlowPorosityExponentialBaseTempl()

Definition at line 45 of file PorousFlowPorosityExponentialBase.C.

48 _strain_at_nearest_qp(this->template getParam<bool>("strain_at_nearest_qp")),
49 _ensure_positive(this->template getParam<bool>("ensure_positive"))
50{
51}
Base class Material designed to provide the porosity.
const bool _strain_at_nearest_qp
When calculating nodal porosity, use the strain at the nearest quadpoint to the node.
const bool _ensure_positive
for decayQp() > 0, porosity can be negative when using porosity = a + (b - a) * exp(decay).

Member Function Documentation

◆ applyPorosityMin()

template<bool is_ad>
void PorousFlowPorosityBaseTempl< is_ad >::applyPorosityMin ( )
protectedinherited

If _porosity[_qp] < porosity_min, set _porosity[_qp] = porosity_min and multiply the derivatives of porosity by _zero_modifier (the derivative material properties for non-AD objects, and the AD derivatives for AD objects).

Otherwise do nothing. Derived classes call this at the end of computeQpProperties(), after the unfloored porosity and its derivatives have been computed.

Definition at line 58 of file PorousFlowPorosityBase.C.

59{
61 return;
62
63 if constexpr (!is_ad)
64 {
66 for (unsigned int v = 0; v < _num_var; ++v)
67 {
68 (*_dporosity_dvar)[_qp][v] *= _zero_modifier;
69 (*_dporosity_dgradvar)[_qp][v] *= _zero_modifier;
70 }
71 }
72 else
73 {
74 // The AD path carries its derivatives inside the value and has no derivative material
75 // properties, so the value and the derivatives are softened separately. Assigning
76 // _porosity_min to the ADReal would instead discard the derivatives entirely.
77 _porosity[_qp].value() = _porosity_min;
78 _porosity[_qp].derivatives() *= _zero_modifier;
79 }
80}
const double v
const unsigned int _num_var
Number of PorousFlow variables.
const Real _zero_modifier
When the porosity_min floor is active, the porosity derivatives are multiplied by this.
const Real _porosity_min
Minimum allowed porosity (default zero, so porosity is never negative)
GenericMaterialProperty< Real, is_ad > & _porosity
Computed porosity at the nodes or quadpoints.
auto raw_value(const Eigen::Map< T > &in)

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

◆ atNegInfinityQp()

template<bool is_ad>
virtual GenericReal< is_ad > PorousFlowPorosityExponentialBaseTempl< is_ad >::atNegInfinityQp ( ) const
protectedpure virtual

Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay))

Implemented in PorousFlowPorosityTempl< is_ad >.

◆ atZeroQp()

template<bool is_ad>
virtual GenericReal< is_ad > PorousFlowPorosityExponentialBaseTempl< is_ad >::atZeroQp ( ) const
protectedpure virtual

Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay))

Implemented in PorousFlowPorosityTempl< is_ad >.

◆ computeQpProperties()

template<bool is_ad>
void PorousFlowPorosityExponentialBaseTempl< is_ad >::computeQpProperties ( )
overrideprotectedvirtual

Reimplemented in PorousFlowPorosityHMBiotModulus.

Definition at line 81 of file PorousFlowPorosityExponentialBase.C.

82{
83 // Unqualified calls so ADL finds the MetaPhysicL overloads for the AD (DualNumber) instantiation
84 using std::exp;
85 using std::log;
86 using std::pow;
87
90 const GenericReal<is_ad> decay = decayQp();
91 GenericReal<is_ad> exp_term = 1.0; // set appropriately below
92
93 if (decay <= 0.0 || !_ensure_positive)
94 {
95 exp_term = exp(decay);
96 _porosity[_qp] = a + (b - a) * exp_term;
97 }
98 else
99 {
100 const GenericReal<is_ad> c = log(a / (a - b));
101 // note that at decay = 0, we have expx = 1, so porosity = a + b - a = b
102 // and at decay = infinity, expx = 0, so porosity = a + (b - a) * a / (a - b) = 0
103 const GenericReal<is_ad> expx = exp(-decay / c);
104 exp_term = exp(c * (1.0 - expx));
105 _porosity[_qp] = a + (b - a) * exp_term;
106 }
107
108 if constexpr (!is_ad)
109 {
110 // The AD path carries the derivatives with respect to the PorousFlow variables inside the AD
111 // porosity value, so only the non-AD path builds these derivative material properties.
112 Real deriv = 0.0; // = d(porosity)/d(decay)
113 if (decay <= 0.0 || !_ensure_positive)
114 deriv = _porosity[_qp] - a;
115 else
116 {
117 const Real c = log(a / (a - b));
118 const Real expx = exp(-decay / c);
119 deriv = (_porosity[_qp] - a) * expx;
120 }
121
122 (*_dporosity_dvar)[_qp].resize(_num_var);
123 (*_dporosity_dgradvar)[_qp].resize(_num_var);
124 for (unsigned int v = 0; v < _num_var; ++v)
125 {
126 (*_dporosity_dvar)[_qp][v] = ddecayQp_dvar(v) * deriv;
127 (*_dporosity_dgradvar)[_qp][v] = ddecayQp_dgradvar(v) * deriv;
128
129 const Real da = datNegInfinityQp(v);
130 const Real db = datZeroQp(v);
131 (*_dporosity_dvar)[_qp][v] += da * (1 - exp_term) + db * exp_term;
132
133 if (!(decay <= 0.0 || !_ensure_positive))
134 {
135 const Real c = log(a / (a - b));
136 const Real expx = exp(-decay / c);
137 const Real dc = (a - b) * (da * b / a - db) / Utility::pow<2>(a);
138 (*_dporosity_dvar)[_qp][v] += (b - a) * exp_term * dc * (1 - expx - expx / c);
139 }
140 }
141 }
142
143 // Apply the porosity floor last, after the unfloored derivatives above have been
144 // formed (see PorousFlowPorosityBaseTempl::applyPorosityMin)
146}
const GeochemicalDatabaseReader db("database/moose_testdb.json", true, true, false)
Moose::GenericType< Real, is_ad > GenericReal
void applyPorosityMin()
If _porosity[_qp] < porosity_min, set _porosity[_qp] = porosity_min and multiply the derivatives of p...
virtual GenericReal< is_ad > atNegInfinityQp() const =0
Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay))
virtual GenericReal< is_ad > decayQp() const =0
Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay))
virtual GenericReal< is_ad > atZeroQp() const =0
Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay))
virtual RealGradient ddecayQp_dgradvar(unsigned pvar) const =0
d(decay)/d(grad(PorousFlow variable pvar))
virtual Real datZeroQp(unsigned pvar) const =0
d(b)/d(PorousFlow variable pvar)
virtual Real datNegInfinityQp(unsigned pvar) const =0
d(a)/d(PorousFlow variable pvar)
virtual Real ddecayQp_dvar(unsigned pvar) const =0
d(decay)/d(PorousFlow variable pvar)
auto exp(const T &)
auto log(const T &)
Real deriv(unsigned n, unsigned alpha, unsigned beta, Real x)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ datNegInfinityQp()

template<bool is_ad>
virtual Real PorousFlowPorosityExponentialBaseTempl< is_ad >::datNegInfinityQp ( unsigned  pvar) const
protectedpure virtual

d(a)/d(PorousFlow variable pvar)

Implemented in PorousFlowPorosityTempl< is_ad >.

◆ datZeroQp()

template<bool is_ad>
virtual Real PorousFlowPorosityExponentialBaseTempl< is_ad >::datZeroQp ( unsigned  pvar) const
protectedpure virtual

d(b)/d(PorousFlow variable pvar)

Implemented in PorousFlowPorosityTempl< is_ad >.

◆ ddecayQp_dgradvar()

template<bool is_ad>
virtual RealGradient PorousFlowPorosityExponentialBaseTempl< is_ad >::ddecayQp_dgradvar ( unsigned  pvar) const
protectedpure virtual

d(decay)/d(grad(PorousFlow variable pvar))

Implemented in PorousFlowPorosityTempl< is_ad >.

◆ ddecayQp_dvar()

template<bool is_ad>
virtual Real PorousFlowPorosityExponentialBaseTempl< is_ad >::ddecayQp_dvar ( unsigned  pvar) const
protectedpure virtual

d(decay)/d(PorousFlow variable pvar)

Implemented in PorousFlowPorosityTempl< is_ad >.

◆ decayQp()

template<bool is_ad>
virtual GenericReal< is_ad > PorousFlowPorosityExponentialBaseTempl< is_ad >::decayQp ( ) const
protectedpure virtual

Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay))

Implemented in PorousFlowPorosityTempl< is_ad >.

◆ initQpStatefulProperties()

template<bool is_ad>
void PorousFlowPorosityExponentialBaseTempl< is_ad >::initQpStatefulProperties ( )
overrideprotectedvirtual

Definition at line 55 of file PorousFlowPorosityExponentialBase.C.

56{
57 // Unqualified calls so ADL finds the MetaPhysicL overloads for the AD (DualNumber) instantiation
58 using std::exp;
59 using std::log;
60
63 mooseAssert(a > b, "PorousFlowPorosityExponentialBase a must be larger than b");
64 const GenericReal<is_ad> decay = decayQp();
65
66 if (decay <= 0.0 || !_ensure_positive)
67 _porosity[_qp] = a + (b - a) * exp(decay);
68 else
69 {
70 const GenericReal<is_ad> c = log(a / (a - b));
71 const GenericReal<is_ad> expx = exp(-decay / c);
72 _porosity[_qp] = a + (b - a) * exp(c * (1.0 - expx));
73 }
74
75 if (_porosity[_qp] < _porosity_min)
77}

◆ validParams()

template<bool is_ad>
InputParameters PorousFlowPorosityExponentialBaseTempl< is_ad >::validParams ( )
static

Definition at line 16 of file PorousFlowPorosityExponentialBase.C.

17{
19 params.addParam<bool>("strain_at_nearest_qp",
20 false,
21 "When calculating nodal porosity that depends on strain, use the strain at "
22 "the nearest quadpoint. This adds a small extra computational burden, and "
23 "is not necessary for simulations involving only linear lagrange elements. "
24 " If you set this to true, you will also want to set the same parameter to "
25 "true for related Kernels and Materials");
26 params.addParam<bool>("ensure_positive",
27 true,
28 "Modify the usual exponential relationships that "
29 "governs porosity so that porosity is always "
30 "positive");
31 params.setDocString(
32 "porosity_min",
33 "Minimum allowed value of the porosity: if the computed porosity is less than this value, "
34 "porosity is set to this value instead. The default of zero means porosity is never "
35 "negative. The ensure_positive transform only acts for decay > 0, so chemistry-driven "
36 "(precipitation) porosity would otherwise become negative once pore space is filled by "
37 "mineral; a small positive value may be preferable in that case.");
38 params.addClassDescription("Base class Material for porosity that is computed via an exponential "
39 "relationship with coupled variables (strain, porepressure, "
40 "temperature, chemistry)");
41 return params;
42}
void setDocString(const std::string &name, const std::string &doc)
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)
static InputParameters validParams()

Referenced by PorousFlowPorosityTempl< is_ad >::validParams().

Member Data Documentation

◆ _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 42 of file PorousFlowPorosityBase.h.

Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties().

◆ _dporosity_dvar

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

◆ _ensure_positive

template<bool is_ad>
const bool PorousFlowPorosityExponentialBaseTempl< is_ad >::_ensure_positive
protected

for decayQp() > 0, porosity can be negative when using porosity = a + (b - a) * exp(decay).

This expression is modified if ensure_positive = true to read porosity = a + (b - a) * exp(c * (1 - Exp(- decay / c))) where c = log(a/(b-a))

Definition at line 74 of file PorousFlowPorosityExponentialBase.h.

◆ _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

◆ _porosity

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

◆ _porosity_min

template<bool is_ad>
const Real PorousFlowPorosityBaseTempl< is_ad >::_porosity_min
protectedinherited

Minimum allowed porosity (default zero, so porosity is never negative)

Definition at line 45 of file PorousFlowPorosityBase.h.

◆ _strain_at_nearest_qp

template<bool is_ad>
const bool PorousFlowPorosityExponentialBaseTempl< is_ad >::_strain_at_nearest_qp
protected

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

Definition at line 65 of file PorousFlowPorosityExponentialBase.h.

Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties().

◆ _zero_modifier

template<bool is_ad>
const Real PorousFlowPorosityBaseTempl< is_ad >::_zero_modifier
protectedinherited

When the porosity_min floor is active, the porosity derivatives are multiplied by this.

Definition at line 48 of file PorousFlowPorosityBase.h.

◆ usingPorousFlowPorosityBaseMembers

template<bool is_ad>
PorousFlowPorosityExponentialBaseTempl< is_ad >::usingPorousFlowPorosityBaseMembers
protected

Definition at line 76 of file PorousFlowPorosityExponentialBase.h.


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