https://mooseframework.inl.gov
GapConductance.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 
10 #include "GapConductance.h"
11 
12 // MOOSE includes
13 #include "Function.h"
14 #include "MooseMesh.h"
15 #include "MooseVariable.h"
16 #include "PenetrationLocator.h"
17 #include "SystemBase.h"
18 #include "AddVariableAction.h"
19 
20 #include "libmesh/string_to_enum.h"
21 
22 registerMooseObject("HeatTransferApp", GapConductance);
23 
26 {
29 
30  params.addRequiredCoupledVar("variable", "Temperature variable");
31 
32  // Node based
33  params.addCoupledVar("gap_distance", "Distance across the gap");
34  params.addCoupledVar("gap_temp", "Temperature on the other side of the gap");
35  params.addParam<Real>("gap_conductivity", 1.0, "The thermal conductivity of the gap material");
36  params.addParam<FunctionName>(
37  "gap_conductivity_function",
38  "Thermal conductivity of the gap material as a function. Multiplied by gap_conductivity.");
39  params.addCoupledVar("gap_conductivity_function_variable",
40  "Variable to be used in the gap_conductivity_function in place of time");
41 
42  // Quadrature based
43  params.addParam<bool>("quadrature",
44  false,
45  "Whether or not to do quadrature point based gap heat "
46  "transfer. If this is true then gap_distance and "
47  "gap_temp should NOT be provided (and will be "
48  "ignored); however, paired_boundary and variable are "
49  "then required.");
50  params.addParam<BoundaryName>("paired_boundary", "The boundary to be penetrated");
51 
52  params.addParam<Real>("stefan_boltzmann", 5.670374e-8, "The Stefan-Boltzmann constant");
53 
54  params.addParam<bool>("use_displaced_mesh",
55  true,
56  "Whether or not this object should use the "
57  "displaced mesh for computation. Note that in "
58  "the case this is true but no displacements "
59  "are provided in the Mesh block the "
60  "undisplaced mesh will still be used.");
61 
62  params.addParam<bool>(
63  "warnings", false, "Whether to output warning messages concerning nodes not being found");
64 
66  params.addParam<MooseEnum>("order", orders, "The finite element order");
67 
68  // These parameter groups match the ones in ThermalContactAction
69  params.addParamNamesToGroup("gap_distance", "Gap size");
70  params.addParamNamesToGroup("paired_boundary", "Gap surface definition");
71  params.addParamNamesToGroup("order quadrature", "Integration");
72  params.addParamNamesToGroup("warnings", "Diagnostics and debug");
73  params.addParamNamesToGroup(
74  "gap_conductivity gap_conductivity_function gap_conductivity_function_variable",
75  "Gap conductivity");
76 
77  return params;
78 }
79 
82 {
84  params.addParam<std::string>(
85  "appended_property_name", "", "Name appended to material properties to make them unique");
86  MooseEnum gap_geom_types("PLATE CYLINDER SPHERE");
87  params.addParam<MooseEnum>("gap_geometry_type", gap_geom_types, "Gap calculation type.");
88 
89  params.addParam<RealVectorValue>("cylinder_axis_point_1",
90  "Start point for line defining cylindrical axis");
91  params.addParam<RealVectorValue>("cylinder_axis_point_2",
92  "End point for line defining cylindrical axis");
93  params.addParam<RealVectorValue>("sphere_origin", "Origin for sphere geometry");
94 
95  params.addRangeCheckedParam<Real>("emissivity_primary",
96  1,
97  "emissivity_primary>=0 & emissivity_primary<=1",
98  "The emissivity of the primary surface");
99  params.addRangeCheckedParam<Real>("emissivity_secondary",
100  1,
101  "emissivity_secondary>=0 & emissivity_secondary<=1",
102  "The emissivity of the secondary surface");
103  // Common
104  params.addRangeCheckedParam<Real>(
105  "min_gap", 1e-6, "min_gap>0", "A minimum gap (denominator) size");
106  params.addRangeCheckedParam<Real>(
107  "max_gap", 1e6, "max_gap>=0", "A maximum gap (denominator) size");
108  params.addRangeCheckedParam<unsigned int>(
109  "min_gap_order", 0, "min_gap_order<=1", "Order of the Taylor expansion below min_gap");
110 
111  return params;
112 }
113 
115  : Material(parameters),
116  _appended_property_name(getParam<std::string>("appended_property_name")),
117  _temp(coupledValue("variable")),
118  _gap_geometry_type(declareRestartableData<GapConductance::GAP_GEOMETRY>("gap_geometry_type",
119  GapConductance::PLATE)),
120  _quadrature(getParam<bool>("quadrature")),
121  _gap_temp(0),
122  _gap_distance(88888),
123  _radius(0),
124  _r1(0),
125  _r2(0),
126  _has_info(false),
127  _gap_distance_value(_quadrature ? _zero : coupledValue("gap_distance")),
128  _gap_temp_value(_quadrature ? _zero : coupledValue("gap_temp")),
129  _gap_conductance(declareProperty<Real>("gap_conductance" + _appended_property_name)),
130  _gap_conductance_dT(declareProperty<Real>("gap_conductance" + _appended_property_name + "_dT")),
131  _gap_thermal_conductivity(declareProperty<Real>("gap_conductivity")),
132  _gap_conductivity(getParam<Real>("gap_conductivity")),
133  _gap_conductivity_function(isParamValid("gap_conductivity_function")
134  ? &getFunction("gap_conductivity_function")
135  : nullptr),
136  _gap_conductivity_function_variable(isCoupled("gap_conductivity_function_variable")
137  ? &coupledValue("gap_conductivity_function_variable")
138  : nullptr),
139  _stefan_boltzmann(getParam<Real>("stefan_boltzmann")),
140  _emissivity_primary(getParam<Real>("emissivity_primary")),
141  _emissivity_secondary(getParam<Real>("emissivity_secondary")),
142  _min_gap(getParam<Real>("min_gap")),
143  _min_gap_order(getParam<unsigned int>("min_gap_order")),
144  _max_gap(getParam<Real>("max_gap")),
145  _temp_var(_quadrature ? getVar("variable", 0) : nullptr),
146  _penetration_locator(nullptr),
147  _serialized_solution(_quadrature ? &_temp_var->sys().currentSolution() : nullptr),
148  _dof_map(_quadrature ? &_temp_var->sys().dofMap() : nullptr),
149  _warnings(getParam<bool>("warnings")),
150  _p1(declareRestartableData<Point>("cylinder_axis_point_1", Point(0, 1, 0))),
151  _p2(declareRestartableData<Point>("cylinder_axis_point_2", Point(0, 0, 0)))
152 {
154  ? 1.0 / _emissivity_primary + 1.0 / _emissivity_secondary - 1
155  : 0.0;
156 
157  if (_quadrature)
158  {
159  if (!parameters.isParamValid("paired_boundary"))
160  mooseError("No 'paired_boundary' provided for ", _name);
161 
163  parameters.get<BoundaryName>("paired_boundary"),
164  getParam<std::vector<BoundaryName>>("boundary")[0],
165  Utility::string_to_enum<Order>(parameters.get<MooseEnum>("order")));
166  }
167  else
168  {
169  if (!isCoupled("gap_distance"))
170  paramError("gap_distance", "needed if not using quadrature point based gap heat");
171 
172  if (!isCoupled("gap_temp"))
173  paramError("gap_temp", "needed if not using quadrature point based gap heat");
174  }
175 
176  if (_mesh.uniformRefineLevel() != 0)
177  mooseError("GapConductance does not work with uniform mesh refinement.");
178 }
179 
180 void
182 {
184  const auto & check_subdomains =
185  blockRestricted() && !blockIDs().empty() ? blockIDs() : meshBlockIDs();
186  if (check_subdomains.empty())
187  mooseError("No subdomains found");
188 
189  // make sure all subdomains are using the same coordinate system
190  Moose::CoordinateSystemType coord_system = _fe_problem.getCoordSystem(*check_subdomains.begin());
191  for (auto subdomain : check_subdomains)
192  if (_fe_problem.getCoordSystem(subdomain) != coord_system)
193  mooseError(
194  "The GapConductance model requires all subdomains to have the same coordinate system.");
195 
196  // Select proper coordinate system and geometry (plate, cylinder, spheres)
199 }
200 
201 void
203  const Moose::CoordinateSystemType coord_sys,
204  unsigned int axisymmetric_radial_coord,
205  GAP_GEOMETRY & gap_geometry_type,
206  Point & p1,
207  Point & p2)
208 {
209  if (params.isParamSetByUser("gap_geometry_type"))
210  {
211  gap_geometry_type =
212  GapConductance::GAP_GEOMETRY(int(params.get<MooseEnum>("gap_geometry_type")));
213  }
214  else
215  {
216  if (coord_sys == Moose::COORD_XYZ)
217  gap_geometry_type = GapConductance::PLATE;
218  else if (coord_sys == Moose::COORD_RZ)
219  gap_geometry_type = GapConductance::CYLINDER;
220  else if (coord_sys == Moose::COORD_RSPHERICAL)
221  gap_geometry_type = GapConductance::SPHERE;
222  }
223 
224  if (gap_geometry_type == GapConductance::PLATE)
225  {
226  if (coord_sys == Moose::COORD_RSPHERICAL)
227  ::mooseError("'gap_geometry_type = PLATE' cannot be used with models having a spherical "
228  "coordinate system.");
229  }
230  else if (gap_geometry_type == GapConductance::CYLINDER)
231  {
232  if (coord_sys == Moose::COORD_XYZ)
233  {
234  if (!params.isParamValid("cylinder_axis_point_1") ||
235  !params.isParamValid("cylinder_axis_point_2"))
236  ::mooseError("For 'gap_geometry_type = CYLINDER' to be used with a Cartesian model, "
237  "'cylinder_axis_point_1' and 'cylinder_axis_point_2' must be specified.");
238  p1 = params.get<RealVectorValue>("cylinder_axis_point_1");
239  p2 = params.get<RealVectorValue>("cylinder_axis_point_2");
240  }
241  else if (coord_sys == Moose::COORD_RZ)
242  {
243  if (params.isParamValid("cylinder_axis_point_1") ||
244  params.isParamValid("cylinder_axis_point_2"))
245  ::mooseError("The 'cylinder_axis_point_1' and 'cylinder_axis_point_2' cannot be specified "
246  "with axisymmetric models. The y-axis is used as the cylindrical axis of "
247  "symmetry.");
248 
249  if (axisymmetric_radial_coord == 0) // R-Z problem
250  {
251  p1 = Point(0, 0, 0);
252  p2 = Point(0, 1, 0);
253  }
254  else // Z-R problem
255  {
256  p1 = Point(0, 0, 0);
257  p2 = Point(1, 0, 0);
258  }
259  }
260  else if (coord_sys == Moose::COORD_RSPHERICAL)
261  ::mooseError("'gap_geometry_type = CYLINDER' cannot be used with models having a spherical "
262  "coordinate system.");
263  }
264  else if (gap_geometry_type == GapConductance::SPHERE)
265  {
266  if (coord_sys == Moose::COORD_XYZ || coord_sys == Moose::COORD_RZ)
267  {
268  if (!params.isParamValid("sphere_origin"))
269  ::mooseError("For 'gap_geometry_type = SPHERE' to be used with a Cartesian or axisymmetric "
270  "model, 'sphere_origin' must be specified.");
271  p1 = params.get<RealVectorValue>("sphere_origin");
272  }
273  else if (coord_sys == Moose::COORD_RSPHERICAL)
274  {
275  if (params.isParamValid("sphere_origin"))
276  ::mooseError("The 'sphere_origin' cannot be specified with spherical models. x=0 is used "
277  "as the spherical origin.");
278  p1 = Point(0, 0, 0);
279  }
280  }
281 }
282 
283 void
285 {
288 }
289 
290 void
292 {
293  if (_has_info)
294  {
297  }
298  else
299  {
300  _gap_conductance[_qp] = 0;
302  }
303 }
304 
305 Real
306 GapConductance::gapAttenuation(Real adjusted_length, Real min_gap, unsigned int min_gap_order)
307 {
308  mooseAssert(min_gap > 0, "min_gap must be larger than zero.");
309 
310  if (adjusted_length > min_gap)
311  return 1.0 / adjusted_length;
312  else
313  switch (min_gap_order)
314  {
315  case 0:
316  return 1.0 / min_gap;
317 
318  case 1:
319  return 1.0 / min_gap - (adjusted_length - min_gap) / (min_gap * min_gap);
320 
321  default:
322  ::mooseError("Invalid Taylor expansion order");
323  }
324 }
325 
326 Real
328 {
330  const Real adjusted_length = gapLength(_gap_geometry_type, _radius, _r1, _r2, _max_gap);
332 }
333 
334 Real
336 {
337  return 0.0;
338 }
339 
340 Real
342 {
343  /*
344  Gap conductance due to radiation is based on the diffusion approximation:
345 
346  q12 = sigma*Fe*(T1^4 - T2^4) ~ hr(T1 - T2)
347  where sigma is the Stefan-Boltzmann constant, Fe is an emissivity
348  function, T1 and T2 are the temperatures of the two surfaces, and
349  hr is the radiant gap conductance. Solving for hr,
350 
351  hr = sigma*Fe*(T1^4 - T2^4) / (T1 - T2)
352  which can be factored to give:
353 
354  hr = sigma*Fe*(T1^2 + T2^2) * (T1 + T2)
355 
356  Assuming the gap is between infinite parallel planes, the emissivity
357  function is given by:
358 
359  Fe = 1 / (1/e1 + 1/e2 - 1)
360 
361  For cylinders and spheres, see Fundamentals of Heat and Mass Transfer,
362  Sixth Edition, John Wiley & Sons, Table 13.3.
363 
364  For cylinders:
365 
366  Fe = 1 / (1/e1 + (1/e2 - 1) * (r1/r2))
367 
368  q21 = -q12 * (r1/r2)
369 
370  For spheres:
371 
372  Fe = 1 / (1/e1 + (1/e2 - 1) * (r1/r2)^2)
373 
374  q21 = -q12 * (r1/r2)^2
375  */
376 
377  if (_emissivity == 0.0)
378  return 0.0;
379 
380  // We add 'surface_integration_factor' to account for the surface integration of the conductance
381  // due to radiation.
382  Real surface_integration_factor = 1.0;
383 
385  {
386  _emissivity = 1.0 / _emissivity_primary + (1.0 / _emissivity_secondary - 1) * _r1 / _r2;
387  if (_r2 == _radius)
388  surface_integration_factor = _r1 / _r2;
389  }
391  {
392  _emissivity =
393  1.0 / _emissivity_primary + (1.0 / _emissivity_secondary - 1) * _r1 * _r1 / (_r2 * _r2);
394  if (_r2 == _radius)
395  surface_integration_factor = _r1 * _r1 / (_r2 * _r2);
396  }
397 
398  const Real temp_func =
400 
401  return _stefan_boltzmann * temp_func / _emissivity * surface_integration_factor;
402 }
403 
404 Real
406 {
407  if (_emissivity == 0.0)
408  return 0.0;
409 
410  Real surface_integration_factor = 1.0;
411 
413  {
414  _emissivity = 1.0 / _emissivity_primary + (1.0 / _emissivity_secondary - 1) * _r1 / _r2;
415  if (_r2 == _radius)
416  surface_integration_factor = _r1 / _r2;
417  }
419  {
420  _emissivity =
421  1.0 / _emissivity_primary + (1.0 / _emissivity_secondary - 1) * _r1 * _r1 / (_r2 * _r2);
422  if (_r2 == _radius)
423  surface_integration_factor = _r1 * _r1 / (_r2 * _r2);
424  }
425 
426  const Real temp_func = 3 * _temp[_qp] * _temp[_qp] + _gap_temp * (2 * _temp[_qp] + _gap_temp);
427 
428  return _stefan_boltzmann * temp_func / _emissivity * surface_integration_factor;
429 }
430 
431 Real
433  const Real radius,
434  const Real r1,
435  const Real r2,
436  const Real max_gap)
437 {
438  if (gap_geom == GapConductance::CYLINDER)
439  return gapCyl(radius, r1, r2, max_gap);
440  else if (gap_geom == GapConductance::SPHERE)
441  return gapSphere(radius, r1, r2, max_gap);
442  else
443  return gapRect(r2 - r1, max_gap);
444 }
445 
446 Real
447 GapConductance::gapRect(const Real distance, const Real max_gap)
448 {
449  return std::min(distance, max_gap);
450 }
451 
452 Real
453 GapConductance::gapCyl(const Real radius, const Real r1, const Real r2, const Real max_denom)
454 {
455  const Real denominator = radius * std::log(r2 / r1);
456  return std::min(denominator, max_denom);
457 }
458 
459 Real
460 GapConductance::gapSphere(const Real radius, const Real r1, const Real r2, const Real max_denom)
461 {
462  const Real denominator = radius * radius * ((1.0 / r1) - (1.0 / r2));
463  return std::min(denominator, max_denom);
464 }
465 
466 Real
468 {
469  Real gap_conductivity = _gap_conductivity;
470 
472  {
474  gap_conductivity *= _gap_conductivity_function->value(
476  else
477  gap_conductivity *= _gap_conductivity_function->value(_t, _q_point[_qp]);
478  }
479 
480  return gap_conductivity;
481 }
482 
483 void
485 {
486  if (!_quadrature)
487  {
488  _has_info = true;
491  }
492  else
493  {
496 
497  _gap_temp = 0.0;
498  _gap_distance = 88888;
499  _has_info = false;
500 
501  if (pinfo)
502  {
503  _gap_distance = pinfo->_distance;
504  _has_info = true;
505 
506  const Elem * secondary_side = pinfo->_side;
507  std::vector<std::vector<Real>> & secondary_side_phi = pinfo->_side_phi;
508  std::vector<dof_id_type> secondary_side_dof_indices;
509 
510  _dof_map->dof_indices(secondary_side, secondary_side_dof_indices, _temp_var->number());
511 
512  for (unsigned int i = 0; i < secondary_side_dof_indices.size(); ++i)
513  {
514  // The zero index is because we only have one point that the phis are evaluated at
515  _gap_temp +=
516  secondary_side_phi[i][0] * (*(*_serialized_solution))(secondary_side_dof_indices[i]);
517  }
518  }
519  else
520  {
521  if (_warnings)
522  mooseWarning("No gap value information found for node ",
523  qnode->id(),
524  " on processor ",
525  processor_id(),
526  " at coordinate ",
527  Point(*qnode));
528  }
529  }
530 
531  Point current_point(_q_point[_qp]);
534 }
535 
536 void
538  const Point & current_point,
539  const Point & p1,
540  const Point & p2,
541  const Real & gap_distance,
542  const Point & current_normal,
543  Real & r1,
544  Real & r2,
545  Real & radius)
546 {
547  if (gap_geometry_type == GapConductance::CYLINDER)
548  {
549  // The vector _p1 + t*(_p2-_p1) defines the cylindrical axis. The point along this
550  // axis closest to current_point is found by the following for t:
551  const Point p2p1(p2 - p1);
552  const Point p1pc(p1 - current_point);
553  const Real t = -(p1pc * p2p1) / p2p1.norm_sq();
554 
555  // The nearest point on the cylindrical axis to current_point is p.
556  const Point p(p1 + t * p2p1);
557  Point rad_vec(current_point - p);
558  Real rad = rad_vec.norm();
559  rad_vec /= rad;
560  Real rad_dot_norm = rad_vec * current_normal;
561 
562  if (rad_dot_norm > 0)
563  {
564  r1 = rad;
565  r2 = rad - gap_distance; // note, gap_distance is negative
566  radius = r1;
567  }
568  else if (rad_dot_norm < 0)
569  {
570  r1 = rad + gap_distance;
571  r2 = rad;
572  radius = r2;
573  }
574  else
575  ::mooseError("Issue with cylindrical flux calc. normals.\n");
576  }
577  else if (gap_geometry_type == GapConductance::SPHERE)
578  {
579  const Point origin_to_curr_point(current_point - p1);
580  const Real normal_dot = origin_to_curr_point * current_normal;
581  const Real curr_point_radius = origin_to_curr_point.norm();
582  if (normal_dot > 0) // on inside surface
583  {
584  r1 = curr_point_radius;
585  r2 = curr_point_radius - gap_distance; // gap_distance is negative
586  radius = r1;
587  }
588  else if (normal_dot < 0) // on outside surface
589  {
590  r1 = curr_point_radius + gap_distance; // gap_distance is negative
591  r2 = curr_point_radius;
592  radius = r2;
593  }
594  else
595  ::mooseError("Issue with spherical flux calc. normals. \n");
596  }
597  else
598  {
599  r2 = -gap_distance;
600  r1 = 0;
601  radius = 0;
602  }
603 }
const MooseArray< Point > & _q_point
const VariableValue *const _gap_conductivity_function_variable
unsigned int getAxisymmetricRadialCoord() const
virtual bool isCoupled(const std::string &var_name, unsigned int i=0) const
MaterialProperty< Real > & _gap_conductance_dT
const Real _stefan_boltzmann
FEProblemBase & _fe_problem
const Real radius
registerMooseObject("HeatTransferApp", GapConductance)
static InputParameters actionParameters()
static Real gapCyl(const Real radius, const Real r1, const Real r2, const Real max_denom)
Compute gap distance for cylinder geometry.
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
unsigned int number() const
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
SubProblem & _subproblem
static InputParameters validParams()
static void computeGapRadii(const GAP_GEOMETRY gap_geometry_type, const Point &current_point, const Point &p1, const Point &p2, const Real &gap_distance, const Point &current_normal, Real &r1, Real &r2, Real &radius)
Compute current gap radii for surface integration of gas conductance.
static Real gapLength(const GAP_GEOMETRY &gap_geom, const Real radius, const Real r1, const Real r2, const Real max_gap)
MaterialProperty< Real > & _gap_thermal_conductivity
const Real _gap_conductivity
COORD_RSPHERICAL
static Real gapAttenuation(Real adjusted_length, Real min_gap, unsigned int min_gap_order)
virtual const std::set< SubdomainID > & blockIDs() const
virtual bool blockRestricted() const
virtual Real h_radiation()
virtual Real dh_radiation()
std::vector< std::vector< Real > > _side_phi
virtual void initialSetup() override
std::map< dof_id_type, PenetrationInfo *> & _penetration_info
Real distance(const Point &p)
virtual Real h_conduction()
const VariableValue & _gap_temp_value
void mooseWarning(Args &&... args) const
InputParameters emptyInputParameters()
const unsigned int _min_gap_order
unsigned int _qp
const Real _max_gap
virtual Real dh_conduction()
static MooseEnum getNonlinearVariableOrders()
MooseMesh & _mesh
static InputParameters validParams()
static Real gapRect(const Real distance, const Real max_gap)
Compute gap distance for plate geometry.
static Real gapSphere(const Real radius, const Real r1, const Real r2, const Real max_denom)
Compute gap distance for sphere geometry.
static void setGapGeometryParameters(const InputParameters &params, const Moose::CoordinateSystemType coord_sys, unsigned int axisymmetric_radial_coord, GAP_GEOMETRY &gap_geometry_type, Point &p1, Point &p2)
Real & _t
Generic gap heat transfer model, with h_gap = h_conduction + h_contact + h_radiation.
virtual void computeGapValues()
const T & getParam(const std::string &name) const
void paramError(const std::string &param, Args... args) const
const Elem * _side
unsigned int uniformRefineLevel() const
virtual GeometricSearchData & geomSearchData()=0
const bool _warnings
const std::string _name
const VariableValue & _gap_distance_value
const Real _emissivity_primary
Node * getQuadratureNode(const Elem *elem, const unsigned short int side, const unsigned int qp)
void addCoupledVar(const std::string &name, const std::string &doc_string)
virtual void computeQpProperties() override
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
bool isParamSetByUser(const std::string &name) const
virtual void computeQpConductance()
Override this to compute the conductance at _qp.
PenetrationLocator & getQuadraturePenetrationLocator(const BoundaryName &primary, const BoundaryName &secondary, libMesh::Order order=libMesh::FIRST)
const Real _min_gap
GAP_GEOMETRY & _gap_geometry_type
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual Real gapK()
const VariableValue & _temp
CoordinateSystemType
const MooseArray< Point > & _normals
const unsigned int & _current_side
const std::set< SubdomainID > & meshBlockIDs() const
void mooseError(Args &&... args) const
const InputParameters & _pars
PenetrationLocator * _penetration_locator
const InputParameters & parameters() const
Moose::CoordinateSystemType getCoordSystem(SubdomainID sid) const
const Real _emissivity_secondary
MooseVariable * _temp_var
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)
virtual Real value(Real t, const Point &p) const
const Function *const _gap_conductivity_function
processor_id_type processor_id() const
GapConductance(const InputParameters &parameters)
void ErrorVector unsigned int
const Elem *const & _current_elem
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)
bool isParamValid(const std::string &name) const
MaterialProperty< Real > & _gap_conductance