3#ifndef vtkDGOperatorEntry_h
4#define vtkDGOperatorEntry_h
6#include "vtkFiltersCellGridModule.h"
13VTK_ABI_NAMESPACE_BEGIN
67 const std::array<double, 3>&, std::vector<double>&,
const std::vector<int>&)>;
122 void Evaluate(
const std::array<double, 3>&
rst, std::vector<double>& values)
const
149 const std::string& functionName,
const std::string& parameterName,
int order)
const;
std::function< int(const std::vector< int > &)> FunctionCounter
The signature of functions reporting how many basis functions an arbitrary-order operator provides at...
int OperatorSize
The number of coordinates each operator-function evaluates to.
OperatorFunction Op
A function you may call to evaluate the operator.
std::string ShaderOp
A string holding the source code to evaluate all the basis functions.
bool IsOrderDependent() const
Return whether this operator implements an arbitrary polynomial order.
static int WedgeFunctionCount(const std::vector< int > &order)
A wedge: a triangle (the r- and s-axes) crossed with an edge (the t-axis), so the two counts multiply...
int NumberOfFunctions
The number of functions in the basis.
static int TensorProductFunctionCount(const std::vector< int > &order)
A tensor product with an independent order along each parametric axis: (n0 + 1)(n1 + 1)… functions,...
vtkDGOperatorEntry & operator=(const vtkDGOperatorEntry &)=default
std::vector< int > Order
The polynomial order along each parametric axis of the cell.
bool SetOrder(const std::vector< int > &order)
Bind an order-dependent operator to a concrete polynomial order.
void Evaluate(const std::array< double, 3 > &rst, std::vector< double > &values) const
Evaluate this operator at the parametric coordinates rst.
vtkDGOperatorEntry(FunctionCounter counter, int opSize, OperatorFunction op, const std::string &shader)
Construct an entry for an operator implementing an arbitrary polynomial order.
vtkDGOperatorEntry()=default
FunctionCounter FunctionCount
For order-dependent operators, computes NumberOfFunctions from an Order.
std::string GetShaderString(const std::string &functionName, const std::string ¶meterName, int order) const
Return a glsl string that defines this operator.
vtkDGOperatorEntry(const vtkDGOperatorEntry &)=default
std::function< void( const std::array< double, 3 > &, std::vector< double > &, const std::vector< int > &)> OperatorFunction
The signature of the functions that evaluate an operator.
static int SimplexFunctionCount(const std::vector< int > &order)
A simplex, whose axes share a single total degree: (n+1)(n+2)…(n+d)/d!
vtkDGOperatorEntry(int numFunc, int opSize, OperatorFunction op, const std::string &shader)
Construct an entry for an operator implementing a single polynomial order.