LCOV - code coverage report
Current view: top level - src/scmclosures - SCMHTCBorishanskii.C (source / functions) Hit Total Coverage
Test: idaholab/moose subchannel: #32971 (54bef8) with base c6cf66 Lines: 19 26 73.1 %
Date: 2026-05-29 20:40:47 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          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             : }

Generated by: LCOV version 1.14