35 info.Re = nusselt_args.
Re;
36 info.Pr = nusselt_args.
Pr;
40 const bool is_duct = (nusselt_args.
i_pin == std::numeric_limits<unsigned int>::max());
47 D = (*_Dpin_soln)(pin_node);
50 "The diameter of the pin is equal or smaller than zero, "
51 "please initialize the auxiliary variable Dpin.");
66 info.ReL = 320 * std::pow(10.0, (info.poD - 1.0));
67 info.ReT = 1e4 * std::pow(10.0, 0.7 * (info.poD - 1.0));
79 auto Dh_i = 4.0 * friction_args.
S / friction_args.
w_perim;
80 const auto htc = Nu * k / Dh_i;
81 if (!std::isfinite(htc) || htc < 0.0)
82 mooseError(
name(),
": The heat transfer coefficient must be non-negative and finite.");
89 if (info.Re > info.ReL && info.Re < info.ReT)
97 const Real turbulent_nusselt)
const
99 if (info.Re <= info.ReL)
100 return info.laminar_Nu;
102 if (info.Re >= info.ReT)
103 return turbulent_nusselt;
105 const Real weight = (info.Re - info.ReL) / (info.ReT - info.ReL);
106 return weight * turbulent_nusselt + (1.0 - weight) * info.laminar_Nu;
const std::string & name() const
void mooseError(Args &&... args) const
Base class for SCM closures.
static InputParameters validParams()
const SubChannelMesh & _subchannel_mesh
Reference to the subchannel mesh.
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 computeHTC(const FrictionStruct &friction_info, const NusseltStruct &nusselt_info, const Real conduction_k) const
Computes the convective heat transfer coefficient for the local conditions.
std::unique_ptr< SolutionHandle > _Dpin_soln
Real turbulentReynoldsNumber(const NusseltPreInfo &nusselt_info) const
Reynolds number used to evaluate the turbulent endpoint for transition-region blending.
virtual Real computeNusseltNumber(const FrictionStruct &friction_info, const NusseltStruct &nusselt_info) const =0
Computes the nusselt number for the local conditions.
static InputParameters validParams()
SCMHTCClosureBase(const InputParameters ¶meters)
NusseltPreInfo computeNusseltNumberPreInfo(const NusseltStruct &nusselt_info) const
Computes all the data needed before computing the nusselt number. It's used by all closure models.
static const std::string PIN_DIAMETER
virtual const Real & getPitch() const
Return the undeformed pitch between 2 subchannels.
virtual EChannelType getSubchannelType(unsigned int index) const =0
Return the type of the subchannel for given subchannel index.
virtual const Real & getPinDiameter() const
Return undeformed Pin diameter.
virtual Node * getPinNode(unsigned int i_pin, unsigned int iz) const =0
Get the pin mesh node for a given pin index and elevation index.
virtual const MooseVariableFieldBase & getVariable(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const=0
virtual bool hasVariable(const std::string &var_name) const=0
structure that holds the needed data to calculate intermediate data needed to calculate the Nusselt n...
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...