// first order Nedelec
// elements. their second
// derivatives on the unit cell
- // are linear
+ // are constant, but non-zero
case 1:
{
-//TODO: not true. this is what presently fails our "shapes" testcase
- return Tensor<2,dim>();
+ // the format is: first
+ // index=shape function
+ // number; second
+ // index=vector component,
+ // third and fourth
+ // index=component within
+ // second derivative
+ static const double unit_grad_grads[12][3][3][3]
+ = {
+ { { {0, 0, 0}, {0, 0, 1}, {0, 1, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0,-1, 0}, {-1, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0,-1}, {0,-1, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 1, 0}, { 1, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0,-1}, {0,-1, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 1, 0}, { 1, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0, 1}, {0, 1, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0,-1, 0}, {-1, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 1}, {0, 0, 0}, {1, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0,-1}, {0, 0, 0}, {-1, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0, 1}, {0, 0, 0}, {1, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} } },
+
+ { { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} },
+ { {0, 0,-1}, {0, 0, 0}, {-1, 0, 0} },
+ { {0, 0, 0}, {0, 0, 0}, {0, 0, 0} } } };
+
+ return Tensor<2,dim>(unit_grad_grads[i][component]);
};
// no other degrees