https://mooseframework.inl.gov
PorousFlowDesorpedMassVolumetricExpansion.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 
12 #include "MooseVariable.h"
13 
15 
18 {
20  params.addRequiredParam<UserObjectName>(
21  "PorousFlowDictator", "The UserObject that holds the list of PorousFlow variable names.");
22  params.addRequiredCoupledVar(
23  "conc_var", "The variable that represents the concentration of desorped species");
24  params.addClassDescription("Desorped_mass * rate_of_solid_volumetric_expansion");
25  return params;
26 }
27 
29  const InputParameters & parameters)
30  : TimeKernel(parameters),
31  _dictator(getUserObject<PorousFlowDictator>("PorousFlowDictator")),
32  _conc_var_number(coupled("conc_var")),
33  _conc(coupledValue("conc_var")),
34  _porosity(getMaterialProperty<Real>("PorousFlow_porosity_qp")),
35  _dporosity_dvar(getMaterialProperty<std::vector<Real>>("dPorousFlow_porosity_qp_dvar")),
36  _dporosity_dgradvar(
37  getMaterialProperty<std::vector<RealGradient>>("dPorousFlow_porosity_qp_dgradvar")),
38  _strain_rate_qp(getMaterialProperty<Real>("PorousFlow_volumetric_strain_rate_qp")),
39  _dstrain_rate_qp_dvar(getMaterialProperty<std::vector<RealGradient>>(
40  "dPorousFlow_volumetric_strain_rate_qp_dvar"))
41 {
42 }
43 
44 Real
46 {
47  return _test[_i][_qp] * (1.0 - _porosity[_qp]) * _conc[_qp] * _strain_rate_qp[_qp];
48 }
49 
50 Real
52 {
53  return computeQpJac(_var.number());
54 }
55 
56 Real
58 {
59  return computeQpJac(jvar);
60 }
61 
62 Real
64 {
65  Real deriv = 0.0;
66 
67  if (jvar == _conc_var_number)
68  deriv = (1.0 - _porosity[_qp]) * _phi[_j][_qp] * _strain_rate_qp[_qp];
69 
71  return _test[_i][_qp] * deriv;
72  const unsigned int pvar = _dictator.porousFlowVariableNum(jvar);
73 
76  deriv +=
77  (1.0 - _porosity[_qp]) * _conc[_qp] * _dstrain_rate_qp_dvar[_qp][pvar] * _grad_phi[_j][_qp];
78 
79  return _test[_i][_qp] * deriv;
80 }
bool notPorousFlowVariable(unsigned int moose_var_num) const
Returns true if moose_var_num is not a porous flow variabe.
MooseVariable & _var
const MaterialProperty< Real > & _strain_rate_qp
strain rate
const MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable)
unsigned int number() const
const VariablePhiGradient & _grad_phi
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
PorousFlowDesorpedMassVolumetricExpansion(const InputParameters &parameters)
void addRequiredParam(const std::string &name, const std::string &doc_string)
Real computeQpJac(unsigned int jvar) const
Derivative of the residual with respect to the Moose variable with variable number jvar...
Kernel = desorped_mass * d(volumetric_strain)/dt which is not lumped to the nodes.
const unsigned int _conc_var_number
The MOOSE variable number of the concentration variable.
const VariableTestValue & _test
Real deriv(unsigned n, unsigned alpha, unsigned beta, Real x)
const MaterialProperty< std::vector< Real > > & _dporosity_dvar
d(porosity)/d(PorousFlow variable)
const MaterialProperty< std::vector< RealGradient > > & _dstrain_rate_qp_dvar
d(strain rate)/d(PorousFlow variable)
unsigned int _i
registerMooseObject("PorousFlowApp", PorousFlowDesorpedMassVolumetricExpansion)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
unsigned int _j
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
const VariableValue & _conc
The concentration variable.
void addClassDescription(const std::string &doc_string)
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
The PorousFlow variable number.
const VariablePhiValue & _phi
static InputParameters validParams()
unsigned int _qp