https://mooseframework.inl.gov
HSBoundaryExternalAppConvection.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 
12 #include "HeatConductionModel.h"
13 
15 
18 {
20 
21  params.addParam<VariableName>("T_ext", "T_ext", "Temperature from external application");
22  params.addParam<VariableName>(
23  "htc_ext", "htc_ext", "Heat transfer coefficient from external application");
24  params.addDeprecatedParam<PostprocessorName>(
25  "scale_pp",
26  "Post-processor by which to scale boundary condition",
27  "The 'scale' parameter is replacing the 'scale_pp' parameter. 'scale' is a function "
28  "parameter instead of a post-processor parameter. If you need to scale from a post-processor "
29  "value, use a PostprocessorFunction.");
30  params.addParam<FunctionName>("scale", 1.0, "Function by which to scale the boundary condition");
31  params.addParam<bool>(
32  "scale_heat_rate_pp",
33  true,
34  "If true, the scaling function is applied to the heat rate post-processor.");
35 
36  params.addClassDescription("Heat structure boundary condition to perform convective heat "
37  "transfer with an external application");
38  return params;
39 }
40 
42  : HSBoundary(params),
43 
44  _T_ext_var_name(getParam<VariableName>("T_ext")),
45  _htc_ext_var_name(getParam<VariableName>("htc_ext"))
46 {
47 }
48 
49 void
51 {
52  const HeatStructureInterface & hs = getComponent<HeatStructureInterface>("hs");
53  const std::vector<SubdomainName> & subdomain_names =
55 
57  false, _T_ext_var_name, HeatConductionModel::feType(), subdomain_names);
59  false, _htc_ext_var_name, HeatConductionModel::feType(), subdomain_names);
60 }
61 
62 void
64 {
65  const HeatStructureInterface & hs = getComponent<HeatStructureInterface>("hs");
66  const HeatStructureCylindricalBase * hs_cyl =
67  dynamic_cast<const HeatStructureCylindricalBase *>(&hs);
68  const bool is_cylindrical = hs_cyl != nullptr;
69 
70  {
71  const std::string class_name = is_cylindrical ? "ADExternalAppConvectionHeatTransferRZBC"
72  : "ADExternalAppConvectionHeatTransferBC";
73  InputParameters pars = _factory.getValidParams(class_name);
74  pars.set<NonlinearVariableName>("variable") = HeatConductionModel::TEMPERATURE;
75  pars.set<std::vector<BoundaryName>>("boundary") = _boundary;
76  pars.set<std::vector<VariableName>>("T_ext") = {_T_ext_var_name};
77  pars.set<std::vector<VariableName>>("htc_ext") = {_htc_ext_var_name};
78  if (is_cylindrical)
79  {
80  pars.set<Point>("axis_point") = hs_cyl->getPosition();
81  pars.set<RealVectorValue>("axis_dir") = hs_cyl->getDirection();
82  }
83  pars.set<FunctionName>("scale") = getParam<FunctionName>("scale");
84  if (isParamValid("scale_pp"))
85  pars.set<PostprocessorName>("scale_pp") = getParam<PostprocessorName>("scale_pp");
86 
87  getTHMProblem().addBoundaryCondition(class_name, genName(name(), "bc"), pars);
88  }
89 
90  // Create integral PP for cylindrical heat structures
91  if (is_cylindrical)
92  {
93  const std::string class_name = "HeatRateExternalAppConvectionRZ";
94  InputParameters pars = _factory.getValidParams(class_name);
95  pars.set<std::vector<BoundaryName>>("boundary") = _boundary;
96  pars.set<std::vector<VariableName>>("T") = {HeatConductionModel::TEMPERATURE};
97  pars.set<std::vector<VariableName>>("T_ext") = {_T_ext_var_name};
98  pars.set<std::vector<VariableName>>("htc_ext") = {_htc_ext_var_name};
99  pars.set<Point>("axis_point") = hs_cyl->getPosition();
100  pars.set<RealVectorValue>("axis_dir") = hs_cyl->getDirection();
101  if (getParam<bool>("scale_heat_rate_pp"))
102  pars.set<FunctionName>("scale") = getParam<FunctionName>("scale");
103  pars.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
104  getTHMProblem().addPostprocessor(class_name, genSafeName(name(), "integral"), pars);
105  }
106 }
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 addDeprecatedParam(const std::string &name, const T &value, const std::string &doc_string, const std::string &deprecation_message)
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
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
virtual void addBoundaryCondition(const std::string &bc_name, const std::string &name, InputParameters &parameters)
bool isParamValid(const std::string &name) const
virtual void addPostprocessor(const std::string &pp_name, const std::string &name, InputParameters &parameters)
void addSimVariable(bool nl, const VariableName &name, libMesh::FEType fe_type, Real scaling_factor=1.0)
Queues a variable of type MooseVariableScalar to be added to the nonlinear or aux system...
Definition: Simulation.C:271
Base class for cylindrical heat structure components.
HSBoundaryExternalAppConvection(const InputParameters &params)
const std::vector< BoundaryName > & _boundary
Boundary names for which the boundary component applies.
Definition: HSBoundary.h:56
static const std::string TEMPERATURE
registerMooseObject("ThermalHydraulicsApp", HSBoundaryExternalAppConvection)
const VariableName & _T_ext_var_name
Temperature from external application.
Interface class for heat structure components.
static const libMesh::FEType & feType()
Get the FE type used for heat conduction.
static InputParameters validParams()
Definition: HSBoundary.C:15
Factory & _factory
The Factory associated with the MooseApp.
Definition: Component.h:446
const VariableName & _htc_ext_var_name
Heat transfer coefficient from external application.
const GeometricalComponent & getGeometricalComponent() const
Gets the geometrical component inheriting from this interface.
void addClassDescription(const std::string &doc_string)
virtual const std::vector< SubdomainName > & getSubdomainNames() const
Gets the subdomain names for this component.
Definition: Component.C:307
Base class for heat structure boundary components.
Definition: HSBoundary.h:18
Heat structure boundary condition to perform convective heat transfer with an external application...
const ExecFlagType EXEC_INITIAL