Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Namespaces | Enumerations | Functions
Panzer_ExprEval.hpp File Reference

Declares the panzer::Expr::Eval templated class. More...

#include <functional>
#include <map>
#include <type_traits>
#include <Teuchos_Reader.hpp>
#include <Kokkos_Core.hpp>
Include dependency graph for Panzer_ExprEval.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  panzer::Expr::EvalBase
 Base class for panzer::Expr::Eval, does everything that is independent of the Kokkos::View template parameter. More...
 
struct  panzer::Expr::RebindDataType< DataType, NewScalarType >
 Rebinds a Kokkos::View data type to use a new scalar type. More...
 
struct  panzer::Expr::RebindDataType< NestedDataType *, NewScalarType >
 
struct  panzer::Expr::RebindDataType< NestedDataType[], NewScalarType >
 
struct  panzer::Expr::RebindDataType< NestedDataType[N], NewScalarType >
 
struct  panzer::Expr::RebindViewType< ViewType, NewScalarType >
 Builds on RebindDataType, but acts directly on a Kokkos::View type. More...
 
struct  panzer::Expr::RebindViewType< Kokkos::View< DT, VP...>, NewScalarType >
 
class  panzer::Expr::Eval< DT, VP >
 Interprets mathematical expressions in a string and evaluates them using Kokkos::View objects as values and Kokkos::parallel_for for the operators. This class is mean to support Kokkos-parallel execution of user-provided mathematical expressions. Example uses include evaluating analytic boundary and initial conditions for a PDE problem. The API of this class (namely Eval::read_string or another read_* function inherited from Teuchos::Reader) is only meant to be called once for a given set of evaluation points. Variables should be predefined with point-dependent values all stored in a single Kokkos::View. For example, X coordinates for all points could be stored in a Kokkos::View<double*>, whose extent is the number of points. Values which are the same for all points are still supported, for example the current time. Then if the expression is for example "x^t", this class launches a single parallel_for to raise the coordinate of all points at once to the "t" power. More...
 

Namespaces

 panzer
 Computes $ Ma(x)b(x)\cdots\int s(x)\nabla\phi(x)\,dx $.
 
 panzer::Expr
 Contains all symbols which support panzer::Expr::Eval.
 

Enumerations

enum  panzer::Expr::BinaryOpCode {
  panzer::Expr::BinaryOpCode::OR, panzer::Expr::BinaryOpCode::AND, panzer::Expr::BinaryOpCode::GT, panzer::Expr::BinaryOpCode::LT,
  panzer::Expr::BinaryOpCode::GEQ, panzer::Expr::BinaryOpCode::LEQ, panzer::Expr::BinaryOpCode::EQ, panzer::Expr::BinaryOpCode::ADD,
  panzer::Expr::BinaryOpCode::SUB, panzer::Expr::BinaryOpCode::MUL, panzer::Expr::BinaryOpCode::DIV, panzer::Expr::BinaryOpCode::POW
}
 Denotes the native binary operators in the Teuchos::MathExpr language. More...
 

Functions

template<typename DT , typename... VP>
void panzer::Expr::set_cmath_functions (Eval< DT, VP...> &eval)
 Add support for functions such as sqrt(), sin(), and cos() More...
 

Detailed Description

Declares the panzer::Expr::Eval templated class.

Definition in file Panzer_ExprEval.hpp.