https://mooseframework.inl.gov
SCMHTCBorishanskii.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 "SCMHTCBorishanskii.h"
11 
12 registerMooseObject("SubChannelApp", SCMHTCBorishanskii);
13 
16 {
18  params.addClassDescription(
19  "Class that computes the convective heat transfer coefficient using the "
20  "Borishanskii correlation. Only use for fuel-pins.");
21  return params;
22 }
23 
25  : SCMHTCClosureBase(parameters)
26 {
27  // Check that the correlation is not used for the duct (not supported yet)
28  if (const auto * duct_uo = _scm_problem.getDuctHTCClosure(); duct_uo && duct_uo == this)
29  mooseError("'Borishanskii' is not yet supported for the 'duct_htc_correlation'.");
30 }
31 
32 Real
34  const NusseltStruct & nusselt_args) const
35 {
36  const auto pre = computeNusseltNumberPreInfo(nusselt_args);
37  const Real Pe = pre.Re * pre.Pr;
38 
39  if (pre.poD < 1.1 || pre.poD > 1.5)
40  flagSolutionWarning(
41  "Pitch-over-pin diameter ratio out of range for the Borishanskii correlation.");
42 
43  // Base Borishanskii correlation term
44  const Real poly = -8.12 + 12.76 * pre.poD - 3.65 * Utility::pow<2>(pre.poD);
45  if (poly <= 0.0)
46  {
47  mooseError("Logarithm argument non-positive in Borishanskii correlation; "
48  "Check Pitch-over-pin diameter ratio.");
49  }
50 
51  auto NuT = 24.15 * std::log(poly);
52  // Peclet number correction term
53  const Real corr_prefactor = 0.0174 * (1.0 - std::exp(6.0 - 6.0 * pre.poD));
54 
55  if (Pe >= 200.0 && Pe <= 2200.0)
56  {
57  NuT += corr_prefactor * std::pow(Pe - 200.0, 0.9);
58  }
59  else if (Pe < 200.0)
60  {
61  // do nothing, no extra term
62  }
63  else // Pe > 2200
64  {
65  flagSolutionWarning(
66  "Peclet number (Pe) above recommended range for the Borishanskii correlation.");
67  // Still apply the same correlation formula, but with warning
68  NuT += corr_prefactor * std::pow(Pe - 200.0, 0.9);
69  }
70 
71  return blendTurbulentNusseltNumber(pre, NuT);
72 }
R poly(const C &c, const T x, const bool derivative=false)
NusseltPreInfo computeNusseltNumberPreInfo(const NusseltStruct &nusselt_info) const
Computes all the data needed before computing the nusselt number. It&#39;s used by all closure models...
structure with the needed information to compute the friction factor at a specific subchannel cell ...
const SubChannel1PhaseProblem & _scm_problem
Reference to the subchannel problem.
static InputParameters validParams()
const SCMHTCClosureBase * getDuctHTCClosure() const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual Real computeNusseltNumber(const FrictionStruct &friction_info, const NusseltStruct &nusselt_info) const override
Computes the nusselt number for the local conditions.
void mooseError(Args &&... args) const
void addClassDescription(const std::string &doc_string)
Base class for the convective heat transfer coefficients (HTC) closures used in SCM.
static InputParameters validParams()
MooseUnits pow(const MooseUnits &, int)
Class that calculates the HTC based on the Borishanskii correlation It can be used only for fuel pins...
SCMHTCBorishanskii(const InputParameters &parameters)
Real blendTurbulentNusseltNumber(const NusseltPreInfo &nusselt_info, const Real turbulent_nusselt) const
Blends turbulent Nusselt number through the transition range using the base laminar value...
registerMooseObject("SubChannelApp", SCMHTCBorishanskii)
structure with the needed information to compute the Nusselt number at a specific subchannel cell and...