#include <base/config.h>
+#include <base/vector_slice.h>
#include <grid/tria.h>
#include <dofs/dof_handler.h>
#include <fe/fe_update_flags.h>
template <int dim> class FEFaceValues;
template <int dim> class FESubfaceValues;
+//TODO: Offset in transform functions should be replaced by initializing VectorSlice correctly
/*!@addtogroup febase */
/*@{*/
*/
virtual
void
- transform_covariant (const std::vector<Tensor<1,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
+ transform_covariant (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
const InternalDataBase &internal) const = 0;
/**
*/
virtual
void
- transform_covariant (const std::vector<Tensor<2,dim> > &input,
+ transform_covariant (const VectorSlice<const std::vector<Tensor<2,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
const InternalDataBase &internal) const = 0;
/**
*/
virtual
void
- transform_contravariant (const std::vector<Tensor<1,dim> > &input,
+ transform_contravariant (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const = 0;
/**
*/
virtual void
- transform_contravariant (const std::vector<Tensor<2,dim> > &intput,
+ transform_contravariant (const VectorSlice<const std::vector<Tensor<2,dim> > > intput,
const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
+ const VectorSlice<std::vector<Tensor<2,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const = 0;
/**
* interface in Mapping.
*/
virtual void
- transform_covariant (const std::vector<Tensor<1,dim> > &input,
+ transform_covariant (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* interface in Mapping.
*/
virtual void
- transform_covariant (const std::vector<Tensor<2,dim> > &input,
+ transform_covariant (const VectorSlice<const std::vector<Tensor<2,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* interface in Mapping.
*/
virtual void
- transform_contravariant (const std::vector<Tensor<1,dim> > &input,
+ transform_contravariant (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* interface in Mapping.
*/
virtual void
- transform_contravariant (const std::vector<Tensor<2,dim> > &input,
+ transform_contravariant (const VectorSlice<const std::vector<Tensor<2,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
virtual Point<dim>
* interface in Mapping.
*/
virtual void
- transform_covariant (const std::vector<Tensor<1,dim> > &input,
+ transform_covariant (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* interface in Mapping.
*/
virtual void
- transform_covariant (const std::vector<Tensor<2,dim> > &input,
+ transform_covariant (const VectorSlice<const std::vector<Tensor<2,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* interface in Mapping.
*/
virtual void
- transform_contravariant (const std::vector<Tensor<1,dim> > &input,
+ transform_contravariant (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* interface in Mapping.
*/
virtual void
- transform_contravariant (const std::vector<Tensor<2,dim> > &intput,
+ transform_contravariant (const VectorSlice<const std::vector<Tensor<2,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* Mapping.
*/
virtual void
- transform_covariant (const std::vector<Tensor<1,dim> > &input,
+ transform_covariant (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* Mapping.
*/
virtual void
- transform_covariant (const std::vector<Tensor<2,dim> > &input,
+ transform_covariant (const VectorSlice<const std::vector<Tensor<2,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* Mapping.
*/
virtual void
- transform_contravariant (const std::vector<Tensor<1,dim> > &input,
+ transform_contravariant (const VectorSlice<const std::vector<Tensor<1,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
* Mapping.
*/
virtual void
- transform_contravariant (const std::vector<Tensor<2,dim> > &intput,
+ transform_contravariant (const VectorSlice<const std::vector<Tensor<2,dim> > > input,
const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
const typename Mapping<dim>::InternalDataBase &internal) const;
/**
template <int dim>
void
-MappingCartesian<dim>::
-transform_covariant (const std::vector<Tensor<1,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingCartesian<dim>::transform_covariant (
+ const VectorSlice<const std::vector<Tensor<1,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const InternalData &data = dynamic_cast<const InternalData&> (mapping_data);
template <int dim>
void
-MappingCartesian<dim>::transform_covariant (const std::vector<Tensor<2,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingCartesian<dim>::transform_covariant (
+ const VectorSlice<const std::vector<Tensor<2,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const InternalData &data = dynamic_cast<const InternalData&> (mapping_data);
template <int dim>
void
-MappingCartesian<dim>::transform_contravariant (const std::vector<Tensor<1,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingCartesian<dim>::transform_contravariant (
+ const VectorSlice<const std::vector<Tensor<1,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
// convert data object to internal
// data for this class. fails with
template <int dim>
void
-MappingCartesian<dim>::transform_contravariant (const std::vector<Tensor<2,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingCartesian<dim>::transform_contravariant (
+ const VectorSlice<const std::vector<Tensor<2,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
// convert data object to internal
// data for this class. fails with
template <int dim>
void
-MappingQ<dim>::
-transform_covariant (const std::vector<Tensor<1,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingQ<dim>::transform_covariant (
+ const VectorSlice<const std::vector<Tensor<1,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const typename MappingQ1<dim>::InternalData *q1_data =
dynamic_cast<const typename MappingQ1<dim>::InternalData *> (&mapping_data);
template <int dim>
void
-MappingQ<dim>::transform_covariant (const std::vector<Tensor<2,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingQ<dim>::transform_covariant (
+ const VectorSlice<const std::vector<Tensor<2,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const typename MappingQ1<dim>::InternalData *q1_data =
dynamic_cast<const typename MappingQ1<dim>::InternalData *> (&mapping_data);
template <int dim>
void
-MappingQ<dim>::
-transform_contravariant (const std::vector<Tensor<1,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingQ<dim>::transform_contravariant (
+ const VectorSlice<const std::vector<Tensor<1,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const typename MappingQ1<dim>::InternalData *q1_data =
dynamic_cast<const typename MappingQ1<dim>::InternalData *> (&mapping_data);
template <int dim>
void
-MappingQ<dim>::transform_contravariant (const std::vector<Tensor<2,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingQ<dim>::transform_contravariant (
+ const VectorSlice<const std::vector<Tensor<2,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const typename MappingQ1<dim>::InternalData *q1_data =
dynamic_cast<const typename MappingQ1<dim>::InternalData *> (&mapping_data);
template <int dim>
void
-MappingQ1<dim>::transform_covariant (const std::vector<Tensor<1,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingQ1<dim>::transform_covariant (
+ const VectorSlice<const std::vector<Tensor<1,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const InternalData *data_ptr = dynamic_cast<const InternalData *> (&mapping_data);
Assert(data_ptr!=0, ExcInternalError());
template <int dim>
void
-MappingQ1<dim>::transform_covariant (const std::vector<Tensor<2,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingQ1<dim>::transform_covariant (
+ const VectorSlice<const std::vector<Tensor<2,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const InternalData *data_ptr = dynamic_cast<const InternalData *> (&mapping_data);
Assert(data_ptr!=0, ExcInternalError());
template <int dim>
void
MappingQ1<dim>::
-transform_contravariant (const std::vector<Tensor<1,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<1,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+transform_contravariant (
+ const VectorSlice<const std::vector<Tensor<1,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<1,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const InternalData* data_ptr = dynamic_cast<const InternalData *> (&mapping_data);
Assert(data_ptr!=0, ExcInternalError());
template <int dim>
void
-MappingQ1<dim>::
-transform_contravariant (const std::vector<Tensor<2,dim> > &input,
- const unsigned int offset,
- std::vector<Tensor<2,dim> > &output,
- const typename Mapping<dim>::InternalDataBase &mapping_data) const
+MappingQ1<dim>::transform_contravariant (
+ const VectorSlice<const std::vector<Tensor<2,dim> > > input,
+ const unsigned int offset,
+ VectorSlice<std::vector<Tensor<2,dim> > > output,
+ const typename Mapping<dim>::InternalDataBase &mapping_data) const
{
const InternalData* data_ptr = dynamic_cast<const InternalData *> (&mapping_data);
Assert(data_ptr!=0, ExcInternalError());