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 "AddKokkosFunctionAction.h" 11 : #include "FEProblem.h" 12 : 13 : registerMooseAction("MooseApp", AddKokkosFunctionAction, "add_function"); 14 : 15 : InputParameters 16 301 : AddKokkosFunctionAction::validParams() 17 : { 18 301 : InputParameters params = KokkosObjectAction::validParams(); 19 301 : params.addClassDescription("Add a Kokkos Function object to the simulation."); 20 301 : return params; 21 0 : } 22 : 23 187 : AddKokkosFunctionAction::AddKokkosFunctionAction(const InputParameters & params) 24 350 : : KokkosObjectAction(params, "Function") 25 : { 26 181 : } 27 : 28 : void 29 181 : AddKokkosFunctionAction::act() 30 : { 31 181 : FunctionParserBase<Real> fp; 32 181 : std::string vars = "x,y,z,t,NaN,pi,e"; 33 181 : if (fp.Parse(_name, vars) == -1) // -1 for success 34 0 : mooseError( 35 : "Function name '", 36 0 : _name, 37 : "' can be interpreted as a parsed function expression. This can be problematic. As an " 38 : "example you may name a function 'x' whose functional form is 'xy'. You probably wouldn't " 39 : "do this, but let's assume for the sake of argument. You might also write somewhere in a " 40 : "consumer object 'function = x'. Well, MOOSE supports direct construction of parsed " 41 : "functions from 'FunctionName' parameters, so is this consumer going to end up using the " 42 : "functional form 'x' or 'xy'? It is undefined behavior."); 43 181 : _problem->addKokkosFunction(_type, _name, _moose_object_pars); 44 181 : }