36 #ifndef NEKTAR_LIBUTILITIES_EQUATION_HPP
37 #define NEKTAR_LIBUTILITIES_EQUATION_HPP
48 #include <boost/algorithm/string/trim.hpp>
52 namespace LibUtilities
70 boost::algorithm::trim(
m_expr);
79 catch (
const std::runtime_error& e)
82 std::string
msg(std::string(
"Equation::Equation() fails on expression [") +
m_expr + std::string(
"]\n"));
87 catch (
const std::string& e)
90 std::string
msg(std::string(
"Equation::Equation() fails on expression [") +
m_expr + std::string(
"]\n"));
111 catch (
const std::runtime_error& e)
113 std::string
msg(std::string(
"Equation::Evaluate fails on expression [") +
m_expr + std::string(
"]\n"));
114 ASSERTL0(
false, msg + std::string(
"ERROR: ") + e.what());
116 catch (
const std::string& e)
118 std::string
msg(std::string(
"Equation::Evaluate fails on expression [") +
m_expr + std::string(
"]\n"));
119 ASSERTL0(
false, msg + std::string(
"ERROR: ") + e);
133 catch (
const std::runtime_error& e)
135 std::string
msg(std::string(
"Equation::Evaluate fails on expression [") +
m_expr + std::string(
"]\n"));
136 ASSERTL0(
false, msg + std::string(
"ERROR: ") + e.what());
138 catch (
const std::string& e)
140 std::string
msg(std::string(
"Equation::Evaluate fails on expression [") +
m_expr + std::string(
"]\n"));
141 ASSERTL0(
false, msg + std::string(
"ERROR: ") + e);
182 catch (
const std::runtime_error& e)
184 std::string
msg(std::string(
"Equation::Evaluate fails on expression [") +
m_expr + std::string(
"]\n"));
185 ASSERTL0(
false, msg + std::string(
"ERROR: ") + e.what());
188 catch (
const std::string& e)
190 std::string
msg(std::string(
"Equation::Evaluate fails on expression [") +
m_expr + std::string(
"]\n"));
191 ASSERTL0(
false, msg + std::string(
"ERROR: ") + e);
226 #endif //NEKTAR_LIBUTILITIES_EQUATION_HPP
NekDouble GetTime() const
Returns the total time spent in evaluation procedures, seconds.
void AddConstants(std::map< std::string, NekDouble > const &constants)
Constants are evaluated and inserted into the function at the time it is parsed when calling the Defi...
#define ASSERTL0(condition, msg)
void SetParameter(std::string const &name, NekDouble value)
This function behaves in the same way as SetParameters, but it only adds one parameter and it does no...
std::string GetExpression(void) const
void SetParameter(const std::string &name, NekDouble value)
NekDouble Evaluate(const int AnalyticExpression_id)
Evaluation method for expressions depending on parameters only.
Equation & operator=(const Equation &src)
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
NekDouble GetTime() const
Returns time spend on expression evaluation at points (it does not include parse/pre-processing time)...
#define LIB_UTILITIES_EXPORT
NekDouble Evaluate(NekDouble x, NekDouble y=0, NekDouble z=0, NekDouble t=0) const
void Evaluate(const Array< OneD, const NekDouble > &x, const Array< OneD, const NekDouble > &y, const Array< OneD, const NekDouble > &z, Array< OneD, NekDouble > &result)
NekDouble Evaluate() const
string msg
print "Adding",units.name, hash(units), units.description(), print "(was",id(_u),"now",id(units),")" Ensure referenced units exist
This class defines evaluator of analytic (symbolic) mathematical expressions. Expressions are allowed...
Equation(const SessionReaderSharedPtr &session, const std::string &expr="")
int DefineFunction(const std::string &vlist, const std::string &function)
This function allows one to define a function to evaluate. The first argument (vlist) is a list of va...
Equation(const Equation &src)
AnalyticExpressionEvaluator & m_evaluator
void Evaluate(const Array< OneD, const NekDouble > &x, const Array< OneD, const NekDouble > &y, const Array< OneD, const NekDouble > &z, const NekDouble t, Array< OneD, NekDouble > &result) const
void Evaluate(const Array< OneD, const NekDouble > &x, const Array< OneD, const NekDouble > &y, const Array< OneD, const NekDouble > &z, const Array< OneD, const NekDouble > &t, Array< OneD, NekDouble > &result) const
void SetConstants(const std::map< std::string, NekDouble > &constants)