https://mooseframework.inl.gov
Loading...
Searching...
No Matches
SCMHTCDittusBoelter.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 "SCMHTCDittusBoelter.h"
11
13
16{
17 // Enumerations
18 MooseEnum factors("Presser Weisman none", "Presser");
21 "Class that computes the convective heat transfer coefficient using the "
22 "Dittus Boelter correlation.");
23 params.addParam<MooseEnum>(
24 "correction_factor",
25 factors,
26 "Correction factor modeling the effect of the fuel-pin bundle. Default is Presser");
27 return params;
28}
29
31 : SCMHTCClosureBase(parameters),
32 _is_tri_lattice(dynamic_cast<const TriSubChannelMesh *>(&_subchannel_mesh) != nullptr),
33 _correction_factor(getParam<MooseEnum>("correction_factor"))
34{
35}
36
37Real
39 const NusseltStruct & nusselt_args) const
40{
41 const auto pre = computeNusseltNumberPreInfo(nusselt_args);
42
43 if (pre.Pr < 0.7 || pre.Pr > 1.6e2)
44 flagSolutionWarning("Prandtl number (Pr) out of range for the Dittus-Boelter correlation.");
45
46 const auto corr = computeCorrectionFactor(pre.poD);
47 const Real psi = corr.psi;
48 const Real b = corr.b;
49 auto NuT = 0.023 * std::pow(turbulentReynoldsNumber(pre), 0.8) * std::pow(pre.Pr, b);
50 NuT *= psi;
51
52 return blendTurbulentNusseltNumber(pre, NuT);
53}
54
57{
58 CorrectionResult result;
59
60 switch (_correction_factor)
61 {
62 case 0: // Presser
63 {
64 result.b = 0.4;
65
67 {
68 if (poD < 1.05 || poD > 2.2)
69 flagSolutionWarning("P/D out of range for Presser correction factor (triangular).");
70
71 result.psi = 0.9090 + 0.0783 * poD - 0.1283 * std::exp(-2.4 * (poD - 1.0));
72 }
73 else
74 {
75 if (poD < 1.05 || poD > 1.9)
76 flagSolutionWarning("P/D out of range for Presser correction factor (square).");
77
78 result.psi = 0.9217 + 0.1478 * poD - 0.1130 * std::exp(-7.0 * (poD - 1.0));
79 }
80 return result;
81 }
82
83 case 1: // Weisman
84 {
85 result.b = 0.333;
86
88 {
89 if (poD < 1.1 || poD > 1.5)
90 flagSolutionWarning("P/D out of range for Weisman correction factor (triangular).");
91
92 result.psi = 1.130 * poD - 0.2609;
93 }
94 else
95 {
96 if (poD < 1.1 || poD > 1.3)
97 flagSolutionWarning("P/D out of range for Weisman correction factor (square).");
98
99 result.psi = 1.826 * poD - 1.0430;
100 }
101 return result;
102 }
103
104 case 2: // "none": no bundle correction, keep classical Dittus-Boelter exponent (b = 0.4)
105 default:
106 {
107 result.psi = 1.0;
108 result.b = 0.4;
109 return result;
110 }
111 }
112}
registerMooseObject("SubChannelApp", SCMHTCDittusBoelter)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
Base class for the convective heat transfer coefficients (HTC) closures used in SCM.
Real blendTurbulentNusseltNumber(const NusseltPreInfo &nusselt_info, const Real turbulent_nusselt) const
Blends turbulent Nusselt number through the transition range using the base laminar value.
Real turbulentReynoldsNumber(const NusseltPreInfo &nusselt_info) const
Reynolds number used to evaluate the turbulent endpoint for transition-region blending.
static InputParameters validParams()
NusseltPreInfo computeNusseltNumberPreInfo(const NusseltStruct &nusselt_info) const
Computes all the data needed before computing the nusselt number. It's used by all closure models.
Class that calculates the HTC based on the Dittus Boelter correlation It can be used for both pin and...
static InputParameters validParams()
virtual Real computeNusseltNumber(const FrictionStruct &friction_info, const NusseltStruct &nusselt_info) const override
Computes the nusselt number for the local conditions.
const MooseEnum _correction_factor
The correction factor applied to the Dittus-Boelter correlation.
CorrectionResult computeCorrectionFactor(const Real poD) const
SCMHTCDittusBoelter(const InputParameters &parameters)
bool _is_tri_lattice
Keep track of the lattice type.
Mesh class for triangular, edge and corner subchannels for hexagonal lattice fuel assemblies.
structure with the needed information to compute the friction factor at a specific subchannel cell
structure with the needed information to compute the Nusselt number at a specific subchannel cell and...