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 =
72 (*_dpf_dvar)[_qp][
v] *
78 (*_dporosity_dgradvar)[_qp].resize(
_num_var);
81 _biot * (*_dvol_strain_qp_dvar)[qp_to_use][
v] / denom -
registerMooseObject("PorousFlowApp", PorousFlowPorosityHMBiotModulus)
virtual void resize(const std::size_t size) override final
const unsigned int _num_var
Number of PorousFlow variables.
MaterialProperty< std::vector< RealGradient > > *const _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable)
MaterialProperty< std::vector< Real > > *const _dporosity_dvar
d(porosity)/d(PorousFlow variable)
GenericMaterialProperty< Real, is_ad > & _porosity
Computed porosity at the nodes or quadpoints.
const bool _strain_at_nearest_qp
When calculating nodal porosity, use the strain at the nearest quadpoint to the node.
This Matrial evolves porosity so that the PorousFlow equations match the standard equations of poroel...
const Real _biot_modulus
Constant biot modulus.
PorousFlowPorosityHMBiotModulus(const InputParameters ¶meters)
const MaterialProperty< Real > & _vol_strain_rate_qp
Volumetric strain rate.
const MaterialProperty< Real > & _porosity_old
Old value of porosity.
const MaterialProperty< std::vector< RealGradient > > & _dvol_strain_rate_qp_dvar
d(volumetric strain rate)/d(PorousFlow variable)
const Real _fluid_bulk_modulus
Constant fluid bulk modulus.
static InputParameters validParams()
const MaterialProperty< Real > & _pf_old
Old value of effective fluid pressure.
virtual void computeQpProperties() override
const MaterialProperty< Real > & _vol_strain_qp_old
Old value of total volumetric strain.
Material designed to provide the porosity in PorousFlow simulations chemistry + biot + (phi0 - refere...
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...
const MaterialProperty< Real > *const _pf
Effective porepressure at the quadpoints or nodes.
static InputParameters validParams()
const Real _biot
Biot coefficient.