#include <deal.II/base/geometry_info.h>
#include <deal.II/fe/fe_base.h>
+#include <boost/any.hpp>
+
DEAL_II_NAMESPACE_OPEN
const Point<dim> &p,
const unsigned int component) const;
+ /**
+ *
+ * @param i
+ * @param p
+ * @param nth_derivative
+ * @return ...say that the any-type can only store Tensor<nth_derivative,dim>
+ */
+ virtual
+ boost::any
+ shape_nth_derivative (const unsigned int i,
+ const Point<dim> &p,
+ const unsigned int nth_derivative) const;
+
+ virtual
+ boost::any
+ shape_nth_derivative_component (const unsigned int i,
+ const Point<dim> &p,
+ const unsigned int component,
+ const unsigned int nth_derivative) const;
+
/**
* Check for non-zero values on a
* face in order to optimize out
* needed for Piola transform
* of Hdiv elements.
*/
- update_piola = update_volume_elements | update_contravariant_transformation
+ update_piola = update_volume_elements | update_contravariant_transformation,
+
+ update_3rd_derivatives = 0x80000,
+ update_4th_derivatives = 0x100000,
+ update_5th_derivatives = 0x200000,
+ update_6th_derivatives = 0x400000
};
+UpdateFlags update_nth_derivatives (const unsigned int nth_derivative);
+
/**
* Output operator which outputs update flags as a set of or'd text values.
}
+
+template <int dim, int spacedim>
+boost::any
+FiniteElement<dim,spacedim>::shape_nth_derivative (const unsigned int,
+ const Point<dim> &,
+ const unsigned int) const
+{
+ AssertThrow(false, ExcUnitShapeValuesDoNotExist());
+ return boost::any ();
+}
+
+
+
+template <int dim, int spacedim>
+boost::any
+FiniteElement<dim,spacedim>::shape_nth_derivative_component(const unsigned int,
+ const Point<dim> &,
+ const unsigned int,
+ const unsigned int) const
+{
+ AssertThrow(false, ExcUnitShapeValuesDoNotExist());
+ return boost::any ();
+}
+
+
+
template <int dim, int spacedim>
void
FiniteElement<dim,spacedim>::reinit_restriction_and_prolongation_matrices (