9#include <kernel/space/parametric_evaluator.hpp> 
   10#include <kernel/space/dof_mapping_common.hpp> 
   11#include <kernel/space/bernstein2/scalar_basis.hpp> 
   33        typename TrafoEvaluator_,
 
   34        typename SpaceEvalTraits_,
 
   35        typename Shape_ = 
typename Space_::ShapeType>
 
   45        typename TrafoEvaluator_,
 
   46        typename SpaceEvalTraits_>
 
   47      class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Hypercube<1> > :
 
   53            Shape::Hypercube<1> >,
 
   75        typedef typename SpaceEvalTraits::DataType 
DataType;
 
  108        template<
typename EvalData_>
 
  113          data.phi[0].ref_value = Intern::p0(point[0]);
 
  114          data.phi[1].ref_value = Intern::p1(point[0]);
 
  115          data.phi[2].ref_value = Intern::p2(point[0]);
 
  127        template<
typename EvalData_>
 
  132          data.phi[0].ref_grad[0] = Intern::d1p0(point[0]);
 
  133          data.phi[1].ref_grad[0] = Intern::d1p1(point[0]);
 
  134          data.phi[2].ref_grad[0] = Intern::d1p2(point[0]);
 
  146        template<
typename EvalData_>
 
  151          data.phi[0].ref_hess[0][0] = Intern::d2p0(point[0]);
 
  152          data.phi[1].ref_hess[0][0] = Intern::d2p1(point[0]);
 
  153          data.phi[2].ref_hess[0][0] = Intern::d2p2(point[0]);
 
  164        typename TrafoEvaluator_,
 
  165        typename SpaceEvalTraits_>
 
  166      class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Hypercube<2> > :
 
  172            Shape::Hypercube<2> >,
 
  194        typedef typename SpaceEvalTraits::DataType 
DataType;
 
  227        template<
typename EvalData_>
 
  232          using namespace Bernstein2::Intern;
 
  235          data.phi[0].ref_value = p0(point[0]) * p0(point[1]);
 
  236          data.phi[1].ref_value = p1(point[0]) * p0(point[1]);
 
  237          data.phi[2].ref_value = p0(point[0]) * p1(point[1]);
 
  238          data.phi[3].ref_value = p1(point[0]) * p1(point[1]);
 
  240          data.phi[4].ref_value = p2(point[0]) * p0(point[1]);
 
  241          data.phi[5].ref_value = p2(point[0]) * p1(point[1]);
 
  242          data.phi[6].ref_value = p0(point[0]) * p2(point[1]);
 
  243          data.phi[7].ref_value = p1(point[0]) * p2(point[1]);
 
  245          data.phi[8].ref_value = p2(point[0]) * p2(point[1]);
 
  257        template<
typename EvalData_>
 
  262          using namespace Bernstein2::Intern;
 
  265          data.phi[0].ref_grad[0] = d1p0(point[0]) * p0(point[1]);
 
  266          data.phi[0].ref_grad[1] = p0(point[0]) * d1p0(point[1]);
 
  267          data.phi[1].ref_grad[0] = d1p1(point[0]) * p0(point[1]);
 
  268          data.phi[1].ref_grad[1] = p1(point[0]) * d1p0(point[1]);
 
  269          data.phi[2].ref_grad[0] = d1p0(point[0]) * p1(point[1]);
 
  270          data.phi[2].ref_grad[1] = p0(point[0]) * d1p1(point[1]);
 
  271          data.phi[3].ref_grad[0] = d1p1(point[0]) * p1(point[1]);
 
  272          data.phi[3].ref_grad[1] = p1(point[0]) * d1p1(point[1]);
 
  274          data.phi[4].ref_grad[0] = d1p2(point[0]) * p0(point[1]);
 
  275          data.phi[4].ref_grad[1] = p2(point[0]) * d1p0(point[1]);
 
  276          data.phi[5].ref_grad[0] = d1p2(point[0]) * p1(point[1]);
 
  277          data.phi[5].ref_grad[1] = p2(point[0]) * d1p1(point[1]);
 
  278          data.phi[6].ref_grad[0] = d1p0(point[0]) * p2(point[1]);
 
  279          data.phi[6].ref_grad[1] = p0(point[0]) * d1p2(point[1]);
 
  280          data.phi[7].ref_grad[0] = d1p1(point[0]) * p2(point[1]);
 
  281          data.phi[7].ref_grad[1] = p1(point[0]) * d1p2(point[1]);
 
  283          data.phi[8].ref_grad[0] = d1p2(point[0]) * p2(point[1]);
 
  284          data.phi[8].ref_grad[1] = p2(point[0]) * d1p2(point[1]);
 
  296        template<
typename EvalData_>
 
  301          using namespace Bernstein2::Intern;
 
  304          data.phi[0].ref_hess[0][0] = d2p0(point[0]) * p0(point[1]);
 
  305          data.phi[0].ref_hess[1][1] = p0(point[0]) * d2p0(point[1]);
 
  306          data.phi[0].ref_hess[1][0] =
 
  307          data.phi[0].ref_hess[0][1] = d1p0(point[0]) * d1p0(point[1]);
 
  308          data.phi[1].ref_hess[0][0] = d2p1(point[0]) * p0(point[1]);
 
  309          data.phi[1].ref_hess[1][1] = p1(point[0]) * d2p0(point[1]);
 
  310          data.phi[1].ref_hess[1][0] =
 
  311          data.phi[1].ref_hess[0][1] = d1p1(point[0]) * d1p0(point[1]);
 
  312          data.phi[2].ref_hess[0][0] = d2p0(point[0]) * p1(point[1]);
 
  313          data.phi[2].ref_hess[1][1] = p0(point[0]) * d2p1(point[1]);
 
  314          data.phi[2].ref_hess[1][0] =
 
  315          data.phi[2].ref_hess[0][1] = d1p0(point[0]) * d1p1(point[1]);
 
  316          data.phi[3].ref_hess[0][0] = d2p1(point[0]) * p1(point[1]);
 
  317          data.phi[3].ref_hess[1][1] = p1(point[0]) * d2p1(point[1]);
 
  318          data.phi[3].ref_hess[1][0] =
 
  319          data.phi[3].ref_hess[0][1] = d1p1(point[0]) * d1p1(point[1]);
 
  321          data.phi[4].ref_hess[0][0] = d2p2(point[0]) * p0(point[1]);
 
  322          data.phi[4].ref_hess[1][1] = p2(point[0]) * d2p0(point[1]);
 
  323          data.phi[4].ref_hess[1][0] =
 
  324          data.phi[4].ref_hess[0][1] = d1p2(point[0]) * d1p0(point[1]);
 
  325          data.phi[5].ref_hess[0][0] = d2p2(point[0]) * p1(point[1]);
 
  326          data.phi[5].ref_hess[1][1] = p2(point[0]) * d2p1(point[1]);
 
  327          data.phi[5].ref_hess[1][0] =
 
  328          data.phi[5].ref_hess[0][1] = d1p2(point[0]) * d1p1(point[1]);
 
  329          data.phi[6].ref_hess[0][0] = d2p0(point[0]) * p2(point[1]);
 
  330          data.phi[6].ref_hess[1][1] = p0(point[0]) * d2p2(point[1]);
 
  331          data.phi[6].ref_hess[1][0] =
 
  332          data.phi[6].ref_hess[0][1] = d1p0(point[0]) * d1p2(point[1]);
 
  333          data.phi[7].ref_hess[0][0] = d2p1(point[0]) * p2(point[1]);
 
  334          data.phi[7].ref_hess[1][1] = p1(point[0]) * d2p2(point[1]);
 
  335          data.phi[7].ref_hess[1][0] =
 
  336          data.phi[7].ref_hess[0][1] = d1p1(point[0]) * d1p2(point[1]);
 
  338          data.phi[8].ref_hess[0][0] = d2p2(point[0]) * p2(point[1]);
 
  339          data.phi[8].ref_hess[1][1] = p2(point[0]) * d2p2(point[1]);
 
  340          data.phi[8].ref_hess[1][0] =
 
  341          data.phi[8].ref_hess[0][1] = d1p2(point[0]) * d1p2(point[1]);
 
  352        typename TrafoEvaluator_,
 
  353        typename SpaceEvalTraits_>
 
  354      class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Hypercube<3> > :
 
  360            Shape::Hypercube<3> >,
 
  382        typedef typename SpaceEvalTraits::DataType 
DataType;
 
  415        template<
typename EvalData_>
 
  420          using namespace Bernstein2::Intern;
 
  423          data.phi[0].ref_value = p0(point[0]) * p0(point[1]) * p0(point[2]);
 
  424          data.phi[1].ref_value = p1(point[0]) * p0(point[1]) * p0(point[2]);
 
  425          data.phi[2].ref_value = p0(point[0]) * p1(point[1]) * p0(point[2]);
 
  426          data.phi[3].ref_value = p1(point[0]) * p1(point[1]) * p0(point[2]);
 
  427          data.phi[4].ref_value = p0(point[0]) * p0(point[1]) * p1(point[2]);
 
  428          data.phi[5].ref_value = p1(point[0]) * p0(point[1]) * p1(point[2]);
 
  429          data.phi[6].ref_value = p0(point[0]) * p1(point[1]) * p1(point[2]);
 
  430          data.phi[7].ref_value = p1(point[0]) * p1(point[1]) * p1(point[2]);
 
  432          data.phi[ 8].ref_value = p2(point[0]) * p0(point[1]) * p0(point[2]);
 
  433          data.phi[ 9].ref_value = p2(point[0]) * p1(point[1]) * p0(point[2]);
 
  434          data.phi[10].ref_value = p2(point[0]) * p0(point[1]) * p1(point[2]);
 
  435          data.phi[11].ref_value = p2(point[0]) * p1(point[1]) * p1(point[2]);
 
  436          data.phi[12].ref_value = p0(point[0]) * p2(point[1]) * p0(point[2]);
 
  437          data.phi[13].ref_value = p1(point[0]) * p2(point[1]) * p0(point[2]);
 
  438          data.phi[14].ref_value = p0(point[0]) * p2(point[1]) * p1(point[2]);
 
  439          data.phi[15].ref_value = p1(point[0]) * p2(point[1]) * p1(point[2]);
 
  440          data.phi[16].ref_value = p0(point[0]) * p0(point[1]) * p2(point[2]);
 
  441          data.phi[17].ref_value = p1(point[0]) * p0(point[1]) * p2(point[2]);
 
  442          data.phi[18].ref_value = p0(point[0]) * p1(point[1]) * p2(point[2]);
 
  443          data.phi[19].ref_value = p1(point[0]) * p1(point[1]) * p2(point[2]);
 
  445          data.phi[20].ref_value = p2(point[0]) * p2(point[1]) * p0(point[2]);
 
  446          data.phi[21].ref_value = p2(point[0]) * p2(point[1]) * p1(point[2]);
 
  447          data.phi[22].ref_value = p2(point[0]) * p0(point[1]) * p2(point[2]);
 
  448          data.phi[23].ref_value = p2(point[0]) * p1(point[1]) * p2(point[2]);
 
  449          data.phi[24].ref_value = p0(point[0]) * p2(point[1]) * p2(point[2]);
 
  450          data.phi[25].ref_value = p1(point[0]) * p2(point[1]) * p2(point[2]);
 
  452          data.phi[26].ref_value = p2(point[0]) * p2(point[1]) * p2(point[2]);
 
  464        template<
typename EvalData_>
 
  469          using namespace Bernstein2::Intern;
 
  471          data.phi[0].ref_grad[0] = d1p0(point[0]) * p0(point[1]) * p0(point[2]);
 
  472          data.phi[0].ref_grad[1] = p0(point[0]) * d1p0(point[1]) * p0(point[2]);
 
  473          data.phi[0].ref_grad[2] = p0(point[0]) * p0(point[1]) * d1p0(point[2]);
 
  474          data.phi[1].ref_grad[0] = d1p1(point[0]) * p0(point[1]) * p0(point[2]);
 
  475          data.phi[1].ref_grad[1] = p1(point[0]) * d1p0(point[1]) * p0(point[2]);
 
  476          data.phi[1].ref_grad[2] = p1(point[0]) * p0(point[1]) * d1p0(point[2]);
 
  477          data.phi[2].ref_grad[0] = d1p0(point[0]) * p1(point[1]) * p0(point[2]);
 
  478          data.phi[2].ref_grad[1] = p0(point[0]) * d1p1(point[1]) * p0(point[2]);
 
  479          data.phi[2].ref_grad[2] = p0(point[0]) * p1(point[1]) * d1p0(point[2]);
 
  480          data.phi[3].ref_grad[0] = d1p1(point[0]) * p1(point[1]) * p0(point[2]);
 
  481          data.phi[3].ref_grad[1] = p1(point[0]) * d1p1(point[1]) * p0(point[2]);
 
  482          data.phi[3].ref_grad[2] = p1(point[0]) * p1(point[1]) * d1p0(point[2]);
 
  483          data.phi[4].ref_grad[0] = d1p0(point[0]) * p0(point[1]) * p1(point[2]);
 
  484          data.phi[4].ref_grad[1] = p0(point[0]) * d1p0(point[1]) * p1(point[2]);
 
  485          data.phi[4].ref_grad[2] = p0(point[0]) * p0(point[1]) * d1p1(point[2]);
 
  486          data.phi[5].ref_grad[0] = d1p1(point[0]) * p0(point[1]) * p1(point[2]);
 
  487          data.phi[5].ref_grad[1] = p1(point[0]) * d1p0(point[1]) * p1(point[2]);
 
  488          data.phi[5].ref_grad[2] = p1(point[0]) * p0(point[1]) * d1p1(point[2]);
 
  489          data.phi[6].ref_grad[0] = d1p0(point[0]) * p1(point[1]) * p1(point[2]);
 
  490          data.phi[6].ref_grad[1] = p0(point[0]) * d1p1(point[1]) * p1(point[2]);
 
  491          data.phi[6].ref_grad[2] = p0(point[0]) * p1(point[1]) * d1p1(point[2]);
 
  492          data.phi[7].ref_grad[0] = d1p1(point[0]) * p1(point[1]) * p1(point[2]);
 
  493          data.phi[7].ref_grad[1] = p1(point[0]) * d1p1(point[1]) * p1(point[2]);
 
  494          data.phi[7].ref_grad[2] = p1(point[0]) * p1(point[1]) * d1p1(point[2]);
 
  496          data.phi[ 8].ref_grad[0] = d1p2(point[0]) * p0(point[1]) * p0(point[2]);
 
  497          data.phi[ 8].ref_grad[1] = p2(point[0]) * d1p0(point[1]) * p0(point[2]);
 
  498          data.phi[ 8].ref_grad[2] = p2(point[0]) * p0(point[1]) * d1p0(point[2]);
 
  499          data.phi[ 9].ref_grad[0] = d1p2(point[0]) * p1(point[1]) * p0(point[2]);
 
  500          data.phi[ 9].ref_grad[1] = p2(point[0]) * d1p1(point[1]) * p0(point[2]);
 
  501          data.phi[ 9].ref_grad[2] = p2(point[0]) * p1(point[1]) * d1p0(point[2]);
 
  502          data.phi[10].ref_grad[0] = d1p2(point[0]) * p0(point[1]) * p1(point[2]);
 
  503          data.phi[10].ref_grad[1] = p2(point[0]) * d1p0(point[1]) * p1(point[2]);
 
  504          data.phi[10].ref_grad[2] = p2(point[0]) * p0(point[1]) * d1p1(point[2]);
 
  505          data.phi[11].ref_grad[0] = d1p2(point[0]) * p1(point[1]) * p1(point[2]);
 
  506          data.phi[11].ref_grad[1] = p2(point[0]) * d1p1(point[1]) * p1(point[2]);
 
  507          data.phi[11].ref_grad[2] = p2(point[0]) * p1(point[1]) * d1p1(point[2]);
 
  508          data.phi[12].ref_grad[0] = d1p0(point[0]) * p2(point[1]) * p0(point[2]);
 
  509          data.phi[12].ref_grad[1] = p0(point[0]) * d1p2(point[1]) * p0(point[2]);
 
  510          data.phi[12].ref_grad[2] = p0(point[0]) * p2(point[1]) * d1p0(point[2]);
 
  511          data.phi[13].ref_grad[0] = d1p1(point[0]) * p2(point[1]) * p0(point[2]);
 
  512          data.phi[13].ref_grad[1] = p1(point[0]) * d1p2(point[1]) * p0(point[2]);
 
  513          data.phi[13].ref_grad[2] = p1(point[0]) * p2(point[1]) * d1p0(point[2]);
 
  514          data.phi[14].ref_grad[0] = d1p0(point[0]) * p2(point[1]) * p1(point[2]);
 
  515          data.phi[14].ref_grad[1] = p0(point[0]) * d1p2(point[1]) * p1(point[2]);
 
  516          data.phi[14].ref_grad[2] = p0(point[0]) * p2(point[1]) * d1p1(point[2]);
 
  517          data.phi[15].ref_grad[0] = d1p1(point[0]) * p2(point[1]) * p1(point[2]);
 
  518          data.phi[15].ref_grad[1] = p1(point[0]) * d1p2(point[1]) * p1(point[2]);
 
  519          data.phi[15].ref_grad[2] = p1(point[0]) * p2(point[1]) * d1p1(point[2]);
 
  520          data.phi[16].ref_grad[0] = d1p0(point[0]) * p0(point[1]) * p2(point[2]);
 
  521          data.phi[16].ref_grad[1] = p0(point[0]) * d1p0(point[1]) * p2(point[2]);
 
  522          data.phi[16].ref_grad[2] = p0(point[0]) * p0(point[1]) * d1p2(point[2]);
 
  523          data.phi[17].ref_grad[0] = d1p1(point[0]) * p0(point[1]) * p2(point[2]);
 
  524          data.phi[17].ref_grad[1] = p1(point[0]) * d1p0(point[1]) * p2(point[2]);
 
  525          data.phi[17].ref_grad[2] = p1(point[0]) * p0(point[1]) * d1p2(point[2]);
 
  526          data.phi[18].ref_grad[0] = d1p0(point[0]) * p1(point[1]) * p2(point[2]);
 
  527          data.phi[18].ref_grad[1] = p0(point[0]) * d1p1(point[1]) * p2(point[2]);
 
  528          data.phi[18].ref_grad[2] = p0(point[0]) * p1(point[1]) * d1p2(point[2]);
 
  529          data.phi[19].ref_grad[0] = d1p1(point[0]) * p1(point[1]) * p2(point[2]);
 
  530          data.phi[19].ref_grad[1] = p1(point[0]) * d1p1(point[1]) * p2(point[2]);
 
  531          data.phi[19].ref_grad[2] = p1(point[0]) * p1(point[1]) * d1p2(point[2]);
 
  533          data.phi[20].ref_grad[0] = d1p2(point[0]) * p2(point[1]) * p0(point[2]);
 
  534          data.phi[20].ref_grad[1] = p2(point[0]) * d1p2(point[1]) * p0(point[2]);
 
  535          data.phi[20].ref_grad[2] = p2(point[0]) * p2(point[1]) * d1p0(point[2]);
 
  536          data.phi[21].ref_grad[0] = d1p2(point[0]) * p2(point[1]) * p1(point[2]);
 
  537          data.phi[21].ref_grad[1] = p2(point[0]) * d1p2(point[1]) * p1(point[2]);
 
  538          data.phi[21].ref_grad[2] = p2(point[0]) * p2(point[1]) * d1p1(point[2]);
 
  539          data.phi[22].ref_grad[0] = d1p2(point[0]) * p0(point[1]) * p2(point[2]);
 
  540          data.phi[22].ref_grad[1] = p2(point[0]) * d1p0(point[1]) * p2(point[2]);
 
  541          data.phi[22].ref_grad[2] = p2(point[0]) * p0(point[1]) * d1p2(point[2]);
 
  542          data.phi[23].ref_grad[0] = d1p2(point[0]) * p1(point[1]) * p2(point[2]);
 
  543          data.phi[23].ref_grad[1] = p2(point[0]) * d1p1(point[1]) * p2(point[2]);
 
  544          data.phi[23].ref_grad[2] = p2(point[0]) * p1(point[1]) * d1p2(point[2]);
 
  545          data.phi[24].ref_grad[0] = d1p0(point[0]) * p2(point[1]) * p2(point[2]);
 
  546          data.phi[24].ref_grad[1] = p0(point[0]) * d1p2(point[1]) * p2(point[2]);
 
  547          data.phi[24].ref_grad[2] = p0(point[0]) * p2(point[1]) * d1p2(point[2]);
 
  548          data.phi[25].ref_grad[0] = d1p1(point[0]) * p2(point[1]) * p2(point[2]);
 
  549          data.phi[25].ref_grad[1] = p1(point[0]) * d1p2(point[1]) * p2(point[2]);
 
  550          data.phi[25].ref_grad[2] = p1(point[0]) * p2(point[1]) * d1p2(point[2]);
 
  552          data.phi[26].ref_grad[0] = d1p2(point[0]) * p2(point[1]) * p2(point[2]);
 
  553          data.phi[26].ref_grad[1] = p2(point[0]) * d1p2(point[1]) * p2(point[2]);
 
  554          data.phi[26].ref_grad[2] = p2(point[0]) * p2(point[1]) * d1p2(point[2]);
 
  566        template<
typename EvalData_>
 
  571          using namespace Bernstein2::Intern;
 
  573          data.phi[ 0].ref_hess[0][0] = d2p0(point[0]) * p0(point[1]) * p0(point[2]);
 
  574          data.phi[ 0].ref_hess[1][1] = p0(point[0]) * d2p0(point[1]) * p0(point[2]);
 
  575          data.phi[ 0].ref_hess[2][2] = p0(point[0]) * p0(point[1]) * d2p0(point[2]);
 
  576          data.phi[ 0].ref_hess[1][0] =
 
  577          data.phi[ 0].ref_hess[0][1] = d1p0(point[0]) * d1p0(point[1]) * p0(point[2]);
 
  578          data.phi[ 0].ref_hess[2][0] =
 
  579          data.phi[ 0].ref_hess[0][2] = d1p0(point[0]) * p0(point[1]) * d1p0(point[2]);
 
  580          data.phi[ 0].ref_hess[2][1] =
 
  581          data.phi[ 0].ref_hess[1][2] = p0(point[0]) * d1p0(point[1]) * d1p0(point[2]);
 
  582          data.phi[ 1].ref_hess[0][0] = d2p1(point[0]) * p0(point[1]) * p0(point[2]);
 
  583          data.phi[ 1].ref_hess[1][1] = p1(point[0]) * d2p0(point[1]) * p0(point[2]);
 
  584          data.phi[ 1].ref_hess[2][2] = p1(point[0]) * p0(point[1]) * d2p0(point[2]);
 
  585          data.phi[ 1].ref_hess[1][0] =
 
  586          data.phi[ 1].ref_hess[0][1] = d1p1(point[0]) * d1p0(point[1]) * p0(point[2]);
 
  587          data.phi[ 1].ref_hess[2][0] =
 
  588          data.phi[ 1].ref_hess[0][2] = d1p1(point[0]) * p0(point[1]) * d1p0(point[2]);
 
  589          data.phi[ 1].ref_hess[2][1] =
 
  590          data.phi[ 1].ref_hess[1][2] = p1(point[0]) * d1p0(point[1]) * d1p0(point[2]);
 
  591          data.phi[ 2].ref_hess[0][0] = d2p0(point[0]) * p1(point[1]) * p0(point[2]);
 
  592          data.phi[ 2].ref_hess[1][1] = p0(point[0]) * d2p1(point[1]) * p0(point[2]);
 
  593          data.phi[ 2].ref_hess[2][2] = p0(point[0]) * p1(point[1]) * d2p0(point[2]);
 
  594          data.phi[ 2].ref_hess[1][0] =
 
  595          data.phi[ 2].ref_hess[0][1] = d1p0(point[0]) * d1p1(point[1]) * p0(point[2]);
 
  596          data.phi[ 2].ref_hess[2][0] =
 
  597          data.phi[ 2].ref_hess[0][2] = d1p0(point[0]) * p1(point[1]) * d1p0(point[2]);
 
  598          data.phi[ 2].ref_hess[2][1] =
 
  599          data.phi[ 2].ref_hess[1][2] = p0(point[0]) * d1p1(point[1]) * d1p0(point[2]);
 
  600          data.phi[ 3].ref_hess[0][0] = d2p1(point[0]) * p1(point[1]) * p0(point[2]);
 
  601          data.phi[ 3].ref_hess[1][1] = p1(point[0]) * d2p1(point[1]) * p0(point[2]);
 
  602          data.phi[ 3].ref_hess[2][2] = p1(point[0]) * p1(point[1]) * d2p0(point[2]);
 
  603          data.phi[ 3].ref_hess[1][0] =
 
  604          data.phi[ 3].ref_hess[0][1] = d1p1(point[0]) * d1p1(point[1]) * p0(point[2]);
 
  605          data.phi[ 3].ref_hess[2][0] =
 
  606          data.phi[ 3].ref_hess[0][2] = d1p1(point[0]) * p1(point[1]) * d1p0(point[2]);
 
  607          data.phi[ 3].ref_hess[2][1] =
 
  608          data.phi[ 3].ref_hess[1][2] = p1(point[0]) * d1p1(point[1]) * d1p0(point[2]);
 
  609          data.phi[ 4].ref_hess[0][0] = d2p0(point[0]) * p0(point[1]) * p1(point[2]);
 
  610          data.phi[ 4].ref_hess[1][1] = p0(point[0]) * d2p0(point[1]) * p1(point[2]);
 
  611          data.phi[ 4].ref_hess[2][2] = p0(point[0]) * p0(point[1]) * d2p1(point[2]);
 
  612          data.phi[ 4].ref_hess[1][0] =
 
  613          data.phi[ 4].ref_hess[0][1] = d1p0(point[0]) * d1p0(point[1]) * p1(point[2]);
 
  614          data.phi[ 4].ref_hess[2][0] =
 
  615          data.phi[ 4].ref_hess[0][2] = d1p0(point[0]) * p0(point[1]) * d1p1(point[2]);
 
  616          data.phi[ 4].ref_hess[2][1] =
 
  617          data.phi[ 4].ref_hess[1][2] = p0(point[0]) * d1p0(point[1]) * d1p1(point[2]);
 
  618          data.phi[ 5].ref_hess[0][0] = d2p1(point[0]) * p0(point[1]) * p1(point[2]);
 
  619          data.phi[ 5].ref_hess[1][1] = p1(point[0]) * d2p0(point[1]) * p1(point[2]);
 
  620          data.phi[ 5].ref_hess[2][2] = p1(point[0]) * p0(point[1]) * d2p1(point[2]);
 
  621          data.phi[ 5].ref_hess[1][0] =
 
  622          data.phi[ 5].ref_hess[0][1] = d1p1(point[0]) * d1p0(point[1]) * p1(point[2]);
 
  623          data.phi[ 5].ref_hess[2][0] =
 
  624          data.phi[ 5].ref_hess[0][2] = d1p1(point[0]) * p0(point[1]) * d1p1(point[2]);
 
  625          data.phi[ 5].ref_hess[2][1] =
 
  626          data.phi[ 5].ref_hess[1][2] = p1(point[0]) * d1p0(point[1]) * d1p1(point[2]);
 
  627          data.phi[ 6].ref_hess[0][0] = d2p0(point[0]) * p1(point[1]) * p1(point[2]);
 
  628          data.phi[ 6].ref_hess[1][1] = p0(point[0]) * d2p1(point[1]) * p1(point[2]);
 
  629          data.phi[ 6].ref_hess[2][2] = p0(point[0]) * p1(point[1]) * d2p1(point[2]);
 
  630          data.phi[ 6].ref_hess[1][0] =
 
  631          data.phi[ 6].ref_hess[0][1] = d1p0(point[0]) * d1p1(point[1]) * p1(point[2]);
 
  632          data.phi[ 6].ref_hess[2][0] =
 
  633          data.phi[ 6].ref_hess[0][2] = d1p0(point[0]) * p1(point[1]) * d1p1(point[2]);
 
  634          data.phi[ 6].ref_hess[2][1] =
 
  635          data.phi[ 6].ref_hess[1][2] = p0(point[0]) * d1p1(point[1]) * d1p1(point[2]);
 
  636          data.phi[ 7].ref_hess[0][0] = d2p1(point[0]) * p1(point[1]) * p1(point[2]);
 
  637          data.phi[ 7].ref_hess[1][1] = p1(point[0]) * d2p1(point[1]) * p1(point[2]);
 
  638          data.phi[ 7].ref_hess[2][2] = p1(point[0]) * p1(point[1]) * d2p1(point[2]);
 
  639          data.phi[ 7].ref_hess[1][0] =
 
  640          data.phi[ 7].ref_hess[0][1] = d1p1(point[0]) * d1p1(point[1]) * p1(point[2]);
 
  641          data.phi[ 7].ref_hess[2][0] =
 
  642          data.phi[ 7].ref_hess[0][2] = d1p1(point[0]) * p1(point[1]) * d1p1(point[2]);
 
  643          data.phi[ 7].ref_hess[2][1] =
 
  644          data.phi[ 7].ref_hess[1][2] = p1(point[0]) * d1p1(point[1]) * d1p1(point[2]);
 
  647          data.phi[ 8].ref_hess[0][0] = d2p2(point[0]) * p0(point[1]) * p0(point[2]);
 
  648          data.phi[ 8].ref_hess[1][1] = p2(point[0]) * d2p0(point[1]) * p0(point[2]);
 
  649          data.phi[ 8].ref_hess[2][2] = p2(point[0]) * p0(point[1]) * d2p0(point[2]);
 
  650          data.phi[ 8].ref_hess[1][0] =
 
  651          data.phi[ 8].ref_hess[0][1] = d1p2(point[0]) * d1p0(point[1]) * p0(point[2]);
 
  652          data.phi[ 8].ref_hess[2][0] =
 
  653          data.phi[ 8].ref_hess[0][2] = d1p2(point[0]) * p0(point[1]) * d1p0(point[2]);
 
  654          data.phi[ 8].ref_hess[2][1] =
 
  655          data.phi[ 8].ref_hess[1][2] = p2(point[0]) * d1p0(point[1]) * d1p0(point[2]);
 
  656          data.phi[ 9].ref_hess[0][0] = d2p2(point[0]) * p1(point[1]) * p0(point[2]);
 
  657          data.phi[ 9].ref_hess[1][1] = p2(point[0]) * d2p1(point[1]) * p0(point[2]);
 
  658          data.phi[ 9].ref_hess[2][2] = p2(point[0]) * p1(point[1]) * d2p0(point[2]);
 
  659          data.phi[ 9].ref_hess[1][0] =
 
  660          data.phi[ 9].ref_hess[0][1] = d1p2(point[0]) * d1p1(point[1]) * p0(point[2]);
 
  661          data.phi[ 9].ref_hess[2][0] =
 
  662          data.phi[ 9].ref_hess[0][2] = d1p2(point[0]) * p1(point[1]) * d1p0(point[2]);
 
  663          data.phi[ 9].ref_hess[2][1] =
 
  664          data.phi[ 9].ref_hess[1][2] = p2(point[0]) * d1p1(point[1]) * d1p0(point[2]);
 
  665          data.phi[10].ref_hess[0][0] = d2p2(point[0]) * p0(point[1]) * p1(point[2]);
 
  666          data.phi[10].ref_hess[1][1] = p2(point[0]) * d2p0(point[1]) * p1(point[2]);
 
  667          data.phi[10].ref_hess[2][2] = p2(point[0]) * p0(point[1]) * d2p1(point[2]);
 
  668          data.phi[10].ref_hess[1][0] =
 
  669          data.phi[10].ref_hess[0][1] = d1p2(point[0]) * d1p0(point[1]) * p1(point[2]);
 
  670          data.phi[10].ref_hess[2][0] =
 
  671          data.phi[10].ref_hess[0][2] = d1p2(point[0]) * p0(point[1]) * d1p1(point[2]);
 
  672          data.phi[10].ref_hess[2][1] =
 
  673          data.phi[10].ref_hess[1][2] = p2(point[0]) * d1p0(point[1]) * d1p1(point[2]);
 
  674          data.phi[11].ref_hess[0][0] = d2p2(point[0]) * p1(point[1]) * p1(point[2]);
 
  675          data.phi[11].ref_hess[1][1] = p2(point[0]) * d2p1(point[1]) * p1(point[2]);
 
  676          data.phi[11].ref_hess[2][2] = p2(point[0]) * p1(point[1]) * d2p1(point[2]);
 
  677          data.phi[11].ref_hess[1][0] =
 
  678          data.phi[11].ref_hess[0][1] = d1p2(point[0]) * d1p1(point[1]) * p1(point[2]);
 
  679          data.phi[11].ref_hess[2][0] =
 
  680          data.phi[11].ref_hess[0][2] = d1p2(point[0]) * p1(point[1]) * d1p1(point[2]);
 
  681          data.phi[11].ref_hess[2][1] =
 
  682          data.phi[11].ref_hess[1][2] = p2(point[0]) * d1p1(point[1]) * d1p1(point[2]);
 
  683          data.phi[12].ref_hess[0][0] = d2p0(point[0]) * p2(point[1]) * p0(point[2]);
 
  684          data.phi[12].ref_hess[1][1] = p0(point[0]) * d2p2(point[1]) * p0(point[2]);
 
  685          data.phi[12].ref_hess[2][2] = p0(point[0]) * p2(point[1]) * d2p0(point[2]);
 
  686          data.phi[12].ref_hess[1][0] =
 
  687          data.phi[12].ref_hess[0][1] = d1p0(point[0]) * d1p2(point[1]) * p0(point[2]);
 
  688          data.phi[12].ref_hess[2][0] =
 
  689          data.phi[12].ref_hess[0][2] = d1p0(point[0]) * p2(point[1]) * d1p0(point[2]);
 
  690          data.phi[12].ref_hess[2][1] =
 
  691          data.phi[12].ref_hess[1][2] = p0(point[0]) * d1p2(point[1]) * d1p0(point[2]);
 
  692          data.phi[13].ref_hess[0][0] = d2p1(point[0]) * p2(point[1]) * p0(point[2]);
 
  693          data.phi[13].ref_hess[1][1] = p1(point[0]) * d2p2(point[1]) * p0(point[2]);
 
  694          data.phi[13].ref_hess[2][2] = p1(point[0]) * p2(point[1]) * d2p0(point[2]);
 
  695          data.phi[13].ref_hess[1][0] =
 
  696          data.phi[13].ref_hess[0][1] = d1p1(point[0]) * d1p2(point[1]) * p0(point[2]);
 
  697          data.phi[13].ref_hess[2][0] =
 
  698          data.phi[13].ref_hess[0][2] = d1p1(point[0]) * p2(point[1]) * d1p0(point[2]);
 
  699          data.phi[13].ref_hess[2][1] =
 
  700          data.phi[13].ref_hess[1][2] = p1(point[0]) * d1p2(point[1]) * d1p0(point[2]);
 
  701          data.phi[14].ref_hess[0][0] = d2p0(point[0]) * p2(point[1]) * p1(point[2]);
 
  702          data.phi[14].ref_hess[1][1] = p0(point[0]) * d2p2(point[1]) * p1(point[2]);
 
  703          data.phi[14].ref_hess[2][2] = p0(point[0]) * p2(point[1]) * d2p1(point[2]);
 
  704          data.phi[14].ref_hess[1][0] =
 
  705          data.phi[14].ref_hess[0][1] = d1p0(point[0]) * d1p2(point[1]) * p1(point[2]);
 
  706          data.phi[14].ref_hess[2][0] =
 
  707          data.phi[14].ref_hess[0][2] = d1p0(point[0]) * p2(point[1]) * d1p1(point[2]);
 
  708          data.phi[14].ref_hess[2][1] =
 
  709          data.phi[14].ref_hess[1][2] = p0(point[0]) * d1p2(point[1]) * d1p1(point[2]);
 
  710          data.phi[15].ref_hess[0][0] = d2p1(point[0]) * p2(point[1]) * p1(point[2]);
 
  711          data.phi[15].ref_hess[1][1] = p1(point[0]) * d2p2(point[1]) * p1(point[2]);
 
  712          data.phi[15].ref_hess[2][2] = p1(point[0]) * p2(point[1]) * d2p1(point[2]);
 
  713          data.phi[15].ref_hess[1][0] =
 
  714          data.phi[15].ref_hess[0][1] = d1p1(point[0]) * d1p2(point[1]) * p1(point[2]);
 
  715          data.phi[15].ref_hess[2][0] =
 
  716          data.phi[15].ref_hess[0][2] = d1p1(point[0]) * p2(point[1]) * d1p1(point[2]);
 
  717          data.phi[15].ref_hess[2][1] =
 
  718          data.phi[15].ref_hess[1][2] = p1(point[0]) * d1p2(point[1]) * d1p1(point[2]);
 
  719          data.phi[16].ref_hess[0][0] = d2p0(point[0]) * p0(point[1]) * p2(point[2]);
 
  720          data.phi[16].ref_hess[1][1] = p0(point[0]) * d2p0(point[1]) * p2(point[2]);
 
  721          data.phi[16].ref_hess[2][2] = p0(point[0]) * p0(point[1]) * d2p2(point[2]);
 
  722          data.phi[16].ref_hess[1][0] =
 
  723          data.phi[16].ref_hess[0][1] = d1p0(point[0]) * d1p0(point[1]) * p2(point[2]);
 
  724          data.phi[16].ref_hess[2][0] =
 
  725          data.phi[16].ref_hess[0][2] = d1p0(point[0]) * p0(point[1]) * d1p2(point[2]);
 
  726          data.phi[16].ref_hess[2][1] =
 
  727          data.phi[16].ref_hess[1][2] = p0(point[0]) * d1p0(point[1]) * d1p2(point[2]);
 
  728          data.phi[17].ref_hess[0][0] = d2p1(point[0]) * p0(point[1]) * p2(point[2]);
 
  729          data.phi[17].ref_hess[1][1] = p1(point[0]) * d2p0(point[1]) * p2(point[2]);
 
  730          data.phi[17].ref_hess[2][2] = p1(point[0]) * p0(point[1]) * d2p2(point[2]);
 
  731          data.phi[17].ref_hess[1][0] =
 
  732          data.phi[17].ref_hess[0][1] = d1p1(point[0]) * d1p0(point[1]) * p2(point[2]);
 
  733          data.phi[17].ref_hess[2][0] =
 
  734          data.phi[17].ref_hess[0][2] = d1p1(point[0]) * p0(point[1]) * d1p2(point[2]);
 
  735          data.phi[17].ref_hess[2][1] =
 
  736          data.phi[17].ref_hess[1][2] = p1(point[0]) * d1p0(point[1]) * d1p2(point[2]);
 
  737          data.phi[18].ref_hess[0][0] = d2p0(point[0]) * p1(point[1]) * p2(point[2]);
 
  738          data.phi[18].ref_hess[1][1] = p0(point[0]) * d2p1(point[1]) * p2(point[2]);
 
  739          data.phi[18].ref_hess[2][2] = p0(point[0]) * p1(point[1]) * d2p2(point[2]);
 
  740          data.phi[18].ref_hess[1][0] =
 
  741          data.phi[18].ref_hess[0][1] = d1p0(point[0]) * d1p1(point[1]) * p2(point[2]);
 
  742          data.phi[18].ref_hess[2][0] =
 
  743          data.phi[18].ref_hess[0][2] = d1p0(point[0]) * p1(point[1]) * d1p2(point[2]);
 
  744          data.phi[18].ref_hess[2][1] =
 
  745          data.phi[18].ref_hess[1][2] = p0(point[0]) * d1p1(point[1]) * d1p2(point[2]);
 
  746          data.phi[19].ref_hess[0][0] = d2p1(point[0]) * p1(point[1]) * p2(point[2]);
 
  747          data.phi[19].ref_hess[1][1] = p1(point[0]) * d2p1(point[1]) * p2(point[2]);
 
  748          data.phi[19].ref_hess[2][2] = p1(point[0]) * p1(point[1]) * d2p2(point[2]);
 
  749          data.phi[19].ref_hess[1][0] =
 
  750          data.phi[19].ref_hess[0][1] = d1p1(point[0]) * d1p1(point[1]) * p2(point[2]);
 
  751          data.phi[19].ref_hess[2][0] =
 
  752          data.phi[19].ref_hess[0][2] = d1p1(point[0]) * p1(point[1]) * d1p2(point[2]);
 
  753          data.phi[19].ref_hess[2][1] =
 
  754          data.phi[19].ref_hess[1][2] = p1(point[0]) * d1p1(point[1]) * d1p2(point[2]);
 
  757          data.phi[20].ref_hess[0][0] = d2p2(point[0]) * p2(point[1]) * p0(point[2]);
 
  758          data.phi[20].ref_hess[1][1] = p2(point[0]) * d2p2(point[1]) * p0(point[2]);
 
  759          data.phi[20].ref_hess[2][2] = p2(point[0]) * p2(point[1]) * d2p0(point[2]);
 
  760          data.phi[20].ref_hess[1][0] =
 
  761          data.phi[20].ref_hess[0][1] = d1p2(point[0]) * d1p2(point[1]) * p0(point[2]);
 
  762          data.phi[20].ref_hess[2][0] =
 
  763          data.phi[20].ref_hess[0][2] = d1p2(point[0]) * p2(point[1]) * d1p0(point[2]);
 
  764          data.phi[20].ref_hess[2][1] =
 
  765          data.phi[20].ref_hess[1][2] = p2(point[0]) * d1p2(point[1]) * d1p0(point[2]);
 
  766          data.phi[21].ref_hess[0][0] = d2p2(point[0]) * p2(point[1]) * p1(point[2]);
 
  767          data.phi[21].ref_hess[1][1] = p2(point[0]) * d2p2(point[1]) * p1(point[2]);
 
  768          data.phi[21].ref_hess[2][2] = p2(point[0]) * p2(point[1]) * d2p1(point[2]);
 
  769          data.phi[21].ref_hess[1][0] =
 
  770          data.phi[21].ref_hess[0][1] = d1p2(point[0]) * d1p2(point[1]) * p1(point[2]);
 
  771          data.phi[21].ref_hess[2][0] =
 
  772          data.phi[21].ref_hess[0][2] = d1p2(point[0]) * p2(point[1]) * d1p1(point[2]);
 
  773          data.phi[21].ref_hess[2][1] =
 
  774          data.phi[21].ref_hess[1][2] = p2(point[0]) * d1p2(point[1]) * d1p1(point[2]);
 
  775          data.phi[22].ref_hess[0][0] = d2p2(point[0]) * p0(point[1]) * p2(point[2]);
 
  776          data.phi[22].ref_hess[1][1] = p2(point[0]) * d2p0(point[1]) * p2(point[2]);
 
  777          data.phi[22].ref_hess[2][2] = p2(point[0]) * p0(point[1]) * d2p2(point[2]);
 
  778          data.phi[22].ref_hess[1][0] =
 
  779          data.phi[22].ref_hess[0][1] = d1p2(point[0]) * d1p0(point[1]) * p2(point[2]);
 
  780          data.phi[22].ref_hess[2][0] =
 
  781          data.phi[22].ref_hess[0][2] = d1p2(point[0]) * p0(point[1]) * d1p2(point[2]);
 
  782          data.phi[22].ref_hess[2][1] =
 
  783          data.phi[22].ref_hess[1][2] = p2(point[0]) * d1p0(point[1]) * d1p2(point[2]);
 
  784          data.phi[23].ref_hess[0][0] = d2p2(point[0]) * p1(point[1]) * p2(point[2]);
 
  785          data.phi[23].ref_hess[1][1] = p2(point[0]) * d2p1(point[1]) * p2(point[2]);
 
  786          data.phi[23].ref_hess[2][2] = p2(point[0]) * p1(point[1]) * d2p2(point[2]);
 
  787          data.phi[23].ref_hess[1][0] =
 
  788          data.phi[23].ref_hess[0][1] = d1p2(point[0]) * d1p1(point[1]) * p2(point[2]);
 
  789          data.phi[23].ref_hess[2][0] =
 
  790          data.phi[23].ref_hess[0][2] = d1p2(point[0]) * p1(point[1]) * d1p2(point[2]);
 
  791          data.phi[23].ref_hess[2][1] =
 
  792          data.phi[23].ref_hess[1][2] = p2(point[0]) * d1p1(point[1]) * d1p2(point[2]);
 
  793          data.phi[24].ref_hess[0][0] = d2p0(point[0]) * p2(point[1]) * p2(point[2]);
 
  794          data.phi[24].ref_hess[1][1] = p0(point[0]) * d2p2(point[1]) * p2(point[2]);
 
  795          data.phi[24].ref_hess[2][2] = p0(point[0]) * p2(point[1]) * d2p2(point[2]);
 
  796          data.phi[24].ref_hess[1][0] =
 
  797          data.phi[24].ref_hess[0][1] = d1p0(point[0]) * d1p2(point[1]) * p2(point[2]);
 
  798          data.phi[24].ref_hess[2][0] =
 
  799          data.phi[24].ref_hess[0][2] = d1p0(point[0]) * p2(point[1]) * d1p2(point[2]);
 
  800          data.phi[24].ref_hess[2][1] =
 
  801          data.phi[24].ref_hess[1][2] = p0(point[0]) * d1p2(point[1]) * d1p2(point[2]);
 
  802          data.phi[25].ref_hess[0][0] = d2p1(point[0]) * p2(point[1]) * p2(point[2]);
 
  803          data.phi[25].ref_hess[1][1] = p1(point[0]) * d2p2(point[1]) * p2(point[2]);
 
  804          data.phi[25].ref_hess[2][2] = p1(point[0]) * p2(point[1]) * d2p2(point[2]);
 
  805          data.phi[25].ref_hess[1][0] =
 
  806          data.phi[25].ref_hess[0][1] = d1p1(point[0]) * d1p2(point[1]) * p2(point[2]);
 
  807          data.phi[25].ref_hess[2][0] =
 
  808          data.phi[25].ref_hess[0][2] = d1p1(point[0]) * p2(point[1]) * d1p2(point[2]);
 
  809          data.phi[25].ref_hess[2][1] =
 
  810          data.phi[25].ref_hess[1][2] = p1(point[0]) * d1p2(point[1]) * d1p2(point[2]);
 
  813          data.phi[26].ref_hess[0][0] = d2p2(point[0]) * p2(point[1]) * p2(point[2]);
 
  814          data.phi[26].ref_hess[1][1] = p2(point[0]) * d2p2(point[1]) * p2(point[2]);
 
  815          data.phi[26].ref_hess[2][2] = p2(point[0]) * p2(point[1]) * d2p2(point[2]);
 
  816          data.phi[26].ref_hess[1][0] =
 
  817          data.phi[26].ref_hess[0][1] = d1p2(point[0]) * d1p2(point[1]) * p2(point[2]);
 
  818          data.phi[26].ref_hess[2][0] =
 
  819          data.phi[26].ref_hess[0][2] = d1p2(point[0]) * p2(point[1]) * d1p2(point[2]);
 
  820          data.phi[26].ref_hess[2][1] =
 
  821          data.phi[26].ref_hess[1][2] = p2(point[0]) * d1p2(point[1]) * d1p2(point[2]);
 
void eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
void eval_ref_hessians(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function hessians on the reference cell.
void eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
Space_ SpaceType
space type
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
SpaceEvalTraits::DataType DataType
data type
EvalPolicy::DomainPointType DomainPointType
domain point type
Evaluator(const SpaceType &space)
Constructor.
int get_num_local_dofs() const
Returns the number of local DOFs.
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
void eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
int get_num_local_dofs() const
Returns the number of local DOFs.
void eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
SpaceEvalTraits::DataType DataType
data type
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
Evaluator(const SpaceType &space)
Constructor.
EvalPolicy::DomainPointType DomainPointType
domain point type
Space_ SpaceType
space type
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
void eval_ref_hessians(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function hessians on the reference cell.
EvalPolicy::DomainPointType DomainPointType
domain point type
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
void eval_ref_hessians(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function hessians on the reference cell.
void eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
SpaceEvalTraits::DataType DataType
data type
int get_num_local_dofs() const
Returns the number of local DOFs.
void eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
Space_ SpaceType
space type
Evaluator(const SpaceType &space)
Constructor.
Bernstein-2 Element Evaluator class template declaration.
Finite-Element Parametric Evaluator CRTP base-class template.
static constexpr SpaceTags ref_caps
Bernstein-2 Element Evaluator reference capabilities.
SpaceTags
Space configuration tags enum.
@ ref_value
specifies whether the space should supply reference basis function values
@ ref_hess
specifies whether the space should supply reference basis function hessians
@ ref_grad
specifies whether the space should supply reference basis function gradients