11 #include "libmesh/utility.h" 19 params.
set<
bool>(
"mechanical") =
true;
20 params.
set<
bool>(
"fluid") =
true;
22 "constant_biot_modulus>0",
23 "Biot modulus, which is constant for this Material");
25 "constant_fluid_bulk_modulus",
26 "constant_fluid_bulk_modulus>0",
27 "Fluid bulk modulus, which is constant for this Material");
29 "This Material calculates the porosity for hydro-mechanical simulations, assuming that the " 30 "Biot modulus and the fluid bulk modulus are both constant. This is useful for comparing " 31 "with solutions from poroelasticity theory, but is less accurate than PorousFlowPorosity");
37 _porosity_old(_nodal_material ? getMaterialPropertyOld<
Real>(
"PorousFlow_porosity_nodal")
38 : getMaterialPropertyOld<
Real>(
"PorousFlow_porosity_qp")),
39 _biot_modulus(getParam<
Real>(
"constant_biot_modulus")),
40 _fluid_bulk_modulus(getParam<
Real>(
"constant_fluid_bulk_modulus")),
41 _pf_old(_nodal_material
42 ? getMaterialPropertyOld<
Real>(
"PorousFlow_effective_fluid_pressure_nodal")
43 : getMaterialPropertyOld<
Real>(
"PorousFlow_effective_fluid_pressure_qp")),
44 _vol_strain_qp_old(getMaterialPropertyOld<
Real>(
"PorousFlow_total_volumetric_strain_qp")),
45 _vol_strain_rate_qp(getMaterialProperty<
Real>(
"PorousFlow_volumetric_strain_rate_qp")),
46 _dvol_strain_rate_qp_dvar(getMaterialProperty<
std::vector<
RealGradient>>(
47 "dPorousFlow_volumetric_strain_rate_qp_dvar"))
59 const unsigned qp_to_use =
69 (*_dporosity_dvar)[_qp].resize(
_num_var);
72 (*_dpf_dvar)[_qp][
v] *
78 (*_dporosity_dgradvar)[_qp].resize(
_num_var);
81 _biot * (*_dvol_strain_qp_dvar)[qp_to_use][
v] / denom -
const MaterialProperty< Real > & _porosity_old
Old value of porosity.
PorousFlowPorosityHMBiotModulus(const InputParameters ¶meters)
virtual void computeQpProperties() override
const Real _biot
Biot coefficient.
registerMooseObject("PorousFlowApp", PorousFlowPorosityHMBiotModulus)
const MaterialProperty< Real > & _pf_old
Old value of effective fluid pressure.
MaterialProperty< std::vector< RealGradient > > *const _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable)
const bool _strain_at_nearest_qp
When calculating nodal porosity, use the strain at the nearest quadpoint to the node.
const Real _fluid_bulk_modulus
Constant fluid bulk modulus.
const MaterialProperty< Real > *const _pf
Effective porepressure at the quadpoints or nodes.
const MaterialProperty< Real > & _vol_strain_qp_old
Old value of total volumetric strain.
const MaterialProperty< std::vector< RealGradient > > & _dvol_strain_rate_qp_dvar
d(volumetric strain rate)/d(PorousFlow variable)
This Matrial evolves porosity so that the PorousFlow equations match the standard equations of poroel...
const unsigned int _num_var
Number of PorousFlow variables.
const MaterialProperty< Real > & _vol_strain_rate_qp
Volumetric strain rate.
MaterialProperty< std::vector< Real > > *const _dporosity_dvar
d(porosity)/d(PorousFlow variable)
GenericMaterialProperty< Real, is_ad > & _porosity
Computed porosity at the nodes or quadpoints.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string v
Material designed to provide the porosity in PorousFlow simulations chemistry + biot + (phi0 - refere...
static InputParameters validParams()
const Real _biot_modulus
Constant biot modulus.
const MaterialProperty< Real > *const _vol_strain_qp
Strain (first const means we never want to dereference and change the value, second means we'll alway...
static InputParameters validParams()