https://mooseframework.inl.gov
InletMassFlowRateTemperature1Phase.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 "FlowModelSinglePhase.h"
12 
14 
17 {
19  params.addRequiredParam<Real>("m_dot", "Prescribed mass flow rate [kg/s]");
20  params.addRequiredParam<Real>("T", "Prescribed temperature [K]");
21  params.addParam<std::vector<FunctionName>>(
22  "passives", {}, "Prescribed passive transport functions [amount/m^3]");
23  params.addParam<bool>("reversible", true, "True for reversible, false for pure inlet");
24  params.declareControllable("m_dot T");
25  params.addClassDescription("Boundary condition with prescribed mass flow rate and temperature "
26  "for 1-phase flow channels.");
27  return params;
28 }
29 
31  const InputParameters & params)
32  : FlowBoundary1Phase(params)
33 {
34 }
35 
36 void
38 {
40 
41  auto fm = dynamic_cast<const FlowModelSinglePhase *>(_flow_model.get());
42  if (fm)
43  {
44  const auto n_passives = getParam<std::vector<FunctionName>>("passives").size();
45  if (n_passives != fm->passiveTransportSolutionVariableNames().size())
46  logError("The number of entries in 'passives' must match the number of passive transport "
47  "variables provided in the connected flow channel.");
48  }
49  else
50  logError("Incompatible flow model. Make sure you use this component with single phase flow "
51  "channel.");
52 }
53 
54 void
56 {
57  ExecFlagEnum userobject_execute_on(MooseUtils::getDefaultExecFlagEnum());
58  userobject_execute_on = {EXEC_INITIAL, EXEC_LINEAR, EXEC_NONLINEAR};
59 
60  // boundary flux user object
61  {
62  const std::string class_name = "ADBoundaryFlux3EqnGhostMassFlowRateTemperature";
63  InputParameters params = _factory.getValidParams(class_name);
64  params.applyParameters(parameters());
65  params.set<Real>("mass_flow_rate") = getParam<Real>("m_dot");
66  params.set<Real>("normal") = _normal;
67  params.set<UserObjectName>("numerical_flux") = _numerical_flux_name;
68  params.set<UserObjectName>("fluid_properties") = _fp_name;
69  params.set<ExecFlagEnum>("execute_on") = userobject_execute_on;
70  getTHMProblem().addUserObject(class_name, _boundary_uo_name, params);
71  connectObject(params, _boundary_uo_name, "m_dot", "mass_flow_rate");
72  connectObject(params, _boundary_uo_name, "T");
73  }
74 
75  // BCs
76  addWeakBCs();
77 }
void connectObject(const InputParameters &obj_params, const std::string &obj_name, const std::string &param) const
Connects a controllable parameter of the component to a controllable parameter of a constituent objec...
Definition: Component.C:98
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
const InputParameters & parameters() const
T & set(const std::string &name, bool quiet_mode=false)
Real _normal
Outward normal on this boundary.
static InputParameters validParams()
InletMassFlowRateTemperature1Phase(const InputParameters &params)
InputParameters getValidParams(const std::string &name) const
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
void addRequiredParam(const std::string &name, const std::string &doc_string)
ExecFlagEnum getDefaultExecFlagEnum()
void logError(Args &&... args) const
Logs an error.
Definition: Component.h:226
virtual void check() const override
Check the component integrity.
const UserObjectName _boundary_uo_name
Name of boundary user object name.
const ExecFlagType EXEC_LINEAR
const ExecFlagType EXEC_NONLINEAR
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
UserObjectName _numerical_flux_name
Numerical flux user object name.
std::shared_ptr< const FlowModel > _flow_model
Flow model.
Definition: FlowBoundary.h:36
Factory & _factory
The Factory associated with the MooseApp.
Definition: Component.h:497
virtual std::vector< std::shared_ptr< UserObject > > addUserObject(const std::string &user_object_name, const std::string &name, InputParameters &parameters)
virtual void check() const override
Check the component integrity.
void addClassDescription(const std::string &doc_string)
Flow model for a single-component, single-phase fluid using the Euler equations.
UserObjectName _fp_name
Fluid property user object name.
Definition: FlowBoundary.h:38
virtual void addWeakBCs()
Creates the boundary condition objects for 1-phase flow.
registerMooseObject("ThermalHydraulicsApp", InletMassFlowRateTemperature1Phase)
Base class for boundary components connected to FlowChannel1Phase components.
void declareControllable(const std::string &name, std::set< ExecFlagType > execute_flags={})
Boundary condition with prescribed mass flow rate and temperature for 1-phase flow channels...
const ExecFlagType EXEC_INITIAL