LCOV - code coverage report
Current view: top level - src/functions - PiecewiseMulticonstant.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 2bf808 Lines: 21 28 75.0 %
Date: 2025-07-17 01:28:37 Functions: 3 7 42.9 %
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 "PiecewiseMulticonstant.h"
      11             : #include "GriddedData.h"
      12             : 
      13             : registerMooseObject("MooseApp", PiecewiseMulticonstant);
      14             : registerMooseObjectAliased("MooseApp", PiecewiseMulticonstant, "PiecewiseMultiConstant");
      15             : 
      16             : InputParameters
      17       28555 : PiecewiseMulticonstant::validParams()
      18             : {
      19       28555 :   InputParameters params = PiecewiseMultiInterpolation::validParams();
      20             : 
      21       28555 :   MultiMooseEnum direction("left=0 right=1");
      22       28555 :   params.addParam<MultiMooseEnum>(
      23             :       "direction", direction, "Direction to look to find value for each interpolation dimension.");
      24             : 
      25       28555 :   params.addClassDescription(
      26             :       "PiecewiseMulticonstant performs constant interpolation on 1D, 2D, 3D or 4D "
      27             :       "data.  The data_file specifies the axes directions and the function "
      28             :       "values.  If a point lies outside the data range, the appropriate end "
      29             :       "value is used.");
      30       57110 :   return params;
      31       28555 : }
      32             : 
      33          13 : PiecewiseMulticonstant::PiecewiseMulticonstant(const InputParameters & parameters)
      34          13 :   : PiecewiseMultiInterpolation(parameters), _direction(getParam<MultiMooseEnum>("direction"))
      35             : {
      36          13 :   if (_direction.size() != _dim)
      37           0 :     mooseError("Parameter direction must have a size identical to ", _dim);
      38          13 : }
      39             : 
      40             : ADReal
      41           0 : PiecewiseMulticonstant::value(const ADReal & t, const ADPoint & p) const
      42             : {
      43             :   // piecewise constant derivatives are zero everywhere (ignore discontinuities)
      44           0 :   return value(MetaPhysicL::raw_value(t), MetaPhysicL::raw_value(p));
      45             : }
      46             : 
      47             : Real
      48        1024 : PiecewiseMulticonstant::sample(const GridPoint & pt) const
      49             : {
      50        1024 :   GridIndex left(_dim);
      51        1024 :   GridIndex right(_dim);
      52        1024 :   GridIndex arg(_dim);
      53        3072 :   for (unsigned int i = 0; i < _dim; ++i)
      54             :   {
      55        2048 :     getNeighborIndices(_grid[i], pt[i], left[i], right[i]);
      56        2048 :     if (_direction.get(i) == 0)
      57        1024 :       arg[i] = left[i];
      58             :     else
      59        1024 :       arg[i] = right[i];
      60             :   }
      61             : 
      62             :   // return the point
      63        2048 :   return _gridded_data->evaluateFcn(arg);
      64             : }
      65             : 
      66             : RealGradient
      67           0 : PiecewiseMulticonstant::gradient(Real, const Point &) const
      68             : {
      69           0 :   return 0.0;
      70             : }
      71             : 
      72             : Real
      73           0 : PiecewiseMulticonstant::timeDerivative(Real, const Point &) const
      74             : {
      75           0 :   return 0.0;
      76             : }

Generated by: LCOV version 1.14