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