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 : #pragma once 11 : 12 : #include "KokkosFunction.h" 13 : 14 : /** 15 : * Function base which provides a piecewise approximation to a specified (x,y) point data set. 16 : * Derived classes can either directly implement the x/y data, or provide input parameter mechanisms 17 : * for such data formulation. 18 : */ 19 : class KokkosPiecewiseBase : public Moose::Kokkos::FunctionBase 20 : { 21 : public: 22 : static InputParameters validParams(); 23 : 24 : KokkosPiecewiseBase(const InputParameters & parameters); 25 : 26 8611736 : KOKKOS_FUNCTION dof_id_type functionSize() const { return _raw_x.size(); } 27 43199856 : KOKKOS_FUNCTION Real domain(const unsigned int i) const { return _raw_x[i]; } 28 8611736 : KOKKOS_FUNCTION Real range(const unsigned int i) const { return _raw_y[i]; } 29 : 30 : protected: 31 : ///@{ raw function data as read 32 : Moose::Kokkos::Array<Real> _raw_x; 33 : Moose::Kokkos::Array<Real> _raw_y; 34 : ///@} 35 : };