Go to the documentation of this file.
11 #include "libmesh/utility.h"
20 params.set<
bool>(
"mechanical") =
true;
21 params.set<
bool>(
"fluid") =
true;
22 params.addRequiredRangeCheckedParam<Real>(
"constant_biot_modulus",
23 "constant_biot_modulus>0",
24 "Biot modulus, which is constant for this Material");
25 params.addRequiredRangeCheckedParam<Real>(
26 "constant_fluid_bulk_modulus",
27 "constant_fluid_bulk_modulus>0",
28 "Fluid bulk modulus, which is constant for this Material");
29 params.addClassDescription(
30 "This Material calculates the porosity for hydro-mechanical simulations, assuming that the "
31 "Biot modulus and the fluid bulk modulus are both constant. This is useful for comparing "
32 "with solutions from poroelasticity theory, but is less accurate than PorousFlowPorosity");
38 _porosity_old(_nodal_material ? getMaterialPropertyOld<Real>(
"PorousFlow_porosity_nodal")
39 : getMaterialPropertyOld<Real>(
"PorousFlow_porosity_qp")),
40 _biot_modulus(getParam<Real>(
"constant_biot_modulus")),
41 _fluid_bulk_modulus(getParam<Real>(
"constant_fluid_bulk_modulus")),
42 _pf_old(_nodal_material
43 ? getMaterialPropertyOld<Real>(
"PorousFlow_effective_fluid_pressure_nodal")
44 : getMaterialPropertyOld<Real>(
"PorousFlow_effective_fluid_pressure_qp")),
45 _vol_strain_qp_old(getMaterialPropertyOld<Real>(
"PorousFlow_total_volumetric_strain_qp")),
46 _vol_strain_rate_qp(getMaterialProperty<Real>(
"PorousFlow_volumetric_strain_rate_qp")),
47 _dvol_strain_rate_qp_dvar(getMaterialProperty<std::vector<
RealGradient>>(
48 "dPorousFlow_volumetric_strain_rate_qp_dvar"))
60 const unsigned qp_to_use =
71 for (
unsigned int v = 0; v <
_num_var; ++v)
80 for (
unsigned int v = 0; v <
_num_var; ++v)
Material designed to provide the porosity in PorousFlow simulations chemistry + biot + (phi0 - refere...
virtual void computeQpProperties() override
const MaterialProperty< std::vector< RealGradient > > *const _dvol_strain_qp_dvar
d(strain)/(dvar) (first const means we never want to dereference and change the value,...
registerMooseObject("PorousFlowApp", PorousFlowPorosityHMBiotModulus)
const MaterialProperty< Real > & _porosity_old
Old value of porosity.
VectorValue< Real > RealGradient
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...
MaterialProperty< Real > & _porosity
Computed porosity at the nodes or quadpoints.
const MaterialProperty< std::vector< Real > > *const _dpf_dvar
d(effective porepressure)/(d porflow variable)
MaterialProperty< std::vector< Real > > & _dporosity_dvar
d(porosity)/d(PorousFlow variable)
const MaterialProperty< Real > & _pf_old
Old value of effective fluid pressure.
const MaterialProperty< Real > *const _pf
Effective porepressure at the quadpoints or nodes.
const MaterialProperty< Real > & _vol_strain_rate_qp
Volumetric strain rate.
const Real _biot_modulus
Constant biot modulus.
InputParameters validParams< PorousFlowPorosityHMBiotModulus >()
const MaterialProperty< std::vector< RealGradient > > & _dvol_strain_rate_qp_dvar
d(volumetric strain rate)/d(PorousFlow variable)
InputParameters validParams< PorousFlowPorosity >()
const Real _fluid_bulk_modulus
Constant fluid bulk modulus.
const MaterialProperty< Real > & _vol_strain_qp_old
Old value of total volumetric strain.
const unsigned int _num_var
Number of PorousFlow variables.
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...
PorousFlowPorosityHMBiotModulus(const InputParameters ¶meters)
const Real _biot
Biot coefficient.
MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable)