#include <base/config.h>
+#include <base/tensor.h>
#include <base/vector_slice.h>
#include <grid/tria.h>
#include <dofs/dof_handler.h>
* object.
*/
virtual unsigned int memory_consumption () const;
-
+
+ /**
+ * The positions of the
+ * mapped (generalized)
+ * support points.
+ */
+ std::vector<Point<dim> > support_point_values;
+
+ /*
+ * The Jacobian of the
+ * transformation in the
+ * (generalized) support
+ * points.
+ */
+ std::vector<Tensor<2,dim> > support_point_gradients;
+
+ /*
+ * The inverse of the
+ * Jacobian of the
+ * transformation in the
+ * (generalized) support
+ * points.
+ */
+ std::vector<Tensor<2,dim> > support_point_inverse_gradients;
+
+
private:
/**
* The value returned by
* The transformed (generalized)
* support point.
*/
- const Point<dim>& support_point_value(const unsigned int index) const;
+ const Point<dim>& support_point_value(
+ const unsigned int index,
+ const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* The Jacobian
* in the (generalized) support
* point.
*/
- const Tensor<2,dim>& support_point_gradient(const unsigned int index) const;
+ const Tensor<2,dim>& support_point_gradient(
+ const unsigned int index,
+ const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* The inverse Jacobian
* in the (generalized) support
* point.
*/
- const Tensor<2,dim>& support_point_inverse_gradients(const unsigned int index) const;
+ const Tensor<2,dim>& support_point_inverse_gradient(
+ const unsigned int index,
+ const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* Return a pointer to a copy of the
}
+
+template <int dim>
+inline
+const Point<dim>&
+Mapping<dim>::support_point_value(
+ const unsigned int index,
+ const typename Mapping<dim>::InternalDataBase& internal) const
+{
+ AssertIndexRange(index, internal.support_point_values.size());
+ return internal.support_point_values[index];
+}
+
+
+template <int dim>
+inline
+const Tensor<2,dim>&
+Mapping<dim>::support_point_gradient(
+ const unsigned int index,
+ const typename Mapping<dim>::InternalDataBase& internal) const
+{
+ AssertIndexRange(index, internal.support_point_gradients.size());
+ return internal.support_point_gradients[index];
+}
+
+
+template <int dim>
+inline
+const Tensor<2,dim>&
+Mapping<dim>::support_point_inverse_gradient(
+ const unsigned int index,
+ const typename Mapping<dim>::InternalDataBase& internal) const
+{
+ AssertIndexRange(index, internal.support_point_inverse_gradients.size());
+ return internal.support_point_inverse_gradients[index];
+}
+
+
DEAL_II_NAMESPACE_CLOSE
#endif
*/
virtual
Mapping<dim> * clone () const;
-
- /**
- * Exception
- */
- DeclException0 (ExcInvalidData);
- /**
- * Exception
- */
- DeclException0 (ExcAccessToUninitializedField);
-
+
protected:
/**
* Storage for internal data of
*/
unsigned int n_shape_functions;
};
-
- /**
- * Exception
- */
- DeclException0 (ExcAccessToUninitializedField);
protected:
const InternalData &data = dynamic_cast<const InternalData&> (mapping_data);
Assert (data.update_flags & update_covariant_transformation,
- ExcAccessToUninitializedField());
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField());
Assert (output.size() + offset <= input.size(), ExcInternalError());
const InternalData &data = dynamic_cast<const InternalData&> (mapping_data);
Assert (data.update_flags & update_covariant_transformation,
- ExcAccessToUninitializedField());
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField());
Assert (output.size() + offset <= input.size(), ExcInternalError());
const InternalData &data = dynamic_cast<const InternalData&> (mapping_data);
Assert (data.update_flags & update_contravariant_transformation,
- ExcAccessToUninitializedField());
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField());
Assert (output.size() + offset <= input.size(), ExcInternalError());
const InternalData &data = dynamic_cast<const InternalData&> (mapping_data);
Assert (data.update_flags & update_contravariant_transformation,
- ExcAccessToUninitializedField());
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField());
Assert (output.size() + offset <= input.size(), ExcInternalError());
const InternalData &data=*data_ptr;
Assert (data.update_flags & update_covariant_transformation,
- ExcAccessToUninitializedField());
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField());
Assert (output.size() + offset <= input.size(), ExcInternalError());
const InternalData &data=*data_ptr;
Assert (data.update_flags & update_covariant_transformation,
- ExcAccessToUninitializedField());
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField());
Assert (output.size() + offset <= input.size(), ExcInternalError());
const InternalData &data=*data_ptr;
Assert (data.update_flags & update_contravariant_transformation,
- ExcAccessToUninitializedField());
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField());
Assert (output.size() + offset <= input.size(), ExcInternalError());
const InternalData &data=*data_ptr;
Assert (data.update_flags & update_contravariant_transformation,
- ExcAccessToUninitializedField());
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField());
Assert (output.size() + offset <= input.size(), ExcInternalError());