https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
17template <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");
30 "Computes wall heat transfer coefficient using Dittus-Boelter equation");
31 return params;
32}
33
34template <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 using std::pow;
50
51 const Real n =
52 (MetaPhysicL::raw_value(_T(r, t)) < MetaPhysicL::raw_value(_T_wall(r, t))) ? 0.4 : 0.3;
53 const auto Re = _reynolds(r, t);
54 if (const auto raw_Re = MetaPhysicL::raw_value(Re); raw_Re < 1e4 || raw_Re > 1.2e5)
55 flagSolutionWarning(
56 "Reynolds number out of the range of validity of the Dittus-Boelter correlation");
57 const auto Pr = _prandtl(r, t);
58 if (const auto raw_Pr = MetaPhysicL::raw_value(Pr); raw_Pr < 0.7 || raw_Pr > 160)
59 flagSolutionWarning(
60 "Prandtl number out of the range of validity of the Dittus-Boelter correlation");
61 const auto Nu = 0.023 * pow(Re, 0.8) * pow(Pr, n);
62 return NS::wallHeatTransferCoefficient(Nu, _k(r, t), _D_h(r, t));
63 });
64}
65
registerMooseObject("NavierStokesApp", DittusBoelterFunctorMaterial)
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
const double Re
Moose::GenericType< Real, is_ad > GenericReal
Computes wall heat transfer coefficient using Dittus-Boelter equation.
DittusBoelterFunctorMaterialTempl(const InputParameters &parameters)
const Moose::Functor< GenericReal< is_ad > > & _k
Thermal conductivity.
const Moose::Functor< GenericReal< is_ad > > & _T_wall
Wall temperature.
const Moose::Functor< GenericReal< is_ad > > & _D_h
Hydraulic diameter.
const Moose::Functor< GenericReal< is_ad > > & _T
Fluid temperature.
const Moose::Functor< GenericReal< is_ad > > & _prandtl
The Prandtl number.
const Moose::Functor< GenericReal< is_ad > > & _reynolds
The Reynolds number.
static InputParameters validParams()
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
auto raw_value(const Eigen::Map< T > &in)
static const std::string T_fluid
Definition NS.h:110
auto wallHeatTransferCoefficient(const T1 &Nu, const T2 &k, const T3 &D_h)
Compute wall heat transfer coefficient.
static const std::string Prandtl
Definition NS.h:141
static const std::string Reynolds
Definition NS.h:143