21 "Computes axial power rate (W/m) assigned to the fuel pins in a triangular lattice " 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"))
65 if (inFile.fail() && !inFile.eof())
69 mooseError(
name(),
": Radial profile file doesn't have correct size: ", n_pins);
83 auto fpin_power =
_power / sum;
103 for (
unsigned int iz = 1; iz < nz + 1; iz++)
106 auto z2 = z_grid[iz];
107 auto z1 = z_grid[iz - 1];
108 Point p1(0, 0, z1 - unheated_length_entry);
109 Point p2(0, 0, z2 - unheated_length_entry);
112 if (MooseUtils::absoluteFuzzyGreaterThan(z2, unheated_length_entry) &&
113 MooseUtils::absoluteFuzzyLessThan(z1, unheated_length_entry + heated_length))
116 for (
unsigned int i_pin = 0; i_pin < n_pins; i_pin++)
122 if (MooseUtils::absoluteFuzzyGreaterThan(z2, unheated_length_entry) &&
123 MooseUtils::absoluteFuzzyLessThan(z1, unheated_length_entry))
129 if (MooseUtils::absoluteFuzzyGreaterThan(z2, unheated_length_entry + heated_length) &&
130 MooseUtils::absoluteFuzzyLessThan(z1, unheated_length_entry + heated_length))
142 auto total_power = 0.0;
143 for (
unsigned int i_pin = 0; i_pin < n_pins; i_pin++)
153 _console <<
"###########################################" << std::endl;
154 _console <<
"Total power estimation by IC kernel before correction: " << total_power <<
" [W] " 164 Point p1(0, 0, unheated_length_entry);
168 if (MooseUtils::absoluteFuzzyGreaterEqual(
p(2), unheated_length_entry) &&
169 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.
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 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.
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].