Material designed to provide the porosity in PorousFlow simulations chemistry + biot + (phi0 - reference_chemistry - biot) * exp(-vol_strain. More...
#include <PorousFlowPorosity.h>
Public Types | |
| typedef DerivativeMaterialPropertyNameInterface::SymbolName | SymbolName |
Public Member Functions | |
| PorousFlowPorosity (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 Real | atNegInfinityQp () const override |
| Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay)) More... | |
| virtual Real | datNegInfinityQp (unsigned pvar) const override |
| d(a)/d(PorousFlow variable pvar) More... | |
| virtual Real | atZeroQp () const override |
| Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay)) More... | |
| virtual Real | datZeroQp (unsigned pvar) const override |
| d(a)/d(PorousFlow variable pvar) More... | |
| virtual Real | decayQp () const override |
| Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay)) More... | |
| virtual Real | ddecayQp_dvar (unsigned pvar) const override |
| d(decay)/d(PorousFlow variable pvar) More... | |
| virtual RealGradient | ddecayQp_dgradvar (unsigned pvar) const override |
| d(decay)/d(grad(PorousFlow variable pvar)) More... | |
| virtual void | initQpStatefulProperties () override |
| virtual void | computeQpProperties () override |
Protected Attributes | |
| const bool | _mechanical |
| Porosity is a function of volumetric strain. More... | |
| const bool | _fluid |
| Porosity is a function of effective porepressure. More... | |
| const bool | _thermal |
| Porosity is a function of temperature. More... | |
| const bool | _chemical |
| Porosity is a function of chemistry. More... | |
| const VariableValue & | _phi0 |
| Porosity at zero strain and zero porepressure and zero temperature. More... | |
| const Real | _biot |
| Biot coefficient. More... | |
| const Real | _exp_coeff |
| Thermal expansion coefficient of the solid porous skeleton. More... | |
| const Moose::Functor< Real > * | _solid_bulk |
| Drained bulk modulus of the porous skeleton (as a functor; can be variable, function, etc.) Only used if _fluid is True. More... | |
| const Real | _coeff |
| Short-hand number (biot-1). Please note: this variable is not yet divided by solid_bulk. More... | |
| const VariableValue & | _t_reference |
| Reference temperature. More... | |
| const VariableValue & | _p_reference |
| Reference porepressure. More... | |
| const unsigned | _num_c_ref |
| Number of reference mineral concentrations provided by user. More... | |
| std::vector< const VariableValue * > | _c_reference |
| Reference mineral concentrations. More... | |
| const unsigned | _num_initial_c |
| Number of reference mineral concentrations provided by user. More... | |
| std::vector< const VariableValue * > | _initial_c |
| Reference mineral concentrations. More... | |
| std::vector< Real > | _c_weights |
| Weights for the mineral concentrations. More... | |
| const MaterialProperty< Real > *const | _porosity_old |
| Old value of porosity. More... | |
| const MaterialProperty< Real > *const | _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)) More... | |
| const MaterialProperty< std::vector< RealGradient > > *const | _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)) More... | |
| const MaterialProperty< Real > *const | _pf |
| Effective porepressure at the quadpoints or nodes. More... | |
| const MaterialProperty< std::vector< Real > > *const | _dpf_dvar |
| d(effective porepressure)/(d porflow variable) More... | |
| const MaterialProperty< Real > *const | _temperature |
| Temperature at the quadpoints or nodes. More... | |
| const MaterialProperty< std::vector< Real > > *const | _dtemperature_dvar |
| d(temperature)/(d porflow variable) More... | |
| const MaterialProperty< std::vector< Real > > *const | _mineral_conc_old |
| Old value of mineral concentration at the quadpoints or nodes. More... | |
| const MaterialProperty< std::vector< Real > > *const | _reaction_rate |
| Reaction rate of mineralisation. More... | |
| const MaterialProperty< std::vector< std::vector< Real > > > *const | _dreaction_rate_dvar |
| d(reaction_rate_conc)/d(porflow variable) More... | |
| const unsigned int | _aq_ph |
| Aqueous phase number. More... | |
| const MaterialProperty< std::vector< Real > > *const | _saturation |
| Saturation. More... | |
| const MaterialProperty< std::vector< std::vector< Real > > > *const | _dsaturation_dvar |
| d(saturation)/d(PorousFlow var) More... | |
| 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... | |
Material designed to provide the porosity in PorousFlow simulations chemistry + biot + (phi0 - reference_chemistry - biot) * exp(-vol_strain.
Definition at line 20 of file PorousFlowPorosity.h.
| PorousFlowPorosity::PorousFlowPorosity | ( | const InputParameters & | parameters | ) |
Definition at line 61 of file PorousFlowPorosity.C.
|
overrideprotectedvirtual |
Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay))
Implements PorousFlowPorosityExponentialBase.
Definition at line 179 of file PorousFlowPorosity.C.
|
overrideprotectedvirtual |
Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay))
Implements PorousFlowPorosityExponentialBase.
Definition at line 220 of file PorousFlowPorosity.C.
|
overrideprotectedvirtualinherited |
Reimplemented in PorousFlowPorosityHMBiotModulus.
Definition at line 85 of file PorousFlowPorosityExponentialBase.C.
|
overrideprotectedvirtual |
d(a)/d(PorousFlow variable pvar)
Implements PorousFlowPorosityExponentialBase.
Definition at line 208 of file PorousFlowPorosity.C.
|
overrideprotectedvirtual |
d(a)/d(PorousFlow variable pvar)
Implements PorousFlowPorosityExponentialBase.
Definition at line 240 of file PorousFlowPorosity.C.
|
overrideprotectedvirtual |
d(decay)/d(grad(PorousFlow variable pvar))
Implements PorousFlowPorosityExponentialBase.
Definition at line 341 of file PorousFlowPorosity.C.
|
overrideprotectedvirtual |
d(decay)/d(PorousFlow variable pvar)
Implements PorousFlowPorosityExponentialBase.
Definition at line 302 of file PorousFlowPorosity.C.
|
overrideprotectedvirtual |
Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay))
Implements PorousFlowPorosityExponentialBase.
Definition at line 252 of file PorousFlowPorosity.C.
|
overrideprotectedvirtualinherited |
Definition at line 64 of file PorousFlowPorosityExponentialBase.C.
|
static |
Definition at line 15 of file PorousFlowPorosity.C.
Referenced by PorousFlowPorosityHMBiotModulus::validParams().
|
protected |
Aqueous phase number.
Definition at line 116 of file PorousFlowPorosity.h.
Referenced by atNegInfinityQp(), atZeroQp(), datNegInfinityQp(), and datZeroQp().
|
protected |
Biot coefficient.
Definition at line 52 of file PorousFlowPorosity.h.
Referenced by atNegInfinityQp(), and PorousFlowPorosityHMBiotModulus::computeQpProperties().
|
protected |
Reference mineral concentrations.
Definition at line 74 of file PorousFlowPorosity.h.
Referenced by atZeroQp(), and PorousFlowPorosity().
|
protected |
Weights for the mineral concentrations.
Definition at line 83 of file PorousFlowPorosity.h.
Referenced by atNegInfinityQp(), atZeroQp(), datNegInfinityQp(), datZeroQp(), and PorousFlowPorosity().
|
protected |
Porosity is a function of chemistry.
Definition at line 46 of file PorousFlowPorosity.h.
Referenced by atNegInfinityQp(), atZeroQp(), datNegInfinityQp(), datZeroQp(), and PorousFlowPorosity().
|
protected |
Short-hand number (biot-1). Please note: this variable is not yet divided by solid_bulk.
Definition at line 62 of file PorousFlowPorosity.h.
Referenced by ddecayQp_dvar(), and decayQp().
|
protected |
d(effective porepressure)/(d porflow variable)
Definition at line 98 of file PorousFlowPorosity.h.
|
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 |
d(reaction_rate_conc)/d(porflow variable)
Definition at line 113 of file PorousFlowPorosity.h.
|
protected |
d(saturation)/d(PorousFlow var)
Definition at line 122 of file PorousFlowPorosity.h.
|
protected |
d(temperature)/(d porflow variable)
Definition at line 104 of file PorousFlowPorosity.h.
|
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 92 of file PorousFlowPorosity.h.
|
protectedinherited |
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 PorousFlowPorosityExponentialBase::computeQpProperties(), and PorousFlowPorosityExponentialBase::initQpStatefulProperties().
|
protected |
Thermal expansion coefficient of the solid porous skeleton.
Definition at line 55 of file PorousFlowPorosity.h.
Referenced by ddecayQp_dvar(), and decayQp().
|
protected |
Porosity is a function of effective porepressure.
Definition at line 40 of file PorousFlowPorosity.h.
Referenced by ddecayQp_dvar(), decayQp(), and PorousFlowPorosity().
|
protected |
Reference mineral concentrations.
Definition at line 80 of file PorousFlowPorosity.h.
Referenced by atNegInfinityQp(), atZeroQp(), and PorousFlowPorosity().
|
protected |
Porosity is a function of volumetric strain.
Definition at line 37 of file PorousFlowPorosity.h.
Referenced by ddecayQp_dgradvar(), and decayQp().
|
protected |
Old value of mineral concentration at the quadpoints or nodes.
Definition at line 107 of file PorousFlowPorosity.h.
Referenced by atNegInfinityQp(), and atZeroQp().
|
protected |
Number of reference mineral concentrations provided by user.
Definition at line 71 of file PorousFlowPorosity.h.
Referenced by atNegInfinityQp(), atZeroQp(), datNegInfinityQp(), datZeroQp(), and PorousFlowPorosity().
|
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().
|
protected |
Number of reference mineral concentrations provided by user.
Definition at line 77 of file PorousFlowPorosity.h.
Referenced by PorousFlowPorosity().
|
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(), PorousFlowPorosityExponentialBase::computeQpProperties(), PorousFlowAqueousPreDisChemistry::initQpStatefulProperties(), and PorousFlowPorosityLinear::initQpStatefulProperties().
|
protected |
Reference porepressure.
Definition at line 68 of file PorousFlowPorosity.h.
Referenced by decayQp().
|
protected |
Effective porepressure at the quadpoints or nodes.
Definition at line 95 of file PorousFlowPorosity.h.
Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties().
|
protected |
Porosity at zero strain and zero porepressure and zero temperature.
Definition at line 49 of file PorousFlowPorosity.h.
Referenced by atZeroQp().
|
protectedinherited |
Computed porosity at the nodes or quadpoints.
Definition at line 27 of file PorousFlowPorosityBase.h.
Referenced by PorousFlowPorosityLinear::computeQpProperties(), PorousFlowPorosityHMBiotModulus::computeQpProperties(), PorousFlowPorosityExponentialBase::computeQpProperties(), PorousFlowPorosityLinear::initQpStatefulProperties(), and PorousFlowPorosityExponentialBase::initQpStatefulProperties().
|
protectedinherited |
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 PorousFlowPorosityExponentialBase::computeQpProperties(), and PorousFlowPorosityExponentialBase::initQpStatefulProperties().
|
protected |
Old value of porosity.
Definition at line 86 of file PorousFlowPorosity.h.
Referenced by datNegInfinityQp(), and datZeroQp().
|
protected |
Reaction rate of mineralisation.
Definition at line 110 of file PorousFlowPorosity.h.
|
protected |
Saturation.
Definition at line 119 of file PorousFlowPorosity.h.
|
protected |
Drained bulk modulus of the porous skeleton (as a functor; can be variable, function, etc.) Only used if _fluid is True.
Definition at line 59 of file PorousFlowPorosity.h.
Referenced by PorousFlowPorosity().
|
protectedinherited |
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(), ddecayQp_dgradvar(), and decayQp().
|
protected |
|
protected |
Temperature at the quadpoints or nodes.
Definition at line 101 of file PorousFlowPorosity.h.
|
protected |
Porosity is a function of temperature.
Definition at line 43 of file PorousFlowPorosity.h.
Referenced by ddecayQp_dvar(), decayQp(), and PorousFlowPorosity().
|
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 89 of file PorousFlowPorosity.h.
Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties().
|
protectedinherited |
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 PorousFlowPorosityExponentialBase::computeQpProperties().
1.8.14