https://mooseframework.inl.gov
HSBoundaryAmbientConvection.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 "HeatConductionModel.h"
13 
14 registerMooseObject("ThermalHydraulicsApp", HSBoundaryAmbientConvection);
15 
18 {
20 
21  params.addRequiredParam<MooseFunctorName>(
22  "htc_ambient", "Ambient Convective heat transfer coefficient functor [W/(m^2-K)]");
23  params.addRequiredParam<MooseFunctorName>("T_ambient", "Ambient temperature functor [K]");
24  params.addParam<MooseFunctorName>(
25  "scale", 1.0, "Functor by which to scale the boundary condition");
26  params.addParam<bool>(
27  "scale_heat_rate_pp",
28  true,
29  "If true, the 'scale' parameter is also applied to the heat rate post-processor.");
30 
31  params.addClassDescription("Applies a convective boundary condition to a heat structure");
32 
33  return params;
34 }
35 
37  : HSBoundary(params)
38 {
39 }
40 
41 void
43 {
44  const HeatStructureInterface & hs = getComponent<HeatStructureInterface>("hs");
45  const HeatStructureCylindricalBase * hs_cyl =
46  dynamic_cast<const HeatStructureCylindricalBase *>(&hs);
47  const bool is_cylindrical = hs_cyl != nullptr;
48 
49  {
50  const std::string class_name =
51  is_cylindrical ? "ADConvectionHeatTransferRZBC" : "ADConvectionHeatTransferBC";
52  InputParameters pars = _factory.getValidParams(class_name);
53  pars.set<NonlinearVariableName>("variable") = HeatConductionModel::TEMPERATURE;
54  pars.set<std::vector<BoundaryName>>("boundary") = _boundary;
55  pars.set<MooseFunctorName>("T_ambient") = getParam<MooseFunctorName>("T_ambient");
56  pars.set<MooseFunctorName>("htc_ambient") = getParam<MooseFunctorName>("htc_ambient");
57  if (is_cylindrical)
58  {
59  pars.set<Point>("axis_point") = hs_cyl->getPosition();
60  pars.set<RealVectorValue>("axis_dir") = hs_cyl->getDirection();
61  }
62  pars.set<MooseFunctorName>("scale") = getParam<MooseFunctorName>("scale");
63 
64  getTHMProblem().addBoundaryCondition(class_name, genName(name(), "bc"), pars);
65  }
66 
67  // Create integral PP for cylindrical heat structures
68  if (is_cylindrical)
69  {
70  const std::string class_name = "HeatRateConvectionRZ";
71  InputParameters pars = _factory.getValidParams(class_name);
72  pars.set<std::vector<BoundaryName>>("boundary") = _boundary;
73  pars.set<std::vector<VariableName>>("T") = {HeatConductionModel::TEMPERATURE};
74  pars.set<MooseFunctorName>("T_ambient") = getParam<MooseFunctorName>("T_ambient");
75  pars.set<MooseFunctorName>("htc") = getParam<MooseFunctorName>("htc_ambient");
76  pars.set<Point>("axis_point") = hs_cyl->getPosition();
77  pars.set<RealVectorValue>("axis_dir") = hs_cyl->getDirection();
78  if (getParam<bool>("scale_heat_rate_pp"))
79  pars.set<MooseFunctorName>("scale") = getParam<MooseFunctorName>("scale");
80  pars.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
81  getTHMProblem().addPostprocessor(class_name, genSafeName(name(), "integral"), pars);
82  }
83 }
virtual void addMooseObjects() override
std::string genName(const std::string &prefix, unsigned int id, const std::string &suffix="") const
Build a name from a prefix, number and possible suffix.
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
THMProblem & getTHMProblem() const
Gets the THM problem.
Definition: Component.C:135
registerMooseObject("ThermalHydraulicsApp", HSBoundaryAmbientConvection)
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
const ExecFlagType EXEC_TIMESTEP_END
std::string genSafeName(const std::string &prefix, const std::string &middle, const std::string &suffix="") const
Build a name from strings that is safe to use in input files (i.e.
virtual const std::string & name() const
void addRequiredParam(const std::string &name, const std::string &doc_string)
virtual void addBoundaryCondition(const std::string &bc_name, const std::string &name, InputParameters &parameters)
virtual void addPostprocessor(const std::string &pp_name, const std::string &name, InputParameters &parameters)
HSBoundaryAmbientConvection(const InputParameters &params)
Base class for cylindrical heat structure components.
const std::vector< BoundaryName > & _boundary
Boundary names for which the boundary component applies.
Definition: HSBoundary.h:56
static const std::string TEMPERATURE
Interface class for heat structure components.
static InputParameters validParams()
static InputParameters validParams()
Definition: HSBoundary.C:15
Factory & _factory
The Factory associated with the MooseApp.
Definition: Component.h:446
void addClassDescription(const std::string &doc_string)
Boundary condition for heat transfer between heat structure and ambient environment.
Base class for heat structure boundary components.
Definition: HSBoundary.h:18
const ExecFlagType EXEC_INITIAL