https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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.");
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
44Real
49
50Real
55
56Real
61
62Real
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
75 deriv -= _dporosity_dvar[_qp][pvar] * _phi[_j][_qp] * _conc[_qp] * _strain_rate_qp[_qp];
76 deriv +=
78
79 return _test[_i][_qp] * deriv;
80}
registerMooseObject("PorousFlowApp", PorousFlowDesorpedMassVolumetricExpansion)
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
unsigned int _qp
unsigned int _j
unsigned int _i
MooseVariable & _var
const VariablePhiValue & _phi
const VariableTestValue & _test
const VariablePhiGradient & _grad_phi
unsigned int number() const
Kernel = desorped_mass * d(volumetric_strain)/dt which is not lumped to the nodes.
const VariableValue & _conc
The concentration variable.
const MaterialProperty< Real > & _strain_rate_qp
strain rate
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
Real computeQpJac(unsigned int jvar) const
Derivative of the residual with respect to the Moose variable with variable number jvar.
const MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable)
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)
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
PorousFlowDesorpedMassVolumetricExpansion(const InputParameters &parameters)
const unsigned int _conc_var_number
The MOOSE variable number of the concentration variable.
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
The PorousFlow variable number.
bool notPorousFlowVariable(unsigned int moose_var_num) const
Returns true if moose_var_num is not a porous flow variabe.
static InputParameters validParams()