22 "Computes axial power rate (W/m) assigned to the fuel pins in a quadrilateral lattice " 25 "power",
"The postprocessor or Real to use for the total power of the subassembly [W]");
27 "filename",
"name of radial power profile .txt file (should be a single column) [UnitLess].");
28 params.
addParam<FunctionName>(
"axial_heat_rate",
30 "user provided normalized function of axial heat rate [Unitless]. " 31 "The integral over pin length should equal the heated length");
38 _power(getPostprocessorValue(
"power")),
40 _filename(getParam<
std::string>(
"filename")),
41 _axial_heat_rate(getFunction(
"axial_heat_rate"))
66 if (inFile.fail() && !inFile.eof())
70 mooseError(
name(),
" Radial profile file doesn't have correct size : ", n_pins);
98 auto fpin_power =
_power / sum;
106 for (
unsigned int iz = 1; iz < nz + 1; iz++)
109 auto z2 = z_grid[iz];
110 auto z1 = z_grid[iz - 1];
111 Point p1(0, 0, z1 - unheated_length_entry);
112 Point p2(0, 0, z2 - unheated_length_entry);
115 if (MooseUtils::absoluteFuzzyGreaterThan(z2, unheated_length_entry) &&
116 MooseUtils::absoluteFuzzyLessThan(z1, unheated_length_entry + heated_length))
119 for (
unsigned int i_pin = 0; i_pin < n_pins; i_pin++)
125 if (MooseUtils::absoluteFuzzyGreaterThan(z2, unheated_length_entry) &&
126 MooseUtils::absoluteFuzzyLessThan(z1, unheated_length_entry))
132 if (MooseUtils::absoluteFuzzyGreaterThan(z2, unheated_length_entry + heated_length) &&
133 MooseUtils::absoluteFuzzyLessThan(z1, unheated_length_entry + heated_length))
146 auto total_power = 0.0;
147 for (
unsigned int i_pin = 0; i_pin < n_pins; i_pin++)
157 _console <<
"###########################################" << std::endl;
158 _console <<
"Total power estimation by Aux kernel before correction: " << total_power <<
" [W] " 169 Point p1(0, 0, unheated_length_entry);
173 if (MooseUtils::absoluteFuzzyGreaterEqual(
p(2), unheated_length_entry) &&
174 MooseUtils::absoluteFuzzyLessEqual(
p(2), unheated_length_entry + heated_length))
Eigen::MatrixXd _pin_power_correction
The correction that will be applied to the estimated calculation [unitless].
const QuadSubChannelMesh & _quadMesh
virtual const std::vector< Real > & getZGrid() const
Get axial location of layers.
Eigen::MatrixXd _estimate_power
Matrix which will hold the total estimated power of each pin [W].
const Node *const & _current_node
static InputParameters validParams()
Creates the mesh of subchannels in a quadrilateral lattice.
Eigen::MatrixXd _ref_power
Actual pin power [W].
Eigen::MatrixXd _ref_qprime
Average linear heat rate over the whole pin [W/m].
const std::string & name() const
unsigned int _numberoflines
The number of lines associated with the radial power profile .txt file.
Sets the axial heat rate for each pin according to a radial power distribution and a user defined axi...
virtual const Real & getHeatedLength() const
Return heated length.
const T & getConstMesh(const MooseMesh &mesh)
function to cast const mesh
Eigen::MatrixXd _power_dis
Matrix that holds the relative pin power.
const PostprocessorValue & _power
The total power of the assembly.
bool pinMeshExist() const
Return if Pin Mesh exists or not.
virtual void initialSetup() override
virtual Real computeValue() override
virtual unsigned int getNumOfAxialCells() const
Return the number of axial cells.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::string _filename
The name of the radial power profile file.
void mooseError(Args &&... args) const
unsigned int getPinIndexFromPoint(const Point &p) const override
Return a pin index for a given physical point p
static InputParameters validParams()
const ConsoleStream _console
virtual Real value(Real t, const Point &p) const
processor_id_type processor_id() const
unsigned int getNumOfPins() const override
Return the number of pins.
const Function & _axial_heat_rate
virtual const Real & getHeatedLengthEntry() const
Return unheated length at entry.
registerMooseObject("SubChannelApp", SCMQuadPowerAux)
SCMQuadPowerAux(const InputParameters ¶ms)