https://mooseframework.inl.gov
PoroFullSatTimeDerivative.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.addRequiredCoupledVar(
19  "displacements",
20  "The displacements appropriate for the simulation geometry and coordinate system");
21  params.addClassDescription("Kernel = biot_coefficient*d(volumetric_strain)/dt + "
22  "(1/biot_modulus)*d(porepressure)/dt. This is the time-derivative "
23  "for poromechanics for a single-phase, fully-saturated fluid with "
24  "constant bulk modulus");
25  return params;
26 }
27 
30  _u_old(valueOld()),
31  _volstrain(getMaterialProperty<Real>("volumetric_strain")),
32  _volstrain_old(getMaterialPropertyOld<Real>("volumetric_strain")),
33 
34  _ndisp(coupledComponents("displacements")),
35  _disp_var_num(_ndisp),
36 
37  _alpha(getMaterialProperty<Real>("biot_coefficient")),
38 
39  _one_over_biot_modulus(getMaterialProperty<Real>("one_over_biot_modulus")),
40  _done_over_biot_modulus_dP(
41  getMaterialPropertyDerivative<Real>("one_over_biot_modulus", _var.name())),
42  _done_over_biot_modulus_dep(
43  getMaterialPropertyDerivative<Real>("one_over_biot_modulus", "volumetric_strain"))
44 {
45  for (unsigned i = 0; i < _ndisp; ++i)
46  _disp_var_num[i] = coupled("displacements", i);
47 }
48 
49 Real
51 {
52  // here, "_u" is the porepressure
53  Real res = _one_over_biot_modulus[_qp] * (_u[_qp] - _u_old[_qp]);
54  res += _alpha[_qp] * (_volstrain[_qp] - _volstrain_old[_qp]);
55  return _test[_i][_qp] * res / _dt;
56 }
57 
58 Real
60 {
61  Real jac = _one_over_biot_modulus[_qp] * _phi[_j][_qp];
62  jac += _done_over_biot_modulus_dP[_qp] * _phi[_j][_qp] * (_u[_qp] - _u_old[_qp]);
63  return _test[_i][_qp] * jac / _dt;
64 }
65 
66 Real
68 {
69  Real jac = 0;
70  for (unsigned i = 0; i < _ndisp; ++i)
71  if (jvar == _disp_var_num[i])
72  jac = _grad_phi[_j][_qp](i);
73 
74  jac *= _done_over_biot_modulus_dep[_qp] * (_u[_qp] - _u_old[_qp]) + _alpha[_qp];
75 
76  return _test[_i][_qp] * jac / _dt;
77 }
static InputParameters validParams()
const MaterialProperty< Real > & _done_over_biot_modulus_dep
d(1/M)/d(volumetric strain)
const VariableValue & _u_old
old value of porepressure
static InputParameters validParams()
registerMooseObject("RichardsApp", PoroFullSatTimeDerivative)
std::vector< unsigned int > _disp_var_num
variable number of the displacements variables
const MaterialProperty< Real > & _volstrain
volumetric strain
const MaterialProperty< Real > & _alpha
Biot coefficient.
const MaterialProperty< Real > & _volstrain_old
old value of volumetric strain
const std::string name
Definition: Setup.h:20
virtual Real computeQpOffDiagJacobian(unsigned int jvar)
const MaterialProperty< Real > & _one_over_biot_modulus
1/M, where M is the Biot modulus
Kernel = biot_coefficient*d(volumetric_strain)/dt + (1/biot_modulus)*d(porepressure)/dt this is the t...
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
PoroFullSatTimeDerivative(const InputParameters &parameters)
void addClassDescription(const std::string &doc_string)
const MaterialProperty< Real > & _done_over_biot_modulus_dP
d(1/M)/d(porepressure)
unsigned int _ndisp
number of displacement variables