18 InputParameters params = validParams<InterfaceKernel>();
19 params.addClassDescription(
20 "Modeling conduction, convection, and radiation across internal side set.");
21 params.addParam<MaterialPropertyName>(
"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>(
31 "Convective heat transfer coefficient (master face), convection ignored if not provided");
32 params.addParam<MaterialPropertyName>(
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 "
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 "
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"))
61 if (parameters.isParamSetByUser(
"Tbulk_mat") &&
_Tbulk_var)
62 paramError(
"Tbulk_var",
"Both Tbulk_mat and Tbulk_var set by user, cannot use both.");
64 if (_var.number() == _neighbor_var.number() && _var.isNodal())
66 "Variable and neighbor variable are the same, but they are not elemental variables.");
74 if (
_cond[_qp] != 0.0)
76 Real jump = _u[_qp] - _neighbor_value[_qp];
80 r +=
_cond[_qp] * jump * _test[_i][_qp];
84 r -=
_cond[_qp] * jump * _test_neighbor[_i][_qp];
89 if (
_hp[_qp] != 0.0 &&
_hm[_qp] != 0.0)
91 Real Tb = (
_Tbulk_var ? (*_Tbulk_var)[_qp] : (*_Tbulk_mat)[_qp]);
95 r +=
_hp[_qp] * (_u[_qp] - Tb) * _test[_i][_qp];
99 r +=
_hm[_qp] * (_neighbor_value[_qp] - Tb) * _test_neighbor[_i][_qp];
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]);
112 r += (Rp - Rm) * _test[_i][_qp];
115 case Moose::Neighbor:
116 r += (Rm - Rp) * _test_neighbor[_i][_qp];
129 if (
_cond[_qp] != 0.0)
133 case Moose::ElementElement:
134 jac +=
_cond[_qp] * _phi[_j][_qp] * _test[_i][_qp];
137 case Moose::NeighborNeighbor:
138 jac +=
_cond[_qp] * _phi_neighbor[_j][_qp] * _test_neighbor[_i][_qp];
141 case Moose::ElementNeighbor:
142 jac -=
_cond[_qp] * _phi_neighbor[_j][_qp] * _test[_i][_qp];
145 case Moose::NeighborElement:
146 jac -=
_cond[_qp] * _phi[_j][_qp] * _test_neighbor[_i][_qp];
151 if (
_hp[_qp] != 0.0 &&
_hm[_qp] != 0.0)
155 case Moose::ElementElement:
156 jac +=
_hp[_qp] * _phi[_j][_qp] * _test[_i][_qp];
159 case Moose::NeighborNeighbor:
160 jac +=
_hm[_qp] * _phi_neighbor[_j][_qp] * _test_neighbor[_i][_qp];
163 case Moose::NeighborElement:
164 case Moose::ElementNeighbor:
173 case Moose::ElementElement:
174 jac += 4.0 *
_eps_p[_qp] * (_u[_qp] * _u[_qp] * _u[_qp]) * _phi[_j][_qp] * _test[_i][_qp];
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];
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];
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];