9#include <kernel/space/parametric_evaluator.hpp> 
   10#include <kernel/space/dof_mapping_common.hpp> 
   37          return T_(0.0625) * (-T_(1) + x*( T_(1) + T_(9)*x*(T_(1) - x)));
 
   44          return T_(0.0625) * (-T_(1) + x*(-T_(1) + T_(9)*x*(T_(1) + x)));
 
   51          return T_(0.5625) * (T_(1) + x*(-T_(3) + x*(-T_(1) + T_(3)*x)));
 
   58          return T_(0.5625) * (T_(1) + x*( T_(3) + x*(-T_(1) - T_(3)*x)));
 
   66          return T_(0.0625) * ( T_(1) + x*(T_(18) - T_(27)*x));
 
   72          return T_(0.0625) * (-T_(1) + x*(T_(18) + T_(27)*x));
 
   78          return T_(0.0625) * (-T_(27) + x*(-T_(18) + T_(81)*x));
 
   84          return T_(0.0625) * ( T_(27) + x*(-T_(18) - T_(81)*x));
 
   92          return T_(1.125) * (T_(1) - T_(3)*x);
 
   98          return T_(1.125) * (T_(1) + T_(3)*x);
 
  101        template<
typename T_>
 
  104          return T_(1.125) * (-T_(1) + T_(9)*x);
 
  107        template<
typename T_>
 
  110          return T_(1.125) * (-T_(1) - T_(9)*x);
 
  122        typename TrafoEvaluator_,
 
  123        typename SpaceEvalTraits_,
 
  124        typename Shape_ = 
typename Space_::ShapeType>
 
  134        typename TrafoEvaluator_,
 
  135        typename SpaceEvalTraits_>
 
  136      class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Simplex<2> > :
 
  164        typedef typename SpaceEvalTraits::DataType 
DataType;
 
  192        void NOINLINE prepare(
const TrafoEvaluator_& trafo_eval)
 
  195          Geometry::Intern::SubIndexMapping<Shape::Simplex<2>, 1, 0> sim(
 
  196            trafo_eval.get_trafo().get_mesh().template get_index_set<2,0>()[trafo_eval.get_cell_index()],
 
  197            trafo_eval.get_trafo().get_mesh().template get_index_set<2,1>()[trafo_eval.get_cell_index()],
 
  198            trafo_eval.get_trafo().get_mesh().template get_index_set<1,0>());
 
  201          for(
int i(0); i < 3; ++i)
 
  203            for(
int j(0); j < 2; ++j)
 
  205              ek[i][j] = 3 + 2*i + int(sim.map(i, j));
 
  219        template<
typename EvalData_>
 
  234          data.phi[9].ref_value = - 
DataType(27) * point[0] * point[1] * (point[0] + point[1] - 
DataType(1));
 
  246        template<
typename EvalData_>
 
  253          data.phi[1].ref_grad[1] = 
DataType(0);
 
  254          data.phi[2].ref_grad[0] = 
DataType(0);
 
  283        template<
typename EvalData_>
 
  287          data.phi[0].ref_hess[0][0] = - 
DataType(27) * (point[0] + point[1]) + 
DataType(18); 
 
  288          data.phi[0].ref_hess[1][1] = - 
DataType(27) * (point[1] + point[0]) + 
DataType(18); 
 
  289          data.phi[0].ref_hess[1][0] =
 
  290          data.phi[0].ref_hess[0][1] = - 
DataType(27) * (point[1] + point[0]) + 
DataType(18); 
 
  292          data.phi[1].ref_hess[1][1] = 
DataType(0);
 
  293          data.phi[1].ref_hess[1][0] =
 
  294          data.phi[1].ref_hess[0][1] = 
DataType(0);
 
  295          data.phi[2].ref_hess[0][0] = 
DataType(0);
 
  297          data.phi[2].ref_hess[1][0] =
 
  298          data.phi[2].ref_hess[0][1] = 
DataType(0);
 
  300          data.phi[ek[0][0]].ref_hess[0][0] = 
DataType(27) * point[1];
 
  301          data.phi[ek[0][0]].ref_hess[1][1] = 
DataType(0);
 
  302          data.phi[ek[0][0]].ref_hess[0][1] =
 
  304          data.phi[ek[0][1]].ref_hess[0][0] = 
DataType(0);
 
  305          data.phi[ek[0][1]].ref_hess[1][1] = 
DataType(27) * point[0];
 
  306          data.phi[ek[0][1]].ref_hess[0][1] =
 
  308          data.phi[ek[1][0]].ref_hess[0][0] = 
DataType(0);
 
  310          data.phi[ek[1][0]].ref_hess[0][1] =
 
  312          data.phi[ek[1][1]].ref_hess[0][0] = 
DataType(27) * point[1];
 
  314          data.phi[ek[1][1]].ref_hess[0][1] =
 
  317          data.phi[ek[2][0]].ref_hess[1][1] = 
DataType(27) * point[0];
 
  318          data.phi[ek[2][0]].ref_hess[0][1] =
 
  321          data.phi[ek[2][1]].ref_hess[1][1] = 
DataType(0);
 
  322          data.phi[ek[2][1]].ref_hess[0][1] =
 
  325          data.phi[9].ref_hess[0][0] = - 
DataType(54) * point[1];
 
  326          data.phi[9].ref_hess[1][1] = - 
DataType(54) * point[0];
 
  327          data.phi[9].ref_hess[0][1] =
 
  340        typename TrafoEvaluator_,
 
  341        typename SpaceEvalTraits_>
 
  342      class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Simplex<3> > :
 
  370        typedef typename SpaceEvalTraits::DataType 
DataType;
 
  398        void NOINLINE prepare(
const TrafoEvaluator_& trafo_eval)
 
  401          Geometry::Intern::SubIndexMapping<Shape::Simplex<3>, 1, 0> sim(
 
  402            trafo_eval.get_trafo().get_mesh().template get_index_set<3,0>()[trafo_eval.get_cell_index()],
 
  403            trafo_eval.get_trafo().get_mesh().template get_index_set<3,1>()[trafo_eval.get_cell_index()],
 
  404            trafo_eval.get_trafo().get_mesh().template get_index_set<1,0>());
 
  407          for(
int i(0); i < 6; ++i)
 
  409            for(
int j(0); j < 2; ++j)
 
  411              ek[i][j] = 4 + 2*i + int(sim.map(i, j));
 
  425        template<
typename EvalData_>
 
  443          data.phi[ 0].ref_value = D1 + (-D5_5 + (D9 - D4_5 * z) * z) * z + (-D5_5 + (D18 - D13_5 * z) * z + (D9 - D13_5 * z - D4_5 * y) * y) * y + (-D5_5 + (D18 - D13_5 * z) * z + (D18 - D27 * z - D13_5 * y) * y + (D9 - D13_5 * y - D13_5 * z - D4_5 * x) * x) * x;
 
  444          data.phi[ 1].ref_value = (D1 + (-D4_5 + D4_5 * x) * x) * x;
 
  445          data.phi[ 2].ref_value = (D1 + (-D4_5 + D4_5 * y) * y) * y;
 
  446          data.phi[ 3].ref_value = (D1 + (-D4_5 + D4_5 * z) * z) * z;
 
  448          data.phi[ek[0][0]].ref_value = (D9 + (-D22_5 + D13_5 * z) * z + (-D22_5 + D27 * z + D13_5 * y) * y + (-D22_5 + D27 * y + D27 * z + D13_5 * x) * x) * x;
 
  449          data.phi[ek[0][1]].ref_value = (-D4_5 + D4_5 * y + D4_5 * z + (D18 - D13_5 * y - D13_5 * z - D13_5 * x) * x) * x;
 
  450          data.phi[ek[1][0]].ref_value = (D9 + (-D22_5 + D13_5 * z) * z + (-D22_5 + D27 * z + D13_5 * y) * y) * y + ((-D22_5 + D27 * y + D27 * z) * y + D13_5 * x * y) * x;
 
  451          data.phi[ek[1][1]].ref_value = (-D4_5 + D4_5 * z + (D18 - D13_5 * y - D13_5 * z) * y) * y + (D4_5 - D13_5 * y) * y * x;
 
  452          data.phi[ek[2][0]].ref_value = (D9 + (-D22_5 + D13_5 * z) * z) * z + ((-D22_5 + D27 * z) * z + D13_5 * y * z) * y + ((-D22_5 + D27 * z) * z + D27 * y * z + D13_5 * z * x) * x;
 
  453          data.phi[ek[2][1]].ref_value = (-D4_5 + (D18 - D13_5 * z) * z) * z + (D4_5 - D13_5 * z) * z * y + (D4_5 - D13_5 * z) * z * x;
 
  454          data.phi[ek[3][0]].ref_value = (-D4_5 * y + D13_5 * x * y) * x;
 
  455          data.phi[ek[3][1]].ref_value = (-D4_5 + D13_5 * y) * y * x;
 
  456          data.phi[ek[4][0]].ref_value = (-D4_5 * z + D13_5 * z * x) * x;
 
  457          data.phi[ek[4][1]].ref_value = (-D4_5 + D13_5 * z) * z * x;
 
  458          data.phi[ek[5][0]].ref_value = (-D4_5 * z + D13_5 * y * z) * y;
 
  459          data.phi[ek[5][1]].ref_value = (-D4_5 + D13_5 * z) * z * y;
 
  461          data.phi[16].ref_value = D27 * x * y * z;
 
  462          data.phi[17].ref_value = ((D27 - D27 * z) * z - D27 * y * z) * y - D27 * x * y * z;
 
  463          data.phi[18].ref_value = ((D27 - D27 * z) * z - D27 * y * z - D27 * z * x) * x;
 
  464          data.phi[19].ref_value = ((D27 - D27 * z - D27 * y) * y - D27 * x * y) * x;
 
  476        template<
typename EvalData_>
 
  499          data.phi[ 0].ref_grad[0] = -D5_5 + (D18 - D13_5 * z) * z + (D18 - D27 * z - D13_5 * y) * y + (D18 - D27 * y - D27 * z - D13_5 * x) * x;
 
  500          data.phi[ 0].ref_grad[1] = -D5_5 + (D18 - D13_5 * z) * z + (D18 - D27 * z - D13_5 * y) * y + (D18 - D27 * y - D27 * z - D13_5 * x) * x;
 
  501          data.phi[ 0].ref_grad[2] = -D5_5 + (D18 - D13_5 * z) * z + (D18 - D27 * z - D13_5 * y) * y + (D18 - D27 * y - D27 * z - D13_5 * x) * x;
 
  502          data.phi[ 1].ref_grad[0] = D1 + (-D9 + D13_5 * x) * x;
 
  503          data.phi[ 1].ref_grad[1] = D0;
 
  504          data.phi[ 1].ref_grad[2] = D0;
 
  505          data.phi[ 2].ref_grad[0] = D0;
 
  506          data.phi[ 2].ref_grad[1] = D1 + (-D9 + D13_5 * y) * y;
 
  507          data.phi[ 2].ref_grad[2] = D0;
 
  508          data.phi[ 3].ref_grad[0] = D0;
 
  509          data.phi[ 3].ref_grad[1] = D0;
 
  510          data.phi[ 3].ref_grad[2] = D1 + (-D9 + D13_5 * z) * z;
 
  512          data.phi[ek[0][0]].ref_grad[0] = D9 + (-D22_5 + D13_5 * z) * z + (-D22_5 + D27 * z + D13_5 * y) * y + (-D45 + D54 * y + D54 * z + D40_5 * x) * x;
 
  513          data.phi[ek[0][0]].ref_grad[1] = (-D22_5 + D27 * y + D27 * z + D27 * x) * x;
 
  514          data.phi[ek[0][0]].ref_grad[2] = (-D22_5 + D27 * y + D27 * z + D27 * x) * x;
 
  515          data.phi[ek[0][1]].ref_grad[0] = -D4_5 + D4_5 * y + D4_5 * z + (D36 - D27 * y - D27 * z - D40_5 * x) * x;
 
  516          data.phi[ek[0][1]].ref_grad[1] = (D4_5 - D13_5 * x) * x;
 
  517          data.phi[ek[0][1]].ref_grad[2] = (D4_5 - D13_5 * x) * x;
 
  518          data.phi[ek[1][0]].ref_grad[0] = (-D22_5 + D27 * y + D27 * z) * y + D27 * x * y;
 
  519          data.phi[ek[1][0]].ref_grad[1] = D9 + (-D22_5 + D13_5 * z) * z + (-D45 + D54 * z + D40_5 * y) * y + (-D22_5 + D54 * y + D27 * z + D13_5 * x) * x;
 
  520          data.phi[ek[1][0]].ref_grad[2] = (-D22_5 + D27 * y + D27 * z) * y + D27 * x * y;
 
  521          data.phi[ek[1][1]].ref_grad[0] = (D4_5 - D13_5 * y) * y;
 
  522          data.phi[ek[1][1]].ref_grad[1] = -D4_5 + D4_5 * z + (D36 - D27 * z - D40_5 * y) * y + (D4_5 - D27 * y) * x;
 
  523          data.phi[ek[1][1]].ref_grad[2] = (D4_5 - D13_5 * y) * y;
 
  524          data.phi[ek[2][0]].ref_grad[0] = (-D22_5 + D27 * z) * z + D27 * y * z + D27 * z * x;
 
  525          data.phi[ek[2][0]].ref_grad[1] = (-D22_5 + D27 * z) * z + D27 * y * z + D27 * z * x;
 
  526          data.phi[ek[2][0]].ref_grad[2] = D9 + (-D45 + D40_5 * z) * z + (-D22_5 + D54 * z + D13_5 * y) * y + (-D22_5 + D54 * z + D27 * y + D13_5 * x) * x;
 
  527          data.phi[ek[2][1]].ref_grad[0] = (D4_5 - D13_5 * z) * z;
 
  528          data.phi[ek[2][1]].ref_grad[1] = (D4_5 - D13_5 * z) * z;
 
  529          data.phi[ek[2][1]].ref_grad[2] = -D4_5 + (D36 - D40_5 * z) * z + (D4_5 - D27 * z) * y + (D4_5 - D27 * z) * x;
 
  530          data.phi[ek[3][0]].ref_grad[0] = -D4_5 * y + D27 * x * y;
 
  531          data.phi[ek[3][0]].ref_grad[1] = (-D4_5 + D13_5 * x) * x;
 
  532          data.phi[ek[3][0]].ref_grad[2] = D0;
 
  533          data.phi[ek[3][1]].ref_grad[0] = (-D4_5 + D13_5 * y) * y;
 
  534          data.phi[ek[3][1]].ref_grad[1] = (-D4_5 + D27 * y) * x;
 
  535          data.phi[ek[3][1]].ref_grad[2] = D0;
 
  536          data.phi[ek[4][0]].ref_grad[0] = -D4_5 * z + D27 * z * x;
 
  537          data.phi[ek[4][0]].ref_grad[1] = D0;
 
  538          data.phi[ek[4][0]].ref_grad[2] = (-D4_5 + D13_5 * x) * x;
 
  539          data.phi[ek[4][1]].ref_grad[0] = (-D4_5 + D13_5 * z) * z;
 
  540          data.phi[ek[4][1]].ref_grad[1] = D0;
 
  541          data.phi[ek[4][1]].ref_grad[2] = (-D4_5 + D27 * z) * x;
 
  542          data.phi[ek[5][0]].ref_grad[0] = D0;
 
  543          data.phi[ek[5][0]].ref_grad[1] = -D4_5 * z + D27 * y * z;
 
  544          data.phi[ek[5][0]].ref_grad[2] = (-D4_5 + D13_5 * y) * y;
 
  545          data.phi[ek[5][1]].ref_grad[0] = D0;
 
  546          data.phi[ek[5][1]].ref_grad[1] = (-D4_5 + D13_5 * z) * z;
 
  547          data.phi[ek[5][1]].ref_grad[2] = (-D4_5 + D27 * z) * y;
 
  549          data.phi[16].ref_grad[0] = D27 * y * z;
 
  550          data.phi[16].ref_grad[1] = D27 * z * x;
 
  551          data.phi[16].ref_grad[2] = D27 * x * y;
 
  552          data.phi[17].ref_grad[0] = -D27 * y * z;
 
  553          data.phi[17].ref_grad[1] = (D27 - D27 * z) * z - D54 * y * z - D27 * z * x;
 
  554          data.phi[17].ref_grad[2] = (-D54 * z + D27 - D27 * y) * y - D27 * x * y;
 
  555          data.phi[18].ref_grad[0] = (D27 - D27 * z) * z - D27 * y * z - D54 * z * x;
 
  556          data.phi[18].ref_grad[1] = -D27 * z * x;
 
  557          data.phi[18].ref_grad[2] = (-D54 * z + D27 - D27 * y - D27 * x) * x;
 
  558          data.phi[19].ref_grad[0] = (D27 - D27 * z - D27 * y) * y - D54 * x * y;
 
  559          data.phi[19].ref_grad[1] = (-D54 * y - D27 * z + D27 - D27 * x) * x;
 
  560          data.phi[19].ref_grad[2] = -D27 * x * y;
 
  572        typename TrafoEvaluator_,
 
  573        typename SpaceEvalTraits_>
 
  574      class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Hypercube<1> > :
 
  580            Shape::Hypercube<1> >,
 
  602        typedef typename SpaceEvalTraits::DataType 
DataType;
 
  635        template<
typename EvalData_>
 
  638          data.phi[0].ref_value = Intern::p0(point[0]);
 
  639          data.phi[1].ref_value = Intern::p1(point[0]);
 
  640          data.phi[2].ref_value = Intern::p2(point[0]);
 
  641          data.phi[3].ref_value = Intern::p3(point[0]);
 
  653        template<
typename EvalData_>
 
  656          data.phi[0].ref_grad[0] = Intern::d1p0(point[0]);
 
  657          data.phi[1].ref_grad[0] = Intern::d1p1(point[0]);
 
  658          data.phi[2].ref_grad[0] = Intern::d1p2(point[0]);
 
  659          data.phi[3].ref_grad[0] = Intern::d1p3(point[0]);
 
  671        template<
typename EvalData_>
 
  674          data.phi[0].ref_hess[0][0] = Intern::d2p0(point[0]);
 
  675          data.phi[1].ref_hess[0][0] = Intern::d2p1(point[0]);
 
  676          data.phi[2].ref_hess[0][0] = Intern::d2p2(point[0]);
 
  677          data.phi[3].ref_hess[0][0] = Intern::d2p3(point[0]);
 
  688        typename TrafoEvaluator_,
 
  689        typename SpaceEvalTraits_>
 
  690      class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Hypercube<2> > :
 
  696            Shape::Hypercube<2> >,
 
  718        typedef typename SpaceEvalTraits::DataType 
DataType;
 
  746        void NOINLINE prepare(
const TrafoEvaluator_& trafo_eval)
 
  749          Geometry::Intern::SubIndexMapping<Shape::Hypercube<2>, 1, 0> sim(
 
  750            trafo_eval.get_trafo().get_mesh().template get_index_set<2,0>()[trafo_eval.get_cell_index()],
 
  751            trafo_eval.get_trafo().get_mesh().template get_index_set<2,1>()[trafo_eval.get_cell_index()],
 
  752            trafo_eval.get_trafo().get_mesh().template get_index_set<1,0>());
 
  755          for(
int i(0); i < 4; ++i)
 
  757            for(
int j(0); j < 2; ++j)
 
  759              ek[i][j] = 4 + 2*i + int(sim.map(i, j));
 
  773        template<
typename EvalData_>
 
  776          using namespace Lagrange3::Intern;
 
  779          data.phi[0].ref_value = p0(point[0]) * p0(point[1]);
 
  780          data.phi[1].ref_value = p1(point[0]) * p0(point[1]);
 
  781          data.phi[2].ref_value = p0(point[0]) * p1(point[1]);
 
  782          data.phi[3].ref_value = p1(point[0]) * p1(point[1]);
 
  784          data.phi[ek[0][0]].ref_value = p2(point[0]) * p0(point[1]);
 
  785          data.phi[ek[0][1]].ref_value = p3(point[0]) * p0(point[1]);
 
  786          data.phi[ek[1][0]].ref_value = p2(point[0]) * p1(point[1]);
 
  787          data.phi[ek[1][1]].ref_value = p3(point[0]) * p1(point[1]);
 
  788          data.phi[ek[2][0]].ref_value = p0(point[0]) * p2(point[1]);
 
  789          data.phi[ek[2][1]].ref_value = p0(point[0]) * p3(point[1]);
 
  790          data.phi[ek[3][0]].ref_value = p1(point[0]) * p2(point[1]);
 
  791          data.phi[ek[3][1]].ref_value = p1(point[0]) * p3(point[1]);
 
  793          data.phi[12].ref_value = p2(point[0]) * p2(point[1]);
 
  794          data.phi[13].ref_value = p3(point[0]) * p2(point[1]);
 
  795          data.phi[14].ref_value = p2(point[0]) * p3(point[1]);
 
  796          data.phi[15].ref_value = p3(point[0]) * p3(point[1]);
 
  808        template<
typename EvalData_>
 
  811          using namespace Lagrange3::Intern;
 
  814          data.phi[0].ref_grad[0] = d1p0(point[0]) * p0(point[1]);
 
  815          data.phi[0].ref_grad[1] = p0(point[0]) * d1p0(point[1]);
 
  816          data.phi[1].ref_grad[0] = d1p1(point[0]) * p0(point[1]);
 
  817          data.phi[1].ref_grad[1] = p1(point[0]) * d1p0(point[1]);
 
  818          data.phi[2].ref_grad[0] = d1p0(point[0]) * p1(point[1]);
 
  819          data.phi[2].ref_grad[1] = p0(point[0]) * d1p1(point[1]);
 
  820          data.phi[3].ref_grad[0] = d1p1(point[0]) * p1(point[1]);
 
  821          data.phi[3].ref_grad[1] = p1(point[0]) * d1p1(point[1]);
 
  823          data.phi[ek[0][0]].ref_grad[0] = d1p2(point[0]) * p0(point[1]);
 
  824          data.phi[ek[0][0]].ref_grad[1] = p2(point[0]) * d1p0(point[1]);
 
  825          data.phi[ek[0][1]].ref_grad[0] = d1p3(point[0]) * p0(point[1]);
 
  826          data.phi[ek[0][1]].ref_grad[1] = p3(point[0]) * d1p0(point[1]);
 
  827          data.phi[ek[1][0]].ref_grad[0] = d1p2(point[0]) * p1(point[1]);
 
  828          data.phi[ek[1][0]].ref_grad[1] = p2(point[0]) * d1p1(point[1]);
 
  829          data.phi[ek[1][1]].ref_grad[0] = d1p3(point[0]) * p1(point[1]);
 
  830          data.phi[ek[1][1]].ref_grad[1] = p3(point[0]) * d1p1(point[1]);
 
  831          data.phi[ek[2][0]].ref_grad[0] = d1p0(point[0]) * p2(point[1]);
 
  832          data.phi[ek[2][0]].ref_grad[1] = p0(point[0]) * d1p2(point[1]);
 
  833          data.phi[ek[2][1]].ref_grad[0] = d1p0(point[0]) * p3(point[1]);
 
  834          data.phi[ek[2][1]].ref_grad[1] = p0(point[0]) * d1p3(point[1]);
 
  835          data.phi[ek[3][0]].ref_grad[0] = d1p1(point[0]) * p2(point[1]);
 
  836          data.phi[ek[3][0]].ref_grad[1] = p1(point[0]) * d1p2(point[1]);
 
  837          data.phi[ek[3][1]].ref_grad[0] = d1p1(point[0]) * p3(point[1]);
 
  838          data.phi[ek[3][1]].ref_grad[1] = p1(point[0]) * d1p3(point[1]);
 
  840          data.phi[12].ref_grad[0] = d1p2(point[0]) * p2(point[1]);
 
  841          data.phi[12].ref_grad[1] = p2(point[0]) * d1p2(point[1]);
 
  842          data.phi[13].ref_grad[0] = d1p3(point[0]) * p2(point[1]);
 
  843          data.phi[13].ref_grad[1] = p3(point[0]) * d1p2(point[1]);
 
  844          data.phi[14].ref_grad[0] = d1p2(point[0]) * p3(point[1]);
 
  845          data.phi[14].ref_grad[1] = p2(point[0]) * d1p3(point[1]);
 
  846          data.phi[15].ref_grad[0] = d1p3(point[0]) * p3(point[1]);
 
  847          data.phi[15].ref_grad[1] = p3(point[0]) * d1p3(point[1]);
 
  859        template<
typename EvalData_>
 
  862          using namespace Lagrange3::Intern;
 
  865          data.phi[0].ref_hess[0][0] = d2p0(point[0]) * p0(point[1]);
 
  866          data.phi[0].ref_hess[1][1] = p0(point[0]) * d2p0(point[1]);
 
  867          data.phi[0].ref_hess[1][0] =
 
  868          data.phi[0].ref_hess[0][1] = d1p0(point[0]) * d1p0(point[1]);
 
  869          data.phi[1].ref_hess[0][0] = d2p1(point[0]) * p0(point[1]);
 
  870          data.phi[1].ref_hess[1][1] = p1(point[0]) * d2p0(point[1]);
 
  871          data.phi[1].ref_hess[1][0] =
 
  872          data.phi[1].ref_hess[0][1] = d1p1(point[0]) * d1p0(point[1]);
 
  873          data.phi[2].ref_hess[0][0] = d2p0(point[0]) * p1(point[1]);
 
  874          data.phi[2].ref_hess[1][1] = p0(point[0]) * d2p1(point[1]);
 
  875          data.phi[2].ref_hess[1][0] =
 
  876          data.phi[2].ref_hess[0][1] = d1p0(point[0]) * d1p1(point[1]);
 
  877          data.phi[3].ref_hess[0][0] = d2p1(point[0]) * p1(point[1]);
 
  878          data.phi[3].ref_hess[1][1] = p1(point[0]) * d2p1(point[1]);
 
  879          data.phi[3].ref_hess[1][0] =
 
  880          data.phi[3].ref_hess[0][1] = d1p1(point[0]) * d1p1(point[1]);
 
  882          data.phi[ek[0][0]].ref_hess[0][0] = d2p2(point[0]) * p0(point[1]);
 
  883          data.phi[ek[0][0]].ref_hess[1][1] = p2(point[0]) * d2p0(point[1]);
 
  884          data.phi[ek[0][0]].ref_hess[0][1] =
 
  885          data.phi[ek[0][0]].ref_hess[1][0] = d1p2(point[0]) * d1p0(point[1]);
 
  886          data.phi[ek[0][1]].ref_hess[0][0] = d2p3(point[0]) * p0(point[1]);
 
  887          data.phi[ek[0][1]].ref_hess[1][1] = p3(point[0]) * d2p0(point[1]);
 
  888          data.phi[ek[0][1]].ref_hess[0][1] =
 
  889          data.phi[ek[0][1]].ref_hess[1][0] = d1p3(point[0]) * d1p0(point[1]);
 
  890          data.phi[ek[1][0]].ref_hess[0][0] = d2p2(point[0]) * p1(point[1]);
 
  891          data.phi[ek[1][0]].ref_hess[1][1] = p2(point[0]) * d2p1(point[1]);
 
  892          data.phi[ek[1][0]].ref_hess[0][1] =
 
  893          data.phi[ek[1][0]].ref_hess[1][0] = d1p2(point[0]) * d1p1(point[1]);
 
  894          data.phi[ek[1][1]].ref_hess[0][0] = d2p3(point[0]) * p1(point[1]);
 
  895          data.phi[ek[1][1]].ref_hess[1][1] = p3(point[0]) * d2p1(point[1]);
 
  896          data.phi[ek[1][1]].ref_hess[0][1] =
 
  897          data.phi[ek[1][1]].ref_hess[1][0] = d1p3(point[0]) * d1p1(point[1]);
 
  898          data.phi[ek[2][0]].ref_hess[0][0] = d2p0(point[0]) * p2(point[1]);
 
  899          data.phi[ek[2][0]].ref_hess[1][1] = p0(point[0]) * d2p2(point[1]);
 
  900          data.phi[ek[2][0]].ref_hess[0][1] =
 
  901          data.phi[ek[2][0]].ref_hess[1][0] = d1p0(point[0]) * d1p2(point[1]);
 
  902          data.phi[ek[2][1]].ref_hess[0][0] = d2p0(point[0]) * p3(point[1]);
 
  903          data.phi[ek[2][1]].ref_hess[1][1] = p0(point[0]) * d2p3(point[1]);
 
  904          data.phi[ek[2][1]].ref_hess[0][1] =
 
  905          data.phi[ek[2][1]].ref_hess[1][0] = d1p0(point[0]) * d1p3(point[1]);
 
  906          data.phi[ek[3][0]].ref_hess[0][0] = d2p1(point[0]) * p2(point[1]);
 
  907          data.phi[ek[3][0]].ref_hess[1][1] = p1(point[0]) * d2p2(point[1]);
 
  908          data.phi[ek[3][0]].ref_hess[0][1] =
 
  909          data.phi[ek[3][0]].ref_hess[1][0] = d1p1(point[0]) * d1p2(point[1]);
 
  910          data.phi[ek[3][1]].ref_hess[0][0] = d2p1(point[0]) * p3(point[1]);
 
  911          data.phi[ek[3][1]].ref_hess[1][1] = p1(point[0]) * d2p3(point[1]);
 
  912          data.phi[ek[3][1]].ref_hess[0][1] =
 
  913          data.phi[ek[3][1]].ref_hess[1][0] = d1p1(point[0]) * d1p3(point[1]);
 
  915          data.phi[12].ref_hess[0][0] = d2p2(point[0]) * p2(point[1]);
 
  916          data.phi[12].ref_hess[1][1] = p2(point[0]) * d2p2(point[1]);
 
  917          data.phi[12].ref_hess[0][1] =
 
  918          data.phi[12].ref_hess[1][0] = d1p2(point[0]) * d1p2(point[1]);
 
  919          data.phi[13].ref_hess[0][0] = d2p3(point[0]) * p2(point[1]);
 
  920          data.phi[13].ref_hess[1][1] = p3(point[0]) * d2p2(point[1]);
 
  921          data.phi[13].ref_hess[0][1] =
 
  922          data.phi[13].ref_hess[1][0] = d1p3(point[0]) * d1p2(point[1]);
 
  923          data.phi[14].ref_hess[0][0] = d2p2(point[0]) * p3(point[1]);
 
  924          data.phi[14].ref_hess[1][1] = p2(point[0]) * d2p3(point[1]);
 
  925          data.phi[14].ref_hess[0][1] =
 
  926          data.phi[14].ref_hess[1][0] = d1p2(point[0]) * d1p3(point[1]);
 
  927          data.phi[15].ref_hess[0][0] = d2p3(point[0]) * p3(point[1]);
 
  928          data.phi[15].ref_hess[1][1] = p3(point[0]) * d2p3(point[1]);
 
  929          data.phi[15].ref_hess[0][1] =
 
  930          data.phi[15].ref_hess[1][0] = d1p3(point[0]) * d1p3(point[1]);
 
  941        typename TrafoEvaluator_,
 
  942        typename SpaceEvalTraits_>
 
  943      class Evaluator<Space_, TrafoEvaluator_, SpaceEvalTraits_, Shape::Hypercube<3> > :
 
  949            Shape::Hypercube<3> >,
 
  971        typedef typename SpaceEvalTraits::DataType 
DataType;
 
 1001        void NOINLINE prepare(
const TrafoEvaluator_& trafo_eval)
 
 1004          Geometry::Intern::SubIndexMapping<Shape::Hypercube<3>, 1, 0> sim1(
 
 1005            trafo_eval.get_trafo().get_mesh().template get_index_set<3,0>()[trafo_eval.get_cell_index()],
 
 1006            trafo_eval.get_trafo().get_mesh().template get_index_set<3,1>()[trafo_eval.get_cell_index()],
 
 1007            trafo_eval.get_trafo().get_mesh().template get_index_set<1,0>());
 
 1010          Geometry::Intern::SubIndexMapping<Shape::Hypercube<3>, 2, 0> sim2(
 
 1011            trafo_eval.get_trafo().get_mesh().template get_index_set<3,0>()[trafo_eval.get_cell_index()],
 
 1012            trafo_eval.get_trafo().get_mesh().template get_index_set<3,2>()[trafo_eval.get_cell_index()],
 
 1013            trafo_eval.get_trafo().get_mesh().template get_index_set<2,0>());
 
 1016          for(
int i(0); i < 12; ++i)
 
 1018            for(
int j(0); j < 2; ++j)
 
 1020              ek[i][j] = 8 + 2*i + int(sim1.map(i, j));
 
 1025          for(
int i(0); i < 6; ++i)
 
 1027            for(
int j(0); j < 4; ++j)
 
 1029              qk[i][j] = 32 + 4*i + int(sim2.map(i, j));
 
 1043        template<
typename EvalData_>
 
 1046          using namespace Lagrange3::Intern;
 
 1049          data.phi[0].ref_value = p0(point[0]) * p0(point[1]) * p0(point[2]);
 
 1050          data.phi[1].ref_value = p1(point[0]) * p0(point[1]) * p0(point[2]);
 
 1051          data.phi[2].ref_value = p0(point[0]) * p1(point[1]) * p0(point[2]);
 
 1052          data.phi[3].ref_value = p1(point[0]) * p1(point[1]) * p0(point[2]);
 
 1053          data.phi[4].ref_value = p0(point[0]) * p0(point[1]) * p1(point[2]);
 
 1054          data.phi[5].ref_value = p1(point[0]) * p0(point[1]) * p1(point[2]);
 
 1055          data.phi[6].ref_value = p0(point[0]) * p1(point[1]) * p1(point[2]);
 
 1056          data.phi[7].ref_value = p1(point[0]) * p1(point[1]) * p1(point[2]);
 
 1058          data.phi[ek[ 0][0]].ref_value = p2(point[0]) * p0(point[1]) * p0(point[2]);
 
 1059          data.phi[ek[ 0][1]].ref_value = p3(point[0]) * p0(point[1]) * p0(point[2]);
 
 1060          data.phi[ek[ 1][0]].ref_value = p2(point[0]) * p1(point[1]) * p0(point[2]);
 
 1061          data.phi[ek[ 1][1]].ref_value = p3(point[0]) * p1(point[1]) * p0(point[2]);
 
 1062          data.phi[ek[ 2][0]].ref_value = p2(point[0]) * p0(point[1]) * p1(point[2]);
 
 1063          data.phi[ek[ 2][1]].ref_value = p3(point[0]) * p0(point[1]) * p1(point[2]);
 
 1064          data.phi[ek[ 3][0]].ref_value = p2(point[0]) * p1(point[1]) * p1(point[2]);
 
 1065          data.phi[ek[ 3][1]].ref_value = p3(point[0]) * p1(point[1]) * p1(point[2]);
 
 1066          data.phi[ek[ 4][0]].ref_value = p0(point[0]) * p2(point[1]) * p0(point[2]);
 
 1067          data.phi[ek[ 4][1]].ref_value = p0(point[0]) * p3(point[1]) * p0(point[2]);
 
 1068          data.phi[ek[ 5][0]].ref_value = p1(point[0]) * p2(point[1]) * p0(point[2]);
 
 1069          data.phi[ek[ 5][1]].ref_value = p1(point[0]) * p3(point[1]) * p0(point[2]);
 
 1070          data.phi[ek[ 6][0]].ref_value = p0(point[0]) * p2(point[1]) * p1(point[2]);
 
 1071          data.phi[ek[ 6][1]].ref_value = p0(point[0]) * p3(point[1]) * p1(point[2]);
 
 1072          data.phi[ek[ 7][0]].ref_value = p1(point[0]) * p2(point[1]) * p1(point[2]);
 
 1073          data.phi[ek[ 7][1]].ref_value = p1(point[0]) * p3(point[1]) * p1(point[2]);
 
 1074          data.phi[ek[ 8][0]].ref_value = p0(point[0]) * p0(point[1]) * p2(point[2]);
 
 1075          data.phi[ek[ 8][1]].ref_value = p0(point[0]) * p0(point[1]) * p3(point[2]);
 
 1076          data.phi[ek[ 9][0]].ref_value = p1(point[0]) * p0(point[1]) * p2(point[2]);
 
 1077          data.phi[ek[ 9][1]].ref_value = p1(point[0]) * p0(point[1]) * p3(point[2]);
 
 1078          data.phi[ek[10][0]].ref_value = p0(point[0]) * p1(point[1]) * p2(point[2]);
 
 1079          data.phi[ek[10][1]].ref_value = p0(point[0]) * p1(point[1]) * p3(point[2]);
 
 1080          data.phi[ek[11][0]].ref_value = p1(point[0]) * p1(point[1]) * p2(point[2]);
 
 1081          data.phi[ek[11][1]].ref_value = p1(point[0]) * p1(point[1]) * p3(point[2]);
 
 1083          data.phi[qk[0][0]].ref_value = p2(point[0]) * p2(point[1]) * p0(point[2]);
 
 1084          data.phi[qk[0][1]].ref_value = p3(point[0]) * p2(point[1]) * p0(point[2]);
 
 1085          data.phi[qk[0][2]].ref_value = p2(point[0]) * p3(point[1]) * p0(point[2]);
 
 1086          data.phi[qk[0][3]].ref_value = p3(point[0]) * p3(point[1]) * p0(point[2]);
 
 1087          data.phi[qk[1][0]].ref_value = p2(point[0]) * p2(point[1]) * p1(point[2]);
 
 1088          data.phi[qk[1][1]].ref_value = p3(point[0]) * p2(point[1]) * p1(point[2]);
 
 1089          data.phi[qk[1][2]].ref_value = p2(point[0]) * p3(point[1]) * p1(point[2]);
 
 1090          data.phi[qk[1][3]].ref_value = p3(point[0]) * p3(point[1]) * p1(point[2]);
 
 1091          data.phi[qk[2][0]].ref_value = p2(point[0]) * p0(point[1]) * p2(point[2]);
 
 1092          data.phi[qk[2][1]].ref_value = p3(point[0]) * p0(point[1]) * p2(point[2]);
 
 1093          data.phi[qk[2][2]].ref_value = p2(point[0]) * p0(point[1]) * p3(point[2]);
 
 1094          data.phi[qk[2][3]].ref_value = p3(point[0]) * p0(point[1]) * p3(point[2]);
 
 1095          data.phi[qk[3][0]].ref_value = p2(point[0]) * p1(point[1]) * p2(point[2]);
 
 1096          data.phi[qk[3][1]].ref_value = p3(point[0]) * p1(point[1]) * p2(point[2]);
 
 1097          data.phi[qk[3][2]].ref_value = p2(point[0]) * p1(point[1]) * p3(point[2]);
 
 1098          data.phi[qk[3][3]].ref_value = p3(point[0]) * p1(point[1]) * p3(point[2]);
 
 1099          data.phi[qk[4][0]].ref_value = p0(point[0]) * p2(point[1]) * p2(point[2]);
 
 1100          data.phi[qk[4][1]].ref_value = p0(point[0]) * p3(point[1]) * p2(point[2]);
 
 1101          data.phi[qk[4][2]].ref_value = p0(point[0]) * p2(point[1]) * p3(point[2]);
 
 1102          data.phi[qk[4][3]].ref_value = p0(point[0]) * p3(point[1]) * p3(point[2]);
 
 1103          data.phi[qk[5][0]].ref_value = p1(point[0]) * p2(point[1]) * p2(point[2]);
 
 1104          data.phi[qk[5][1]].ref_value = p1(point[0]) * p3(point[1]) * p2(point[2]);
 
 1105          data.phi[qk[5][2]].ref_value = p1(point[0]) * p2(point[1]) * p3(point[2]);
 
 1106          data.phi[qk[5][3]].ref_value = p1(point[0]) * p3(point[1]) * p3(point[2]);
 
 1108          data.phi[56].ref_value = p2(point[0]) * p2(point[1]) * p2(point[2]);
 
 1109          data.phi[57].ref_value = p3(point[0]) * p2(point[1]) * p2(point[2]);
 
 1110          data.phi[58].ref_value = p2(point[0]) * p3(point[1]) * p2(point[2]);
 
 1111          data.phi[59].ref_value = p3(point[0]) * p3(point[1]) * p2(point[2]);
 
 1112          data.phi[60].ref_value = p2(point[0]) * p2(point[1]) * p3(point[2]);
 
 1113          data.phi[61].ref_value = p3(point[0]) * p2(point[1]) * p3(point[2]);
 
 1114          data.phi[62].ref_value = p2(point[0]) * p3(point[1]) * p3(point[2]);
 
 1115          data.phi[63].ref_value = p3(point[0]) * p3(point[1]) * p3(point[2]);
 
 1127        template<
typename EvalData_>
 
 1130          using namespace Lagrange3::Intern;
 
 1133          data.phi[0].ref_grad[0] = d1p0(point[0]) * p0(point[1]) * p0(point[2]);
 
 1134          data.phi[0].ref_grad[1] = p0(point[0]) * d1p0(point[1]) * p0(point[2]);
 
 1135          data.phi[0].ref_grad[2] = p0(point[0]) * p0(point[1]) * d1p0(point[2]);
 
 1136          data.phi[1].ref_grad[0] = d1p1(point[0]) * p0(point[1]) * p0(point[2]);
 
 1137          data.phi[1].ref_grad[1] = p1(point[0]) * d1p0(point[1]) * p0(point[2]);
 
 1138          data.phi[1].ref_grad[2] = p1(point[0]) * p0(point[1]) * d1p0(point[2]);
 
 1139          data.phi[2].ref_grad[0] = d1p0(point[0]) * p1(point[1]) * p0(point[2]);
 
 1140          data.phi[2].ref_grad[1] = p0(point[0]) * d1p1(point[1]) * p0(point[2]);
 
 1141          data.phi[2].ref_grad[2] = p0(point[0]) * p1(point[1]) * d1p0(point[2]);
 
 1142          data.phi[3].ref_grad[0] = d1p1(point[0]) * p1(point[1]) * p0(point[2]);
 
 1143          data.phi[3].ref_grad[1] = p1(point[0]) * d1p1(point[1]) * p0(point[2]);
 
 1144          data.phi[3].ref_grad[2] = p1(point[0]) * p1(point[1]) * d1p0(point[2]);
 
 1145          data.phi[4].ref_grad[0] = d1p0(point[0]) * p0(point[1]) * p1(point[2]);
 
 1146          data.phi[4].ref_grad[1] = p0(point[0]) * d1p0(point[1]) * p1(point[2]);
 
 1147          data.phi[4].ref_grad[2] = p0(point[0]) * p0(point[1]) * d1p1(point[2]);
 
 1148          data.phi[5].ref_grad[0] = d1p1(point[0]) * p0(point[1]) * p1(point[2]);
 
 1149          data.phi[5].ref_grad[1] = p1(point[0]) * d1p0(point[1]) * p1(point[2]);
 
 1150          data.phi[5].ref_grad[2] = p1(point[0]) * p0(point[1]) * d1p1(point[2]);
 
 1151          data.phi[6].ref_grad[0] = d1p0(point[0]) * p1(point[1]) * p1(point[2]);
 
 1152          data.phi[6].ref_grad[1] = p0(point[0]) * d1p1(point[1]) * p1(point[2]);
 
 1153          data.phi[6].ref_grad[2] = p0(point[0]) * p1(point[1]) * d1p1(point[2]);
 
 1154          data.phi[7].ref_grad[0] = d1p1(point[0]) * p1(point[1]) * p1(point[2]);
 
 1155          data.phi[7].ref_grad[1] = p1(point[0]) * d1p1(point[1]) * p1(point[2]);
 
 1156          data.phi[7].ref_grad[2] = p1(point[0]) * p1(point[1]) * d1p1(point[2]);
 
 1158          data.phi[ek[ 0][0]].ref_grad[0] = d1p2(point[0]) * p0(point[1]) * p0(point[2]);
 
 1159          data.phi[ek[ 0][0]].ref_grad[1] = p2(point[0]) * d1p0(point[1]) * p0(point[2]);
 
 1160          data.phi[ek[ 0][0]].ref_grad[2] = p2(point[0]) * p0(point[1]) * d1p0(point[2]);
 
 1161          data.phi[ek[ 0][1]].ref_grad[0] = d1p3(point[0]) * p0(point[1]) * p0(point[2]);
 
 1162          data.phi[ek[ 0][1]].ref_grad[1] = p3(point[0]) * d1p0(point[1]) * p0(point[2]);
 
 1163          data.phi[ek[ 0][1]].ref_grad[2] = p3(point[0]) * p0(point[1]) * d1p0(point[2]);
 
 1164          data.phi[ek[ 1][0]].ref_grad[0] = d1p2(point[0]) * p1(point[1]) * p0(point[2]);
 
 1165          data.phi[ek[ 1][0]].ref_grad[1] = p2(point[0]) * d1p1(point[1]) * p0(point[2]);
 
 1166          data.phi[ek[ 1][0]].ref_grad[2] = p2(point[0]) * p1(point[1]) * d1p0(point[2]);
 
 1167          data.phi[ek[ 1][1]].ref_grad[0] = d1p3(point[0]) * p1(point[1]) * p0(point[2]);
 
 1168          data.phi[ek[ 1][1]].ref_grad[1] = p3(point[0]) * d1p1(point[1]) * p0(point[2]);
 
 1169          data.phi[ek[ 1][1]].ref_grad[2] = p3(point[0]) * p1(point[1]) * d1p0(point[2]);
 
 1170          data.phi[ek[ 2][0]].ref_grad[0] = d1p2(point[0]) * p0(point[1]) * p1(point[2]);
 
 1171          data.phi[ek[ 2][0]].ref_grad[1] = p2(point[0]) * d1p0(point[1]) * p1(point[2]);
 
 1172          data.phi[ek[ 2][0]].ref_grad[2] = p2(point[0]) * p0(point[1]) * d1p1(point[2]);
 
 1173          data.phi[ek[ 2][1]].ref_grad[0] = d1p3(point[0]) * p0(point[1]) * p1(point[2]);
 
 1174          data.phi[ek[ 2][1]].ref_grad[1] = p3(point[0]) * d1p0(point[1]) * p1(point[2]);
 
 1175          data.phi[ek[ 2][1]].ref_grad[2] = p3(point[0]) * p0(point[1]) * d1p1(point[2]);
 
 1176          data.phi[ek[ 3][0]].ref_grad[0] = d1p2(point[0]) * p1(point[1]) * p1(point[2]);
 
 1177          data.phi[ek[ 3][0]].ref_grad[1] = p2(point[0]) * d1p1(point[1]) * p1(point[2]);
 
 1178          data.phi[ek[ 3][0]].ref_grad[2] = p2(point[0]) * p1(point[1]) * d1p1(point[2]);
 
 1179          data.phi[ek[ 3][1]].ref_grad[0] = d1p3(point[0]) * p1(point[1]) * p1(point[2]);
 
 1180          data.phi[ek[ 3][1]].ref_grad[1] = p3(point[0]) * d1p1(point[1]) * p1(point[2]);
 
 1181          data.phi[ek[ 3][1]].ref_grad[2] = p3(point[0]) * p1(point[1]) * d1p1(point[2]);
 
 1182          data.phi[ek[ 4][0]].ref_grad[0] = d1p0(point[0]) * p2(point[1]) * p0(point[2]);
 
 1183          data.phi[ek[ 4][0]].ref_grad[1] = p0(point[0]) * d1p2(point[1]) * p0(point[2]);
 
 1184          data.phi[ek[ 4][0]].ref_grad[2] = p0(point[0]) * p2(point[1]) * d1p0(point[2]);
 
 1185          data.phi[ek[ 4][1]].ref_grad[0] = d1p0(point[0]) * p3(point[1]) * p0(point[2]);
 
 1186          data.phi[ek[ 4][1]].ref_grad[1] = p0(point[0]) * d1p3(point[1]) * p0(point[2]);
 
 1187          data.phi[ek[ 4][1]].ref_grad[2] = p0(point[0]) * p3(point[1]) * d1p0(point[2]);
 
 1188          data.phi[ek[ 5][0]].ref_grad[0] = d1p1(point[0]) * p2(point[1]) * p0(point[2]);
 
 1189          data.phi[ek[ 5][0]].ref_grad[1] = p1(point[0]) * d1p2(point[1]) * p0(point[2]);
 
 1190          data.phi[ek[ 5][0]].ref_grad[2] = p1(point[0]) * p2(point[1]) * d1p0(point[2]);
 
 1191          data.phi[ek[ 5][1]].ref_grad[0] = d1p1(point[0]) * p3(point[1]) * p0(point[2]);
 
 1192          data.phi[ek[ 5][1]].ref_grad[1] = p1(point[0]) * d1p3(point[1]) * p0(point[2]);
 
 1193          data.phi[ek[ 5][1]].ref_grad[2] = p1(point[0]) * p3(point[1]) * d1p0(point[2]);
 
 1194          data.phi[ek[ 6][0]].ref_grad[0] = d1p0(point[0]) * p2(point[1]) * p1(point[2]);
 
 1195          data.phi[ek[ 6][0]].ref_grad[1] = p0(point[0]) * d1p2(point[1]) * p1(point[2]);
 
 1196          data.phi[ek[ 6][0]].ref_grad[2] = p0(point[0]) * p2(point[1]) * d1p1(point[2]);
 
 1197          data.phi[ek[ 6][1]].ref_grad[0] = d1p0(point[0]) * p3(point[1]) * p1(point[2]);
 
 1198          data.phi[ek[ 6][1]].ref_grad[1] = p0(point[0]) * d1p3(point[1]) * p1(point[2]);
 
 1199          data.phi[ek[ 6][1]].ref_grad[2] = p0(point[0]) * p3(point[1]) * d1p1(point[2]);
 
 1200          data.phi[ek[ 7][0]].ref_grad[0] = d1p1(point[0]) * p2(point[1]) * p1(point[2]);
 
 1201          data.phi[ek[ 7][0]].ref_grad[1] = p1(point[0]) * d1p2(point[1]) * p1(point[2]);
 
 1202          data.phi[ek[ 7][0]].ref_grad[2] = p1(point[0]) * p2(point[1]) * d1p1(point[2]);
 
 1203          data.phi[ek[ 7][1]].ref_grad[0] = d1p1(point[0]) * p3(point[1]) * p1(point[2]);
 
 1204          data.phi[ek[ 7][1]].ref_grad[1] = p1(point[0]) * d1p3(point[1]) * p1(point[2]);
 
 1205          data.phi[ek[ 7][1]].ref_grad[2] = p1(point[0]) * p3(point[1]) * d1p1(point[2]);
 
 1206          data.phi[ek[ 8][0]].ref_grad[0] = d1p0(point[0]) * p0(point[1]) * p2(point[2]);
 
 1207          data.phi[ek[ 8][0]].ref_grad[1] = p0(point[0]) * d1p0(point[1]) * p2(point[2]);
 
 1208          data.phi[ek[ 8][0]].ref_grad[2] = p0(point[0]) * p0(point[1]) * d1p2(point[2]);
 
 1209          data.phi[ek[ 8][1]].ref_grad[0] = d1p0(point[0]) * p0(point[1]) * p3(point[2]);
 
 1210          data.phi[ek[ 8][1]].ref_grad[1] = p0(point[0]) * d1p0(point[1]) * p3(point[2]);
 
 1211          data.phi[ek[ 8][1]].ref_grad[2] = p0(point[0]) * p0(point[1]) * d1p3(point[2]);
 
 1212          data.phi[ek[ 9][0]].ref_grad[0] = d1p1(point[0]) * p0(point[1]) * p2(point[2]);
 
 1213          data.phi[ek[ 9][0]].ref_grad[1] = p1(point[0]) * d1p0(point[1]) * p2(point[2]);
 
 1214          data.phi[ek[ 9][0]].ref_grad[2] = p1(point[0]) * p0(point[1]) * d1p2(point[2]);
 
 1215          data.phi[ek[ 9][1]].ref_grad[0] = d1p1(point[0]) * p0(point[1]) * p3(point[2]);
 
 1216          data.phi[ek[ 9][1]].ref_grad[1] = p1(point[0]) * d1p0(point[1]) * p3(point[2]);
 
 1217          data.phi[ek[ 9][1]].ref_grad[2] = p1(point[0]) * p0(point[1]) * d1p3(point[2]);
 
 1218          data.phi[ek[10][0]].ref_grad[0] = d1p0(point[0]) * p1(point[1]) * p2(point[2]);
 
 1219          data.phi[ek[10][0]].ref_grad[1] = p0(point[0]) * d1p1(point[1]) * p2(point[2]);
 
 1220          data.phi[ek[10][0]].ref_grad[2] = p0(point[0]) * p1(point[1]) * d1p2(point[2]);
 
 1221          data.phi[ek[10][1]].ref_grad[0] = d1p0(point[0]) * p1(point[1]) * p3(point[2]);
 
 1222          data.phi[ek[10][1]].ref_grad[1] = p0(point[0]) * d1p1(point[1]) * p3(point[2]);
 
 1223          data.phi[ek[10][1]].ref_grad[2] = p0(point[0]) * p1(point[1]) * d1p3(point[2]);
 
 1224          data.phi[ek[11][0]].ref_grad[0] = d1p1(point[0]) * p1(point[1]) * p2(point[2]);
 
 1225          data.phi[ek[11][0]].ref_grad[1] = p1(point[0]) * d1p1(point[1]) * p2(point[2]);
 
 1226          data.phi[ek[11][0]].ref_grad[2] = p1(point[0]) * p1(point[1]) * d1p2(point[2]);
 
 1227          data.phi[ek[11][1]].ref_grad[0] = d1p1(point[0]) * p1(point[1]) * p3(point[2]);
 
 1228          data.phi[ek[11][1]].ref_grad[1] = p1(point[0]) * d1p1(point[1]) * p3(point[2]);
 
 1229          data.phi[ek[11][1]].ref_grad[2] = p1(point[0]) * p1(point[1]) * d1p3(point[2]);
 
 1231          data.phi[qk[0][0]].ref_grad[0] = d1p2(point[0]) * p2(point[1]) * p0(point[2]);
 
 1232          data.phi[qk[0][0]].ref_grad[1] = p2(point[0]) * d1p2(point[1]) * p0(point[2]);
 
 1233          data.phi[qk[0][0]].ref_grad[2] = p2(point[0]) * p2(point[1]) * d1p0(point[2]);
 
 1234          data.phi[qk[0][1]].ref_grad[0] = d1p3(point[0]) * p2(point[1]) * p0(point[2]);
 
 1235          data.phi[qk[0][1]].ref_grad[1] = p3(point[0]) * d1p2(point[1]) * p0(point[2]);
 
 1236          data.phi[qk[0][1]].ref_grad[2] = p3(point[0]) * p2(point[1]) * d1p0(point[2]);
 
 1237          data.phi[qk[0][2]].ref_grad[0] = d1p2(point[0]) * p3(point[1]) * p0(point[2]);
 
 1238          data.phi[qk[0][2]].ref_grad[1] = p2(point[0]) * d1p3(point[1]) * p0(point[2]);
 
 1239          data.phi[qk[0][2]].ref_grad[2] = p2(point[0]) * p3(point[1]) * d1p0(point[2]);
 
 1240          data.phi[qk[0][3]].ref_grad[0] = d1p3(point[0]) * p3(point[1]) * p0(point[2]);
 
 1241          data.phi[qk[0][3]].ref_grad[1] = p3(point[0]) * d1p3(point[1]) * p0(point[2]);
 
 1242          data.phi[qk[0][3]].ref_grad[2] = p3(point[0]) * p3(point[1]) * d1p0(point[2]);
 
 1243          data.phi[qk[1][0]].ref_grad[0] = d1p2(point[0]) * p2(point[1]) * p1(point[2]);
 
 1244          data.phi[qk[1][0]].ref_grad[1] = p2(point[0]) * d1p2(point[1]) * p1(point[2]);
 
 1245          data.phi[qk[1][0]].ref_grad[2] = p2(point[0]) * p2(point[1]) * d1p1(point[2]);
 
 1246          data.phi[qk[1][1]].ref_grad[0] = d1p3(point[0]) * p2(point[1]) * p1(point[2]);
 
 1247          data.phi[qk[1][1]].ref_grad[1] = p3(point[0]) * d1p2(point[1]) * p1(point[2]);
 
 1248          data.phi[qk[1][1]].ref_grad[2] = p3(point[0]) * p2(point[1]) * d1p1(point[2]);
 
 1249          data.phi[qk[1][2]].ref_grad[0] = d1p2(point[0]) * p3(point[1]) * p1(point[2]);
 
 1250          data.phi[qk[1][2]].ref_grad[1] = p2(point[0]) * d1p3(point[1]) * p1(point[2]);
 
 1251          data.phi[qk[1][2]].ref_grad[2] = p2(point[0]) * p3(point[1]) * d1p1(point[2]);
 
 1252          data.phi[qk[1][3]].ref_grad[0] = d1p3(point[0]) * p3(point[1]) * p1(point[2]);
 
 1253          data.phi[qk[1][3]].ref_grad[1] = p3(point[0]) * d1p3(point[1]) * p1(point[2]);
 
 1254          data.phi[qk[1][3]].ref_grad[2] = p3(point[0]) * p3(point[1]) * d1p1(point[2]);
 
 1255          data.phi[qk[2][0]].ref_grad[0] = d1p2(point[0]) * p0(point[1]) * p2(point[2]);
 
 1256          data.phi[qk[2][0]].ref_grad[1] = p2(point[0]) * d1p0(point[1]) * p2(point[2]);
 
 1257          data.phi[qk[2][0]].ref_grad[2] = p2(point[0]) * p0(point[1]) * d1p2(point[2]);
 
 1258          data.phi[qk[2][1]].ref_grad[0] = d1p3(point[0]) * p0(point[1]) * p2(point[2]);
 
 1259          data.phi[qk[2][1]].ref_grad[1] = p3(point[0]) * d1p0(point[1]) * p2(point[2]);
 
 1260          data.phi[qk[2][1]].ref_grad[2] = p3(point[0]) * p0(point[1]) * d1p2(point[2]);
 
 1261          data.phi[qk[2][2]].ref_grad[0] = d1p2(point[0]) * p0(point[1]) * p3(point[2]);
 
 1262          data.phi[qk[2][2]].ref_grad[1] = p2(point[0]) * d1p0(point[1]) * p3(point[2]);
 
 1263          data.phi[qk[2][2]].ref_grad[2] = p2(point[0]) * p0(point[1]) * d1p3(point[2]);
 
 1264          data.phi[qk[2][3]].ref_grad[0] = d1p3(point[0]) * p0(point[1]) * p3(point[2]);
 
 1265          data.phi[qk[2][3]].ref_grad[1] = p3(point[0]) * d1p0(point[1]) * p3(point[2]);
 
 1266          data.phi[qk[2][3]].ref_grad[2] = p3(point[0]) * p0(point[1]) * d1p3(point[2]);
 
 1267          data.phi[qk[3][0]].ref_grad[0] = d1p2(point[0]) * p1(point[1]) * p2(point[2]);
 
 1268          data.phi[qk[3][0]].ref_grad[1] = p2(point[0]) * d1p1(point[1]) * p2(point[2]);
 
 1269          data.phi[qk[3][0]].ref_grad[2] = p2(point[0]) * p1(point[1]) * d1p2(point[2]);
 
 1270          data.phi[qk[3][1]].ref_grad[0] = d1p3(point[0]) * p1(point[1]) * p2(point[2]);
 
 1271          data.phi[qk[3][1]].ref_grad[1] = p3(point[0]) * d1p1(point[1]) * p2(point[2]);
 
 1272          data.phi[qk[3][1]].ref_grad[2] = p3(point[0]) * p1(point[1]) * d1p2(point[2]);
 
 1273          data.phi[qk[3][2]].ref_grad[0] = d1p2(point[0]) * p1(point[1]) * p3(point[2]);
 
 1274          data.phi[qk[3][2]].ref_grad[1] = p2(point[0]) * d1p1(point[1]) * p3(point[2]);
 
 1275          data.phi[qk[3][2]].ref_grad[2] = p2(point[0]) * p1(point[1]) * d1p3(point[2]);
 
 1276          data.phi[qk[3][3]].ref_grad[0] = d1p3(point[0]) * p1(point[1]) * p3(point[2]);
 
 1277          data.phi[qk[3][3]].ref_grad[1] = p3(point[0]) * d1p1(point[1]) * p3(point[2]);
 
 1278          data.phi[qk[3][3]].ref_grad[2] = p3(point[0]) * p1(point[1]) * d1p3(point[2]);
 
 1279          data.phi[qk[4][0]].ref_grad[0] = d1p0(point[0]) * p2(point[1]) * p2(point[2]);
 
 1280          data.phi[qk[4][0]].ref_grad[1] = p0(point[0]) * d1p2(point[1]) * p2(point[2]);
 
 1281          data.phi[qk[4][0]].ref_grad[2] = p0(point[0]) * p2(point[1]) * d1p2(point[2]);
 
 1282          data.phi[qk[4][1]].ref_grad[0] = d1p0(point[0]) * p3(point[1]) * p2(point[2]);
 
 1283          data.phi[qk[4][1]].ref_grad[1] = p0(point[0]) * d1p3(point[1]) * p2(point[2]);
 
 1284          data.phi[qk[4][1]].ref_grad[2] = p0(point[0]) * p3(point[1]) * d1p2(point[2]);
 
 1285          data.phi[qk[4][2]].ref_grad[0] = d1p0(point[0]) * p2(point[1]) * p3(point[2]);
 
 1286          data.phi[qk[4][2]].ref_grad[1] = p0(point[0]) * d1p2(point[1]) * p3(point[2]);
 
 1287          data.phi[qk[4][2]].ref_grad[2] = p0(point[0]) * p2(point[1]) * d1p3(point[2]);
 
 1288          data.phi[qk[4][3]].ref_grad[0] = d1p0(point[0]) * p3(point[1]) * p3(point[2]);
 
 1289          data.phi[qk[4][3]].ref_grad[1] = p0(point[0]) * d1p3(point[1]) * p3(point[2]);
 
 1290          data.phi[qk[4][3]].ref_grad[2] = p0(point[0]) * p3(point[1]) * d1p3(point[2]);
 
 1291          data.phi[qk[5][0]].ref_grad[0] = d1p1(point[0]) * p2(point[1]) * p2(point[2]);
 
 1292          data.phi[qk[5][0]].ref_grad[1] = p1(point[0]) * d1p2(point[1]) * p2(point[2]);
 
 1293          data.phi[qk[5][0]].ref_grad[2] = p1(point[0]) * p2(point[1]) * d1p2(point[2]);
 
 1294          data.phi[qk[5][1]].ref_grad[0] = d1p1(point[0]) * p3(point[1]) * p2(point[2]);
 
 1295          data.phi[qk[5][1]].ref_grad[1] = p1(point[0]) * d1p3(point[1]) * p2(point[2]);
 
 1296          data.phi[qk[5][1]].ref_grad[2] = p1(point[0]) * p3(point[1]) * d1p2(point[2]);
 
 1297          data.phi[qk[5][2]].ref_grad[0] = d1p1(point[0]) * p2(point[1]) * p3(point[2]);
 
 1298          data.phi[qk[5][2]].ref_grad[1] = p1(point[0]) * d1p2(point[1]) * p3(point[2]);
 
 1299          data.phi[qk[5][2]].ref_grad[2] = p1(point[0]) * p2(point[1]) * d1p3(point[2]);
 
 1300          data.phi[qk[5][3]].ref_grad[0] = d1p1(point[0]) * p3(point[1]) * p3(point[2]);
 
 1301          data.phi[qk[5][3]].ref_grad[1] = p1(point[0]) * d1p3(point[1]) * p3(point[2]);
 
 1302          data.phi[qk[5][3]].ref_grad[2] = p1(point[0]) * p3(point[1]) * d1p3(point[2]);
 
 1304          data.phi[56].ref_grad[0] = d1p2(point[0]) * p2(point[1]) * p2(point[2]);
 
 1305          data.phi[56].ref_grad[1] = p2(point[0]) * d1p2(point[1]) * p2(point[2]);
 
 1306          data.phi[56].ref_grad[2] = p2(point[0]) * p2(point[1]) * d1p2(point[2]);
 
 1307          data.phi[57].ref_grad[0] = d1p3(point[0]) * p2(point[1]) * p2(point[2]);
 
 1308          data.phi[57].ref_grad[1] = p3(point[0]) * d1p2(point[1]) * p2(point[2]);
 
 1309          data.phi[57].ref_grad[2] = p3(point[0]) * p2(point[1]) * d1p2(point[2]);
 
 1310          data.phi[58].ref_grad[0] = d1p2(point[0]) * p3(point[1]) * p2(point[2]);
 
 1311          data.phi[58].ref_grad[1] = p2(point[0]) * d1p3(point[1]) * p2(point[2]);
 
 1312          data.phi[58].ref_grad[2] = p2(point[0]) * p3(point[1]) * d1p2(point[2]);
 
 1313          data.phi[59].ref_grad[0] = d1p3(point[0]) * p3(point[1]) * p2(point[2]);
 
 1314          data.phi[59].ref_grad[1] = p3(point[0]) * d1p3(point[1]) * p2(point[2]);
 
 1315          data.phi[59].ref_grad[2] = p3(point[0]) * p3(point[1]) * d1p2(point[2]);
 
 1316          data.phi[60].ref_grad[0] = d1p2(point[0]) * p2(point[1]) * p3(point[2]);
 
 1317          data.phi[60].ref_grad[1] = p2(point[0]) * d1p2(point[1]) * p3(point[2]);
 
 1318          data.phi[60].ref_grad[2] = p2(point[0]) * p2(point[1]) * d1p3(point[2]);
 
 1319          data.phi[61].ref_grad[0] = d1p3(point[0]) * p2(point[1]) * p3(point[2]);
 
 1320          data.phi[61].ref_grad[1] = p3(point[0]) * d1p2(point[1]) * p3(point[2]);
 
 1321          data.phi[61].ref_grad[2] = p3(point[0]) * p2(point[1]) * d1p3(point[2]);
 
 1322          data.phi[62].ref_grad[0] = d1p2(point[0]) * p3(point[1]) * p3(point[2]);
 
 1323          data.phi[62].ref_grad[1] = p2(point[0]) * d1p3(point[1]) * p3(point[2]);
 
 1324          data.phi[62].ref_grad[2] = p2(point[0]) * p3(point[1]) * d1p3(point[2]);
 
 1325          data.phi[63].ref_grad[0] = d1p3(point[0]) * p3(point[1]) * p3(point[2]);
 
 1326          data.phi[63].ref_grad[1] = p3(point[0]) * d1p3(point[1]) * p3(point[2]);
 
 1327          data.phi[63].ref_grad[2] = p3(point[0]) * p3(point[1]) * d1p3(point[2]);
 
 1339        template<
typename EvalData_>
 
 1342          using namespace Lagrange3::Intern;
 
 1345          data.phi[0].ref_hess[0][0] = d2p0(point[0]) * p0(point[1]) * p0(point[2]);
 
 1346          data.phi[0].ref_hess[1][1] = p0(point[0]) * d2p0(point[1]) * p0(point[2]);
 
 1347          data.phi[0].ref_hess[2][2] = p0(point[0]) * p0(point[1]) * d2p0(point[2]);
 
 1348          data.phi[0].ref_hess[0][1] =
 
 1349          data.phi[0].ref_hess[1][0] = d1p0(point[0]) * d1p0(point[1]) * p0(point[2]);
 
 1350          data.phi[0].ref_hess[0][2] =
 
 1351          data.phi[0].ref_hess[2][0] = d1p0(point[0]) * p0(point[1]) * d1p0(point[2]);
 
 1352          data.phi[0].ref_hess[1][2] =
 
 1353          data.phi[0].ref_hess[2][1] = p0(point[0]) * d1p0(point[1]) * d1p0(point[2]);
 
 1354          data.phi[1].ref_hess[0][0] = d2p1(point[0]) * p0(point[1]) * p0(point[2]);
 
 1355          data.phi[1].ref_hess[1][1] = p1(point[0]) * d2p0(point[1]) * p0(point[2]);
 
 1356          data.phi[1].ref_hess[2][2] = p1(point[0]) * p0(point[1]) * d2p0(point[2]);
 
 1357          data.phi[1].ref_hess[0][1] =
 
 1358          data.phi[1].ref_hess[1][0] = d1p1(point[0]) * d1p0(point[1]) * p0(point[2]);
 
 1359          data.phi[1].ref_hess[0][2] =
 
 1360          data.phi[1].ref_hess[2][0] = d1p1(point[0]) * p0(point[1]) * d1p0(point[2]);
 
 1361          data.phi[1].ref_hess[1][2] =
 
 1362          data.phi[1].ref_hess[2][1] = p1(point[0]) * d1p0(point[1]) * d1p0(point[2]);
 
 1363          data.phi[2].ref_hess[0][0] = d2p0(point[0]) * p1(point[1]) * p0(point[2]);
 
 1364          data.phi[2].ref_hess[1][1] = p0(point[0]) * d2p1(point[1]) * p0(point[2]);
 
 1365          data.phi[2].ref_hess[2][2] = p0(point[0]) * p1(point[1]) * d2p0(point[2]);
 
 1366          data.phi[2].ref_hess[0][1] =
 
 1367          data.phi[2].ref_hess[1][0] = d1p0(point[0]) * d1p1(point[1]) * p0(point[2]);
 
 1368          data.phi[2].ref_hess[0][2] =
 
 1369          data.phi[2].ref_hess[2][0] = d1p0(point[0]) * p1(point[1]) * d1p0(point[2]);
 
 1370          data.phi[2].ref_hess[1][2] =
 
 1371          data.phi[2].ref_hess[2][1] = p0(point[0]) * d1p1(point[1]) * d1p0(point[2]);
 
 1372          data.phi[3].ref_hess[0][0] = d2p1(point[0]) * p1(point[1]) * p0(point[2]);
 
 1373          data.phi[3].ref_hess[1][1] = p1(point[0]) * d2p1(point[1]) * p0(point[2]);
 
 1374          data.phi[3].ref_hess[2][2] = p1(point[0]) * p1(point[1]) * d2p0(point[2]);
 
 1375          data.phi[3].ref_hess[0][1] =
 
 1376          data.phi[3].ref_hess[1][0] = d1p1(point[0]) * d1p1(point[1]) * p0(point[2]);
 
 1377          data.phi[3].ref_hess[0][2] =
 
 1378          data.phi[3].ref_hess[2][0] = d1p1(point[0]) * p1(point[1]) * d1p0(point[2]);
 
 1379          data.phi[3].ref_hess[1][2] =
 
 1380          data.phi[3].ref_hess[2][1] = p1(point[0]) * d1p1(point[1]) * d1p0(point[2]);
 
 1381          data.phi[4].ref_hess[0][0] = d2p0(point[0]) * p0(point[1]) * p1(point[2]);
 
 1382          data.phi[4].ref_hess[1][1] = p0(point[0]) * d2p0(point[1]) * p1(point[2]);
 
 1383          data.phi[4].ref_hess[2][2] = p0(point[0]) * p0(point[1]) * d2p1(point[2]);
 
 1384          data.phi[4].ref_hess[0][1] =
 
 1385          data.phi[4].ref_hess[1][0] = d1p0(point[0]) * d1p0(point[1]) * p1(point[2]);
 
 1386          data.phi[4].ref_hess[0][2] =
 
 1387          data.phi[4].ref_hess[2][0] = d1p0(point[0]) * p0(point[1]) * d1p1(point[2]);
 
 1388          data.phi[4].ref_hess[1][2] =
 
 1389          data.phi[4].ref_hess[2][1] = p0(point[0]) * d1p0(point[1]) * d1p1(point[2]);
 
 1390          data.phi[5].ref_hess[0][0] = d2p1(point[0]) * p0(point[1]) * p1(point[2]);
 
 1391          data.phi[5].ref_hess[1][1] = p1(point[0]) * d2p0(point[1]) * p1(point[2]);
 
 1392          data.phi[5].ref_hess[2][2] = p1(point[0]) * p0(point[1]) * d2p1(point[2]);
 
 1393          data.phi[5].ref_hess[0][1] =
 
 1394          data.phi[5].ref_hess[1][0] = d1p1(point[0]) * d1p0(point[1]) * p1(point[2]);
 
 1395          data.phi[5].ref_hess[0][2] =
 
 1396          data.phi[5].ref_hess[2][0] = d1p1(point[0]) * p0(point[1]) * d1p1(point[2]);
 
 1397          data.phi[5].ref_hess[1][2] =
 
 1398          data.phi[5].ref_hess[2][1] = p1(point[0]) * d1p0(point[1]) * d1p1(point[2]);
 
 1399          data.phi[6].ref_hess[0][0] = d2p0(point[0]) * p1(point[1]) * p1(point[2]);
 
 1400          data.phi[6].ref_hess[1][1] = p0(point[0]) * d2p1(point[1]) * p1(point[2]);
 
 1401          data.phi[6].ref_hess[2][2] = p0(point[0]) * p1(point[1]) * d2p1(point[2]);
 
 1402          data.phi[6].ref_hess[0][1] =
 
 1403          data.phi[6].ref_hess[1][0] = d1p0(point[0]) * d1p1(point[1]) * p1(point[2]);
 
 1404          data.phi[6].ref_hess[0][2] =
 
 1405          data.phi[6].ref_hess[2][0] = d1p0(point[0]) * p1(point[1]) * d1p1(point[2]);
 
 1406          data.phi[6].ref_hess[1][2] =
 
 1407          data.phi[6].ref_hess[2][1] = p0(point[0]) * d1p1(point[1]) * d1p1(point[2]);
 
 1408          data.phi[7].ref_hess[0][0] = d2p1(point[0]) * p1(point[1]) * p1(point[2]);
 
 1409          data.phi[7].ref_hess[1][1] = p1(point[0]) * d2p1(point[1]) * p1(point[2]);
 
 1410          data.phi[7].ref_hess[2][2] = p1(point[0]) * p1(point[1]) * d2p1(point[2]);
 
 1411          data.phi[7].ref_hess[0][1] =
 
 1412          data.phi[7].ref_hess[1][0] = d1p1(point[0]) * d1p1(point[1]) * p1(point[2]);
 
 1413          data.phi[7].ref_hess[0][2] =
 
 1414          data.phi[7].ref_hess[2][0] = d1p1(point[0]) * p1(point[1]) * d1p1(point[2]);
 
 1415          data.phi[7].ref_hess[1][2] =
 
 1416          data.phi[7].ref_hess[2][1] = p1(point[0]) * d1p1(point[1]) * d1p1(point[2]);
 
 1417          data.phi[ek[ 0][0]].ref_hess[0][0] = d2p2(point[0]) * p0(point[1]) * p0(point[2]);
 
 1418          data.phi[ek[ 0][0]].ref_hess[1][1] = p2(point[0]) * d2p0(point[1]) * p0(point[2]);
 
 1419          data.phi[ek[ 0][0]].ref_hess[2][2] = p2(point[0]) * p0(point[1]) * d2p0(point[2]);
 
 1420          data.phi[ek[ 0][0]].ref_hess[0][1] =
 
 1421          data.phi[ek[ 0][0]].ref_hess[1][0] = d1p2(point[0]) * d1p0(point[1]) * p0(point[2]);
 
 1422          data.phi[ek[ 0][0]].ref_hess[0][2] =
 
 1423          data.phi[ek[ 0][0]].ref_hess[2][0] = d1p2(point[0]) * p0(point[1]) * d1p0(point[2]);
 
 1424          data.phi[ek[ 0][0]].ref_hess[1][2] =
 
 1425          data.phi[ek[ 0][0]].ref_hess[2][1] = p2(point[0]) * d1p0(point[1]) * d1p0(point[2]);
 
 1426          data.phi[ek[ 0][1]].ref_hess[0][0] = d2p3(point[0]) * p0(point[1]) * p0(point[2]);
 
 1427          data.phi[ek[ 0][1]].ref_hess[1][1] = p3(point[0]) * d2p0(point[1]) * p0(point[2]);
 
 1428          data.phi[ek[ 0][1]].ref_hess[2][2] = p3(point[0]) * p0(point[1]) * d2p0(point[2]);
 
 1429          data.phi[ek[ 0][1]].ref_hess[0][1] =
 
 1430          data.phi[ek[ 0][1]].ref_hess[1][0] = d1p3(point[0]) * d1p0(point[1]) * p0(point[2]);
 
 1431          data.phi[ek[ 0][1]].ref_hess[0][2] =
 
 1432          data.phi[ek[ 0][1]].ref_hess[2][0] = d1p3(point[0]) * p0(point[1]) * d1p0(point[2]);
 
 1433          data.phi[ek[ 0][1]].ref_hess[1][2] =
 
 1434          data.phi[ek[ 0][1]].ref_hess[2][1] = p3(point[0]) * d1p0(point[1]) * d1p0(point[2]);
 
 1435          data.phi[ek[ 1][0]].ref_hess[0][0] = d2p2(point[0]) * p1(point[1]) * p0(point[2]);
 
 1436          data.phi[ek[ 1][0]].ref_hess[1][1] = p2(point[0]) * d2p1(point[1]) * p0(point[2]);
 
 1437          data.phi[ek[ 1][0]].ref_hess[2][2] = p2(point[0]) * p1(point[1]) * d2p0(point[2]);
 
 1438          data.phi[ek[ 1][0]].ref_hess[0][1] =
 
 1439          data.phi[ek[ 1][0]].ref_hess[1][0] = d1p2(point[0]) * d1p1(point[1]) * p0(point[2]);
 
 1440          data.phi[ek[ 1][0]].ref_hess[0][2] =
 
 1441          data.phi[ek[ 1][0]].ref_hess[2][0] = d1p2(point[0]) * p1(point[1]) * d1p0(point[2]);
 
 1442          data.phi[ek[ 1][0]].ref_hess[1][2] =
 
 1443          data.phi[ek[ 1][0]].ref_hess[2][1] = p2(point[0]) * d1p1(point[1]) * d1p0(point[2]);
 
 1444          data.phi[ek[ 1][1]].ref_hess[0][0] = d2p3(point[0]) * p1(point[1]) * p0(point[2]);
 
 1445          data.phi[ek[ 1][1]].ref_hess[1][1] = p3(point[0]) * d2p1(point[1]) * p0(point[2]);
 
 1446          data.phi[ek[ 1][1]].ref_hess[2][2] = p3(point[0]) * p1(point[1]) * d2p0(point[2]);
 
 1447          data.phi[ek[ 1][1]].ref_hess[0][1] =
 
 1448          data.phi[ek[ 1][1]].ref_hess[1][0] = d1p3(point[0]) * d1p1(point[1]) * p0(point[2]);
 
 1449          data.phi[ek[ 1][1]].ref_hess[0][2] =
 
 1450          data.phi[ek[ 1][1]].ref_hess[2][0] = d1p3(point[0]) * p1(point[1]) * d1p0(point[2]);
 
 1451          data.phi[ek[ 1][1]].ref_hess[1][2] =
 
 1452          data.phi[ek[ 1][1]].ref_hess[2][1] = p3(point[0]) * d1p1(point[1]) * d1p0(point[2]);
 
 1453          data.phi[ek[ 2][0]].ref_hess[0][0] = d2p2(point[0]) * p0(point[1]) * p1(point[2]);
 
 1454          data.phi[ek[ 2][0]].ref_hess[1][1] = p2(point[0]) * d2p0(point[1]) * p1(point[2]);
 
 1455          data.phi[ek[ 2][0]].ref_hess[2][2] = p2(point[0]) * p0(point[1]) * d2p1(point[2]);
 
 1456          data.phi[ek[ 2][0]].ref_hess[0][1] =
 
 1457          data.phi[ek[ 2][0]].ref_hess[1][0] = d1p2(point[0]) * d1p0(point[1]) * p1(point[2]);
 
 1458          data.phi[ek[ 2][0]].ref_hess[0][2] =
 
 1459          data.phi[ek[ 2][0]].ref_hess[2][0] = d1p2(point[0]) * p0(point[1]) * d1p1(point[2]);
 
 1460          data.phi[ek[ 2][0]].ref_hess[1][2] =
 
 1461          data.phi[ek[ 2][0]].ref_hess[2][1] = p2(point[0]) * d1p0(point[1]) * d1p1(point[2]);
 
 1462          data.phi[ek[ 2][1]].ref_hess[0][0] = d2p3(point[0]) * p0(point[1]) * p1(point[2]);
 
 1463          data.phi[ek[ 2][1]].ref_hess[1][1] = p3(point[0]) * d2p0(point[1]) * p1(point[2]);
 
 1464          data.phi[ek[ 2][1]].ref_hess[2][2] = p3(point[0]) * p0(point[1]) * d2p1(point[2]);
 
 1465          data.phi[ek[ 2][1]].ref_hess[0][1] =
 
 1466          data.phi[ek[ 2][1]].ref_hess[1][0] = d1p3(point[0]) * d1p0(point[1]) * p1(point[2]);
 
 1467          data.phi[ek[ 2][1]].ref_hess[0][2] =
 
 1468          data.phi[ek[ 2][1]].ref_hess[2][0] = d1p3(point[0]) * p0(point[1]) * d1p1(point[2]);
 
 1469          data.phi[ek[ 2][1]].ref_hess[1][2] =
 
 1470          data.phi[ek[ 2][1]].ref_hess[2][1] = p3(point[0]) * d1p0(point[1]) * d1p1(point[2]);
 
 1471          data.phi[ek[ 3][0]].ref_hess[0][0] = d2p2(point[0]) * p1(point[1]) * p1(point[2]);
 
 1472          data.phi[ek[ 3][0]].ref_hess[1][1] = p2(point[0]) * d2p1(point[1]) * p1(point[2]);
 
 1473          data.phi[ek[ 3][0]].ref_hess[2][2] = p2(point[0]) * p1(point[1]) * d2p1(point[2]);
 
 1474          data.phi[ek[ 3][0]].ref_hess[0][1] =
 
 1475          data.phi[ek[ 3][0]].ref_hess[1][0] = d1p2(point[0]) * d1p1(point[1]) * p1(point[2]);
 
 1476          data.phi[ek[ 3][0]].ref_hess[0][2] =
 
 1477          data.phi[ek[ 3][0]].ref_hess[2][0] = d1p2(point[0]) * p1(point[1]) * d1p1(point[2]);
 
 1478          data.phi[ek[ 3][0]].ref_hess[1][2] =
 
 1479          data.phi[ek[ 3][0]].ref_hess[2][1] = p2(point[0]) * d1p1(point[1]) * d1p1(point[2]);
 
 1480          data.phi[ek[ 3][1]].ref_hess[0][0] = d2p3(point[0]) * p1(point[1]) * p1(point[2]);
 
 1481          data.phi[ek[ 3][1]].ref_hess[1][1] = p3(point[0]) * d2p1(point[1]) * p1(point[2]);
 
 1482          data.phi[ek[ 3][1]].ref_hess[2][2] = p3(point[0]) * p1(point[1]) * d2p1(point[2]);
 
 1483          data.phi[ek[ 3][1]].ref_hess[0][1] =
 
 1484          data.phi[ek[ 3][1]].ref_hess[1][0] = d1p3(point[0]) * d1p1(point[1]) * p1(point[2]);
 
 1485          data.phi[ek[ 3][1]].ref_hess[0][2] =
 
 1486          data.phi[ek[ 3][1]].ref_hess[2][0] = d1p3(point[0]) * p1(point[1]) * d1p1(point[2]);
 
 1487          data.phi[ek[ 3][1]].ref_hess[1][2] =
 
 1488          data.phi[ek[ 3][1]].ref_hess[2][1] = p3(point[0]) * d1p1(point[1]) * d1p1(point[2]);
 
 1489          data.phi[ek[ 4][0]].ref_hess[0][0] = d2p0(point[0]) * p2(point[1]) * p0(point[2]);
 
 1490          data.phi[ek[ 4][0]].ref_hess[1][1] = p0(point[0]) * d2p2(point[1]) * p0(point[2]);
 
 1491          data.phi[ek[ 4][0]].ref_hess[2][2] = p0(point[0]) * p2(point[1]) * d2p0(point[2]);
 
 1492          data.phi[ek[ 4][0]].ref_hess[0][1] =
 
 1493          data.phi[ek[ 4][0]].ref_hess[1][0] = d1p0(point[0]) * d1p2(point[1]) * p0(point[2]);
 
 1494          data.phi[ek[ 4][0]].ref_hess[0][2] =
 
 1495          data.phi[ek[ 4][0]].ref_hess[2][0] = d1p0(point[0]) * p2(point[1]) * d1p0(point[2]);
 
 1496          data.phi[ek[ 4][0]].ref_hess[1][2] =
 
 1497          data.phi[ek[ 4][0]].ref_hess[2][1] = p0(point[0]) * d1p2(point[1]) * d1p0(point[2]);
 
 1498          data.phi[ek[ 4][1]].ref_hess[0][0] = d2p0(point[0]) * p3(point[1]) * p0(point[2]);
 
 1499          data.phi[ek[ 4][1]].ref_hess[1][1] = p0(point[0]) * d2p3(point[1]) * p0(point[2]);
 
 1500          data.phi[ek[ 4][1]].ref_hess[2][2] = p0(point[0]) * p3(point[1]) * d2p0(point[2]);
 
 1501          data.phi[ek[ 4][1]].ref_hess[0][1] =
 
 1502          data.phi[ek[ 4][1]].ref_hess[1][0] = d1p0(point[0]) * d1p3(point[1]) * p0(point[2]);
 
 1503          data.phi[ek[ 4][1]].ref_hess[0][2] =
 
 1504          data.phi[ek[ 4][1]].ref_hess[2][0] = d1p0(point[0]) * p3(point[1]) * d1p0(point[2]);
 
 1505          data.phi[ek[ 4][1]].ref_hess[1][2] =
 
 1506          data.phi[ek[ 4][1]].ref_hess[2][1] = p0(point[0]) * d1p3(point[1]) * d1p0(point[2]);
 
 1507          data.phi[ek[ 5][0]].ref_hess[0][0] = d2p1(point[0]) * p2(point[1]) * p0(point[2]);
 
 1508          data.phi[ek[ 5][0]].ref_hess[1][1] = p1(point[0]) * d2p2(point[1]) * p0(point[2]);
 
 1509          data.phi[ek[ 5][0]].ref_hess[2][2] = p1(point[0]) * p2(point[1]) * d2p0(point[2]);
 
 1510          data.phi[ek[ 5][0]].ref_hess[0][1] =
 
 1511          data.phi[ek[ 5][0]].ref_hess[1][0] = d1p1(point[0]) * d1p2(point[1]) * p0(point[2]);
 
 1512          data.phi[ek[ 5][0]].ref_hess[0][2] =
 
 1513          data.phi[ek[ 5][0]].ref_hess[2][0] = d1p1(point[0]) * p2(point[1]) * d1p0(point[2]);
 
 1514          data.phi[ek[ 5][0]].ref_hess[1][2] =
 
 1515          data.phi[ek[ 5][0]].ref_hess[2][1] = p1(point[0]) * d1p2(point[1]) * d1p0(point[2]);
 
 1516          data.phi[ek[ 5][1]].ref_hess[0][0] = d2p1(point[0]) * p3(point[1]) * p0(point[2]);
 
 1517          data.phi[ek[ 5][1]].ref_hess[1][1] = p1(point[0]) * d2p3(point[1]) * p0(point[2]);
 
 1518          data.phi[ek[ 5][1]].ref_hess[2][2] = p1(point[0]) * p3(point[1]) * d2p0(point[2]);
 
 1519          data.phi[ek[ 5][1]].ref_hess[0][1] =
 
 1520          data.phi[ek[ 5][1]].ref_hess[1][0] = d1p1(point[0]) * d1p3(point[1]) * p0(point[2]);
 
 1521          data.phi[ek[ 5][1]].ref_hess[0][2] =
 
 1522          data.phi[ek[ 5][1]].ref_hess[2][0] = d1p1(point[0]) * p3(point[1]) * d1p0(point[2]);
 
 1523          data.phi[ek[ 5][1]].ref_hess[1][2] =
 
 1524          data.phi[ek[ 5][1]].ref_hess[2][1] = p1(point[0]) * d1p3(point[1]) * d1p0(point[2]);
 
 1525          data.phi[ek[ 6][0]].ref_hess[0][0] = d2p0(point[0]) * p2(point[1]) * p1(point[2]);
 
 1526          data.phi[ek[ 6][0]].ref_hess[1][1] = p0(point[0]) * d2p2(point[1]) * p1(point[2]);
 
 1527          data.phi[ek[ 6][0]].ref_hess[2][2] = p0(point[0]) * p2(point[1]) * d2p1(point[2]);
 
 1528          data.phi[ek[ 6][0]].ref_hess[0][1] =
 
 1529          data.phi[ek[ 6][0]].ref_hess[1][0] = d1p0(point[0]) * d1p2(point[1]) * p1(point[2]);
 
 1530          data.phi[ek[ 6][0]].ref_hess[0][2] =
 
 1531          data.phi[ek[ 6][0]].ref_hess[2][0] = d1p0(point[0]) * p2(point[1]) * d1p1(point[2]);
 
 1532          data.phi[ek[ 6][0]].ref_hess[1][2] =
 
 1533          data.phi[ek[ 6][0]].ref_hess[2][1] = p0(point[0]) * d1p2(point[1]) * d1p1(point[2]);
 
 1534          data.phi[ek[ 6][1]].ref_hess[0][0] = d2p0(point[0]) * p3(point[1]) * p1(point[2]);
 
 1535          data.phi[ek[ 6][1]].ref_hess[1][1] = p0(point[0]) * d2p3(point[1]) * p1(point[2]);
 
 1536          data.phi[ek[ 6][1]].ref_hess[2][2] = p0(point[0]) * p3(point[1]) * d2p1(point[2]);
 
 1537          data.phi[ek[ 6][1]].ref_hess[0][1] =
 
 1538          data.phi[ek[ 6][1]].ref_hess[1][0] = d1p0(point[0]) * d1p3(point[1]) * p1(point[2]);
 
 1539          data.phi[ek[ 6][1]].ref_hess[0][2] =
 
 1540          data.phi[ek[ 6][1]].ref_hess[2][0] = d1p0(point[0]) * p3(point[1]) * d1p1(point[2]);
 
 1541          data.phi[ek[ 6][1]].ref_hess[1][2] =
 
 1542          data.phi[ek[ 6][1]].ref_hess[2][1] = p0(point[0]) * d1p3(point[1]) * d1p1(point[2]);
 
 1543          data.phi[ek[ 7][0]].ref_hess[0][0] = d2p1(point[0]) * p2(point[1]) * p1(point[2]);
 
 1544          data.phi[ek[ 7][0]].ref_hess[1][1] = p1(point[0]) * d2p2(point[1]) * p1(point[2]);
 
 1545          data.phi[ek[ 7][0]].ref_hess[2][2] = p1(point[0]) * p2(point[1]) * d2p1(point[2]);
 
 1546          data.phi[ek[ 7][0]].ref_hess[0][1] =
 
 1547          data.phi[ek[ 7][0]].ref_hess[1][0] = d1p1(point[0]) * d1p2(point[1]) * p1(point[2]);
 
 1548          data.phi[ek[ 7][0]].ref_hess[0][2] =
 
 1549          data.phi[ek[ 7][0]].ref_hess[2][0] = d1p1(point[0]) * p2(point[1]) * d1p1(point[2]);
 
 1550          data.phi[ek[ 7][0]].ref_hess[1][2] =
 
 1551          data.phi[ek[ 7][0]].ref_hess[2][1] = p1(point[0]) * d1p2(point[1]) * d1p1(point[2]);
 
 1552          data.phi[ek[ 7][1]].ref_hess[0][0] = d2p1(point[0]) * p3(point[1]) * p1(point[2]);
 
 1553          data.phi[ek[ 7][1]].ref_hess[1][1] = p1(point[0]) * d2p3(point[1]) * p1(point[2]);
 
 1554          data.phi[ek[ 7][1]].ref_hess[2][2] = p1(point[0]) * p3(point[1]) * d2p1(point[2]);
 
 1555          data.phi[ek[ 7][1]].ref_hess[0][1] =
 
 1556          data.phi[ek[ 7][1]].ref_hess[1][0] = d1p1(point[0]) * d1p3(point[1]) * p1(point[2]);
 
 1557          data.phi[ek[ 7][1]].ref_hess[0][2] =
 
 1558          data.phi[ek[ 7][1]].ref_hess[2][0] = d1p1(point[0]) * p3(point[1]) * d1p1(point[2]);
 
 1559          data.phi[ek[ 7][1]].ref_hess[1][2] =
 
 1560          data.phi[ek[ 7][1]].ref_hess[2][1] = p1(point[0]) * d1p3(point[1]) * d1p1(point[2]);
 
 1561          data.phi[ek[ 8][0]].ref_hess[0][0] = d2p0(point[0]) * p0(point[1]) * p2(point[2]);
 
 1562          data.phi[ek[ 8][0]].ref_hess[1][1] = p0(point[0]) * d2p0(point[1]) * p2(point[2]);
 
 1563          data.phi[ek[ 8][0]].ref_hess[2][2] = p0(point[0]) * p0(point[1]) * d2p2(point[2]);
 
 1564          data.phi[ek[ 8][0]].ref_hess[0][1] =
 
 1565          data.phi[ek[ 8][0]].ref_hess[1][0] = d1p0(point[0]) * d1p0(point[1]) * p2(point[2]);
 
 1566          data.phi[ek[ 8][0]].ref_hess[0][2] =
 
 1567          data.phi[ek[ 8][0]].ref_hess[2][0] = d1p0(point[0]) * p0(point[1]) * d1p2(point[2]);
 
 1568          data.phi[ek[ 8][0]].ref_hess[1][2] =
 
 1569          data.phi[ek[ 8][0]].ref_hess[2][1] = p0(point[0]) * d1p0(point[1]) * d1p2(point[2]);
 
 1570          data.phi[ek[ 8][1]].ref_hess[0][0] = d2p0(point[0]) * p0(point[1]) * p3(point[2]);
 
 1571          data.phi[ek[ 8][1]].ref_hess[1][1] = p0(point[0]) * d2p0(point[1]) * p3(point[2]);
 
 1572          data.phi[ek[ 8][1]].ref_hess[2][2] = p0(point[0]) * p0(point[1]) * d2p3(point[2]);
 
 1573          data.phi[ek[ 8][1]].ref_hess[0][1] =
 
 1574          data.phi[ek[ 8][1]].ref_hess[1][0] = d1p0(point[0]) * d1p0(point[1]) * p3(point[2]);
 
 1575          data.phi[ek[ 8][1]].ref_hess[0][2] =
 
 1576          data.phi[ek[ 8][1]].ref_hess[2][0] = d1p0(point[0]) * p0(point[1]) * d1p3(point[2]);
 
 1577          data.phi[ek[ 8][1]].ref_hess[1][2] =
 
 1578          data.phi[ek[ 8][1]].ref_hess[2][1] = p0(point[0]) * d1p0(point[1]) * d1p3(point[2]);
 
 1579          data.phi[ek[ 9][0]].ref_hess[0][0] = d2p1(point[0]) * p0(point[1]) * p2(point[2]);
 
 1580          data.phi[ek[ 9][0]].ref_hess[1][1] = p1(point[0]) * d2p0(point[1]) * p2(point[2]);
 
 1581          data.phi[ek[ 9][0]].ref_hess[2][2] = p1(point[0]) * p0(point[1]) * d2p2(point[2]);
 
 1582          data.phi[ek[ 9][0]].ref_hess[0][1] =
 
 1583          data.phi[ek[ 9][0]].ref_hess[1][0] = d1p1(point[0]) * d1p0(point[1]) * p2(point[2]);
 
 1584          data.phi[ek[ 9][0]].ref_hess[0][2] =
 
 1585          data.phi[ek[ 9][0]].ref_hess[2][0] = d1p1(point[0]) * p0(point[1]) * d1p2(point[2]);
 
 1586          data.phi[ek[ 9][0]].ref_hess[1][2] =
 
 1587          data.phi[ek[ 9][0]].ref_hess[2][1] = p1(point[0]) * d1p0(point[1]) * d1p2(point[2]);
 
 1588          data.phi[ek[ 9][1]].ref_hess[0][0] = d2p1(point[0]) * p0(point[1]) * p3(point[2]);
 
 1589          data.phi[ek[ 9][1]].ref_hess[1][1] = p1(point[0]) * d2p0(point[1]) * p3(point[2]);
 
 1590          data.phi[ek[ 9][1]].ref_hess[2][2] = p1(point[0]) * p0(point[1]) * d2p3(point[2]);
 
 1591          data.phi[ek[ 9][1]].ref_hess[0][1] =
 
 1592          data.phi[ek[ 9][1]].ref_hess[1][0] = d1p1(point[0]) * d1p0(point[1]) * p3(point[2]);
 
 1593          data.phi[ek[ 9][1]].ref_hess[0][2] =
 
 1594          data.phi[ek[ 9][1]].ref_hess[2][0] = d1p1(point[0]) * p0(point[1]) * d1p3(point[2]);
 
 1595          data.phi[ek[ 9][1]].ref_hess[1][2] =
 
 1596          data.phi[ek[ 9][1]].ref_hess[2][1] = p1(point[0]) * d1p0(point[1]) * d1p3(point[2]);
 
 1597          data.phi[ek[10][0]].ref_hess[0][0] = d2p0(point[0]) * p1(point[1]) * p2(point[2]);
 
 1598          data.phi[ek[10][0]].ref_hess[1][1] = p0(point[0]) * d2p1(point[1]) * p2(point[2]);
 
 1599          data.phi[ek[10][0]].ref_hess[2][2] = p0(point[0]) * p1(point[1]) * d2p2(point[2]);
 
 1600          data.phi[ek[10][0]].ref_hess[0][1] =
 
 1601          data.phi[ek[10][0]].ref_hess[1][0] = d1p0(point[0]) * d1p1(point[1]) * p2(point[2]);
 
 1602          data.phi[ek[10][0]].ref_hess[0][2] =
 
 1603          data.phi[ek[10][0]].ref_hess[2][0] = d1p0(point[0]) * p1(point[1]) * d1p2(point[2]);
 
 1604          data.phi[ek[10][0]].ref_hess[1][2] =
 
 1605          data.phi[ek[10][0]].ref_hess[2][1] = p0(point[0]) * d1p1(point[1]) * d1p2(point[2]);
 
 1606          data.phi[ek[10][1]].ref_hess[0][0] = d2p0(point[0]) * p1(point[1]) * p3(point[2]);
 
 1607          data.phi[ek[10][1]].ref_hess[1][1] = p0(point[0]) * d2p1(point[1]) * p3(point[2]);
 
 1608          data.phi[ek[10][1]].ref_hess[2][2] = p0(point[0]) * p1(point[1]) * d2p3(point[2]);
 
 1609          data.phi[ek[10][1]].ref_hess[0][1] =
 
 1610          data.phi[ek[10][1]].ref_hess[1][0] = d1p0(point[0]) * d1p1(point[1]) * p3(point[2]);
 
 1611          data.phi[ek[10][1]].ref_hess[0][2] =
 
 1612          data.phi[ek[10][1]].ref_hess[2][0] = d1p0(point[0]) * p1(point[1]) * d1p3(point[2]);
 
 1613          data.phi[ek[10][1]].ref_hess[1][2] =
 
 1614          data.phi[ek[10][1]].ref_hess[2][1] = p0(point[0]) * d1p1(point[1]) * d1p3(point[2]);
 
 1615          data.phi[ek[11][0]].ref_hess[0][0] = d2p1(point[0]) * p1(point[1]) * p2(point[2]);
 
 1616          data.phi[ek[11][0]].ref_hess[1][1] = p1(point[0]) * d2p1(point[1]) * p2(point[2]);
 
 1617          data.phi[ek[11][0]].ref_hess[2][2] = p1(point[0]) * p1(point[1]) * d2p2(point[2]);
 
 1618          data.phi[ek[11][0]].ref_hess[0][1] =
 
 1619          data.phi[ek[11][0]].ref_hess[1][0] = d1p1(point[0]) * d1p1(point[1]) * p2(point[2]);
 
 1620          data.phi[ek[11][0]].ref_hess[0][2] =
 
 1621          data.phi[ek[11][0]].ref_hess[2][0] = d1p1(point[0]) * p1(point[1]) * d1p2(point[2]);
 
 1622          data.phi[ek[11][0]].ref_hess[1][2] =
 
 1623          data.phi[ek[11][0]].ref_hess[2][1] = p1(point[0]) * d1p1(point[1]) * d1p2(point[2]);
 
 1624          data.phi[ek[11][1]].ref_hess[0][0] = d2p1(point[0]) * p1(point[1]) * p3(point[2]);
 
 1625          data.phi[ek[11][1]].ref_hess[1][1] = p1(point[0]) * d2p1(point[1]) * p3(point[2]);
 
 1626          data.phi[ek[11][1]].ref_hess[2][2] = p1(point[0]) * p1(point[1]) * d2p3(point[2]);
 
 1627          data.phi[ek[11][1]].ref_hess[0][1] =
 
 1628          data.phi[ek[11][1]].ref_hess[1][0] = d1p1(point[0]) * d1p1(point[1]) * p3(point[2]);
 
 1629          data.phi[ek[11][1]].ref_hess[0][2] =
 
 1630          data.phi[ek[11][1]].ref_hess[2][0] = d1p1(point[0]) * p1(point[1]) * d1p3(point[2]);
 
 1631          data.phi[ek[11][1]].ref_hess[1][2] =
 
 1632          data.phi[ek[11][1]].ref_hess[2][1] = p1(point[0]) * d1p1(point[1]) * d1p3(point[2]);
 
 1633          data.phi[qk[0][0]].ref_hess[0][0] = d2p2(point[0]) * p2(point[1]) * p0(point[2]);
 
 1634          data.phi[qk[0][0]].ref_hess[1][1] = p2(point[0]) * d2p2(point[1]) * p0(point[2]);
 
 1635          data.phi[qk[0][0]].ref_hess[2][2] = p2(point[0]) * p2(point[1]) * d2p0(point[2]);
 
 1636          data.phi[qk[0][0]].ref_hess[0][1] =
 
 1637          data.phi[qk[0][0]].ref_hess[1][0] = d1p2(point[0]) * d1p2(point[1]) * p0(point[2]);
 
 1638          data.phi[qk[0][0]].ref_hess[0][2] =
 
 1639          data.phi[qk[0][0]].ref_hess[2][0] = d1p2(point[0]) * p2(point[1]) * d1p0(point[2]);
 
 1640          data.phi[qk[0][0]].ref_hess[1][2] =
 
 1641          data.phi[qk[0][0]].ref_hess[2][1] = p2(point[0]) * d1p2(point[1]) * d1p0(point[2]);
 
 1642          data.phi[qk[0][1]].ref_hess[0][0] = d2p3(point[0]) * p2(point[1]) * p0(point[2]);
 
 1643          data.phi[qk[0][1]].ref_hess[1][1] = p3(point[0]) * d2p2(point[1]) * p0(point[2]);
 
 1644          data.phi[qk[0][1]].ref_hess[2][2] = p3(point[0]) * p2(point[1]) * d2p0(point[2]);
 
 1645          data.phi[qk[0][1]].ref_hess[0][1] =
 
 1646          data.phi[qk[0][1]].ref_hess[1][0] = d1p3(point[0]) * d1p2(point[1]) * p0(point[2]);
 
 1647          data.phi[qk[0][1]].ref_hess[0][2] =
 
 1648          data.phi[qk[0][1]].ref_hess[2][0] = d1p3(point[0]) * p2(point[1]) * d1p0(point[2]);
 
 1649          data.phi[qk[0][1]].ref_hess[1][2] =
 
 1650          data.phi[qk[0][1]].ref_hess[2][1] = p3(point[0]) * d1p2(point[1]) * d1p0(point[2]);
 
 1651          data.phi[qk[0][2]].ref_hess[0][0] = d2p2(point[0]) * p3(point[1]) * p0(point[2]);
 
 1652          data.phi[qk[0][2]].ref_hess[1][1] = p2(point[0]) * d2p3(point[1]) * p0(point[2]);
 
 1653          data.phi[qk[0][2]].ref_hess[2][2] = p2(point[0]) * p3(point[1]) * d2p0(point[2]);
 
 1654          data.phi[qk[0][2]].ref_hess[0][1] =
 
 1655          data.phi[qk[0][2]].ref_hess[1][0] = d1p2(point[0]) * d1p3(point[1]) * p0(point[2]);
 
 1656          data.phi[qk[0][2]].ref_hess[0][2] =
 
 1657          data.phi[qk[0][2]].ref_hess[2][0] = d1p2(point[0]) * p3(point[1]) * d1p0(point[2]);
 
 1658          data.phi[qk[0][2]].ref_hess[1][2] =
 
 1659          data.phi[qk[0][2]].ref_hess[2][1] = p2(point[0]) * d1p3(point[1]) * d1p0(point[2]);
 
 1660          data.phi[qk[0][3]].ref_hess[0][0] = d2p3(point[0]) * p3(point[1]) * p0(point[2]);
 
 1661          data.phi[qk[0][3]].ref_hess[1][1] = p3(point[0]) * d2p3(point[1]) * p0(point[2]);
 
 1662          data.phi[qk[0][3]].ref_hess[2][2] = p3(point[0]) * p3(point[1]) * d2p0(point[2]);
 
 1663          data.phi[qk[0][3]].ref_hess[0][1] =
 
 1664          data.phi[qk[0][3]].ref_hess[1][0] = d1p3(point[0]) * d1p3(point[1]) * p0(point[2]);
 
 1665          data.phi[qk[0][3]].ref_hess[0][2] =
 
 1666          data.phi[qk[0][3]].ref_hess[2][0] = d1p3(point[0]) * p3(point[1]) * d1p0(point[2]);
 
 1667          data.phi[qk[0][3]].ref_hess[1][2] =
 
 1668          data.phi[qk[0][3]].ref_hess[2][1] = p3(point[0]) * d1p3(point[1]) * d1p0(point[2]);
 
 1669          data.phi[qk[1][0]].ref_hess[0][0] = d2p2(point[0]) * p2(point[1]) * p1(point[2]);
 
 1670          data.phi[qk[1][0]].ref_hess[1][1] = p2(point[0]) * d2p2(point[1]) * p1(point[2]);
 
 1671          data.phi[qk[1][0]].ref_hess[2][2] = p2(point[0]) * p2(point[1]) * d2p1(point[2]);
 
 1672          data.phi[qk[1][0]].ref_hess[0][1] =
 
 1673          data.phi[qk[1][0]].ref_hess[1][0] = d1p2(point[0]) * d1p2(point[1]) * p1(point[2]);
 
 1674          data.phi[qk[1][0]].ref_hess[0][2] =
 
 1675          data.phi[qk[1][0]].ref_hess[2][0] = d1p2(point[0]) * p2(point[1]) * d1p1(point[2]);
 
 1676          data.phi[qk[1][0]].ref_hess[1][2] =
 
 1677          data.phi[qk[1][0]].ref_hess[2][1] = p2(point[0]) * d1p2(point[1]) * d1p1(point[2]);
 
 1678          data.phi[qk[1][1]].ref_hess[0][0] = d2p3(point[0]) * p2(point[1]) * p1(point[2]);
 
 1679          data.phi[qk[1][1]].ref_hess[1][1] = p3(point[0]) * d2p2(point[1]) * p1(point[2]);
 
 1680          data.phi[qk[1][1]].ref_hess[2][2] = p3(point[0]) * p2(point[1]) * d2p1(point[2]);
 
 1681          data.phi[qk[1][1]].ref_hess[0][1] =
 
 1682          data.phi[qk[1][1]].ref_hess[1][0] = d1p3(point[0]) * d1p2(point[1]) * p1(point[2]);
 
 1683          data.phi[qk[1][1]].ref_hess[0][2] =
 
 1684          data.phi[qk[1][1]].ref_hess[2][0] = d1p3(point[0]) * p2(point[1]) * d1p1(point[2]);
 
 1685          data.phi[qk[1][1]].ref_hess[1][2] =
 
 1686          data.phi[qk[1][1]].ref_hess[2][1] = p3(point[0]) * d1p2(point[1]) * d1p1(point[2]);
 
 1687          data.phi[qk[1][2]].ref_hess[0][0] = d2p2(point[0]) * p3(point[1]) * p1(point[2]);
 
 1688          data.phi[qk[1][2]].ref_hess[1][1] = p2(point[0]) * d2p3(point[1]) * p1(point[2]);
 
 1689          data.phi[qk[1][2]].ref_hess[2][2] = p2(point[0]) * p3(point[1]) * d2p1(point[2]);
 
 1690          data.phi[qk[1][2]].ref_hess[0][1] =
 
 1691          data.phi[qk[1][2]].ref_hess[1][0] = d1p2(point[0]) * d1p3(point[1]) * p1(point[2]);
 
 1692          data.phi[qk[1][2]].ref_hess[0][2] =
 
 1693          data.phi[qk[1][2]].ref_hess[2][0] = d1p2(point[0]) * p3(point[1]) * d1p1(point[2]);
 
 1694          data.phi[qk[1][2]].ref_hess[1][2] =
 
 1695          data.phi[qk[1][2]].ref_hess[2][1] = p2(point[0]) * d1p3(point[1]) * d1p1(point[2]);
 
 1696          data.phi[qk[1][3]].ref_hess[0][0] = d2p3(point[0]) * p3(point[1]) * p1(point[2]);
 
 1697          data.phi[qk[1][3]].ref_hess[1][1] = p3(point[0]) * d2p3(point[1]) * p1(point[2]);
 
 1698          data.phi[qk[1][3]].ref_hess[2][2] = p3(point[0]) * p3(point[1]) * d2p1(point[2]);
 
 1699          data.phi[qk[1][3]].ref_hess[0][1] =
 
 1700          data.phi[qk[1][3]].ref_hess[1][0] = d1p3(point[0]) * d1p3(point[1]) * p1(point[2]);
 
 1701          data.phi[qk[1][3]].ref_hess[0][2] =
 
 1702          data.phi[qk[1][3]].ref_hess[2][0] = d1p3(point[0]) * p3(point[1]) * d1p1(point[2]);
 
 1703          data.phi[qk[1][3]].ref_hess[1][2] =
 
 1704          data.phi[qk[1][3]].ref_hess[2][1] = p3(point[0]) * d1p3(point[1]) * d1p1(point[2]);
 
 1705          data.phi[qk[2][0]].ref_hess[0][0] = d2p2(point[0]) * p0(point[1]) * p2(point[2]);
 
 1706          data.phi[qk[2][0]].ref_hess[1][1] = p2(point[0]) * d2p0(point[1]) * p2(point[2]);
 
 1707          data.phi[qk[2][0]].ref_hess[2][2] = p2(point[0]) * p0(point[1]) * d2p2(point[2]);
 
 1708          data.phi[qk[2][0]].ref_hess[0][1] =
 
 1709          data.phi[qk[2][0]].ref_hess[1][0] = d1p2(point[0]) * d1p0(point[1]) * p2(point[2]);
 
 1710          data.phi[qk[2][0]].ref_hess[0][2] =
 
 1711          data.phi[qk[2][0]].ref_hess[2][0] = d1p2(point[0]) * p0(point[1]) * d1p2(point[2]);
 
 1712          data.phi[qk[2][0]].ref_hess[1][2] =
 
 1713          data.phi[qk[2][0]].ref_hess[2][1] = p2(point[0]) * d1p0(point[1]) * d1p2(point[2]);
 
 1714          data.phi[qk[2][1]].ref_hess[0][0] = d2p3(point[0]) * p0(point[1]) * p2(point[2]);
 
 1715          data.phi[qk[2][1]].ref_hess[1][1] = p3(point[0]) * d2p0(point[1]) * p2(point[2]);
 
 1716          data.phi[qk[2][1]].ref_hess[2][2] = p3(point[0]) * p0(point[1]) * d2p2(point[2]);
 
 1717          data.phi[qk[2][1]].ref_hess[0][1] =
 
 1718          data.phi[qk[2][1]].ref_hess[1][0] = d1p3(point[0]) * d1p0(point[1]) * p2(point[2]);
 
 1719          data.phi[qk[2][1]].ref_hess[0][2] =
 
 1720          data.phi[qk[2][1]].ref_hess[2][0] = d1p3(point[0]) * p0(point[1]) * d1p2(point[2]);
 
 1721          data.phi[qk[2][1]].ref_hess[1][2] =
 
 1722          data.phi[qk[2][1]].ref_hess[2][1] = p3(point[0]) * d1p0(point[1]) * d1p2(point[2]);
 
 1723          data.phi[qk[2][2]].ref_hess[0][0] = d2p2(point[0]) * p0(point[1]) * p3(point[2]);
 
 1724          data.phi[qk[2][2]].ref_hess[1][1] = p2(point[0]) * d2p0(point[1]) * p3(point[2]);
 
 1725          data.phi[qk[2][2]].ref_hess[2][2] = p2(point[0]) * p0(point[1]) * d2p3(point[2]);
 
 1726          data.phi[qk[2][2]].ref_hess[0][1] =
 
 1727          data.phi[qk[2][2]].ref_hess[1][0] = d1p2(point[0]) * d1p0(point[1]) * p3(point[2]);
 
 1728          data.phi[qk[2][2]].ref_hess[0][2] =
 
 1729          data.phi[qk[2][2]].ref_hess[2][0] = d1p2(point[0]) * p0(point[1]) * d1p3(point[2]);
 
 1730          data.phi[qk[2][2]].ref_hess[1][2] =
 
 1731          data.phi[qk[2][2]].ref_hess[2][1] = p2(point[0]) * d1p0(point[1]) * d1p3(point[2]);
 
 1732          data.phi[qk[2][3]].ref_hess[0][0] = d2p3(point[0]) * p0(point[1]) * p3(point[2]);
 
 1733          data.phi[qk[2][3]].ref_hess[1][1] = p3(point[0]) * d2p0(point[1]) * p3(point[2]);
 
 1734          data.phi[qk[2][3]].ref_hess[2][2] = p3(point[0]) * p0(point[1]) * d2p3(point[2]);
 
 1735          data.phi[qk[2][3]].ref_hess[0][1] =
 
 1736          data.phi[qk[2][3]].ref_hess[1][0] = d1p3(point[0]) * d1p0(point[1]) * p3(point[2]);
 
 1737          data.phi[qk[2][3]].ref_hess[0][2] =
 
 1738          data.phi[qk[2][3]].ref_hess[2][0] = d1p3(point[0]) * p0(point[1]) * d1p3(point[2]);
 
 1739          data.phi[qk[2][3]].ref_hess[1][2] =
 
 1740          data.phi[qk[2][3]].ref_hess[2][1] = p3(point[0]) * d1p0(point[1]) * d1p3(point[2]);
 
 1741          data.phi[qk[3][0]].ref_hess[0][0] = d2p2(point[0]) * p1(point[1]) * p2(point[2]);
 
 1742          data.phi[qk[3][0]].ref_hess[1][1] = p2(point[0]) * d2p1(point[1]) * p2(point[2]);
 
 1743          data.phi[qk[3][0]].ref_hess[2][2] = p2(point[0]) * p1(point[1]) * d2p2(point[2]);
 
 1744          data.phi[qk[3][0]].ref_hess[0][1] =
 
 1745          data.phi[qk[3][0]].ref_hess[1][0] = d1p2(point[0]) * d1p1(point[1]) * p2(point[2]);
 
 1746          data.phi[qk[3][0]].ref_hess[0][2] =
 
 1747          data.phi[qk[3][0]].ref_hess[2][0] = d1p2(point[0]) * p1(point[1]) * d1p2(point[2]);
 
 1748          data.phi[qk[3][0]].ref_hess[1][2] =
 
 1749          data.phi[qk[3][0]].ref_hess[2][1] = p2(point[0]) * d1p1(point[1]) * d1p2(point[2]);
 
 1750          data.phi[qk[3][1]].ref_hess[0][0] = d2p3(point[0]) * p1(point[1]) * p2(point[2]);
 
 1751          data.phi[qk[3][1]].ref_hess[1][1] = p3(point[0]) * d2p1(point[1]) * p2(point[2]);
 
 1752          data.phi[qk[3][1]].ref_hess[2][2] = p3(point[0]) * p1(point[1]) * d2p2(point[2]);
 
 1753          data.phi[qk[3][1]].ref_hess[0][1] =
 
 1754          data.phi[qk[3][1]].ref_hess[1][0] = d1p3(point[0]) * d1p1(point[1]) * p2(point[2]);
 
 1755          data.phi[qk[3][1]].ref_hess[0][2] =
 
 1756          data.phi[qk[3][1]].ref_hess[2][0] = d1p3(point[0]) * p1(point[1]) * d1p2(point[2]);
 
 1757          data.phi[qk[3][1]].ref_hess[1][2] =
 
 1758          data.phi[qk[3][1]].ref_hess[2][1] = p3(point[0]) * d1p1(point[1]) * d1p2(point[2]);
 
 1759          data.phi[qk[3][2]].ref_hess[0][0] = d2p2(point[0]) * p1(point[1]) * p3(point[2]);
 
 1760          data.phi[qk[3][2]].ref_hess[1][1] = p2(point[0]) * d2p1(point[1]) * p3(point[2]);
 
 1761          data.phi[qk[3][2]].ref_hess[2][2] = p2(point[0]) * p1(point[1]) * d2p3(point[2]);
 
 1762          data.phi[qk[3][2]].ref_hess[0][1] =
 
 1763          data.phi[qk[3][2]].ref_hess[1][0] = d1p2(point[0]) * d1p1(point[1]) * p3(point[2]);
 
 1764          data.phi[qk[3][2]].ref_hess[0][2] =
 
 1765          data.phi[qk[3][2]].ref_hess[2][0] = d1p2(point[0]) * p1(point[1]) * d1p3(point[2]);
 
 1766          data.phi[qk[3][2]].ref_hess[1][2] =
 
 1767          data.phi[qk[3][2]].ref_hess[2][1] = p2(point[0]) * d1p1(point[1]) * d1p3(point[2]);
 
 1768          data.phi[qk[3][3]].ref_hess[0][0] = d2p3(point[0]) * p1(point[1]) * p3(point[2]);
 
 1769          data.phi[qk[3][3]].ref_hess[1][1] = p3(point[0]) * d2p1(point[1]) * p3(point[2]);
 
 1770          data.phi[qk[3][3]].ref_hess[2][2] = p3(point[0]) * p1(point[1]) * d2p3(point[2]);
 
 1771          data.phi[qk[3][3]].ref_hess[0][1] =
 
 1772          data.phi[qk[3][3]].ref_hess[1][0] = d1p3(point[0]) * d1p1(point[1]) * p3(point[2]);
 
 1773          data.phi[qk[3][3]].ref_hess[0][2] =
 
 1774          data.phi[qk[3][3]].ref_hess[2][0] = d1p3(point[0]) * p1(point[1]) * d1p3(point[2]);
 
 1775          data.phi[qk[3][3]].ref_hess[1][2] =
 
 1776          data.phi[qk[3][3]].ref_hess[2][1] = p3(point[0]) * d1p1(point[1]) * d1p3(point[2]);
 
 1777          data.phi[qk[4][0]].ref_hess[0][0] = d2p0(point[0]) * p2(point[1]) * p2(point[2]);
 
 1778          data.phi[qk[4][0]].ref_hess[1][1] = p0(point[0]) * d2p2(point[1]) * p2(point[2]);
 
 1779          data.phi[qk[4][0]].ref_hess[2][2] = p0(point[0]) * p2(point[1]) * d2p2(point[2]);
 
 1780          data.phi[qk[4][0]].ref_hess[0][1] =
 
 1781          data.phi[qk[4][0]].ref_hess[1][0] = d1p0(point[0]) * d1p2(point[1]) * p2(point[2]);
 
 1782          data.phi[qk[4][0]].ref_hess[0][2] =
 
 1783          data.phi[qk[4][0]].ref_hess[2][0] = d1p0(point[0]) * p2(point[1]) * d1p2(point[2]);
 
 1784          data.phi[qk[4][0]].ref_hess[1][2] =
 
 1785          data.phi[qk[4][0]].ref_hess[2][1] = p0(point[0]) * d1p2(point[1]) * d1p2(point[2]);
 
 1786          data.phi[qk[4][1]].ref_hess[0][0] = d2p0(point[0]) * p3(point[1]) * p2(point[2]);
 
 1787          data.phi[qk[4][1]].ref_hess[1][1] = p0(point[0]) * d2p3(point[1]) * p2(point[2]);
 
 1788          data.phi[qk[4][1]].ref_hess[2][2] = p0(point[0]) * p3(point[1]) * d2p2(point[2]);
 
 1789          data.phi[qk[4][1]].ref_hess[0][1] =
 
 1790          data.phi[qk[4][1]].ref_hess[1][0] = d1p0(point[0]) * d1p3(point[1]) * p2(point[2]);
 
 1791          data.phi[qk[4][1]].ref_hess[0][2] =
 
 1792          data.phi[qk[4][1]].ref_hess[2][0] = d1p0(point[0]) * p3(point[1]) * d1p2(point[2]);
 
 1793          data.phi[qk[4][1]].ref_hess[1][2] =
 
 1794          data.phi[qk[4][1]].ref_hess[2][1] = p0(point[0]) * d1p3(point[1]) * d1p2(point[2]);
 
 1795          data.phi[qk[4][2]].ref_hess[0][0] = d2p0(point[0]) * p2(point[1]) * p3(point[2]);
 
 1796          data.phi[qk[4][2]].ref_hess[1][1] = p0(point[0]) * d2p2(point[1]) * p3(point[2]);
 
 1797          data.phi[qk[4][2]].ref_hess[2][2] = p0(point[0]) * p2(point[1]) * d2p3(point[2]);
 
 1798          data.phi[qk[4][2]].ref_hess[0][1] =
 
 1799          data.phi[qk[4][2]].ref_hess[1][0] = d1p0(point[0]) * d1p2(point[1]) * p3(point[2]);
 
 1800          data.phi[qk[4][2]].ref_hess[0][2] =
 
 1801          data.phi[qk[4][2]].ref_hess[2][0] = d1p0(point[0]) * p2(point[1]) * d1p3(point[2]);
 
 1802          data.phi[qk[4][2]].ref_hess[1][2] =
 
 1803          data.phi[qk[4][2]].ref_hess[2][1] = p0(point[0]) * d1p2(point[1]) * d1p3(point[2]);
 
 1804          data.phi[qk[4][3]].ref_hess[0][0] = d2p0(point[0]) * p3(point[1]) * p3(point[2]);
 
 1805          data.phi[qk[4][3]].ref_hess[1][1] = p0(point[0]) * d2p3(point[1]) * p3(point[2]);
 
 1806          data.phi[qk[4][3]].ref_hess[2][2] = p0(point[0]) * p3(point[1]) * d2p3(point[2]);
 
 1807          data.phi[qk[4][3]].ref_hess[0][1] =
 
 1808          data.phi[qk[4][3]].ref_hess[1][0] = d1p0(point[0]) * d1p3(point[1]) * p3(point[2]);
 
 1809          data.phi[qk[4][3]].ref_hess[0][2] =
 
 1810          data.phi[qk[4][3]].ref_hess[2][0] = d1p0(point[0]) * p3(point[1]) * d1p3(point[2]);
 
 1811          data.phi[qk[4][3]].ref_hess[1][2] =
 
 1812          data.phi[qk[4][3]].ref_hess[2][1] = p0(point[0]) * d1p3(point[1]) * d1p3(point[2]);
 
 1813          data.phi[qk[5][0]].ref_hess[0][0] = d2p1(point[0]) * p2(point[1]) * p2(point[2]);
 
 1814          data.phi[qk[5][0]].ref_hess[1][1] = p1(point[0]) * d2p2(point[1]) * p2(point[2]);
 
 1815          data.phi[qk[5][0]].ref_hess[2][2] = p1(point[0]) * p2(point[1]) * d2p2(point[2]);
 
 1816          data.phi[qk[5][0]].ref_hess[0][1] =
 
 1817          data.phi[qk[5][0]].ref_hess[1][0] = d1p1(point[0]) * d1p2(point[1]) * p2(point[2]);
 
 1818          data.phi[qk[5][0]].ref_hess[0][2] =
 
 1819          data.phi[qk[5][0]].ref_hess[2][0] = d1p1(point[0]) * p2(point[1]) * d1p2(point[2]);
 
 1820          data.phi[qk[5][0]].ref_hess[1][2] =
 
 1821          data.phi[qk[5][0]].ref_hess[2][1] = p1(point[0]) * d1p2(point[1]) * d1p2(point[2]);
 
 1822          data.phi[qk[5][1]].ref_hess[0][0] = d2p1(point[0]) * p3(point[1]) * p2(point[2]);
 
 1823          data.phi[qk[5][1]].ref_hess[1][1] = p1(point[0]) * d2p3(point[1]) * p2(point[2]);
 
 1824          data.phi[qk[5][1]].ref_hess[2][2] = p1(point[0]) * p3(point[1]) * d2p2(point[2]);
 
 1825          data.phi[qk[5][1]].ref_hess[0][1] =
 
 1826          data.phi[qk[5][1]].ref_hess[1][0] = d1p1(point[0]) * d1p3(point[1]) * p2(point[2]);
 
 1827          data.phi[qk[5][1]].ref_hess[0][2] =
 
 1828          data.phi[qk[5][1]].ref_hess[2][0] = d1p1(point[0]) * p3(point[1]) * d1p2(point[2]);
 
 1829          data.phi[qk[5][1]].ref_hess[1][2] =
 
 1830          data.phi[qk[5][1]].ref_hess[2][1] = p1(point[0]) * d1p3(point[1]) * d1p2(point[2]);
 
 1831          data.phi[qk[5][2]].ref_hess[0][0] = d2p1(point[0]) * p2(point[1]) * p3(point[2]);
 
 1832          data.phi[qk[5][2]].ref_hess[1][1] = p1(point[0]) * d2p2(point[1]) * p3(point[2]);
 
 1833          data.phi[qk[5][2]].ref_hess[2][2] = p1(point[0]) * p2(point[1]) * d2p3(point[2]);
 
 1834          data.phi[qk[5][2]].ref_hess[0][1] =
 
 1835          data.phi[qk[5][2]].ref_hess[1][0] = d1p1(point[0]) * d1p2(point[1]) * p3(point[2]);
 
 1836          data.phi[qk[5][2]].ref_hess[0][2] =
 
 1837          data.phi[qk[5][2]].ref_hess[2][0] = d1p1(point[0]) * p2(point[1]) * d1p3(point[2]);
 
 1838          data.phi[qk[5][2]].ref_hess[1][2] =
 
 1839          data.phi[qk[5][2]].ref_hess[2][1] = p1(point[0]) * d1p2(point[1]) * d1p3(point[2]);
 
 1840          data.phi[qk[5][3]].ref_hess[0][0] = d2p1(point[0]) * p3(point[1]) * p3(point[2]);
 
 1841          data.phi[qk[5][3]].ref_hess[1][1] = p1(point[0]) * d2p3(point[1]) * p3(point[2]);
 
 1842          data.phi[qk[5][3]].ref_hess[2][2] = p1(point[0]) * p3(point[1]) * d2p3(point[2]);
 
 1843          data.phi[qk[5][3]].ref_hess[0][1] =
 
 1844          data.phi[qk[5][3]].ref_hess[1][0] = d1p1(point[0]) * d1p3(point[1]) * p3(point[2]);
 
 1845          data.phi[qk[5][3]].ref_hess[0][2] =
 
 1846          data.phi[qk[5][3]].ref_hess[2][0] = d1p1(point[0]) * p3(point[1]) * d1p3(point[2]);
 
 1847          data.phi[qk[5][3]].ref_hess[1][2] =
 
 1848          data.phi[qk[5][3]].ref_hess[2][1] = p1(point[0]) * d1p3(point[1]) * d1p3(point[2]);
 
 1849          data.phi[56].ref_hess[0][0] = d2p2(point[0]) * p2(point[1]) * p2(point[2]);
 
 1850          data.phi[56].ref_hess[1][1] = p2(point[0]) * d2p2(point[1]) * p2(point[2]);
 
 1851          data.phi[56].ref_hess[2][2] = p2(point[0]) * p2(point[1]) * d2p2(point[2]);
 
 1852          data.phi[56].ref_hess[0][1] =
 
 1853          data.phi[56].ref_hess[1][0] = d1p2(point[0]) * d1p2(point[1]) * p2(point[2]);
 
 1854          data.phi[56].ref_hess[0][2] =
 
 1855          data.phi[56].ref_hess[2][0] = d1p2(point[0]) * p2(point[1]) * d1p2(point[2]);
 
 1856          data.phi[56].ref_hess[1][2] =
 
 1857          data.phi[56].ref_hess[2][1] = p2(point[0]) * d1p2(point[1]) * d1p2(point[2]);
 
 1858          data.phi[57].ref_hess[0][0] = d2p3(point[0]) * p2(point[1]) * p2(point[2]);
 
 1859          data.phi[57].ref_hess[1][1] = p3(point[0]) * d2p2(point[1]) * p2(point[2]);
 
 1860          data.phi[57].ref_hess[2][2] = p3(point[0]) * p2(point[1]) * d2p2(point[2]);
 
 1861          data.phi[57].ref_hess[0][1] =
 
 1862          data.phi[57].ref_hess[1][0] = d1p3(point[0]) * d1p2(point[1]) * p2(point[2]);
 
 1863          data.phi[57].ref_hess[0][2] =
 
 1864          data.phi[57].ref_hess[2][0] = d1p3(point[0]) * p2(point[1]) * d1p2(point[2]);
 
 1865          data.phi[57].ref_hess[1][2] =
 
 1866          data.phi[57].ref_hess[2][1] = p3(point[0]) * d1p2(point[1]) * d1p2(point[2]);
 
 1867          data.phi[58].ref_hess[0][0] = d2p2(point[0]) * p3(point[1]) * p2(point[2]);
 
 1868          data.phi[58].ref_hess[1][1] = p2(point[0]) * d2p3(point[1]) * p2(point[2]);
 
 1869          data.phi[58].ref_hess[2][2] = p2(point[0]) * p3(point[1]) * d2p2(point[2]);
 
 1870          data.phi[58].ref_hess[0][1] =
 
 1871          data.phi[58].ref_hess[1][0] = d1p2(point[0]) * d1p3(point[1]) * p2(point[2]);
 
 1872          data.phi[58].ref_hess[0][2] =
 
 1873          data.phi[58].ref_hess[2][0] = d1p2(point[0]) * p3(point[1]) * d1p2(point[2]);
 
 1874          data.phi[58].ref_hess[1][2] =
 
 1875          data.phi[58].ref_hess[2][1] = p2(point[0]) * d1p3(point[1]) * d1p2(point[2]);
 
 1876          data.phi[59].ref_hess[0][0] = d2p3(point[0]) * p3(point[1]) * p2(point[2]);
 
 1877          data.phi[59].ref_hess[1][1] = p3(point[0]) * d2p3(point[1]) * p2(point[2]);
 
 1878          data.phi[59].ref_hess[2][2] = p3(point[0]) * p3(point[1]) * d2p2(point[2]);
 
 1879          data.phi[59].ref_hess[0][1] =
 
 1880          data.phi[59].ref_hess[1][0] = d1p3(point[0]) * d1p3(point[1]) * p2(point[2]);
 
 1881          data.phi[59].ref_hess[0][2] =
 
 1882          data.phi[59].ref_hess[2][0] = d1p3(point[0]) * p3(point[1]) * d1p2(point[2]);
 
 1883          data.phi[59].ref_hess[1][2] =
 
 1884          data.phi[59].ref_hess[2][1] = p3(point[0]) * d1p3(point[1]) * d1p2(point[2]);
 
 1885          data.phi[60].ref_hess[0][0] = d2p2(point[0]) * p2(point[1]) * p3(point[2]);
 
 1886          data.phi[60].ref_hess[1][1] = p2(point[0]) * d2p2(point[1]) * p3(point[2]);
 
 1887          data.phi[60].ref_hess[2][2] = p2(point[0]) * p2(point[1]) * d2p3(point[2]);
 
 1888          data.phi[60].ref_hess[0][1] =
 
 1889          data.phi[60].ref_hess[1][0] = d1p2(point[0]) * d1p2(point[1]) * p3(point[2]);
 
 1890          data.phi[60].ref_hess[0][2] =
 
 1891          data.phi[60].ref_hess[2][0] = d1p2(point[0]) * p2(point[1]) * d1p3(point[2]);
 
 1892          data.phi[60].ref_hess[1][2] =
 
 1893          data.phi[60].ref_hess[2][1] = p2(point[0]) * d1p2(point[1]) * d1p3(point[2]);
 
 1894          data.phi[61].ref_hess[0][0] = d2p3(point[0]) * p2(point[1]) * p3(point[2]);
 
 1895          data.phi[61].ref_hess[1][1] = p3(point[0]) * d2p2(point[1]) * p3(point[2]);
 
 1896          data.phi[61].ref_hess[2][2] = p3(point[0]) * p2(point[1]) * d2p3(point[2]);
 
 1897          data.phi[61].ref_hess[0][1] =
 
 1898          data.phi[61].ref_hess[1][0] = d1p3(point[0]) * d1p2(point[1]) * p3(point[2]);
 
 1899          data.phi[61].ref_hess[0][2] =
 
 1900          data.phi[61].ref_hess[2][0] = d1p3(point[0]) * p2(point[1]) * d1p3(point[2]);
 
 1901          data.phi[61].ref_hess[1][2] =
 
 1902          data.phi[61].ref_hess[2][1] = p3(point[0]) * d1p2(point[1]) * d1p3(point[2]);
 
 1903          data.phi[62].ref_hess[0][0] = d2p2(point[0]) * p3(point[1]) * p3(point[2]);
 
 1904          data.phi[62].ref_hess[1][1] = p2(point[0]) * d2p3(point[1]) * p3(point[2]);
 
 1905          data.phi[62].ref_hess[2][2] = p2(point[0]) * p3(point[1]) * d2p3(point[2]);
 
 1906          data.phi[62].ref_hess[0][1] =
 
 1907          data.phi[62].ref_hess[1][0] = d1p2(point[0]) * d1p3(point[1]) * p3(point[2]);
 
 1908          data.phi[62].ref_hess[0][2] =
 
 1909          data.phi[62].ref_hess[2][0] = d1p2(point[0]) * p3(point[1]) * d1p3(point[2]);
 
 1910          data.phi[62].ref_hess[1][2] =
 
 1911          data.phi[62].ref_hess[2][1] = p2(point[0]) * d1p3(point[1]) * d1p3(point[2]);
 
 1912          data.phi[63].ref_hess[0][0] = d2p3(point[0]) * p3(point[1]) * p3(point[2]);
 
 1913          data.phi[63].ref_hess[1][1] = p3(point[0]) * d2p3(point[1]) * p3(point[2]);
 
 1914          data.phi[63].ref_hess[2][2] = p3(point[0]) * p3(point[1]) * d2p3(point[2]);
 
 1915          data.phi[63].ref_hess[0][1] =
 
 1916          data.phi[63].ref_hess[1][0] = d1p3(point[0]) * d1p3(point[1]) * p3(point[2]);
 
 1917          data.phi[63].ref_hess[0][2] =
 
 1918          data.phi[63].ref_hess[2][0] = d1p3(point[0]) * p3(point[1]) * d1p3(point[2]);
 
 1919          data.phi[63].ref_hess[1][2] =
 
 1920          data.phi[63].ref_hess[2][1] = p3(point[0]) * d1p3(point[1]) * d1p3(point[2]);
 
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
void NOINLINE eval_ref_hessians(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function hessians on the reference cell.
Space_ SpaceType
space type
void NOINLINE eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
EvalPolicy::DomainPointType DomainPointType
domain point type
Evaluator(const SpaceType &space)
Constructor.
int get_num_local_dofs() const
Returns the number of local DOFs.
SpaceEvalTraits::DataType DataType
data type
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
void NOINLINE eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
Evaluator(const SpaceType &space)
Constructor.
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
SpaceEvalTraits::DataType DataType
data type
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
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.
Space_ SpaceType
space type
EvalPolicy::DomainPointType DomainPointType
domain point type
void eval_ref_hessians(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function hessians on the reference cell.
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
void NOINLINE eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
Evaluator(const SpaceType &space)
Constructor.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
int get_num_local_dofs() const
Returns the number of local DOFs.
Space_ SpaceType
space type
SpaceEvalTraits::DataType DataType
data type
void NOINLINE 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
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
void NOINLINE eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
void NOINLINE eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
Evaluator(const SpaceType &space)
Constructor.
void NOINLINE eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
int get_num_local_dofs() const
Returns the number of local DOFs.
EvalPolicy::DomainPointType DomainPointType
domain point type
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps_3d > BaseClass
base-class typedef
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
SpaceEvalTraits::DataType DataType
data type
Space_ SpaceType
space type
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
int get_num_local_dofs() const
Returns the number of local DOFs.
SpaceEvalTraits::EvalPolicy EvalPolicy
evaluation policy
void NOINLINE eval_ref_values(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function values on the reference cell.
ParametricEvaluator< Evaluator, TrafoEvaluator_, SpaceEvalTraits_, ref_caps > BaseClass
base-class typedef
SpaceEvalTraits::DataType DataType
data type
void NOINLINE eval_ref_hessians(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function hessians on the reference cell.
void NOINLINE eval_ref_gradients(EvalData_ &data, const DomainPointType &point) const
Evaluates the basis function gradients on the reference cell.
Space_ SpaceType
space type
SpaceEvalTraits_ SpaceEvalTraits
space evaluation traits
EvalPolicy::DomainPointType DomainPointType
domain point type
Evaluator(const SpaceType &space)
Constructor.
Lagrange-3 Element Evaluator class template declaration.
Finite-Element Parametric Evaluator CRTP base-class template.
static constexpr SpaceTags ref_caps
Lagrange-3 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