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
PorousFlowPorosityConstTempl< is_ad > Class Template Reference

Material to provide a constant value of porosity. More...

#include <PorousFlowPorosityConst.h>

Inheritance diagram for PorousFlowPorosityConstTempl< is_ad >:
[legend]

Public Types

typedef DerivativeMaterialPropertyNameInterface::SymbolName SymbolName
 

Public Member Functions

 PorousFlowPorosityConstTempl (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
 
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 VariableValue & _input_porosity
 Constant porosity (Real constant Monomial variable only so no AD version)
 
 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 PorousFlowPorosityConstTempl< is_ad >

Material to provide a constant value of porosity.

This can be specified by either a constant value in the input file, or taken from an aux variable. Note: this material assumes that the porosity remains constant throughout a simulation, so the coupled aux variable porosity must also remain constant. If the porosity is less than porosity_min, it is set to porosity_min.

Definition at line 22 of file PorousFlowPorosityConst.h.

Constructor & Destructor Documentation

◆ PorousFlowPorosityConstTempl()

template<bool is_ad>
PorousFlowPorosityConstTempl< is_ad >::PorousFlowPorosityConstTempl ( const InputParameters &  parameters)

Definition at line 33 of file PorousFlowPorosityConst.C.

35 : PorousFlowPorosityBaseTempl<is_ad>(parameters), _input_porosity(coupledValue("porosity"))
36{
37}
Base class Material designed to provide the porosity.
const VariableValue & _input_porosity
Constant porosity (Real constant Monomial variable only so no AD version)

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().

◆ computeQpProperties()

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

Definition at line 58 of file PorousFlowPorosityConst.C.

59{
61}
virtual void initQpStatefulProperties() override

◆ initQpStatefulProperties()

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

Definition at line 41 of file PorousFlowPorosityConst.C.

42{
43 // note the [0] below: _phi0 is a constant monomial and we use [0] regardless of _nodal_material
44 _porosity[_qp] = _input_porosity[0];
45
46 if (!is_ad)
47 {
48 // The derivatives are zero for all time
49 (*_dporosity_dvar)[_qp].assign(_num_var, 0.0);
50 (*_dporosity_dgradvar)[_qp].assign(_num_var, RealGradient());
51 }
52
53 this->applyPorosityMin();
54}
void applyPorosityMin()
If _porosity[_qp] < porosity_min, set _porosity[_qp] = porosity_min and multiply the derivatives of p...
RealVectorValue RealGradient

◆ validParams()

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

Definition at line 17 of file PorousFlowPorosityConst.C.

18{
21 "porosity",
22 "The porosity (assumed indepenent of porepressure, temperature, "
23 "strain, etc, for this material). This should be a real number, or "
24 "a constant monomial variable (not a linear lagrange or other kind of variable). If it is "
25 "less than porosity_min, porosity is set to porosity_min instead.");
26 // The porosity derivatives are always zero in this Material, so zero_modifier has no effect
27 params.suppressParameter<Real>("zero_modifier");
28 params.addClassDescription("This Material calculates the porosity assuming it is constant");
29 return params;
30}
void suppressParameter(const std::string &name)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

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

◆ _input_porosity

template<bool is_ad>
const VariableValue& PorousFlowPorosityConstTempl< is_ad >::_input_porosity
protected

Constant porosity (Real constant Monomial variable only so no AD version)

Definition at line 34 of file PorousFlowPorosityConst.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.

◆ _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>
PorousFlowPorosityConstTempl< is_ad >::usingPorousFlowPorosityBaseMembers
protected

Definition at line 36 of file PorousFlowPorosityConst.h.


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