Base class Material designed to provide the porosity. More...
#include <PorousFlowPorosityExponentialBase.h>
Public Types | |
| typedef DerivativeMaterialPropertyNameInterface::SymbolName | SymbolName |
Public Member Functions | |
| PorousFlowPorosityExponentialBase (const InputParameters ¶meters) | |
| 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 |
| virtual Real | atNegInfinityQp () const =0 |
| Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay)) More... | |
| virtual Real | datNegInfinityQp (unsigned pvar) const =0 |
| d(a)/d(PorousFlow variable pvar) More... | |
| virtual Real | atZeroQp () const =0 |
| Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay)) More... | |
| virtual Real | datZeroQp (unsigned pvar) const =0 |
| d(a)/d(PorousFlow variable pvar) More... | |
| virtual Real | decayQp () const =0 |
| Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay)) More... | |
| virtual Real | ddecayQp_dvar (unsigned pvar) const =0 |
| d(decay)/d(PorousFlow variable pvar) More... | |
| virtual RealGradient | ddecayQp_dgradvar (unsigned pvar) const =0 |
| d(decay)/d(grad(PorousFlow variable pvar)) More... | |
Protected Attributes | |
| const bool | _strain_at_nearest_qp |
| When calculating nodal porosity, use the strain at the nearest quadpoint to the node. More... | |
| const bool | _ensure_positive |
| for decayQp() > 0, porosity can be negative when using porosity = a + (b - a) * exp(decay). More... | |
| const Real | _porosity_min |
| Minimum allowed porosity. More... | |
| const Real | _zero_modifier |
| If the porosity_min floor is active the porosity derivatives are set to _zero_modifier times their unfloored values (rather than exactly zero) to hint to the Newton process that porosity is not strictly constant, which aids convergence. More... | |
| GenericMaterialProperty< Real, is_ad > & | _porosity |
| Computed porosity at the nodes or quadpoints. More... | |
| MaterialProperty< std::vector< Real > > *const | _dporosity_dvar |
| d(porosity)/d(PorousFlow variable) More... | |
| MaterialProperty< std::vector< RealGradient > > *const | _dporosity_dgradvar |
| d(porosity)/d(grad PorousFlow variable) More... | |
| const unsigned int | _num_phases |
| Number of phases. More... | |
| const unsigned int | _num_components |
| Number of fluid components. More... | |
| const unsigned int | _num_var |
| Number of PorousFlow variables. More... | |
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 31 of file PorousFlowPorosityExponentialBase.h.
| PorousFlowPorosityExponentialBase::PorousFlowPorosityExponentialBase | ( | const InputParameters & | parameters | ) |
Definition at line 53 of file PorousFlowPorosityExponentialBase.C.
|
protectedpure virtual |
Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay))
Implemented in PorousFlowPorosity.
Referenced by computeQpProperties(), and initQpStatefulProperties().
|
protectedpure virtual |
Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay))
Implemented in PorousFlowPorosity.
Referenced by computeQpProperties(), and initQpStatefulProperties().
|
overrideprotectedvirtual |
Reimplemented in PorousFlowPorosityHMBiotModulus.
Definition at line 85 of file PorousFlowPorosityExponentialBase.C.
|
protectedpure virtual |
d(a)/d(PorousFlow variable pvar)
Implemented in PorousFlowPorosity.
Referenced by computeQpProperties().
|
protectedpure virtual |
d(a)/d(PorousFlow variable pvar)
Implemented in PorousFlowPorosity.
Referenced by computeQpProperties().
|
protectedpure virtual |
d(decay)/d(grad(PorousFlow variable pvar))
Implemented in PorousFlowPorosity.
Referenced by computeQpProperties().
|
protectedpure virtual |
d(decay)/d(PorousFlow variable pvar)
Implemented in PorousFlowPorosity.
Referenced by computeQpProperties().
|
protectedpure virtual |
Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay))
Implemented in PorousFlowPorosity.
Referenced by computeQpProperties(), and initQpStatefulProperties().
|
overrideprotectedvirtual |
Definition at line 64 of file PorousFlowPorosityExponentialBase.C.
|
static |
Definition at line 15 of file PorousFlowPorosityExponentialBase.C.
Referenced by PorousFlowPorosity::validParams().
|
protectedinherited |
d(porosity)/d(grad PorousFlow variable)
Definition at line 33 of file PorousFlowPorosityBase.h.
Referenced by PorousFlowPorosityLinear::computeQpProperties(), and PorousFlowPorosityHMBiotModulus::computeQpProperties().
|
protectedinherited |
d(porosity)/d(PorousFlow variable)
Definition at line 30 of file PorousFlowPorosityBase.h.
Referenced by PorousFlowPorosityLinear::computeQpProperties(), and PorousFlowPorosityHMBiotModulus::computeQpProperties().
|
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 73 of file PorousFlowPorosityExponentialBase.h.
Referenced by computeQpProperties(), and initQpStatefulProperties().
|
protectedinherited |
Number of fluid components.
Definition at line 30 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowMassFractionAqueousEquilibriumChemistry::computeQpProperties(), PorousFlowAqueousPreDisChemistry::PorousFlowAqueousPreDisChemistry(), PorousFlowDiffusivityBaseTempl< is_ad >::PorousFlowDiffusivityBaseTempl(), and PorousFlowMassFractionTempl< is_ad >::PorousFlowMassFractionTempl().
|
protectedinherited |
Number of phases.
Definition at line 27 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowDiffusivityBaseTempl< is_ad >::PorousFlowDiffusivityBaseTempl(), PorousFlowDiffusivityConstTempl< is_ad >::PorousFlowDiffusivityConstTempl(), PorousFlowJoinerTempl< is_ad >::PorousFlowJoinerTempl(), PorousFlowMassFractionTempl< is_ad >::PorousFlowMassFractionTempl(), PorousFlowThermalConductivityFromPorosityTempl< is_ad >::PorousFlowThermalConductivityFromPorosityTempl(), PorousFlowThermalConductivityIdealTempl< is_ad >::PorousFlowThermalConductivityIdealTempl(), and PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity::PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity().
|
protectedinherited |
Number of PorousFlow variables.
Definition at line 33 of file PorousFlowMaterialVectorBase.h.
Referenced by PorousFlowVolumetricStrain::computeQpProperties(), PorousFlowAqueousPreDisChemistry::computeQpProperties(), PorousFlowMassFractionAqueousEquilibriumChemistry::computeQpProperties(), PorousFlowPorosityLinear::computeQpProperties(), PorousFlowPorosityHMBiotModulus::computeQpProperties(), PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity::computeQpProperties(), computeQpProperties(), PorousFlowAqueousPreDisChemistry::initQpStatefulProperties(), and PorousFlowPorosityLinear::initQpStatefulProperties().
|
protectedinherited |
Computed porosity at the nodes or quadpoints.
Definition at line 27 of file PorousFlowPorosityBase.h.
Referenced by PorousFlowPorosityLinear::computeQpProperties(), PorousFlowPorosityHMBiotModulus::computeQpProperties(), computeQpProperties(), PorousFlowPorosityLinear::initQpStatefulProperties(), and initQpStatefulProperties().
|
protected |
Minimum allowed porosity.
The ensure_positive transform above only acts for decay > 0, so chemistry-driven porosity (which enters through "a" and "b", not "decay") is otherwise unbounded below and can go negative once pore space is filled by precipitated mineral. If the computed porosity is less than this value it is set to this value instead. Defaults to no floor.
Definition at line 82 of file PorousFlowPorosityExponentialBase.h.
Referenced by computeQpProperties(), and initQpStatefulProperties().
|
protected |
When calculating nodal porosity, use the strain at the nearest quadpoint to the node.
Definition at line 64 of file PorousFlowPorosityExponentialBase.h.
Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties(), PorousFlowPorosity::ddecayQp_dgradvar(), and PorousFlowPorosity::decayQp().
|
protected |
If the porosity_min floor is active the porosity derivatives are set to _zero_modifier times their unfloored values (rather than exactly zero) to hint to the Newton process that porosity is not strictly constant, which aids convergence.
Definition at line 90 of file PorousFlowPorosityExponentialBase.h.
Referenced by computeQpProperties().
1.8.14