www.mooseframework.org
PorousFlowDesorpedMassVolumetricExpansion.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
16 template <>
17 InputParameters
19 {
20  InputParameters params = validParams<TimeKernel>();
21  params.addRequiredParam<UserObjectName>(
22  "PorousFlowDictator", "The UserObject that holds the list of PorousFlow variable names.");
23  params.addRequiredCoupledVar(
24  "conc_var", "The variable that represents the concentration of desorped species");
25  params.addClassDescription("Desorped_mass * rate_of_solid_volumetric_expansion");
26  return params;
27 }
28 
30  const InputParameters & parameters)
31  : TimeKernel(parameters),
32  _dictator(getUserObject<PorousFlowDictator>("PorousFlowDictator")),
33  _conc_var_number(coupled("conc_var")),
34  _conc(coupledValue("conc_var")),
35  _porosity(getMaterialProperty<Real>("PorousFlow_porosity_qp")),
36  _dporosity_dvar(getMaterialProperty<std::vector<Real>>("dPorousFlow_porosity_qp_dvar")),
37  _dporosity_dgradvar(
38  getMaterialProperty<std::vector<RealGradient>>("dPorousFlow_porosity_qp_dgradvar")),
39  _strain_rate_qp(getMaterialProperty<Real>("PorousFlow_volumetric_strain_rate_qp")),
40  _dstrain_rate_qp_dvar(getMaterialProperty<std::vector<RealGradient>>(
41  "dPorousFlow_volumetric_strain_rate_qp_dvar"))
42 {
43 }
44 
45 Real
47 {
48  return _test[_i][_qp] * (1.0 - _porosity[_qp]) * _conc[_qp] * _strain_rate_qp[_qp];
49 }
50 
51 Real
53 {
54  return computeQpJac(_var.number());
55 }
56 
57 Real
59 {
60  return computeQpJac(jvar);
61 }
62 
63 Real
65 {
66  Real deriv = 0.0;
67 
68  if (jvar == _conc_var_number)
69  deriv = (1.0 - _porosity[_qp]) * _phi[_j][_qp] * _strain_rate_qp[_qp];
70 
72  return _test[_i][_qp] * deriv;
73  const unsigned int pvar = _dictator.porousFlowVariableNum(jvar);
74 
75  deriv -= _dporosity_dgradvar[_qp][pvar] * _grad_phi[_j][_qp] * _conc[_qp] * _strain_rate_qp[_qp];
76  deriv -= _dporosity_dvar[_qp][pvar] * _phi[_j][_qp] * _conc[_qp] * _strain_rate_qp[_qp];
77  deriv +=
78  (1.0 - _porosity[_qp]) * _conc[_qp] * _dstrain_rate_qp_dvar[_qp][pvar] * _grad_phi[_j][_qp];
79 
80  return _test[_i][_qp] * deriv;
81 }
PorousFlowDesorpedMassVolumetricExpansion::computeQpResidual
virtual Real computeQpResidual() override
Definition: PorousFlowDesorpedMassVolumetricExpansion.C:46
PorousFlowDesorpedMassVolumetricExpansion::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
Definition: PorousFlowDesorpedMassVolumetricExpansion.C:58
PorousFlowDesorpedMassVolumetricExpansion::_dporosity_dgradvar
const MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable)
Definition: PorousFlowDesorpedMassVolumetricExpansion.h:50
libMesh::RealGradient
VectorValue< Real > RealGradient
Definition: GrainForceAndTorqueInterface.h:17
PorousFlowDesorpedMassVolumetricExpansion::_strain_rate_qp
const MaterialProperty< Real > & _strain_rate_qp
strain rate
Definition: PorousFlowDesorpedMassVolumetricExpansion.h:53
PorousFlowDictator::notPorousFlowVariable
bool notPorousFlowVariable(unsigned int moose_var_num) const
Returns true if moose_var_num is not a porous flow variabe.
Definition: PorousFlowDictator.C:161
PorousFlowDesorpedMassVolumetricExpansion::computeQpJac
Real computeQpJac(unsigned int jvar) const
Derivative of the residual with respect to the Moose variable with variable number jvar.
Definition: PorousFlowDesorpedMassVolumetricExpansion.C:64
PorousFlowDesorpedMassVolumetricExpansion::PorousFlowDesorpedMassVolumetricExpansion
PorousFlowDesorpedMassVolumetricExpansion(const InputParameters &parameters)
Definition: PorousFlowDesorpedMassVolumetricExpansion.C:29
PorousFlowDesorpedMassVolumetricExpansion::_dictator
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
Definition: PorousFlowDesorpedMassVolumetricExpansion.h:35
PorousFlowDictator::porousFlowVariableNum
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
The PorousFlow variable number.
Definition: PorousFlowDictator.C:135
PorousFlowDesorpedMassVolumetricExpansion::computeQpJacobian
virtual Real computeQpJacobian() override
Definition: PorousFlowDesorpedMassVolumetricExpansion.C:52
PorousFlowDictator
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
Definition: PorousFlowDictator.h:71
PorousFlowDesorpedMassVolumetricExpansion::_conc_var_number
const unsigned int _conc_var_number
The MOOSE variable number of the concentration variable.
Definition: PorousFlowDesorpedMassVolumetricExpansion.h:38
PorousFlowDesorpedMassVolumetricExpansion::_dporosity_dvar
const MaterialProperty< std::vector< Real > > & _dporosity_dvar
d(porosity)/d(PorousFlow variable)
Definition: PorousFlowDesorpedMassVolumetricExpansion.h:47
validParams< PorousFlowDesorpedMassVolumetricExpansion >
InputParameters validParams< PorousFlowDesorpedMassVolumetricExpansion >()
Definition: PorousFlowDesorpedMassVolumetricExpansion.C:18
PorousFlowDesorpedMassVolumetricExpansion::_dstrain_rate_qp_dvar
const MaterialProperty< std::vector< RealGradient > > & _dstrain_rate_qp_dvar
d(strain rate)/d(PorousFlow variable)
Definition: PorousFlowDesorpedMassVolumetricExpansion.h:56
PorousFlowDesorpedMassVolumetricExpansion::_porosity
const MaterialProperty< Real > & _porosity
Porosity.
Definition: PorousFlowDesorpedMassVolumetricExpansion.h:44
PorousFlowDesorpedMassVolumetricExpansion
Kernel = desorped_mass * d(volumetric_strain)/dt which is not lumped to the nodes.
Definition: PorousFlowDesorpedMassVolumetricExpansion.h:24
PorousFlowDesorpedMassVolumetricExpansion::_conc
const VariableValue & _conc
The concentration variable.
Definition: PorousFlowDesorpedMassVolumetricExpansion.h:41
registerMooseObject
registerMooseObject("PorousFlowApp", PorousFlowDesorpedMassVolumetricExpansion)
PorousFlowDesorpedMassVolumetricExpansion.h