https://mooseframework.inl.gov
PorousFlowConstantBiotModulus.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 
13 
16 {
18  params.addRangeCheckedParam<Real>(
19  "biot_coefficient", 1.0, "biot_coefficient>=0 & biot_coefficient<=1", "Biot coefficient");
20  params.addRangeCheckedParam<Real>(
21  "fluid_bulk_modulus", 2.0E9, "fluid_bulk_modulus>0", "Fluid bulk modulus");
22  params.addRangeCheckedParam<Real>("solid_bulk_compliance",
23  0.0,
24  "solid_bulk_compliance>=0.0",
25  "Reciprocal of the drained bulk modulus of the porous "
26  "skeleton. If strain = C * stress, then solid_bulk_compliance "
27  "= de_ij de_kl C_ijkl. If the grain bulk modulus is Kg then "
28  "1/Kg = (1 - biot_coefficient) * solid_bulk_compliance.");
29  params.addPrivateParam<std::string>("pf_material_type", "biot_modulus");
30  params.addClassDescription("Computes the Biot Modulus, which is assumed to be constant for all "
31  "time. Sometimes 1 / BiotModulus is called storativity");
32  return params;
33 }
34 
36  : PorousFlowMaterialVectorBase(parameters),
37  _biot_coefficient(getParam<Real>("biot_coefficient")),
38  _fluid_bulk_modulus(getParam<Real>("fluid_bulk_modulus")),
39  _solid_bulk_compliance(getParam<Real>("solid_bulk_compliance")),
40  _porosity(_nodal_material ? getMaterialProperty<Real>("PorousFlow_porosity_nodal")
41  : getMaterialProperty<Real>("PorousFlow_porosity_qp")),
42  _biot_modulus(_nodal_material ? declareProperty<Real>("PorousFlow_constant_biot_modulus_nodal")
43  : declareProperty<Real>("PorousFlow_constant_biot_modulus_qp")),
44  _biot_modulus_old(_nodal_material
45  ? getMaterialPropertyOld<Real>("PorousFlow_constant_biot_modulus_nodal")
46  : getMaterialPropertyOld<Real>("PorousFlow_constant_biot_modulus_qp"))
47 {
48 }
49 
50 void
52 {
53  _biot_modulus[_qp] = 1.0 / ((1.0 - _biot_coefficient) * (_biot_coefficient - _porosity[_qp]) *
56 }
57 
58 void
60 {
61  _biot_modulus[_qp] = _biot_modulus_old[_qp];
62 }
void addPrivateParam(const std::string &name, const T &value)
PorousFlowConstantBiotModulus(const InputParameters &parameters)
MaterialProperty< Real > & _biot_modulus
Computed Biot modulus.
Material designed to provide a time-invariant Biot Modulus, M, where 1 / M = (1 - alpha) * (alpha - p...
const MaterialProperty< Real > & _biot_modulus_old
Old value of Biot modulus. This variable is necessary in order to keep Biot modulus constant even if ...
const Real _fluid_bulk_modulus
Fluid bulk modulus.
registerMooseObject("PorousFlowApp", PorousFlowConstantBiotModulus)
const Real _biot_coefficient
Biot coefficient.
Base class for all PorousFlow vector materials.
virtual void initQpStatefulProperties() override
const Real _solid_bulk_compliance
Solid bulk compliance.
const MaterialProperty< Real > & _porosity
porosity at the nodes or quadpoints. Only the initial value is ever used
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)