Base class Material designed to provide the porosity. More...
#include <PorousFlowPorosityExponentialBase.h>
Public Types | |
| typedef DerivativeMaterialPropertyNameInterface::SymbolName | SymbolName |
Public Member Functions | |
| PorousFlowPorosityExponentialBaseTempl (const InputParameters ¶meters) | |
| 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 |
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.
| PorousFlowPorosityExponentialBaseTempl< is_ad >::PorousFlowPorosityExponentialBaseTempl | ( | const InputParameters & | parameters | ) |
Definition at line 45 of file PorousFlowPorosityExponentialBase.C.
|
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.
Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties(), and PorousFlowPorosityLinear::computeQpProperties().
|
protectedpure virtual |
Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay))
Implemented in PorousFlowPorosityTempl< is_ad >.
|
protectedpure virtual |
Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay))
Implemented in PorousFlowPorosityTempl< is_ad >.
|
overrideprotectedvirtual |
Reimplemented in PorousFlowPorosityHMBiotModulus.
Definition at line 81 of file PorousFlowPorosityExponentialBase.C.
|
protectedpure virtual |
d(a)/d(PorousFlow variable pvar)
Implemented in PorousFlowPorosityTempl< is_ad >.
|
protectedpure virtual |
d(b)/d(PorousFlow variable pvar)
Implemented in PorousFlowPorosityTempl< is_ad >.
|
protectedpure virtual |
d(decay)/d(grad(PorousFlow variable pvar))
Implemented in PorousFlowPorosityTempl< is_ad >.
|
protectedpure virtual |
d(decay)/d(PorousFlow variable pvar)
Implemented in PorousFlowPorosityTempl< is_ad >.
|
protectedpure virtual |
Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay))
Implemented in PorousFlowPorosityTempl< is_ad >.
|
overrideprotectedvirtual |
Definition at line 55 of file PorousFlowPorosityExponentialBase.C.
|
static |
Definition at line 16 of file PorousFlowPorosityExponentialBase.C.
Referenced by PorousFlowPorosityTempl< is_ad >::validParams().
|
protectedinherited |
d(porosity)/d(grad PorousFlow variable)
Definition at line 42 of file PorousFlowPorosityBase.h.
Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties().
|
protectedinherited |
d(porosity)/d(PorousFlow variable)
Definition at line 39 of file PorousFlowPorosityBase.h.
Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties(), and PorousFlowPorosityVinsomeWesterveld::computeUnboundedPorosityQp().
|
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.
|
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 PorousFlowAqueousPreDisChemistry::computeQpProperties(), PorousFlowMassFractionAqueousEquilibriumChemistry::computeQpProperties(), PorousFlowPorosityHMBiotModulus::computeQpProperties(), PorousFlowTotalGravitationalDensityFullySaturatedFromPorosity::computeQpProperties(), PorousFlowPorosityLinear::computeUnboundedPorosityQp(), PorousFlowPorosityVinsomeWesterveld::computeUnboundedPorosityQp(), PorousFlowAqueousPreDisChemistry::initQpStatefulProperties(), and PorousFlowPorosityLinear::initQpStatefulProperties().
|
protectedinherited |
Computed porosity at the nodes or quadpoints.
Definition at line 36 of file PorousFlowPorosityBase.h.
Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties(), PorousFlowPorosityLinear::computeUnboundedPorosityQp(), PorousFlowPorosityVinsomeWesterveld::computeUnboundedPorosityQp(), and PorousFlowPorosityLinear::initQpStatefulProperties().
|
protectedinherited |
Minimum allowed porosity (default zero, so porosity is never negative)
Definition at line 45 of file PorousFlowPorosityBase.h.
|
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().
|
protectedinherited |
When the porosity_min floor is active, the porosity derivatives are multiplied by this.
Definition at line 48 of file PorousFlowPorosityBase.h.
|
protected |
Definition at line 76 of file PorousFlowPorosityExponentialBase.h.