void evaluate(
         const ConstBasisDataSlice<ValueType>& basisData,
         const ConstGeometricalDataSlice<CoordinateType>& geomData,
         _1dSliceOf3dArray<ValueType>& result) const {
     assert(basisData.componentCount() == argumentDimension());
     assert(result.extent(0) == resultDimension());
     for (size_t i = 0; i < dim; ++i)
         result(i) = basisData.values(i);
 }
 void evaluate(const ConstBasisDataSlice<ValueType> &basisData,
               const ConstGeometricalDataSlice<CoordinateType> &geomData,
               _1dSliceOf3dArray<ValueType> &result) const {
   assert(basisData.componentCount() == argumentDimension());
   assert(result.extent(0) == resultDimension());
   for (int rdim = 0; rdim < resultDimension(); ++rdim)
     result(rdim) =
         (geomData.jacobianTransposed(0, rdim) * basisData.values(0) +
          geomData.jacobianTransposed(1, rdim) * basisData.values(1)) /
         geomData.integrationElement();
 }