https://mooseframework.inl.gov
Loading...
Searching...
No Matches
FunctionParserUtils.h
Go to the documentation of this file.
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 "Moose.h"
13#include "MooseTypes.h"
14#include "ADFParser.h"
15
16#include "libmesh/fparser_ad.hh"
17
18// C++ includes
19#include <memory>
20
21#define usingFunctionParserUtilsMembers(T) \
22 using typename FunctionParserUtils<T>::SymFunction; \
23 using typename FunctionParserUtils<T>::SymFunctionPtr; \
24 using typename FunctionParserUtils<T>::FailureMethod; \
25 using FunctionParserUtils<T>::evaluate; \
26 using FunctionParserUtils<T>::functionsOptimize; \
27 using FunctionParserUtils<T>::setParserFeatureFlags; \
28 using FunctionParserUtils<T>::addFParserConstants; \
29 using FunctionParserUtils<T>::_enable_jit; \
30 using FunctionParserUtils<T>::_enable_ad_cache; \
31 using FunctionParserUtils<T>::_disable_fpoptimizer; \
32 using FunctionParserUtils<T>::_enable_auto_optimize; \
33 using FunctionParserUtils<T>::_eval_error_msg; \
34 using FunctionParserUtils<T>::_func_params
35
37template <bool is_ad>
39{
40 typedef FunctionParserADBase<Real> type;
41};
42template <>
44{
45 typedef ADFParser type;
46};
47template <bool is_ad>
49
50// Forward declartions
51class InputParameters;
52
53template <bool is_ad = false>
55{
56public:
58
60
63
65 typedef std::shared_ptr<SymFunction> SymFunctionPtr;
66
69
70protected:
72 GenericReal<is_ad> evaluate(SymFunctionPtr &, const std::string & object_name = "");
81 const std::vector<GenericReal<is_ad>> &,
82 const std::string & object_name = "");
83
86 const std::vector<std::string> & constant_names,
87 const std::vector<std::string> & constant_expressions) const;
88
90 virtual void functionsOptimize(SymFunctionPtr & parsed_function);
91
102 const std::string & expression,
103 const std::string & variables,
104 const std::vector<std::string> & constant_names,
105 const std::vector<std::string> & constant_expressions,
106 const libMesh::Parallel::Communicator & comm) const;
107
114
117
119 const Real _quiet_nan;
120
122 static const char * _eval_error_msg[];
123
125 std::vector<GenericReal<is_ad>> _func_params;
126
128 const Real _epsilon;
129};
130
131template <>
132void FunctionParserUtils<false>::functionsOptimize(SymFunctionPtr & parsed_function);
133
134template <>
typename GenericSymFunctionTempl< is_ad >::type GenericSymFunction
Moose::GenericType< Real, is_ad > GenericReal
Definition MooseTypes.h:698
FailureMethod
Enum for failure method.
std::vector< GenericReal< is_ad > > _func_params
Array to stage the parameters passed to the functions when calling Eval.
void addFParserConstants(SymFunctionPtr &parser, const std::vector< std::string > &constant_names, const std::vector< std::string > &constant_expressions) const
add constants (which can be complex expressions) to the parser object
const Real _quiet_nan
appropriate not a number value to return
std::shared_ptr< SymFunction > SymFunctionPtr
Shorthand for an smart pointer to an autodiff function parser object.
void setParserFeatureFlags(SymFunctionPtr &) const
apply input parameters to internal feature flags of the parser object
virtual void functionsOptimize(SymFunctionPtr &parsed_function)
run FPOptimizer on the parsed function
enum FunctionParserUtils::FailureMethod _evalerror_behavior
void parsedFunctionSetup(SymFunctionPtr &function, const std::string &expression, const std::string &variables, const std::vector< std::string > &constant_names, const std::vector< std::string > &constant_expressions, const libMesh::Parallel::Communicator &comm) const
Performs setup steps on a SymFunction.
GenericReal< is_ad > evaluate(SymFunctionPtr &, const std::vector< GenericReal< is_ad > > &, const std::string &object_name="")
Evaluate FParser object and check EvalError.
FunctionParserUtils(const InputParameters &parameters)
static const char * _eval_error_msg[]
table of FParser eval error codes
const Real _epsilon
fuzzy comparison tolerance
bool _enable_jit
feature flags
GenericReal< is_ad > evaluate(SymFunctionPtr &, const std::string &object_name="")
Evaluate FParser object and check EvalError.
static InputParameters validParams()
GenericSymFunction< is_ad > SymFunction
Shorthand for an autodiff function parser object.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
Helper class to pick the correct function parser.
FunctionParserADBase< Real > type