https://mooseframework.inl.gov
HeatStructureCylindrical.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 
12 registerMooseObject("ThermalHydraulicsApp", HeatStructureCylindrical);
13 
16 {
18 
19  params.addRequiredParam<std::vector<std::string>>("names", "Name of each radial region");
20  params.addRequiredParam<std::vector<Real>>("widths", "Width of each radial region [m]");
21  params.addRequiredParam<std::vector<unsigned int>>("n_part_elems",
22  "Number of elements of each radial region");
23  params.addParam<std::vector<UserObjectName>>(
24  "solid_properties", "Solid properties object name for each radial region");
25  params.addParam<std::vector<Real>>(
26  "solid_properties_T_ref",
27  {},
28  "Density reference temperatures for each radial region. This is required if "
29  "'solid_properties' is provided. The density in each region will be a constant value "
30  "computed by evaluating the density function at the reference temperature.");
31  params.addParam<Real>("num_rods", 1.0, "Number of rods represented by this heat structure");
32  params.addParam<Real>("inner_radius", 0., "Inner radius of the heat structure [m]");
33 
34  params.addClassDescription("Cylindrical heat structure");
35 
36  return params;
37 }
38 
41 {
42  _names = getParam<std::vector<std::string>>("names");
43  _n_regions = _names.size();
44  for (unsigned int i = 0; i < _names.size(); i++)
45  _name_index[_names[i]] = i;
46 
47  _width = getParam<std::vector<Real>>("widths");
48  _total_width = std::accumulate(_width.begin(), _width.end(), 0.0);
49 
50  _n_part_elems = getParam<std::vector<unsigned int>>("n_part_elems");
51  for (unsigned int i = 0; i < _n_part_elems.size(); i++)
53 
54  _num_rods = getParam<Real>("num_rods");
55 
56  _inner_radius = getParam<Real>("inner_radius");
57 
58  if (_width.size() == _n_regions)
59  {
60  std::vector<Real> r(_n_regions + 1, _inner_radius);
61  for (unsigned int i = 0; i < _n_regions; i++)
62  {
63  r[i + 1] = r[i] + _width[i];
64  _volume.push_back(_num_rods * M_PI * (r[i + 1] * r[i + 1] - r[i] * r[i]) * _length);
65  }
66  }
67 }
68 
69 void
71 {
73 
74  checkEqualSize<std::string, unsigned int>("names", "n_part_elems");
75  checkEqualSize<std::string, Real>("names", "widths");
76  if (isParamValid("solid_properties"))
77  {
78  checkEqualSize<UserObjectName, std::string>("solid_properties", "names");
79  checkEqualSize<UserObjectName, Real>("solid_properties", "solid_properties_T_ref");
80  }
81 }
std::vector< Real > _volume
Volume of each transverse region.
Definition: Component2D.h:165
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
Real _inner_radius
Inner radius of the heat structure.
Real _num_rods
The number of rods represented by this heat structure.
static InputParameters validParams()
void addRequiredParam(const std::string &name, const std::string &doc_string)
virtual void check() const override
Check the component integrity.
Real _total_width
Total width of all transverse regions.
Definition: Component2D.h:163
unsigned int _total_elem_number
Total number of transverse elements.
Definition: Component2D.h:169
unsigned int _n_regions
Number of transverse regions.
Definition: Component2D.h:157
Base class for cylindrical heat structure components.
std::vector< std::string > _names
Names of each transverse region.
Definition: Component2D.h:159
std::vector< unsigned int > _n_part_elems
Number of elements in each transverse region.
Definition: Component2D.h:167
registerMooseObject("ThermalHydraulicsApp", HeatStructureCylindrical)
Component to model cylindrical heat structure.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::vector< Real > _width
Width of each transverse region.
Definition: Component2D.h:161
virtual void check() const override
Check the component integrity.
void addClassDescription(const std::string &doc_string)
HeatStructureCylindrical(const InputParameters &params)
bool isParamValid(const std::string &name) const
std::map< std::string, unsigned int > _name_index
Map from block name to block index.