Line data Source code
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 : 10 : #include "PorousFlowConstantBiotModulus.h" 11 : 12 : registerMooseObject("PorousFlowApp", PorousFlowConstantBiotModulus); 13 : 14 : InputParameters 15 1163 : PorousFlowConstantBiotModulus::validParams() 16 : { 17 1163 : InputParameters params = PorousFlowMaterialVectorBase::validParams(); 18 3489 : params.addRangeCheckedParam<Real>( 19 2326 : "biot_coefficient", 1.0, "biot_coefficient>=0 & biot_coefficient<=1", "Biot coefficient"); 20 3489 : params.addRangeCheckedParam<Real>( 21 2326 : "fluid_bulk_modulus", 2.0E9, "fluid_bulk_modulus>0", "Fluid bulk modulus"); 22 3489 : params.addRangeCheckedParam<Real>("solid_bulk_compliance", 23 2326 : 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 2326 : params.addPrivateParam<std::string>("pf_material_type", "biot_modulus"); 30 1163 : params.addClassDescription("Computes the Biot Modulus, which is assumed to be constant for all " 31 : "time. Sometimes 1 / BiotModulus is called storativity"); 32 1163 : return params; 33 0 : } 34 : 35 900 : PorousFlowConstantBiotModulus::PorousFlowConstantBiotModulus(const InputParameters & parameters) 36 : : PorousFlowMaterialVectorBase(parameters), 37 900 : _biot_coefficient(getParam<Real>("biot_coefficient")), 38 1800 : _fluid_bulk_modulus(getParam<Real>("fluid_bulk_modulus")), 39 1800 : _solid_bulk_compliance(getParam<Real>("solid_bulk_compliance")), 40 900 : _porosity(_nodal_material ? getMaterialProperty<Real>("PorousFlow_porosity_nodal") 41 2700 : : getMaterialProperty<Real>("PorousFlow_porosity_qp")), 42 900 : _biot_modulus(_nodal_material ? declareProperty<Real>("PorousFlow_constant_biot_modulus_nodal") 43 1800 : : declareProperty<Real>("PorousFlow_constant_biot_modulus_qp")), 44 1800 : _biot_modulus_old(_nodal_material 45 900 : ? getMaterialPropertyOld<Real>("PorousFlow_constant_biot_modulus_nodal") 46 3600 : : getMaterialPropertyOld<Real>("PorousFlow_constant_biot_modulus_qp")) 47 : { 48 900 : } 49 : 50 : void 51 254456 : PorousFlowConstantBiotModulus::initQpStatefulProperties() 52 : { 53 254456 : _biot_modulus[_qp] = 1.0 / ((1.0 - _biot_coefficient) * (_biot_coefficient - _porosity[_qp]) * 54 254456 : _solid_bulk_compliance + 55 254456 : _porosity[_qp] / _fluid_bulk_modulus); 56 254456 : } 57 : 58 : void 59 3871739 : PorousFlowConstantBiotModulus::computeQpProperties() 60 : { 61 3871739 : _biot_modulus[_qp] = _biot_modulus_old[_qp]; 62 3871739 : }