Line data Source code
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 : 14 : InputParameters 15 79 : SCMHTCBorishanskii::validParams() 16 : { 17 79 : InputParameters params = SCMHTCClosureBase::validParams(); 18 79 : params.addClassDescription( 19 : "Class that computes the convective heat transfer coefficient using the " 20 : "Borishanskii correlation. Only use for fuel-pins."); 21 79 : return params; 22 0 : } 23 : 24 44 : SCMHTCBorishanskii::SCMHTCBorishanskii(const InputParameters & parameters) 25 44 : : SCMHTCClosureBase(parameters) 26 : { 27 : // Check that the correlation is not used for the duct (not supported yet) 28 44 : if (const auto * duct_uo = _scm_problem.getDuctHTCClosure(); duct_uo && duct_uo == this) 29 0 : mooseError("'Borishanskii' is not yet supported for the 'duct_htc_correlation'."); 30 44 : } 31 : 32 : Real 33 57456 : SCMHTCBorishanskii::computeNusseltNumber(const FrictionStruct & /*friction_args*/, 34 : const NusseltStruct & nusselt_args) const 35 : { 36 57456 : const auto pre = computeNusseltNumberPreInfo(nusselt_args); 37 57456 : const Real Pe = pre.Re * pre.Pr; 38 : 39 57456 : if (pre.poD < 1.1 || pre.poD > 1.5) 40 0 : flagSolutionWarning( 41 : "Pitch-over-pin diameter ratio out of range for the Borishanskii correlation."); 42 : 43 : // Base Borishanskii correlation term 44 57456 : const Real poly = -8.12 + 12.76 * pre.poD - 3.65 * Utility::pow<2>(pre.poD); 45 57456 : if (poly <= 0.0) 46 : { 47 0 : mooseError("Logarithm argument non-positive in Borishanskii correlation; " 48 : "Check Pitch-over-pin diameter ratio."); 49 : } 50 : 51 57456 : auto NuT = 24.15 * std::log(poly); 52 : // Peclet number correction term 53 57456 : const Real corr_prefactor = 0.0174 * (1.0 - std::exp(6.0 - 6.0 * pre.poD)); 54 : 55 57456 : if (Pe >= 200.0 && Pe <= 2200.0) 56 : { 57 0 : NuT += corr_prefactor * std::pow(Pe - 200.0, 0.9); 58 : } 59 57456 : else if (Pe < 200.0) 60 : { 61 : // do nothing, no extra term 62 : } 63 : else // Pe > 2200 64 : { 65 0 : flagSolutionWarning( 66 : "Peclet number (Pe) above recommended range for the Borishanskii correlation."); 67 : // Still apply the same correlation formula, but with warning 68 0 : NuT += corr_prefactor * std::pow(Pe - 200.0, 0.9); 69 : } 70 : 71 57456 : return blendTurbulentNusseltNumber(pre, NuT); 72 : }