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>
Public Types | |
| typedef DerivativeMaterialPropertyNameInterface::SymbolName | SymbolName |
Public Member Functions | |
| PorousFlowPorosityLinear (const InputParameters ¶meters) | |
| virtual void | initialSetup () override |
| 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 void | computeUnboundedPorosityQp () |
| Computes porosity and its derivatives at the current node or quadrature point, without applying the porosity_min lower bound. | |
| 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 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 |
| 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 |
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.
| PorousFlowPorosityLinear::PorousFlowPorosityLinear | ( | const InputParameters & | parameters | ) |
Definition at line 53 of file PorousFlowPorosityLinear.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 computeQpProperties().
|
overrideprotectedvirtual |
Definition at line 121 of file PorousFlowPorosityLinear.C.
|
protectedvirtual |
Computes porosity and its derivatives at the current node or quadrature point, without applying the porosity_min lower bound.
Derived classes may override this to add further terms to _porosity and its derivatives; computeQpProperties() then applies porosity_min
Reimplemented in PorousFlowPorosityVinsomeWesterveld.
Definition at line 128 of file PorousFlowPorosityLinear.C.
Referenced by computeQpProperties(), and PorousFlowPorosityVinsomeWesterveld::computeUnboundedPorosityQp().
|
overridevirtual |
Reimplemented in PorousFlowPorosityVinsomeWesterveld.
Definition at line 88 of file PorousFlowPorosityLinear.C.
Referenced by PorousFlowPorosityVinsomeWesterveld::initialSetup().
|
overrideprotectedvirtual |
Reimplemented in PorousFlowPorosityVinsomeWesterveld.
Definition at line 113 of file PorousFlowPorosityLinear.C.
Referenced by PorousFlowPorosityVinsomeWesterveld::initQpStatefulProperties().
|
static |
Definition at line 15 of file PorousFlowPorosityLinear.C.
Referenced by PorousFlowPorosityVinsomeWesterveld::validParams().
|
protected |
Definition at line 83 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
protected |
d(effective porepressure)/(d porflow variable)
Definition at line 81 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
protected |
Definition at line 82 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
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 |
Definition at line 96 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup(), and PorousFlowPorosityVinsomeWesterveld::initialSetup().
|
protected |
d(temperature)/(d porflow variable)
Definition at line 94 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
protected |
Definition at line 95 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
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 70 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp(), and initialSetup().
|
protected |
coefficient of volumetric strain
Definition at line 61 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp().
|
protected |
Reference volumetric strain.
Definition at line 52 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp().
|
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(), computeUnboundedPorosityQp(), PorousFlowPorosityVinsomeWesterveld::computeUnboundedPorosityQp(), PorousFlowAqueousPreDisChemistry::initQpStatefulProperties(), and initQpStatefulProperties().
|
protected |
coefficient of effective porepressure
Definition at line 55 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp().
|
protected |
Reference effective porepressure.
Definition at line 46 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp().
|
protected |
Definition at line 78 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
protected |
Effective porepressure at the quadpoints or nodes.
Definition at line 76 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
protected |
Definition at line 77 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
protected |
Porosity at reference porepressure, temperature and volumetric strain.
Definition at line 43 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp(), and initQpStatefulProperties().
|
protectedinherited |
Computed porosity at the nodes or quadpoints.
Definition at line 36 of file PorousFlowPorosityBase.h.
Referenced by PorousFlowPorosityHMBiotModulus::computeQpProperties(), computeUnboundedPorosityQp(), PorousFlowPorosityVinsomeWesterveld::computeUnboundedPorosityQp(), and 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 40 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp().
|
protected |
coefficient of temperature
Definition at line 58 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp().
|
protected |
Reference temperature.
Definition at line 49 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp().
|
protected |
Definition at line 91 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup(), and PorousFlowPorosityVinsomeWesterveld::initialSetup().
|
protected |
Temperature at the quadpoints or nodes.
Definition at line 89 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
protected |
Definition at line 90 of file PorousFlowPorosityLinear.h.
Referenced by initialSetup().
|
protected |
whether P_coeff has been set
Definition at line 73 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp(), and initialSetup().
|
protected |
whether T_coeff has been set
Definition at line 86 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp(), and initialSetup().
|
protected |
whether epv_coeff has been set
Definition at line 64 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp(), and initialSetup().
|
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 67 of file PorousFlowPorosityLinear.h.
Referenced by computeUnboundedPorosityQp(), and initialSetup().
|
protectedinherited |
When the porosity_min floor is active, the porosity derivatives are multiplied by this.
Definition at line 48 of file PorousFlowPorosityBase.h.