LCOV - code coverage report
Current view: top level - src/postprocessors - VectorPostprocessorReductionValue.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 2bf808 Lines: 41 42 97.6 %
Date: 2025-07-17 01:28:37 Functions: 3 3 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             : #include "VectorPostprocessorReductionValue.h"
      11             : #include "VectorPostprocessorInterface.h"
      12             : #include <limits>
      13             : 
      14             : registerMooseObject("MooseApp", VectorPostprocessorReductionValue);
      15             : 
      16             : InputParameters
      17       14361 : VectorPostprocessorReductionValue::validParams()
      18             : {
      19       14361 :   InputParameters params = GeneralPostprocessor::validParams();
      20             : 
      21       14361 :   params.addRequiredParam<VectorPostprocessorName>(
      22             :       "vectorpostprocessor", "The vectorpostprocessor from which a value is extracted");
      23       14361 :   params.addRequiredParam<std::string>("vector_name",
      24             :                                        "Name of the vector for which to report a value");
      25       43083 :   params.addParam<MooseEnum>(
      26             :       "value_type",
      27       28722 :       MooseEnum("max=0 min=1 sum=2 average=3", "sum"),
      28             :       "Type of reduction operation. Options are max, min, sum, and average.");
      29       14361 :   params.addClassDescription("Takes a VectorPostprocessor and performs a reduction operation on it "
      30             :                              "(max, min, sum, average) and stores as postprocessor.");
      31             : 
      32       14361 :   return params;
      33           0 : }
      34             : 
      35          48 : VectorPostprocessorReductionValue::VectorPostprocessorReductionValue(
      36          48 :     const InputParameters & parameters)
      37             :   : GeneralPostprocessor(parameters),
      38          48 :     _vpp_name(getParam<VectorPostprocessorName>("vectorpostprocessor")),
      39          48 :     _vector_name(getParam<std::string>("vector_name")),
      40          48 :     _vpp_values(getVectorPostprocessorValue("vectorpostprocessor", _vector_name)),
      41          96 :     _value_type(getParam<MooseEnum>("value_type"))
      42             : 
      43             : {
      44          48 : }
      45             : 
      46             : Real
      47          88 : VectorPostprocessorReductionValue::getValue() const
      48             : {
      49          88 :   Real r = 0;
      50          88 :   switch (_value_type)
      51             :   {
      52          22 :     case 0:
      53          22 :       r = std::numeric_limits<Real>::lowest();
      54         110 :       for (auto & e : _vpp_values)
      55          88 :         if (e > r)
      56          88 :           r = e;
      57          22 :       break;
      58             : 
      59          22 :     case 1:
      60          22 :       r = std::numeric_limits<Real>::max();
      61         110 :       for (auto & e : _vpp_values)
      62          88 :         if (e < r)
      63          22 :           r = e;
      64          22 :       break;
      65             : 
      66          22 :     case 2:
      67          22 :       r = 0;
      68         110 :       for (auto & e : _vpp_values)
      69          88 :         r += e;
      70          22 :       break;
      71             : 
      72          22 :     case 3:
      73          22 :       r = 0;
      74         110 :       for (auto & e : _vpp_values)
      75          88 :         r += e / _vpp_values.size();
      76          22 :       return r;
      77             :   }
      78          66 :   return r;
      79             : }

Generated by: LCOV version 1.14