]> https://gitweb.dealii.org/ - dealii.git/commitdiff
eliminate offset from old Mapping::transform functions
authorGuido Kanschat <dr.guido.kanschat@gmail.com>
Mon, 5 Jan 2009 20:10:47 +0000 (20:10 +0000)
committerGuido Kanschat <dr.guido.kanschat@gmail.com>
Mon, 5 Jan 2009 20:10:47 +0000 (20:10 +0000)
git-svn-id: https://svn.dealii.org/trunk@18084 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/fe/fe_poly.templates.h
deal.II/deal.II/source/fe/fe_nedelec.cc
deal.II/deal.II/source/fe/fe_poly_tensor.cc
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 a89101565bfab448ce65538ab45fbb4c49b2a67a..1b6e3dd802c26ffceee7b9eb88cb62ead5af790d 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2006, 2007, 2008 by the deal.II authors
+//    Copyright (C) 2006, 2007, 2008, 2009 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -565,8 +565,8 @@ FE_Poly<POLY,dim,spacedim>::fill_fe_face_values (const Mapping<dim,spacedim>
          Assert (data.shape_gradients[k].size() + offset <=
                  fe_data.shape_gradients[k].size(),
                  ExcInternalError());
-         mapping.transform_covariant(fe_data.shape_gradients[k], offset,
-                                      data.shape_gradients[k],
+         mapping.transform_covariant(make_slice(fe_data.shape_gradients[k], offset, quadrature.size()),
+                                     0, data.shape_gradients[k],
                                      mapping_data);
        }
     }
@@ -686,8 +686,8 @@ FE_Poly<POLY,dim,spacedim>::fill_fe_subface_values (const Mapping<dim,spacedim>
          Assert (data.shape_gradients[k].size() + offset <=
                  fe_data.shape_gradients[k].size(),
                  ExcInternalError());
-         mapping.transform_covariant(fe_data.shape_gradients[k], offset,
-                                      data.shape_gradients[k],
+         mapping.transform_covariant(make_slice(fe_data.shape_gradients[k], offset, quadrature.size()),
+                                     0, data.shape_gradients[k],
                                      mapping_data);
        }
     }
index 9f6373f773d9d337de8293ebfd2cdcc1888d4549..95a5cba93bf9c7ad716657683b5c9436b4ef3118 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 by the deal.II authors
+//    Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -1178,7 +1178,8 @@ FE_Nedelec<dim,spacedim>::fill_fe_face_values (const Mapping<dim,spacedim>
        {
                                           // first transform shape
                                           // values...
-         mapping.transform_covariant(fe_data.shape_values[k], offset,
+         mapping.transform_covariant(make_slice(fe_data.shape_values[k], offset, n_q_points),
+                                     0,
                                       shape_values,
                                       mapping_data);
 
@@ -1235,8 +1236,8 @@ FE_Nedelec<dim,spacedim>::fill_fe_face_values (const Mapping<dim,spacedim>
                                            // little in between
                                            // 
                                            // do first transformation
-         mapping.transform_covariant(fe_data.shape_gradients[k], offset,
-                                      shape_grads1,
+         mapping.transform_covariant(make_slice(fe_data.shape_gradients[k], offset, n_q_points),
+                                     0, shape_grads1,
                                       mapping_data);
                                            // transpose matrix
           for (unsigned int q=0; q<n_q_points; ++q)
@@ -1326,8 +1327,8 @@ FE_Nedelec<dim,spacedim>::fill_fe_subface_values (const Mapping<dim,spacedim>
        {
                                           // first transform shape
                                           // values...
-         mapping.transform_covariant(fe_data.shape_values[k], offset,
-                                      shape_values,
+         mapping.transform_covariant(make_slice(fe_data.shape_values[k], offset, n_q_points),
+                                     0, shape_values,
                                       mapping_data);
 
                                           // then copy over to target:
@@ -1381,8 +1382,8 @@ FE_Nedelec<dim,spacedim>::fill_fe_subface_values (const Mapping<dim,spacedim>
                                            // little in between
                                            // 
                                            // do first transformation
-         mapping.transform_covariant(fe_data.shape_gradients[k], offset,
-                                      shape_grads1,
+         mapping.transform_covariant(make_slice(fe_data.shape_gradients[k], offset, n_q_points),
+                                     0, shape_grads1,
                                       mapping_data);
                                            // transpose matrix
           for (unsigned int q=0; q<n_q_points; ++q)
index 6c60bba24ae9c763066458e9aa9044c0dfaf2948..80b98afdb98044df6507338c1c271b8770004566 100644 (file)
@@ -2,7 +2,7 @@
 //    $Id$
 //    Version: $Name$
 //
-//    Copyright (C) 2005, 2006, 2007, 2008 by the deal.II authors
+//    Copyright (C) 2005, 2006, 2007, 2008, 2009 by the deal.II authors
 //
 //    This file is subject to QPL and may not be  distributed
 //    without copyright and license information. Please refer
@@ -594,11 +594,11 @@ FE_PolyTensor<POLY,dim,spacedim>::fill_fe_face_values (
                                                 // for transformation
                std::vector<Tensor<1,dim> > shape_values (n_q_points);
                if (mapping_type == covariant)
-                 mapping.transform_covariant(fe_data.shape_values[i], offset,
-                                             shape_values, mapping_data);
+                 mapping.transform_covariant(make_slice(fe_data.shape_values[i], offset, n_q_points),
+                                             0, shape_values, mapping_data);
                else
-                 mapping.transform_contravariant(fe_data.shape_values[i], offset,
-                                                 shape_values, mapping_data);
+                 mapping.transform_contravariant(make_slice(fe_data.shape_values[i], offset, n_q_points),
+                                                 0, shape_values, mapping_data);
                
                                                 // then copy over to target:
                for (unsigned int k=0; k<n_q_points; ++k)
@@ -643,8 +643,8 @@ FE_PolyTensor<POLY,dim,spacedim>::fill_fe_face_values (
              case independent:
              case independent_on_cartesian:
              {
-               mapping.transform_covariant(fe_data.shape_grads[i], offset,
-                                           shape_grads1, mapping_data);
+               mapping.transform_covariant(make_slice(fe_data.shape_grads[i], offset, n_q_points),
+                                           0, shape_grads1, mapping_data);
                for (unsigned int k=0; k<n_q_points; ++k)
                  for (unsigned int d=0; d<dim; ++d)
                    data.shape_gradients[first+d][k] = shape_grads1[k][d];
@@ -653,9 +653,8 @@ FE_PolyTensor<POLY,dim,spacedim>::fill_fe_face_values (
              
              case covariant:
              {
-               mapping.transform_covariant(fe_data.shape_grads[i], offset,
-                                           shape_grads1,
-                                           mapping_data);
+               mapping.transform_covariant(make_slice(fe_data.shape_grads[i], offset, n_q_points),
+                                           0, shape_grads1, mapping_data);
                for (unsigned int q=0; q<n_q_points; ++q)
                  shape_grads2[q] = transpose(shape_grads1[q]);
                                                 // do second transformation
@@ -673,8 +672,8 @@ FE_PolyTensor<POLY,dim,spacedim>::fill_fe_face_values (
              
              case contravariant:
              {
-               mapping.transform_covariant(fe_data.shape_grads[i], offset,
-                                           shape_grads1,
+               mapping.transform_covariant(make_slice(fe_data.shape_grads[i], offset, n_q_points),
+                                           0, shape_grads1,
                                            mapping_data);
 
                mapping.transform_contravariant(shape_grads1, 0,
@@ -778,11 +777,11 @@ FE_PolyTensor<POLY,dim,spacedim>::fill_fe_subface_values (
                                                 // transformation
                std::vector<Tensor<1,dim> > shape_values (n_q_points);
                if (mapping_type == covariant)
-                 mapping.transform_covariant(fe_data.shape_values[i], offset,
-                                             shape_values, mapping_data);
+                 mapping.transform_covariant(make_slice(fe_data.shape_values[i], offset, n_q_points),
+                                             0, shape_values, mapping_data);
                else
-                 mapping.transform_contravariant(fe_data.shape_values[i], offset,
-                                                 shape_values, mapping_data);
+                 mapping.transform_contravariant(make_slice(fe_data.shape_values[i], offset, n_q_points),
+                                                 0, shape_values, mapping_data);
                    
                                                 // then copy over to target:
                for (unsigned int k=0; k<n_q_points; ++k)
@@ -827,8 +826,8 @@ FE_PolyTensor<POLY,dim,spacedim>::fill_fe_subface_values (
              case independent:
              case independent_on_cartesian:
              {
-               mapping.transform_covariant(fe_data.shape_grads[i], offset,
-                                           shape_grads1, mapping_data);
+               mapping.transform_covariant(make_slice(fe_data.shape_grads[i], offset, n_q_points),
+                                           0, shape_grads1, mapping_data);
                for (unsigned int k=0; k<n_q_points; ++k)
                  for (unsigned int d=0; d<dim; ++d)
                    data.shape_gradients[first+d][k] = shape_grads1[k][d];
@@ -837,8 +836,8 @@ FE_PolyTensor<POLY,dim,spacedim>::fill_fe_subface_values (
              
              case covariant:
              {
-               mapping.transform_covariant(fe_data.shape_grads[i], offset,
-                                           shape_grads1,
+               mapping.transform_covariant(make_slice(fe_data.shape_grads[i], offset, n_q_points),
+                                           0, shape_grads1,
                                            mapping_data);
                for (unsigned int q=0; q<n_q_points; ++q)
                  shape_grads2[q] = transpose(shape_grads1[q]);
@@ -857,8 +856,8 @@ FE_PolyTensor<POLY,dim,spacedim>::fill_fe_subface_values (
              
              case contravariant:
              {
-               mapping.transform_covariant(fe_data.shape_grads[i], offset,
-                                           shape_grads1,
+               mapping.transform_covariant(make_slice(fe_data.shape_grads[i], offset, n_q_points),
+                                           0, shape_grads1,
                                            mapping_data);
 
                mapping.transform_contravariant(shape_grads1, 0,
index ffb5c9ab23697f892035b582e51cfc61fe8ef6a8..ff325623767b29b7375cff5513ae242105cb0d25 100644 (file)
@@ -556,6 +556,9 @@ MappingCartesian<dim, spacedim>::transform_covariant (
   VectorSlice<std::vector<Tensor<1,spacedim> > > output,
   const typename Mapping<dim, spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+  
   const InternalData &data = dynamic_cast<const InternalData&> (mapping_data);
 
   Assert (data.update_flags & update_covariant_transformation,
@@ -580,6 +583,9 @@ MappingCartesian<dim, spacedim>::transform_covariant (
   VectorSlice<std::vector<Tensor<2,spacedim> > > output,
   const typename Mapping<dim, spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+  
   const InternalData &data = dynamic_cast<const InternalData&> (mapping_data);
 
   Assert (data.update_flags & update_covariant_transformation,
@@ -605,6 +611,9 @@ MappingCartesian<dim, spacedim>::transform_contravariant (
   VectorSlice<std::vector<Tensor<1,spacedim> > > output,
   const typename Mapping<dim, spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+  
                                   // convert data object to internal
                                   // data for this class. fails with
                                   // an exception if that is not
@@ -633,6 +642,9 @@ MappingCartesian<dim, spacedim>::transform_contravariant (
   VectorSlice<std::vector<Tensor<2,spacedim> > > output,
   const typename Mapping<dim, spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+  
                                   // convert data object to internal
                                   // data for this class. fails with
                                   // an exception if that is not
index 48d14df0e2dbe8eb908147cfa3c569311970ed07..45892480b56216516d5056dded10668156477c09 100644 (file)
@@ -1254,12 +1254,13 @@ MappingQ<dim,spacedim>::transform_covariant (
   VectorSlice<std::vector<Tensor<1,spacedim> > > output,
   const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+  
   const typename MappingQ1<dim,spacedim>::InternalData *q1_data =
     dynamic_cast<const typename MappingQ1<dim,spacedim>::InternalData *> (&mapping_data);
   Assert(q1_data!=0, ExcInternalError());
 
-  Assert (output.size() + offset <= input.size(), ExcInternalError());
-  
   typename std::vector<Tensor<2,dim> >::const_iterator tensor;
 
   if (q1_data->is_mapping_q1_data)
@@ -1289,12 +1290,13 @@ MappingQ<dim,spacedim>::transform_covariant (
   VectorSlice<std::vector<Tensor<2,spacedim> > > output,
   const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+  
   const typename MappingQ1<dim,spacedim>::InternalData *q1_data =
     dynamic_cast<const typename MappingQ1<dim,spacedim>::InternalData *> (&mapping_data);
   Assert(q1_data!=0, ExcInternalError());
 
-  Assert (output.size() + offset <= input.size(), ExcInternalError());
-
   typename std::vector<Tensor<2,dim> >::const_iterator tensor;
 
   if (q1_data->is_mapping_q1_data)
@@ -1324,12 +1326,13 @@ MappingQ<dim,spacedim>::transform_contravariant (
   VectorSlice<std::vector<Tensor<1,spacedim> > > output,
   const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+  
   const typename MappingQ1<dim,spacedim>::InternalData *q1_data =
     dynamic_cast<const typename MappingQ1<dim,spacedim>::InternalData *> (&mapping_data);
   Assert(q1_data!=0, ExcInternalError());
   
-  Assert (output.size() + offset <= input.size(), ExcInternalError());
-
   typename std::vector<Tensor<2,dim> >::const_iterator tensor;
 
   if (q1_data->is_mapping_q1_data)
@@ -1359,12 +1362,13 @@ MappingQ<dim,spacedim>::transform_contravariant (
   VectorSlice<std::vector<Tensor<2,spacedim> > > output,
   const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+  
   const typename MappingQ1<dim,spacedim>::InternalData *q1_data =
     dynamic_cast<const typename MappingQ1<dim,spacedim>::InternalData *> (&mapping_data);
   Assert(q1_data!=0, ExcInternalError());
   
-  Assert (output.size() + offset <= input.size(), ExcInternalError());
-
   typename std::vector<Tensor<2,dim> >::const_iterator tensor;
 
   if (q1_data->is_mapping_q1_data)
index 17f59a091eb04f0031d686ba57dbe03306854f56..83aed8f269cc5681a819aae7a1ff95986f36f69c 100644 (file)
@@ -1216,6 +1216,9 @@ MappingQ1<dim,spacedim>::transform_covariant (
   VectorSlice<std::vector<Tensor<1,spacedim> > > output,
   const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+  
   // ensure that the following cast is really correct:
   Assert (dynamic_cast<const InternalData *>(&mapping_data) != 0, 
          ExcInternalError());
@@ -1241,7 +1244,10 @@ MappingQ1<1,2>::transform_covariant (
   VectorSlice<std::vector<Tensor<1,2> > > output,
   const Mapping<1,2>::InternalDataBase &mapping_data) const
 {
-  // ensure that the following cast is really correct:
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
+
+                                  // ensure that the following cast is really correct:
   Assert (dynamic_cast<const InternalData *>(&mapping_data) != 0, 
          ExcInternalError());
   const InternalData &data = static_cast<const InternalData&>(mapping_data);
@@ -1273,6 +1279,8 @@ MappingQ1<2,3>::transform_covariant (
   VectorSlice<std::vector<Tensor<1,3> > > output,
   const Mapping<2,3>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
   // ensure that the following cast is really correct:
   Assert (dynamic_cast<const InternalData *>(&mapping_data) != 0, 
          ExcInternalError());
@@ -1305,6 +1313,8 @@ MappingQ1<dim, spacedim>::transform_covariant (
     VectorSlice<std::vector<Tensor<2,spacedim> > > output,
     const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data) const
 {
+  Assert (offset == 0, ExcInternalError());
+  AssertDimension (input.size(), output.size());
   // ensure that the following cast is really correct:
   Assert (dynamic_cast<const InternalData *>(&mapping_data) != 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.