www.mooseframework.org
SideSetHeatTransferKernel.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 
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<InterfaceKernel>();
19  params.addClassDescription(
20  "Modeling conduction, convection, and radiation across internal side set.");
21  params.addParam<MaterialPropertyName>("conductance",
22  "gap_conductance",
23  "Conductivity of gap divided by effective gap width,"
24  "conductance ignored if not provided");
25  params.addCoupledVar("Tbulk_var", "Bulk temperature of gap as variable");
26  params.addParam<MaterialPropertyName>(
27  "Tbulk_mat", "gap_Tbulk", "Bulk temperature of gap as material");
28  params.addParam<MaterialPropertyName>(
29  "h_master",
30  "gap_h_master",
31  "Convective heat transfer coefficient (master face), convection ignored if not provided");
32  params.addParam<MaterialPropertyName>(
33  "h_neighbor",
34  "gap_h_neighbor",
35  "Convective heat transfer coefficient (neighbor face), convection ignored if not provided");
36  params.addParam<MaterialPropertyName>(
37  "emissivity_eff_master",
38  "gap_emissivity_eff_master",
39  "Effective emmissivity of master face, radiation ignored if not provided. "
40  "This value contains contributions from reflectivity, see SideSetHeatTransferMaterial "
41  "for details.");
42  params.addParam<MaterialPropertyName>(
43  "emissivity_eff_neighbor",
44  "gap_emissivity_eff_neighbor",
45  "Effective emmissivity of neighbor face, radiation ignored if not provided. "
46  "This value contains contributions from reflectivity, see SideSetHeatTransferMaterial "
47  "for details.");
48  return params;
49 }
50 
51 SideSetHeatTransferKernel::SideSetHeatTransferKernel(const InputParameters & parameters)
52  : InterfaceKernel(parameters),
53  _cond(getMaterialProperty<Real>("conductance")),
54  _Tbulk_var(isParamValid("Tbulk_var") ? &coupledValue("Tbulk_var") : nullptr),
55  _Tbulk_mat(_Tbulk_var ? nullptr : &getMaterialProperty<Real>("Tbulk_mat")),
56  _hp(getMaterialProperty<Real>("h_master")),
57  _hm(getMaterialProperty<Real>("h_neighbor")),
58  _eps_p(getMaterialProperty<Real>("emissivity_eff_master")),
59  _eps_m(getMaterialProperty<Real>("emissivity_eff_neighbor"))
60 {
61  if (parameters.isParamSetByUser("Tbulk_mat") && _Tbulk_var)
62  paramError("Tbulk_var", "Both Tbulk_mat and Tbulk_var set by user, cannot use both.");
63 
64  if (_var.number() == _neighbor_var.number() && _var.isNodal())
65  mooseError(
66  "Variable and neighbor variable are the same, but they are not elemental variables.");
67 }
68 
69 Real
71 {
72  Real r = 0;
73 
74  if (_cond[_qp] != 0.0) // Conduction
75  {
76  Real jump = _u[_qp] - _neighbor_value[_qp];
77  switch (type)
78  {
79  case Moose::Element:
80  r += _cond[_qp] * jump * _test[_i][_qp];
81  break;
82 
83  case Moose::Neighbor:
84  r -= _cond[_qp] * jump * _test_neighbor[_i][_qp];
85  break;
86  }
87  }
88 
89  if (_hp[_qp] != 0.0 && _hm[_qp] != 0.0) // Convection
90  {
91  Real Tb = (_Tbulk_var ? (*_Tbulk_var)[_qp] : (*_Tbulk_mat)[_qp]);
92  switch (type)
93  {
94  case Moose::Element:
95  r += _hp[_qp] * (_u[_qp] - Tb) * _test[_i][_qp];
96  break;
97 
98  case Moose::Neighbor:
99  r += _hm[_qp] * (_neighbor_value[_qp] - Tb) * _test_neighbor[_i][_qp];
100  break;
101  }
102  }
103 
104  if (_eps_p[_qp] != 0.0 && _eps_m[_qp] != 0.0) // Radiation
105  {
106  Real Rp = _eps_p[_qp] * (_u[_qp] * _u[_qp] * _u[_qp] * _u[_qp]);
107  Real Rm = _eps_m[_qp] * (_neighbor_value[_qp] * _neighbor_value[_qp] * _neighbor_value[_qp] *
108  _neighbor_value[_qp]);
109  switch (type)
110  {
111  case Moose::Element:
112  r += (Rp - Rm) * _test[_i][_qp];
113  break;
114 
115  case Moose::Neighbor:
116  r += (Rm - Rp) * _test_neighbor[_i][_qp];
117  break;
118  }
119  }
120 
121  return r;
122 }
123 
124 Real
126 {
127  Real jac = 0;
128 
129  if (_cond[_qp] != 0.0) // Conduction
130  {
131  switch (type)
132  {
133  case Moose::ElementElement:
134  jac += _cond[_qp] * _phi[_j][_qp] * _test[_i][_qp];
135  break;
136 
137  case Moose::NeighborNeighbor:
138  jac += _cond[_qp] * _phi_neighbor[_j][_qp] * _test_neighbor[_i][_qp];
139  break;
140 
141  case Moose::ElementNeighbor:
142  jac -= _cond[_qp] * _phi_neighbor[_j][_qp] * _test[_i][_qp];
143  break;
144 
145  case Moose::NeighborElement:
146  jac -= _cond[_qp] * _phi[_j][_qp] * _test_neighbor[_i][_qp];
147  break;
148  }
149  }
150 
151  if (_hp[_qp] != 0.0 && _hm[_qp] != 0.0) // Convection
152  {
153  switch (type)
154  {
155  case Moose::ElementElement:
156  jac += _hp[_qp] * _phi[_j][_qp] * _test[_i][_qp];
157  break;
158 
159  case Moose::NeighborNeighbor:
160  jac += _hm[_qp] * _phi_neighbor[_j][_qp] * _test_neighbor[_i][_qp];
161  break;
162 
163  case Moose::NeighborElement:
164  case Moose::ElementNeighbor:
165  break;
166  }
167  }
168 
169  if (_eps_p[_qp] != 0.0 && _eps_m[_qp] != 0.0) // Radiation
170  {
171  switch (type)
172  {
173  case Moose::ElementElement:
174  jac += 4.0 * _eps_p[_qp] * (_u[_qp] * _u[_qp] * _u[_qp]) * _phi[_j][_qp] * _test[_i][_qp];
175  break;
176 
177  case Moose::NeighborNeighbor:
178  jac += 4.0 * _eps_m[_qp] *
179  (_neighbor_value[_qp] * _neighbor_value[_qp] * _neighbor_value[_qp]) *
180  _phi_neighbor[_j][_qp] * _test_neighbor[_i][_qp];
181  break;
182 
183  case Moose::ElementNeighbor:
184  jac -= 4.0 * _eps_m[_qp] *
185  (_neighbor_value[_qp] * _neighbor_value[_qp] * _neighbor_value[_qp]) *
186  _phi_neighbor[_j][_qp] * _test[_i][_qp];
187  break;
188 
189  case Moose::NeighborElement:
190  jac -= 4.0 * _eps_p[_qp] * (_u[_qp] * _u[_qp] * _u[_qp]) * _phi[_j][_qp] *
191  _test_neighbor[_i][_qp];
192  break;
193  }
194  }
195 
196  return jac;
197 }
registerMooseObject
registerMooseObject("HeatConductionApp", SideSetHeatTransferKernel)
SideSetHeatTransferKernel::_cond
const MaterialProperty< Real > & _cond
Conductivity of gap divided by effective gap width.
Definition: SideSetHeatTransferKernel.h:33
SideSetHeatTransferKernel.h
SideSetHeatTransferKernel::computeQpJacobian
virtual Real computeQpJacobian(Moose::DGJacobianType type) override
Definition: SideSetHeatTransferKernel.C:125
SideSetHeatTransferKernel::SideSetHeatTransferKernel
SideSetHeatTransferKernel(const InputParameters &parameters)
Definition: SideSetHeatTransferKernel.C:51
SideSetHeatTransferKernel::_eps_p
const MaterialProperty< Real > & _eps_p
Master face effective emissivity \epsilon^+\sigma(1-\rho^-)/(1-\rho^+\rho^-)
Definition: SideSetHeatTransferKernel.h:42
SideSetHeatTransferKernel
DG kernel for interfacing diffusion between two variables on adjacent blocks.
Definition: SideSetHeatTransferKernel.h:23
validParams< SideSetHeatTransferKernel >
InputParameters validParams< SideSetHeatTransferKernel >()
Definition: SideSetHeatTransferKernel.C:16
SideSetHeatTransferKernel::_Tbulk_var
const VariableValue * _Tbulk_var
Bulk temperature of gap.
Definition: SideSetHeatTransferKernel.h:35
SideSetHeatTransferKernel::_hp
const MaterialProperty< Real > & _hp
Convective heat transfer coefficient (master face)
Definition: SideSetHeatTransferKernel.h:38
SideSetHeatTransferKernel::computeQpResidual
virtual Real computeQpResidual(Moose::DGResidualType type) override
Definition: SideSetHeatTransferKernel.C:70
SideSetHeatTransferKernel::_hm
const MaterialProperty< Real > & _hm
Convective heat transfer coefficient (neighbor face)
Definition: SideSetHeatTransferKernel.h:40
SideSetHeatTransferKernel::_eps_m
const MaterialProperty< Real > & _eps_m
Neighbor face effective emissivity \epsilon^-\sigma(1-\rho^+)/(1-\rho^+\rho^-)
Definition: SideSetHeatTransferKernel.h:44