https://mooseframework.inl.gov
HSBoundaryHeatFlux.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 
10 #include "HSBoundaryHeatFlux.h"
11 #include "HeatConductionModel.h"
12 #include "HeatStructureInterface.h"
14 
15 registerMooseObject("ThermalHydraulicsApp", HSBoundaryHeatFlux);
16 
19 {
21 
22  params.addRequiredParam<FunctionName>("q", "Heat flux [W/m^2]");
23  params.addDeprecatedParam<PostprocessorName>(
24  "scale_pp",
25  "Post-processor by which to scale boundary condition",
26  "The 'scale' parameter is replacing the 'scale_pp' parameter. 'scale' is a function "
27  "parameter instead of a post-processor parameter. If you need to scale from a post-processor "
28  "value, use a PostprocessorFunction.");
29  params.addParam<FunctionName>("scale", 1.0, "Function by which to scale the boundary condition");
30  params.addParam<bool>(
31  "scale_heat_rate_pp",
32  true,
33  "If true, the scaling function is applied to the heat rate post-processor.");
34 
35  params.addClassDescription("Applies a specified heat flux to a heat structure boundary");
36 
37  return params;
38 }
39 
41  : HSBoundary(params),
42 
43  _q_fn_name(getParam<FunctionName>("q"))
44 {
45 }
46 
47 void
49 {
50  const HeatStructureInterface & hs = getComponent<HeatStructureInterface>("hs");
51  const HeatStructureCylindricalBase * hs_cyl =
52  dynamic_cast<const HeatStructureCylindricalBase *>(&hs);
53  const bool is_cylindrical = hs_cyl != nullptr;
54 
55  {
56  const std::string class_name = is_cylindrical ? "ADHSHeatFluxRZBC" : "ADHSHeatFluxBC";
57  InputParameters pars = _factory.getValidParams(class_name);
58  pars.set<NonlinearVariableName>("variable") = HeatConductionModel::TEMPERATURE;
59  pars.set<std::vector<BoundaryName>>("boundary") = _boundary;
60  pars.set<FunctionName>("function") = _q_fn_name;
61  if (is_cylindrical)
62  {
63  pars.set<Point>("axis_point") = hs_cyl->getPosition();
64  pars.set<RealVectorValue>("axis_dir") = hs_cyl->getDirection();
65  }
66  pars.set<FunctionName>("scale") = getParam<FunctionName>("scale");
67  if (isParamValid("scale_pp"))
68  pars.set<PostprocessorName>("scale_pp") = getParam<PostprocessorName>("scale_pp");
69 
70  getTHMProblem().addBoundaryCondition(class_name, genName(name(), "bc"), pars);
71  }
72 
73  // Create integral PP for cylindrical heat structures
74  if (is_cylindrical)
75  {
76  const std::string class_name = "HeatRateHeatFluxRZ";
77  InputParameters pars = _factory.getValidParams(class_name);
78  pars.set<std::vector<BoundaryName>>("boundary") = _boundary;
79  pars.set<FunctionName>("function") = _q_fn_name;
80  pars.set<Point>("axis_point") = hs_cyl->getPosition();
81  pars.set<RealVectorValue>("axis_dir") = hs_cyl->getDirection();
82  if (getParam<bool>("scale_heat_rate_pp"))
83  pars.set<FunctionName>("scale") = getParam<FunctionName>("scale");
84  pars.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
85  getTHMProblem().addPostprocessor(class_name, genSafeName(name(), "integral"), pars);
86  }
87 }
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)
const FunctionName & _q_fn_name
Heat flux function name.
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
Applies a specified heat flux to a heat structure boundary.
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.
HSBoundaryHeatFlux(const InputParameters &params)
static InputParameters validParams()
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)
bool isParamValid(const std::string &name) const
virtual void addPostprocessor(const std::string &pp_name, const std::string &name, InputParameters &parameters)
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
registerMooseObject("ThermalHydraulicsApp", HSBoundaryHeatFlux)
Interface class for heat structure components.
virtual void addMooseObjects() override
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)
Base class for heat structure boundary components.
Definition: HSBoundary.h:18
const ExecFlagType EXEC_INITIAL