New Operator
An operator needs to implement the following things:
bc_width
for boundary handlingcouldSafeEval(e, i)
check if the operator can handle calculation ofe
ati
eval_safe(e, i)
evaluate the expressione
ati
with all checking enabledeval(e, i)
evaluate the expressione
ati
with only the critical pathprepare(e)
prepare all meta infos of expressione
. Usually include name, mesh, bc & ranges.ResultType<Op, T...>
defining the result of the operation, containing atype
type for the result full type and acore_type
forExpression<...>
wrapped core typeinternal::ExprTrait<Expression<Op, T...>>
defining all the meta infos of the intermediate expression. Should include same meta infos as anExprTrait
for a concrete field of that type