LCOV - code coverage report
Current view: top level - src/scmclosures - SCMHTCGnielinski.C (source / functions) Hit Total Coverage
Test: idaholab/moose subchannel: #32971 (54bef8) with base c6cf66 Lines: 14 16 87.5 %
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 "SCMHTCGnielinski.h"
      11             : #include "SCMFrictionClosureBase.h"
      12             : 
      13             : registerMooseObject("SubChannelApp", SCMHTCGnielinski);
      14             : 
      15             : InputParameters
      16         226 : SCMHTCGnielinski::validParams()
      17             : {
      18         226 :   InputParameters params = SCMHTCClosureBase::validParams();
      19         226 :   params.addClassDescription(
      20             :       "Class that computes the convective heat transfer coefficient using the "
      21             :       "Gnielinski correlation.");
      22         226 :   return params;
      23           0 : }
      24             : 
      25         122 : SCMHTCGnielinski::SCMHTCGnielinski(const InputParameters & parameters)
      26         122 :   : SCMHTCClosureBase(parameters)
      27             : {
      28         122 : }
      29             : 
      30             : Real
      31      401355 : SCMHTCGnielinski::computeNusseltNumber(const FrictionStruct & friction_args,
      32             :                                        const NusseltStruct & nusselt_args) const
      33             : {
      34      401355 :   const auto pre = computeNusseltNumberPreInfo(nusselt_args);
      35             : 
      36      401355 :   if (pre.Pr < 1e-5 || pre.Pr > 2e3)
      37           0 :     flagSolutionWarning("Prandtl number (Pr) out of range for the Gnielinski correlation.");
      38             : 
      39      401355 :   Real f_turb = _scm_problem.getFrictionClosure()->computeFrictionFactor(friction_args) / 8.0;
      40             : 
      41             :   /// Pr -> Pr + 0.01. We start flattening out the Nusselt profile in the correlation,
      42             :   /// which is what we should see in practice, i.e., for very low Pr numbers the heat exchange
      43             :   /// will be dominated by conduction and Nu profile should be flat.
      44      401355 :   const auto NuT = f_turb * (pre.Re - 1e3) * (pre.Pr + 0.01) /
      45      401355 :                    (1 + 12.7 * std::sqrt(f_turb) * (std::pow(pre.Pr + 0.01, 2. / 3.) - 1.));
      46      401355 :   return blendTurbulentNusseltNumber(pre, NuT);
      47             : }

Generated by: LCOV version 1.14