18 InputParameters params = validParams<Material>();
20 params.addRequiredParam<Real>(
22 "The porosity of the material when porepressure and volumetric strain are zero. Eg, 0.1");
23 params.addRequiredRangeCheckedParam<Real>(
"biot_coefficient",
24 "biot_coefficient>=0 & biot_coefficient<=1",
25 "The Biot coefficient. Eg, 0.9");
26 params.addRequiredRangeCheckedParam<Real>(
27 "solid_bulk_compliance",
28 "solid_bulk_compliance>=0",
29 "The solid bulk compliance (the reciprocal of the solid bulk modulus)");
30 params.addRequiredRangeCheckedParam<Real>(
31 "fluid_bulk_compliance",
32 "fluid_bulk_compliance>=0",
33 "The fluid bulk compliance (the reciprocal of the fluid bulk modulus)");
34 params.addRequiredCoupledVar(
"porepressure",
"The porepressure");
35 params.addRequiredCoupledVar(
37 "The displacements appropriate for the simulation geometry and coordinate system");
38 params.addParam<
bool>(
"constant_porosity",
false,
"Set the porosity equal to porosity0 always");
39 params.addClassDescription(
"This Material is designed to calculate and store all the quantities "
40 "needed for the fluid-flow part of poromechanics, assuming a "
41 "fully-saturated, single-phase fluid with constant bulk modulus");
46 : DerivativeMaterialInterface<Material>(parameters),
48 _phi0(getParam<Real>(
"porosity0")),
49 _alpha(getParam<Real>(
"biot_coefficient")),
50 _one_over_K(getParam<Real>(
"solid_bulk_compliance")),
51 _one_over_Kf(getParam<Real>(
"fluid_bulk_compliance")),
52 _constant_porosity(getParam<bool>(
"constant_porosity")),
54 _porepressure(coupledValue(
"porepressure")),
55 _porepressure_name(getVar(
"porepressure", 0)->
name()),
57 _ndisp(coupledComponents(
"displacements")),
60 _vol_strain(declareProperty<Real>(
"volumetric_strain")),
62 _biot_coefficient(declareProperty<Real>(
"biot_coefficient")),
64 _porosity(declareProperty<Real>(
"porosity")),
65 _dporosity_dP(declarePropertyDerivative<Real>(
"porosity", _porepressure_name)),
66 _dporosity_dep(declarePropertyDerivative<Real>(
"porosity",
"volumetric_strain")),
68 _one_over_biot_modulus(declareProperty<Real>(
"one_over_biot_modulus")),
69 _done_over_biot_modulus_dP(
70 declarePropertyDerivative<Real>(
"one_over_biot_modulus", _porepressure_name)),
71 _done_over_biot_modulus_dep(
72 declarePropertyDerivative<Real>(
"one_over_biot_modulus",
"volumetric_strain"))
74 for (
unsigned int i = 0; i <
_ndisp; ++i)
75 _grad_disp[i] = &coupledGradient(
"displacements", i);
90 for (
unsigned i = 0; i <
_ndisp; ++i)