LCOV - code coverage report
Current view: top level - src/reporters - StochasticReporter.C (source / functions) Hit Total Coverage
Test: idaholab/moose stochastic_tools: #31653 (1b668c) with base bb0a08 Lines: 36 45 80.0 %
Date: 2025-11-03 17:07:24 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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             : // Stocastic Tools Includes
      11             : #include "StochasticReporter.h"
      12             : #include "Sampler.h"
      13             : 
      14             : registerMooseObject("StochasticToolsApp", StochasticReporter);
      15             : 
      16             : InputParameters
      17        8002 : StochasticReporter::validParams()
      18             : {
      19        8002 :   InputParameters params = GeneralReporter::validParams();
      20        8002 :   params.addClassDescription(
      21             :       "Storage container for stochastic simulation results coming from Reporters.");
      22       16004 :   MooseEnum parallel_type("DISTRIBUTED=0 ROOT=1", "DISTRIBUTED");
      23       16004 :   params.addParam<MooseEnum>(
      24             :       "parallel_type",
      25             :       parallel_type,
      26             :       "This parameter will determine how the stochastic data is gathered. It is common for "
      27             :       "outputting purposes that this parameter be set to ROOT, otherwise, many files will be "
      28             :       "produced showing the values on each processor. However, if there are lot of samples, "
      29             :       "gathering on root may be memory restrictive.");
      30        8002 :   params.set<ExecFlagEnum>("execute_on", true).addAvailableFlags(EXEC_TRANSFER);
      31        8002 :   return params;
      32        8002 : }
      33             : 
      34        3983 : StochasticReporter::StochasticReporter(const InputParameters & parameters)
      35        7966 :   : GeneralReporter(parameters), _parallel_type(getParam<MooseEnum>("parallel_type"))
      36             : {
      37        3983 : }
      38             : 
      39             : void
      40       11106 : StochasticReporter::initialize()
      41             : {
      42       45264 :   for (auto & vector : _vectors)
      43       34158 :     vector->initialize();
      44       11106 : }
      45             : 
      46             : ReporterName
      47        4625 : StochasticReporter::declareStochasticReporterClone(const Sampler & sampler,
      48             :                                                    const ReporterData & from_data,
      49             :                                                    const ReporterName & from_reporter,
      50             :                                                    std::string prefix)
      51             : {
      52        4625 :   std::string value_name = (prefix.empty() ? "" : prefix + ":") + from_reporter.getObjectName() +
      53        9250 :                            ":" + from_reporter.getValueName();
      54             : 
      55        4625 :   if (!from_data.hasReporterValue(from_reporter))
      56           0 :     mooseError("Reporter value ", from_reporter, " has not been declared.");
      57             : 
      58             :   // Single quantities
      59        4625 :   if (from_data.hasReporterValue<bool>(from_reporter))
      60           0 :     declareStochasticReporter<bool>(value_name, sampler);
      61        4625 :   else if (from_data.hasReporterValue<int>(from_reporter))
      62         190 :     declareStochasticReporter<int>(value_name, sampler);
      63        4530 :   else if (from_data.hasReporterValue<Real>(from_reporter))
      64        7938 :     declareStochasticReporter<Real>(value_name, sampler);
      65         561 :   else if (from_data.hasReporterValue<std::string>(from_reporter))
      66         156 :     declareStochasticReporter<std::string>(value_name, sampler);
      67             :   // Vector quantities
      68         483 :   else if (from_data.hasReporterValue<std::vector<bool>>(from_reporter))
      69           0 :     declareStochasticReporter<std::vector<bool>>(value_name, sampler);
      70         483 :   else if (from_data.hasReporterValue<std::vector<int>>(from_reporter))
      71           0 :     declareStochasticReporter<std::vector<int>>(value_name, sampler);
      72         483 :   else if (from_data.hasReporterValue<std::vector<Real>>(from_reporter))
      73         958 :     declareStochasticReporter<std::vector<Real>>(value_name, sampler);
      74           4 :   else if (from_data.hasReporterValue<std::vector<std::string>>(from_reporter))
      75           0 :     declareStochasticReporter<std::vector<std::string>>(value_name, sampler);
      76             :   // Vector of vector quantities
      77           4 :   else if (from_data.hasReporterValue<std::vector<std::vector<bool>>>(from_reporter))
      78           0 :     declareStochasticReporter<std::vector<std::vector<bool>>>(value_name, sampler);
      79           4 :   else if (from_data.hasReporterValue<std::vector<std::vector<int>>>(from_reporter))
      80           0 :     declareStochasticReporter<std::vector<std::vector<int>>>(value_name, sampler);
      81           4 :   else if (from_data.hasReporterValue<std::vector<std::vector<Real>>>(from_reporter))
      82           0 :     declareStochasticReporter<std::vector<std::vector<Real>>>(value_name, sampler);
      83           4 :   else if (from_data.hasReporterValue<std::vector<std::vector<std::string>>>(from_reporter))
      84           0 :     declareStochasticReporter<std::vector<std::vector<std::string>>>(value_name, sampler);
      85             :   else
      86             :     return {}; // Empty ReporterName to show that reporter value is unsupported type
      87             : 
      88        4621 :   return {name(), value_name};
      89             : }

Generated by: LCOV version 1.14