]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
use VectorSlice in transform functions; this will allow us to get rid of the offset...
authorguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 23 May 2005 22:20:17 +0000 (22:20 +0000)
committerguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 23 May 2005 22:20:17 +0000 (22:20 +0000)
git-svn-id: https://svn.dealii.org/trunk@10707 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/fe/mapping.h
deal.II/deal.II/include/fe/mapping_cartesian.h
deal.II/deal.II/include/fe/mapping_q.h
deal.II/deal.II/include/fe/mapping_q1.h
deal.II/deal.II/source/fe/mapping_cartesian.cc
deal.II/deal.II/source/fe/mapping_q.cc
deal.II/deal.II/source/fe/mapping_q1.cc

index dd09cdeca42d47dd7172f9f2ba2ebc4db690c22a..144c3290be20a3a7c0647f0fe34cc39d3e3d7f7e 100644 (file)
@@ -15,6 +15,7 @@
 
 
 #include <base/config.h>
+#include <base/vector_slice.h>
 #include <grid/tria.h>
 #include <dofs/dof_handler.h>
 #include <fe/fe_update_flags.h>
@@ -27,6 +28,7 @@ template <int dim> class FEValues;
 template <int dim> class FEFaceValues;
 template <int dim> class FESubfaceValues;
 
+//TODO: Offset in transform functions should be replaced by initializing VectorSlice correctly
 
 /*!@addtogroup febase */
 /*@{*/
@@ -250,9 +252,9 @@ class Mapping : public Subscriptor
                                      */
     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;
 
                                      /**
@@ -269,9 +271,9 @@ class Mapping : public Subscriptor
                                       */
     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;
     
                                     /**
@@ -297,9 +299,9 @@ class Mapping : public Subscriptor
                                      */
     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;
 
                                      /**
@@ -323,9 +325,9 @@ class Mapping : public Subscriptor
                                       */
     
     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;
     
                                     /**
index 673adf633f8cfd61f6130bcd751411e6ab941786..27d6f9896d41109f267ad17f0aa841d922d5c8cf 100644 (file)
@@ -85,9 +85,9 @@ class MappingCartesian : public Mapping<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;
 
                                     /**
@@ -95,9 +95,9 @@ class MappingCartesian : public Mapping<dim>
                                      * 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;
     
                                     /**
@@ -105,9 +105,9 @@ class MappingCartesian : public Mapping<dim>
                                      * 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;
     
                                     /**
@@ -115,9 +115,9 @@ class MappingCartesian : public Mapping<dim>
                                      * 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>
index 86a495cfc1d57e31ce3796d6b3635388a52a335a..9a5486770e849258d5f1da65332ebac0472c8d9b 100644 (file)
@@ -82,9 +82,9 @@ class MappingQ : public MappingQ1<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;
     
                                     /**
@@ -92,9 +92,9 @@ class MappingQ : public MappingQ1<dim>
                                      * 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;
     
                                     /**
@@ -102,9 +102,9 @@ class MappingQ : public MappingQ1<dim>
                                      * 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;    
 
                                     /**
@@ -112,9 +112,9 @@ class MappingQ : public MappingQ1<dim>
                                      * 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;    
     
                                     /**
index abbf3bc6a717ff5d5756f0903e385c138b520b99..ccc91f3f9ee9ae9bb13a3f2414bad52a8b5855ec 100644 (file)
@@ -86,9 +86,9 @@ class MappingQ1 : public Mapping<dim>
                                      * 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;
     
                                     /**
@@ -96,9 +96,9 @@ class MappingQ1 : public Mapping<dim>
                                      * 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;
     
                                     /**
@@ -106,9 +106,9 @@ class MappingQ1 : public Mapping<dim>
                                      * 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;
     
                                     /**
@@ -116,9 +116,9 @@ class MappingQ1 : public Mapping<dim>
                                      * 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;
     
                                     /**
index ef464dc0951208b11d4bc2cbefe4cffe2687ac89..89b38c52eb4f79b8269e93ce058f25f1ac60ff1b 100644 (file)
@@ -432,11 +432,11 @@ MappingCartesian<1>::fill_fe_subface_values (const Triangulation<1>::cell_iterat
 
 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);
 
@@ -456,10 +456,11 @@ transform_covariant (const std::vector<Tensor<1,dim> > &input,
 
 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);
 
@@ -480,10 +481,11 @@ MappingCartesian<dim>::transform_covariant (const std::vector<Tensor<2,dim> > &i
 
 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
@@ -507,10 +509,11 @@ MappingCartesian<dim>::transform_contravariant (const std::vector<Tensor<1,dim>
 
 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
index 14d60e5acc49afd07507f14956625d62b431d2c3..569f9a4b21d3d59ea23d5e19dd5c3c5023260e90 100644 (file)
@@ -1118,11 +1118,11 @@ add_quad_support_points(const typename Triangulation<dim>::cell_iterator &,
 
 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);
@@ -1153,10 +1153,11 @@ transform_covariant (const std::vector<Tensor<1,dim> > &input,
 
 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);
@@ -1187,11 +1188,11 @@ MappingQ<dim>::transform_covariant (const std::vector<Tensor<2,dim> > &input,
 
 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);
@@ -1222,10 +1223,11 @@ transform_contravariant (const std::vector<Tensor<1,dim> > &input,
 
 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);
index 6433c21e3ce41ef825202e202dbda5d6e7e70b6e..59de689edc59fa3d044d55e1dd24443e90bdb30a 100644 (file)
@@ -783,10 +783,11 @@ MappingQ1<1>::fill_fe_subface_values (const Triangulation<1>::cell_iterator &,
 
 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());
@@ -805,10 +806,11 @@ MappingQ1<dim>::transform_covariant (const std::vector<Tensor<1,dim> > &input,
 
 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());
@@ -828,10 +830,11 @@ MappingQ1<dim>::transform_covariant (const std::vector<Tensor<2,dim> > &input,
 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());
@@ -850,11 +853,11 @@ transform_contravariant (const std::vector<Tensor<1,dim> > &input,
 
 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());

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.