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 2359 : PorousFlowConstantBiotModulus::validParams() 16 : { 17 2359 : InputParameters params = PorousFlowMaterialVectorBase::validParams(); 18 7077 : params.addRangeCheckedParam<Real>( 19 4718 : "biot_coefficient", 1.0, "biot_coefficient>=0 & biot_coefficient<=1", "Biot coefficient"); 20 7077 : params.addRangeCheckedParam<Real>( 21 4718 : "fluid_bulk_modulus", 2.0E9, "fluid_bulk_modulus>0", "Fluid bulk modulus"); 22 7077 : params.addRangeCheckedParam<Real>("solid_bulk_compliance", 23 4718 : 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 4718 : params.addPrivateParam<std::string>("pf_material_type", "biot_modulus"); 30 2359 : params.addClassDescription("Computes the Biot Modulus, which is assumed to be constant for all " 31 : "time. Sometimes 1 / BiotModulus is called storativity"); 32 2359 : return params; 33 0 : } 34 : 35 1836 : PorousFlowConstantBiotModulus::PorousFlowConstantBiotModulus(const InputParameters & parameters) 36 : : PorousFlowMaterialVectorBase(parameters), 37 1836 : _biot_coefficient(getParam<Real>("biot_coefficient")), 38 3672 : _fluid_bulk_modulus(getParam<Real>("fluid_bulk_modulus")), 39 3672 : _solid_bulk_compliance(getParam<Real>("solid_bulk_compliance")), 40 1836 : _porosity(_nodal_material ? getMaterialProperty<Real>("PorousFlow_porosity_nodal") 41 5508 : : getMaterialProperty<Real>("PorousFlow_porosity_qp")), 42 1836 : _biot_modulus(_nodal_material ? declareProperty<Real>("PorousFlow_constant_biot_modulus_nodal") 43 3672 : : declareProperty<Real>("PorousFlow_constant_biot_modulus_qp")), 44 3672 : _biot_modulus_old(_nodal_material 45 1836 : ? getMaterialPropertyOld<Real>("PorousFlow_constant_biot_modulus_nodal") 46 7344 : : getMaterialPropertyOld<Real>("PorousFlow_constant_biot_modulus_qp")) 47 : { 48 1836 : } 49 : 50 : void 51 407690 : PorousFlowConstantBiotModulus::initQpStatefulProperties() 52 : { 53 407690 : _biot_modulus[_qp] = 1.0 / ((1.0 - _biot_coefficient) * (_biot_coefficient - _porosity[_qp]) * 54 407690 : _solid_bulk_compliance + 55 407690 : _porosity[_qp] / _fluid_bulk_modulus); 56 407690 : } 57 : 58 : void 59 5664658 : PorousFlowConstantBiotModulus::computeQpProperties() 60 : { 61 5664658 : _biot_modulus[_qp] = _biot_modulus_old[_qp]; 62 5664658 : }