LCOV - code coverage report
Current view: top level - src/userobjects - PKAGeneratorNeutronicsBase.C (source / functions) Hit Total Coverage
Test: idaholab/magpie: 5710af Lines: 0 49 0.0 %
Date: 2025-07-21 23:34:39 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /**********************************************************************/
       2             : /*                     DO NOT MODIFY THIS HEADER                      */
       3             : /* MAGPIE - Mesoscale Atomistic Glue Program for Integrated Execution */
       4             : /*                                                                    */
       5             : /*            Copyright 2017 Battelle Energy Alliance, LLC            */
       6             : /*                        ALL RIGHTS RESERVED                         */
       7             : /**********************************************************************/
       8             : 
       9             : #include "PKAGeneratorNeutronicsBase.h"
      10             : #include "MagpieUtils.h"
      11             : #include "MultiIndex.h"
      12             : #include "DiscreteFissionPKAPDF.h"
      13             : 
      14             : InputParameters
      15           0 : PKAGeneratorNeutronicsBase::validParams()
      16             : {
      17           0 :   InputParameters params = PKAGeneratorBase::validParams();
      18           0 :   params.addParam<std::vector<PostprocessorName>>(
      19             :       "partial_reaction_rates",
      20             :       "Partial neutronic reaction rates per unit volume [sum_g xs_{r,g,i} * phi_g], "
      21             :       "r: reaction type, g: energy group, i: nuclide id.Provide number density as variable in "
      22             :       "rasterizer!");
      23           0 :   params.addParam<std::vector<PostprocessorName>>(
      24             :       "averaged_number_densities", "The number density of the species averaged over the domain.");
      25           0 :   params.addClassDescription("PKA generator (neutronics) user object base class.\n Takes pdf and "
      26             :                              "samples PKAs due to various interactions.");
      27           0 :   return params;
      28           0 : }
      29             : 
      30           0 : PKAGeneratorNeutronicsBase::PKAGeneratorNeutronicsBase(const InputParameters & parameters)
      31           0 :   : PKAGeneratorBase(parameters)
      32             : {
      33           0 :   if (isParamValid("partial_reaction_rates"))
      34             :   {
      35             :     std::vector<PostprocessorName> names =
      36           0 :         getParam<std::vector<PostprocessorName>>("partial_reaction_rates");
      37           0 :     _partial_neutronics_reaction_rates.resize(names.size());
      38           0 :     _stored_reaction_rates.resize(names.size());
      39           0 :     for (unsigned int j = 0; j < names.size(); ++j)
      40           0 :       if (_fe_problem.hasPostprocessor(names[j]))
      41           0 :         _partial_neutronics_reaction_rates[j] = &getPostprocessorValueByName(names[j]);
      42             :       else
      43             :       {
      44           0 :         Real real_value = -std::numeric_limits<Real>::max();
      45           0 :         std::istringstream ss(names[j]);
      46             : 
      47           0 :         if (ss >> real_value && ss.eof())
      48           0 :           _stored_reaction_rates[j] = real_value;
      49             :         else
      50           0 :           mooseError("Illegal entry in _partial_neutronics_reaction_rates: ", names[j]);
      51             : 
      52           0 :         _partial_neutronics_reaction_rates[j] = &_stored_reaction_rates[j];
      53           0 :       }
      54           0 :   }
      55             :   else
      56             :   {
      57           0 :     _stored_reaction_rates = {1.0e-8};
      58           0 :     _partial_neutronics_reaction_rates = {&_stored_reaction_rates[0]};
      59             :   }
      60             : 
      61           0 :   if (isParamValid("averaged_number_densities"))
      62             :   {
      63             :     std::vector<PostprocessorName> names =
      64           0 :         getParam<std::vector<PostprocessorName>>("averaged_number_densities");
      65           0 :     _averaged_number_densities.resize(names.size());
      66           0 :     _stored_densities.resize(names.size());
      67           0 :     for (unsigned int j = 0; j < names.size(); ++j)
      68           0 :       if (_fe_problem.hasPostprocessor(names[j]))
      69           0 :         _averaged_number_densities[j] = &getPostprocessorValueByName(names[j]);
      70             :       else
      71             :       {
      72           0 :         Real real_value = -std::numeric_limits<Real>::max();
      73           0 :         std::istringstream ss(names[j]);
      74             : 
      75           0 :         if (ss >> real_value && ss.eof())
      76           0 :           _stored_densities[j] = real_value;
      77             :         else
      78           0 :           mooseError("Illegal entry in _partial_neutronics_reaction_rates: ", names[j]);
      79             : 
      80           0 :         _averaged_number_densities[j] = &_stored_reaction_rates[j];
      81           0 :       }
      82           0 :   }
      83             :   else
      84             :   {
      85           0 :     _averaged_number_densities.resize(_stored_reaction_rates.size());
      86           0 :     _stored_densities.resize(_stored_reaction_rates.size());
      87           0 :     for (unsigned int j = 0; j < _stored_densities.size(); ++j)
      88             :     {
      89           0 :       _stored_densities[j] = 1;
      90           0 :       _averaged_number_densities[j] = &_stored_densities[j];
      91             :     }
      92             :   }
      93             : 
      94           0 :   if (_averaged_number_densities.size() != _partial_neutronics_reaction_rates.size())
      95           0 :     mooseError("partial_reaction_rates and averaged_number_densities must have the same number of "
      96             :                "entries.");
      97           0 : }

Generated by: LCOV version 1.14