https://mooseframework.inl.gov
PorousFlowHeatConduction.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.addClassDescription("Heat conduction in the Porous Flow module");
23  return params;
24 }
25 
27  : Kernel(parameters),
28  _dictator(getUserObject<PorousFlowDictator>("PorousFlowDictator")),
29  _la(getMaterialProperty<RealTensorValue>("PorousFlow_thermal_conductivity_qp")),
30  _dla_dvar(getMaterialProperty<std::vector<RealTensorValue>>(
31  "dPorousFlow_thermal_conductivity_qp_dvar")),
32  _grad_t(getMaterialProperty<RealGradient>("PorousFlow_grad_temperature_qp")),
33  _dgrad_t_dvar(
34  getMaterialProperty<std::vector<RealGradient>>("dPorousFlow_grad_temperature_qp_dvar")),
35  _dgrad_t_dgradvar(
36  getMaterialProperty<std::vector<Real>>("dPorousFlow_grad_temperature_qp_dgradvar"))
37 {
38 }
39 
40 Real
42 {
43  return _grad_test[_i][_qp] * (_la[_qp] * _grad_t[_qp]);
44 }
45 
46 Real
48 {
50 }
51 
52 Real
54 {
56  return 0.0;
57 
58  // The PorousFlow variable index corresponding to the variable number jvar
59  const unsigned int pvar = _dictator.porousFlowVariableNum(jvar);
60 
61  return _grad_test[_i][_qp] *
62  ((_dla_dvar[_qp][pvar] * _grad_t[_qp] + _la[_qp] * _dgrad_t_dvar[_qp][pvar]) *
63  _phi[_j][_qp] +
64  _la[_qp] * _dgrad_t_dgradvar[_qp][pvar] * _grad_phi[_j][_qp]);
65 }
PorousFlowHeatConduction(const InputParameters &parameters)
Kernel = grad(test) * thermal_conductivity * grad(temperature)
static InputParameters validParams()
bool notPorousFlowVariable(unsigned int moose_var_num) const
Returns true if moose_var_num is not a porous flow variabe.
MooseVariable & _var
unsigned int number() const
const MaterialProperty< std::vector< Real > > & _dgrad_t_dgradvar
d(gradT)/d(grad PorousFlow variable)
const VariablePhiGradient & _grad_phi
const MaterialProperty< RealGradient > & _grad_t
grad(temperature)
const MaterialProperty< RealTensorValue > & _la
Thermal conductivity at the quadpoints.
static InputParameters validParams()
void addRequiredParam(const std::string &name, const std::string &doc_string)
const MaterialProperty< std::vector< RealGradient > > & _dgrad_t_dvar
d(gradT)/d(PorousFlow variable)
TensorValue< Real > RealTensorValue
const MaterialProperty< std::vector< RealTensorValue > > & _dla_dvar
d(thermal conductivity at the quadpoints)/d(PorousFlow variable)
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
unsigned int _i
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 VariableTestGradient & _grad_test
registerMooseObject("PorousFlowApp", PorousFlowHeatConduction)
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
void addClassDescription(const std::string &doc_string)
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
The PorousFlow variable number.
virtual Real computeQpResidual() override
const VariablePhiValue & _phi
virtual Real computeQpJacobian() override
unsigned int _qp