]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Un-break compilation. 1263/head
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 5 Aug 2015 03:05:28 +0000 (22:05 -0500)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 5 Aug 2015 03:05:28 +0000 (22:05 -0500)
On compilers without C++11, we need to stay within the limits of BOOST's maximal
number of arguments for boost::bind.

include/deal.II/fe/fe_system.h
source/fe/fe_system.cc

index 2a5a8839619bb9d31df11d14893290a459989ac7..313af65b971934efc8999aa2723274ef97e08622 100644 (file)
@@ -1036,12 +1036,12 @@ private:
   template <int dim_1>
   void
   compute_fill_one_base (const Mapping<dim,spacedim>                      &mapping,
-                         const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+                         const std::pair<typename Triangulation<dim,spacedim>::cell_iterator,
+                         CellSimilarity::Similarity>       cell_and_similarity,
                          const std::pair<unsigned int,unsigned int>        face_sub_no,
                          const Quadrature<dim_1>                          &quadrature,
-                         const CellSimilarity::Similarity                  cell_similarity,
                          const std::pair<const typename Mapping<dim,spacedim>::InternalDataBase *,
-                         const typename Mapping<dim,spacedim>::InternalDataBase *> mapping_internal,
+                         const typename Mapping<dim,spacedim>::InternalDataBase *> mapping_and_fe_internal,
                          const unsigned int                                base_element,
                          const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
                          internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
index f880a0a70e03d48aa5736134e5eb70aec0f7f542..ca7cfcd410be72cdeb22a646f5410553d8089f2c 100644 (file)
@@ -1095,17 +1095,20 @@ template <int dim_1>
 void
 FESystem<dim,spacedim>::
 compute_fill_one_base (const Mapping<dim,spacedim>                      &mapping,
-                       const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+                       const std::pair<typename Triangulation<dim,spacedim>::cell_iterator,
+                       CellSimilarity::Similarity>       cell_and_similarity,
                        const std::pair<unsigned int, unsigned int>       face_sub_no,
                        const Quadrature<dim_1>                          &quadrature,
-                       const CellSimilarity::Similarity                  cell_similarity,
                        const std::pair<const typename Mapping<dim,spacedim>::InternalDataBase *,
-                       const typename Mapping<dim,spacedim>::InternalDataBase *> mapping_internal,
+                       const typename Mapping<dim,spacedim>::InternalDataBase *> mapping_and_fe_internal,
                        const unsigned int                                base_no,
                        const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
                        internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
 {
-  const InternalData &fe_data = static_cast<const InternalData &> (*mapping_internal.second);
+  const typename Triangulation<dim,spacedim>::cell_iterator cell            = cell_and_similarity.first;
+  const CellSimilarity::Similarity                          cell_similarity = cell_and_similarity.second;
+
+  const InternalData &fe_data = static_cast<const InternalData &> (*mapping_and_fe_internal.second);
   const unsigned int n_q_points = quadrature.size();
 
   const FiniteElement<dim,spacedim> &
@@ -1164,14 +1167,14 @@ compute_fill_one_base (const Mapping<dim,spacedim>                      &mapping
   // copied from base_data to data on each face, therefore use
   // base_fe_data.update_flags.
   if (face_sub_no.first==invalid_face_number)
-    base_fe.fill_fe_values(mapping, cell, *cell_quadrature, *mapping_internal.first,
+    base_fe.fill_fe_values(mapping, cell, *cell_quadrature, *mapping_and_fe_internal.first,
                            base_fe_data, base_data, base_data, cell_similarity);
   else if (face_sub_no.second==invalid_face_number)
     base_fe.fill_fe_face_values(mapping, cell, face_sub_no.first,
-                                *face_quadrature, *mapping_internal.first, base_fe_data, base_data, base_data);
+                                *face_quadrature, *mapping_and_fe_internal.first, base_fe_data, base_data, base_data);
   else
     base_fe.fill_fe_subface_values(mapping, cell, face_sub_no.first, face_sub_no.second,
-                                   *face_quadrature, *mapping_internal.first, base_fe_data, base_data, base_data);
+                                   *face_quadrature, *mapping_and_fe_internal.first, base_fe_data, base_data, base_data);
 
   // now data has been generated, so copy it. we used to work by
   // looping over all base elements (i.e. this outer loop), then over
@@ -1306,10 +1309,9 @@ compute_fill (const Mapping<dim,spacedim>                      &mapping,
         += Threads::new_task (std_cxx11::function<void ()>(std_cxx11::bind (&FESystem<dim,spacedim>::template compute_fill_one_base<dim_1>,
                                                            this,
                                                            std_cxx11::cref(mapping),
-                                                           std_cxx11::cref(cell),
+                                                           std::make_pair(cell, CellSimilarity::none),
                                                            std::make_pair(face_no, sub_no),
                                                            std_cxx11::cref(quadrature),
-                                                           CellSimilarity::none,
                                                            std::make_pair(&mapping_internal,
                                                                &fedata),
                                                            base_no,

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.