https://mooseframework.inl.gov
SideSetHeatTransferMaterial.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 "Function.h"
13 
14 // Stefan - Boltzmann Constant
15 const Real SIGMA = 5.670374419E-8;
16 
18 
21 {
23  params.addClassDescription("This material constructs the necessary coefficients and properties "
24  "for SideSetHeatTransferKernel.");
25  params.addParam<FunctionName>("conductivity", 0.0, "Heat conductivity in W/m/K.");
26  params.addParam<FunctionName>("conductivity_temperature_function",
27  "Heat conductivity in W/m/K as a function of temperature.");
28  params.addCoupledVar(
29  "gap_temperature",
30  "Coupled Temperature of gap, used for computing temperature dependent conductivity.");
31  params.addParam<FunctionName>("gap_length", 1.0, "Total width of gap in m.");
32  params.addParam<FunctionName>("Tbulk", 300, "Bulk temperature of gap in K.");
33  params.addParam<FunctionName>(
34  "h_primary", 0.0, "Convective heat transfer coefficient (primary face) in W/m^2/K.");
35  params.addParam<FunctionName>(
36  "h_neighbor", 0.0, "Convective heat transfer coefficient (neighbor face) in W/m^2/K.");
37  params.addParam<FunctionName>("emissivity_primary", 0.0, "Primary face emissivity.");
38  params.addParam<FunctionName>("emissivity_neighbor", 0.0, "Neighbor face emissivity.");
39  params.addParam<FunctionName>("reflectivity_primary",
40  "Primary face reflectivity, uses (1-emissivity) if not provided.");
41  params.addParam<FunctionName>("reflectivity_neighbor",
42  "Neighbor face reflectivity, uses (1-emissivity) if not provided.");
43  return params;
44 }
45 
47  : InterfaceMaterial(parameters),
48  _kgap(isParamValid("conductivity_temperature_function")
49  ? getFunction("conductivity_temperature_function")
50  : getFunction("conductivity")),
51  _Tk(isCoupled("gap_temperature") ? &coupledValue("gap_temperature") : nullptr),
52  _dgap(getFunction("gap_length")),
53  _Tb(getFunction("Tbulk")),
54  _hp(getFunction("h_primary")),
55  _hm(getFunction("h_neighbor")),
56  _eps_p(getFunction("emissivity_primary")),
57  _eps_m(getFunction("emissivity_neighbor")),
58  _rho_p(isParamValid("reflectivity_primary") ? &getFunction("reflectivity_primary") : nullptr),
59  _rho_m(isParamValid("reflectivity_neighbor") ? &getFunction("reflectivity_neighbor") : nullptr),
60  _cond(declareProperty<Real>("gap_conductance")),
61  _Tbulk(declareProperty<Real>("gap_Tbulk")),
62  _h_primary(declareProperty<Real>("gap_h_primary")),
63  _h_neighbor(declareProperty<Real>("gap_h_neighbor")),
64  _emmissivity_eff_primary(declareProperty<Real>("gap_emissivity_eff_primary")),
65  _emmissivity_eff_neighbor(declareProperty<Real>("gap_emissivity_eff_neighbor")),
66  _sigma(SIGMA)
67 {
68  if ((parameters.isParamSetByUser("conductivity") ||
69  isParamValid("conductivity_temperature_function")) &&
70  !parameters.isParamSetByUser("gap_length"))
71  paramError("gap_length", "gap_length not set, but conduction term requested.");
72  if (parameters.isParamSetByUser("gap_length") &&
73  !(parameters.isParamSetByUser("conductivity") ||
74  isParamValid("conductivity_temperature_function")))
75  paramError("conductivity", "conductivity not set, but conduction term requested.");
76  if (isParamValid("conductivity_temperature_function") &&
77  parameters.isParamSetByUser("conductivity"))
78  paramError("conductivity",
79  "Cannot specify both conductivity and conductivity_temperature_function.");
80  if (isParamValid("conductivity_temperature_function") && !_Tk)
81  paramError("gap_temperature",
82  "Variable specification for temp needed if specifying a temperature dependent "
83  "conductivity.");
84 
85  if (parameters.isParamSetByUser("h_primary") && !parameters.isParamSetByUser("h_neighbor"))
86  paramError("h_neighbor", "h_neighbor not set, but convection term requested.");
87  if (parameters.isParamSetByUser("h_neighbor") && !parameters.isParamSetByUser("h_primary"))
88  paramError("h_primary", "h_primary not set, but convection term requested.");
89 
90  if (parameters.isParamSetByUser("emissivity_primary") &&
91  !parameters.isParamSetByUser("emissivity_neighbor"))
92  paramError("emissivity_neighbor", "emissivity_neighbor not set, but radiation term requested");
93  if (parameters.isParamSetByUser("emissivity_neighbor") &&
94  !parameters.isParamSetByUser("emissivity_primary"))
95  paramError("emissivity_primary", "emissivity_primary not set, but radiation term requested");
96 }
97 
98 void
100 {
101  // Conductance defined as k_{gap}/\delta
102  Real tqp = (_Tk ? (*_Tk)[_qp] : _t);
104 
105  // Convection parameters
106  _Tbulk[_qp] = _Tb.value(_t, _q_point[_qp]);
109 
110  // If reflectivity not provided, assume 1 - epsilon
111  Real rhop = (_rho_p ? (*_rho_p).value(_t, _q_point[_qp]) : 1.0 - _eps_p.value(_t, _q_point[_qp]));
112  Real rhom = (_rho_m ? (*_rho_m).value(_t, _q_point[_qp]) : 1.0 - _eps_m.value(_t, _q_point[_qp]));
113 
114  // Compute effective emissivity (primary): \frac{\sigma\epsilon^+(1-\rho^-)}{1-rho^+\rho^-}
115  _emmissivity_eff_primary[_qp] = _sigma * _eps_p.value(_t, _q_point[_qp]) * (1.0 - rhom);
116  if (_emmissivity_eff_primary[_qp] != 0.0) // Making sure we don't devide by zero
117  _emmissivity_eff_primary[_qp] /= 1.0 - rhop * rhom;
118 
119  // Compute effective emissivity (neighbor): \frac{\sigma\epsilon^-(1-\rho^+)}{1-rho^+\rho^-}
121  if (_emmissivity_eff_neighbor[_qp] != 0.0) // Making sure we don't devide by zero
122  _emmissivity_eff_neighbor[_qp] /= 1.0 - rhop * rhom;
123 }
MaterialProperty< Real > & _Tbulk
const Real _sigma
Stefan-Boltzmann constant in W/cm^2-K^4.
static InputParameters validParams()
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
static InputParameters validParams()
MaterialProperty< Real > & _h_neighbor
registerMooseObject("HeatTransferApp", SideSetHeatTransferMaterial)
const Real SIGMA
SideSetHeatTransferMaterial(const InputParameters &parameters)
const Function & _dgap
Gap width.
bool isParamValid(const std::string &name) const
unsigned int _qp
MaterialProperty< Real > & _cond
Material property handles.
MaterialProperty< Real > & _h_primary
const Function & _kgap
Material conductivity.
const Function & _Tb
Gap bulk temperature.
const MooseArray< Point > & _q_point
MaterialProperty< Real > & _emmissivity_eff_primary
void paramError(const std::string &param, Args... args) const
MaterialProperty< Real > & _emmissivity_eff_neighbor
void addCoupledVar(const std::string &name, const std::string &doc_string)
const VariableValue *const _Tk
Variable to compute conductivity.
bool isParamSetByUser(const std::string &name) const
const Function & _hp
Heat transfer coefficients.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const Function *const _rho_p
Surface reflectivities.
void addClassDescription(const std::string &doc_string)
const InputParameters & parameters() const
const Function & _eps_p
Surface emissivities.
virtual Real value(Real t, const Point &p) const
virtual void computeQpProperties() override