https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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.addParam<FunctionName>("scale", 1.0, "Function by which to scale the boundary condition");
25 params.addParam<bool>(
26 "scale_heat_rate_pp",
27 true,
28 "If true, the scaling function is applied to the heat rate post-processor.");
29
30 params.addClassDescription("Heat structure boundary condition to perform convective heat "
31 "transfer with an external application");
32 return params;
33}
34
36 : HSBoundary(params),
37
38 _T_ext_var_name(getParam<VariableName>("T_ext")),
39 _htc_ext_var_name(getParam<VariableName>("htc_ext"))
40{
41}
42
43void
45{
46 const HeatStructureInterface & hs = getComponent<HeatStructureInterface>("hs");
47 const std::vector<SubdomainName> & subdomain_names =
49
51 false, _T_ext_var_name, HeatConductionModel::feType(), subdomain_names);
53 false, _htc_ext_var_name, HeatConductionModel::feType(), subdomain_names);
54}
55
56void
58{
59 const HeatStructureInterface & hs = getComponent<HeatStructureInterface>("hs");
60 const HeatStructureCylindricalBase * hs_cyl =
61 dynamic_cast<const HeatStructureCylindricalBase *>(&hs);
62 const bool is_cylindrical = hs_cyl != nullptr;
63
64 {
65 const std::string class_name = is_cylindrical ? "ADExternalAppConvectionHeatTransferRZBC"
66 : "ADExternalAppConvectionHeatTransferBC";
67 InputParameters pars = _factory.getValidParams(class_name);
68 pars.set<NonlinearVariableName>("variable") = HeatConductionModel::TEMPERATURE;
69 pars.set<std::vector<BoundaryName>>("boundary") = _boundary;
70 pars.set<std::vector<VariableName>>("T_ext") = {_T_ext_var_name};
71 pars.set<std::vector<VariableName>>("htc_ext") = {_htc_ext_var_name};
72 if (is_cylindrical)
73 {
74 pars.set<Point>("axis_point") = hs_cyl->getPosition();
75 pars.set<RealVectorValue>("axis_dir") = hs_cyl->getDirection();
76 }
77 pars.set<FunctionName>("scale") = getParam<FunctionName>("scale");
78
79 getTHMProblem().addBoundaryCondition(class_name, genName(name(), "bc"), pars);
80 }
81
82 // Create integral PP for cylindrical heat structures
83 if (is_cylindrical)
84 {
85 const std::string class_name = "HeatRateExternalAppConvectionRZ";
86 InputParameters pars = _factory.getValidParams(class_name);
87 pars.set<std::vector<BoundaryName>>("boundary") = _boundary;
88 pars.set<std::vector<VariableName>>("T") = {HeatConductionModel::TEMPERATURE};
89 pars.set<std::vector<VariableName>>("T_ext") = {_T_ext_var_name};
90 pars.set<std::vector<VariableName>>("htc_ext") = {_htc_ext_var_name};
91 pars.set<Point>("axis_point") = hs_cyl->getPosition();
92 pars.set<RealVectorValue>("axis_dir") = hs_cyl->getDirection();
93 if (getParam<bool>("scale_heat_rate_pp"))
94 pars.set<FunctionName>("scale") = getParam<FunctionName>("scale");
95 pars.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
96 getTHMProblem().addPostprocessor(class_name, genSafeName(name(), "integral"), pars);
97 }
98}
registerMooseObject("ThermalHydraulicsApp", HSBoundaryExternalAppConvection)
const ExecFlagType EXEC_TIMESTEP_END
const ExecFlagType EXEC_INITIAL
const std::string name
Definition Setup.h:21
virtual const std::vector< SubdomainName > & getSubdomainNames() const
Gets the subdomain names for this component.
Definition Component.C:345
THMProblem & getTHMProblem() const
Gets the THM problem.
Definition Component.C:135
Factory & _factory
The Factory associated with the MooseApp.
Definition Component.h:497
virtual RealVectorValue getDirection() const
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)
InputParameters getValidParams(const std::string &name) const
Heat structure boundary condition to perform convective heat transfer with an external application.
HSBoundaryExternalAppConvection(const InputParameters &params)
const VariableName & _T_ext_var_name
Temperature from external application.
const VariableName & _htc_ext_var_name
Heat transfer coefficient from external application.
Base class for heat structure boundary components.
Definition HSBoundary.h:19
const std::vector< BoundaryName > & _boundary
Boundary names for which the boundary component applies.
Definition HSBoundary.h:56
static InputParameters validParams()
Definition HSBoundary.C:15
static const libMesh::FEType & feType()
Get the FE type used for heat conduction.
static const std::string TEMPERATURE
Base class for cylindrical heat structure components.
Interface class for heat structure components.
const GeometricalComponent & getGeometricalComponent() const
Gets the geometrical component inheriting from this interface.
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
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.
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.
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