https://mooseframework.inl.gov
Loading...
Searching...
No Matches
HeatStructurePlate.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 "HeatStructurePlate.h"
11
12registerMooseObject("ThermalHydraulicsApp", HeatStructurePlate);
13
16{
18
19 params.addRequiredParam<std::vector<std::string>>("names", "Name of each transverse region");
20 params.addRequiredParam<std::vector<Real>>("widths", "Width of each transverse region [m]");
21 params.addRequiredParam<std::vector<unsigned int>>(
22 "n_part_elems", "Number of elements of each transverse 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.addRequiredParam<Real>("depth", "Dimension of plate fuel in the third direction [m]");
33
34 params.addClassDescription("Plate heat structure");
35
36 return params;
37}
38
40 : HeatStructureBase(params), _depth(getParam<Real>("depth"))
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 if (_width.size() == _n_regions)
57 {
58 for (unsigned int i = 0; i < _n_regions; i++)
59 _volume.push_back(_num_rods * _width[i] * _depth * _length);
60 }
61}
62
63void
65{
67
68 checkEqualSize<std::string, unsigned int>("names", "n_part_elems");
69 checkEqualSize<std::string, Real>("names", "widths");
70 if (isParamValid("solid_properties"))
71 {
72 checkEqualSize<UserObjectName, std::string>("solid_properties", "names");
73 checkEqualSize<UserObjectName, Real>("solid_properties", "solid_properties_T_ref");
74 }
75}
76
77Real
79{
80 switch (side)
81 {
84 return _depth;
85
88 return std::numeric_limits<Real>::quiet_NaN();
89 }
90
91 mooseError(name(), ": Unknown value of 'side' parameter.");
92}
93
94Real
95HeatStructurePlate::computeRadialBoundaryArea(const Real & length, const Real & /*y*/) const
96{
97 return length * _depth;
98}
99
100Real
101HeatStructurePlate::computeAxialBoundaryArea(const Real & y_min, const Real & y_max) const
102{
103 return (y_max - y_min) * _depth;
104}
registerMooseObject("ThermalHydraulicsApp", HeatStructurePlate)
const std::string name
Definition Setup.h:21
std::vector< Real > _width
Width of each transverse region.
Real _total_width
Total width of all transverse regions.
unsigned int _n_regions
Number of transverse regions.
unsigned int _total_elem_number
Total number of transverse elements.
ExternalBoundaryType
External boundary type.
Definition Component2D.h:19
std::vector< Real > _volume
Volume of each transverse region.
std::vector< std::string > _names
Names of each transverse region.
std::vector< unsigned int > _n_part_elems
Number of elements in each transverse region.
Base class for 2D generated heat structures.
static InputParameters validParams()
virtual void check() const override
Check the component integrity.
std::map< std::string, unsigned int > _name_index
Map from block name to block index.
Real _num_rods
The number of rods represented by this heat structure.
Component to model plate heat structure.
virtual void check() const override
Check the component integrity.
virtual Real computeRadialBoundaryArea(const Real &length, const Real &y) const override
Computes the area of a radial boundary.
virtual Real computeAxialBoundaryArea(const Real &y_min, const Real &y_max) const override
Computes the area of an axial boundary.
HeatStructurePlate(const InputParameters &params)
static InputParameters validParams()
virtual Real getUnitPerimeter(const ExternalBoundaryType &side) const override
Gets the perimeter of one unit of this heat structure on the specified side.
const Real & _depth
plate fuel depth
void addRequiredParam(const std::string &name, const std::string &doc_string)
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)
void mooseError(Args &&... args) const
bool isParamValid(const std::string &name) const