https://mooseframework.inl.gov
DittusBoelterFunctorMaterial.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 
11 #include "NavierStokesMethods.h"
12 #include "NS.h"
13 
16 
17 template <bool is_ad>
20 {
22  params.addRequiredParam<MooseFunctorName>("Hw", "Heat transfer coefficient material property");
23  params.addRequiredParam<MooseFunctorName>("D_h", "Hydraulic diameter");
24  params.addRequiredParam<MooseFunctorName>("k", "Heat conductivity of the fluid");
25  params.addRequiredParam<MooseFunctorName>(NS::T_fluid, "Fluid temperature");
26  params.addRequiredParam<MooseFunctorName>("T_wall", "Wall temperature");
27  params.addRequiredParam<MooseFunctorName>(NS::Prandtl, "The Prandtl number");
28  params.addRequiredParam<MooseFunctorName>(NS::Reynolds, "The Reynolds number");
29  params.addClassDescription(
30  "Computes wall heat transfer coefficient using Dittus-Boelter equation");
31  return params;
32 }
33 
34 template <bool is_ad>
36  const InputParameters & parameters)
37  : FunctorMaterial(parameters),
38  _D_h(getFunctor<GenericReal<is_ad>>("D_h")),
39  _k(getFunctor<GenericReal<is_ad>>("k")),
40  _T(getFunctor<GenericReal<is_ad>>(NS::T_fluid)),
41  _T_wall(getFunctor<GenericReal<is_ad>>("T_wall")),
42  _prandtl(getFunctor<GenericReal<is_ad>>(NS::Prandtl)),
43  _reynolds(getFunctor<GenericReal<is_ad>>(NS::Reynolds))
44 {
45  addFunctorProperty<GenericReal<is_ad>>(
46  "Hw",
47  [this](const auto & r, const auto & t) -> GenericReal<is_ad>
48  {
49  const Real n =
50  (MetaPhysicL::raw_value(_T(r, t)) < MetaPhysicL::raw_value(_T_wall(r, t))) ? 0.4 : 0.3;
51  const auto Re = _reynolds(r, t);
52  if (const auto raw_Re = MetaPhysicL::raw_value(Re); raw_Re < 1e4 || raw_Re > 1.2e5)
53  flagSolutionWarning(
54  "Reynolds number out of the range of validity of the Dittus-Boelter correlation");
55  const auto Pr = _prandtl(r, t);
56  if (const auto raw_Pr = MetaPhysicL::raw_value(Pr); raw_Pr < 0.7 || raw_Pr > 160)
57  flagSolutionWarning(
58  "Prandtl number out of the range of validity of the Dittus-Boelter correlation");
59  const auto Nu = 0.023 * std::pow(Re, 0.8) * std::pow(Pr, n);
60  return NS::wallHeatTransferCoefficient(Nu, _k(r, t), _D_h(r, t));
61  });
62 }
63 
Moose::GenericType< Real, is_ad > GenericReal
const Moose::Functor< GenericReal< is_ad > > & _T_wall
Wall temperature.
Computes wall heat transfer coefficient using Dittus-Boelter equation.
const Moose::Functor< GenericReal< is_ad > > & _T
Fluid temperature.
static InputParameters validParams()
const Moose::Functor< GenericReal< is_ad > > & _reynolds
The Reynolds number.
static const std::string Reynolds
Definition: NS.h:139
auto raw_value(const Eigen::Map< T > &in)
registerMooseObject("NavierStokesApp", DittusBoelterFunctorMaterial)
const Moose::Functor< GenericReal< is_ad > > & _k
Thermal conductivity.
void addRequiredParam(const std::string &name, const std::string &doc_string)
static const std::string Prandtl
Definition: NS.h:137
DittusBoelterFunctorMaterialTempl(const InputParameters &parameters)
static const std::string T_fluid
Definition: NS.h:106
auto wallHeatTransferCoefficient(const T1 &Nu, const T2 &k, const T3 &D_h)
Compute wall heat transfer coefficient.
const Moose::Functor< GenericReal< is_ad > > & _D_h
Hydraulic diameter.
const Moose::Functor< GenericReal< is_ad > > & _prandtl
The Prandtl number.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
MooseUnits pow(const MooseUnits &, int)