]> https://gitweb.dealii.org/ - dealii.git/commitdiff
preliminary changes in pack_callback and unpack_callback to use complex numbers
authorDenis Davydov <davydden@gmail.com>
Tue, 16 Jun 2015 21:10:37 +0000 (23:10 +0200)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 17 Jun 2015 19:33:34 +0000 (14:33 -0500)
source/distributed/solution_transfer.cc

index 428744839e8a335e95f20a176058bccb075b80f4..bf49ec5443c8ff99c8e795af29c3c49d9406fba7 100644 (file)
@@ -216,18 +216,19 @@ namespace parallel
                   const typename Triangulation<dim,dim>::CellStatus /*status*/,
                   void *data)
     {
-      double *data_store = reinterpret_cast<double *>(data);
+      typename VECTOR::value_type *data_store = reinterpret_cast<typename VECTOR::value_type *>(data);
 
       typename DH::cell_iterator cell(*cell_, dof_handler);
 
       const unsigned int dofs_per_cell=cell->get_fe().dofs_per_cell;
-      ::dealii::Vector<double> dofvalues(dofs_per_cell);
+      ::dealii::Vector<typename VECTOR::value_type> dofvalues(dofs_per_cell);
       for (typename std::vector<const VECTOR *>::iterator it=input_vectors.begin();
            it !=input_vectors.end();
            ++it)
         {
           cell->get_interpolated_dof_values(*(*it), dofvalues);
-          std::memcpy(data_store, &dofvalues(0), sizeof(double)*dofs_per_cell);
+          Assert (typeid(typename VECTOR::value_type) == typeid(double), ExcNotImplemented());
+          std::memcpy(data_store, &dofvalues(0), sizeof(typename VECTOR::value_type)*dofs_per_cell);
           data_store += dofs_per_cell;
         }
     }
@@ -245,14 +246,15 @@ namespace parallel
       cell(*cell_, dof_handler);
 
       const unsigned int dofs_per_cell=cell->get_fe().dofs_per_cell;
-      ::dealii::Vector<double> dofvalues(dofs_per_cell);
-      const double *data_store = reinterpret_cast<const double *>(data);
+      ::dealii::Vector<typename VECTOR::value_type> dofvalues(dofs_per_cell);
+      const typename VECTOR::value_type *data_store = reinterpret_cast<const typename VECTOR::value_type *>(data);
 
       for (typename std::vector<VECTOR *>::iterator it = all_out.begin();
            it != all_out.end();
            ++it)
         {
-          std::memcpy(&dofvalues(0), data_store, sizeof(double)*dofs_per_cell);
+          Assert (typeid(typename VECTOR::value_type) == typeid(double), ExcNotImplemented());
+          std::memcpy(&dofvalues(0), data_store, sizeof(typename VECTOR::value_type)*dofs_per_cell);
           cell->set_dof_values_by_interpolation(dofvalues, *(*it));
           data_store += dofs_per_cell;
         }

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.