21 "Computes axial power rate (W/m) that goes into the subchannel cells " 22 "or is assigned to the fuel pins, in a triangular lattice arrangement");
24 "power",
"The postprocessor or Real to use for the total power of the subassembly [W]");
26 "filename",
"name of radial power profile .txt file (should be a single column) [UnitLess].");
27 params.
addParam<FunctionName>(
"axial_heat_rate",
29 "user provided normalized function of axial heat rate [Unitless]. " 30 "The integral over pin length should equal the heated length");
36 _power(getPostprocessorValue(
"power")),
38 _filename(getParam<
std::string>(
"filename")),
39 _axial_heat_rate(getFunction(
"axial_heat_rate"))
62 if (inFile.fail() && !inFile.eof())
66 mooseError(
name(),
": Radial profile file doesn't have correct size: ", n_pins);
80 auto fpin_power =
_power / sum;
100 for (
unsigned int iz = 1; iz < nz + 1; iz++)
103 auto z2 = z_grid[iz];
104 auto z1 = z_grid[iz - 1];
105 Point p1(0, 0, z1 - unheated_length_entry);
106 Point p2(0, 0, z2 - unheated_length_entry);
109 if (MooseUtils::absoluteFuzzyGreaterThan(z2, unheated_length_entry) &&
110 MooseUtils::absoluteFuzzyLessThan(z1, unheated_length_entry + heated_length))
113 for (
unsigned int i_pin = 0; i_pin < n_pins; i_pin++)
119 if (MooseUtils::absoluteFuzzyGreaterThan(z2, unheated_length_entry) &&
120 MooseUtils::absoluteFuzzyLessThan(z1, unheated_length_entry))
126 if (MooseUtils::absoluteFuzzyGreaterThan(z2, unheated_length_entry + heated_length) &&
127 MooseUtils::absoluteFuzzyLessThan(z1, unheated_length_entry + heated_length))
139 auto total_power = 0.0;
140 for (
unsigned int i_pin = 0; i_pin < n_pins; i_pin++)
150 _console <<
"###########################################" << std::endl;
151 _console <<
"Total power estimation by IC kernel before correction: " << total_power <<
" [W] " 159 auto heat_rate = 0.0;
162 Point p1(0, 0, unheated_length_entry);
167 if (MooseUtils::absoluteFuzzyGreaterEqual(
p(2), unheated_length_entry) &&
168 MooseUtils::absoluteFuzzyLessEqual(
p(2), unheated_length_entry + heated_length))
unsigned int _numberoflines
The number of lines associated with the radial power profile .txt file.
registerMooseObject("SubChannelApp", SCMTriPowerIC)
virtual const std::vector< Real > & getZGrid() const
Get axial location of layers.
unsigned int getSubchannelIndexFromPoint(const Point &p) const override
Return a subchannel index for a given physical point p
Eigen::MatrixXd _ref_qprime
Average linear heat rate over the whole pin [W/m].
virtual void initialSetup() override
Eigen::MatrixXd _estimate_power
Matrix which will hold the total estimated power of each pin [W].
An abstract class for ICs for hexagonal fuel assemblies.
const std::string & name() const
Eigen::MatrixXd _pin_power_correction
The correction that will be applied to the estimated calculation [unitless].
SCMTriPowerIC(const InputParameters ¶ms)
virtual const Real & getHeatedLength() const
Return heated length.
const std::vector< unsigned int > & getChannelPins(unsigned int i_chan) const override
Return a vector of pin indices for a given channel index.
const PostprocessorValue & _power
The total power of the assembly.
bool pinMeshExist() const
Return if Pin Mesh exists or not.
unsigned int getPinIndexFromPoint(const Point &p) const override
Return a pin index for a given physical point p
const Function & _axial_heat_rate
Real value(const Point &p) override
virtual unsigned int getNumOfAxialCells() const
Return the number of axial cells.
Eigen::MatrixXd _power_dis
matrix that holds the values of the relative pin power
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const TriSubChannelMesh & _mesh
void mooseError(Args &&... args) const
static InputParameters validParams()
const ConsoleStream _console
std::string _filename
The name of the radial power profile file.
EChannelType getSubchannelType(unsigned int index) const override
Return the type of the subchannel for given subchannel index.
virtual Real value(Real t, const Point &p) const
static InputParameters validParams()
processor_id_type processor_id() const
unsigned int getNumOfPins() const override
Return the number of pins.
Sets the axial heat rate for each pin according to a radial power distribution and a user defined axi...
virtual const Real & getHeatedLengthEntry() const
Return unheated length at entry.
Eigen::MatrixXd _ref_power
Actual pin power [W].