]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Compatibility patches for IBMs xlC compiler 5.0, and other assorted minor changes...
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 19 Jan 2001 17:45:06 +0000 (17:45 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 19 Jan 2001 17:45:06 +0000 (17:45 +0000)
git-svn-id: https://svn.dealii.org/branches/Branch-3-1@3732 0785d39b-7218-0410-832d-ea1e28bc413d

113 files changed:
deal.II/aclocal.m4
deal.II/base/Makefile
deal.II/base/include/base/data_out_base.h
deal.II/base/include/base/exceptions.h
deal.II/base/include/base/function.h
deal.II/base/include/base/function_derivative.h
deal.II/base/include/base/function_lib.h
deal.II/base/include/base/memory_consumption.h
deal.II/base/include/base/parameter_handler.h
deal.II/base/include/base/point.h
deal.II/base/include/base/quadrature.h
deal.II/base/include/base/tensor_function.h
deal.II/base/source/convergence_table.cc
deal.II/base/source/data_out_base.cc
deal.II/base/source/function.cc
deal.II/base/source/function_derivative.cc
deal.II/base/source/function_lib.cc
deal.II/base/source/parameter_handler.cc
deal.II/base/source/quadrature.cc
deal.II/base/source/tensor_function.cc
deal.II/configure.in
deal.II/deal.II/include/dofs/dof_accessor.h
deal.II/deal.II/include/dofs/dof_accessor.templates.h
deal.II/deal.II/include/dofs/dof_handler.h
deal.II/deal.II/include/fe/fe.h
deal.II/deal.II/include/fe/fe_lib.criss_cross.h
deal.II/deal.II/include/fe/fe_lib.dg.h
deal.II/deal.II/include/fe/fe_lib.dgp.h
deal.II/deal.II/include/fe/fe_lib.lagrange.h
deal.II/deal.II/include/fe/fe_system.h
deal.II/deal.II/include/fe/fe_values.h
deal.II/deal.II/include/fe/q1_mapping.h
deal.II/deal.II/include/grid/geometry_info.h
deal.II/deal.II/include/grid/grid_in.h
deal.II/deal.II/include/grid/grid_reordering.h
deal.II/deal.II/include/grid/intergrid_map.h
deal.II/deal.II/include/grid/persistent_tria.h
deal.II/deal.II/include/grid/tria.h
deal.II/deal.II/include/grid/tria_accessor.templates.h
deal.II/deal.II/include/grid/tria_iterator.h
deal.II/deal.II/include/multigrid/mg_base.h
deal.II/deal.II/include/multigrid/mg_dof_handler.h
deal.II/deal.II/include/numerics/assembler.h
deal.II/deal.II/include/numerics/base.h
deal.II/deal.II/include/numerics/data_out.h
deal.II/deal.II/include/numerics/data_out_faces.h
deal.II/deal.II/include/numerics/data_out_stack.h
deal.II/deal.II/include/numerics/dof_renumbering.h
deal.II/deal.II/include/numerics/error_estimator.h
deal.II/deal.II/include/numerics/histogram.h
deal.II/deal.II/include/numerics/matrices.h
deal.II/deal.II/include/numerics/solution_transfer.h
deal.II/deal.II/include/numerics/vectors.h
deal.II/deal.II/source/dofs/dof_accessor.cc
deal.II/deal.II/source/dofs/dof_handler.cc
deal.II/deal.II/source/dofs/dof_renumbering.cc
deal.II/deal.II/source/dofs/dof_tools.cc
deal.II/deal.II/source/fe/fe.cc
deal.II/deal.II/source/fe/fe_lib.criss_cross.cc
deal.II/deal.II/source/fe/fe_lib.cubic.cc
deal.II/deal.II/source/fe/fe_lib.dg.cc
deal.II/deal.II/source/fe/fe_lib.dg.constant.cc
deal.II/deal.II/source/fe/fe_lib.dgp1.cc
deal.II/deal.II/source/fe/fe_lib.dgp2.cc
deal.II/deal.II/source/fe/fe_lib.dgp3.cc
deal.II/deal.II/source/fe/fe_lib.linear.cc
deal.II/deal.II/source/fe/fe_lib.quadratic.cc
deal.II/deal.II/source/fe/fe_lib.quartic.cc
deal.II/deal.II/source/fe/fe_system.cc
deal.II/deal.II/source/fe/fe_tools.cc
deal.II/deal.II/source/fe/fe_values.cc
deal.II/deal.II/source/fe/q1_mapping.cc
deal.II/deal.II/source/fe/q1_mapping.jacobians.cc
deal.II/deal.II/source/grid/geometry_info.cc
deal.II/deal.II/source/grid/grid_generator.cc
deal.II/deal.II/source/grid/grid_in.cc
deal.II/deal.II/source/grid/grid_refinement.cc
deal.II/deal.II/source/grid/grid_reordering.cc
deal.II/deal.II/source/grid/intergrid_map.cc
deal.II/deal.II/source/grid/persistent_tria.cc
deal.II/deal.II/source/grid/tria.all_dimensions.cc
deal.II/deal.II/source/grid/tria.cc
deal.II/deal.II/source/grid/tria_accessor.cc
deal.II/deal.II/source/multigrid/mg_dof_accessor.cc
deal.II/deal.II/source/multigrid/mg_dof_handler.cc
deal.II/deal.II/source/multigrid/mg_smoother.cc
deal.II/deal.II/source/multigrid/multigrid.cc
deal.II/deal.II/source/numerics/assembler.cc
deal.II/deal.II/source/numerics/base.cc
deal.II/deal.II/source/numerics/data_out.cc
deal.II/deal.II/source/numerics/data_out_rotation.cc
deal.II/deal.II/source/numerics/data_out_stack.cc
deal.II/deal.II/source/numerics/derivative_approximation.cc
deal.II/deal.II/source/numerics/error_estimator.cc
deal.II/deal.II/source/numerics/histogram.cc
deal.II/deal.II/source/numerics/matrices.cc
deal.II/deal.II/source/numerics/solution_transfer.cc
deal.II/deal.II/source/numerics/time_dependent.cc
deal.II/deal.II/source/numerics/vectors.cc
deal.II/doc/platforms/ibm_aix_xlc.html
deal.II/doc/readme.html
deal.II/lac/include/lac/block_sparse_matrix.h
deal.II/lac/include/lac/block_sparse_matrix.templates.h
deal.II/lac/include/lac/block_vector.h
deal.II/lac/include/lac/block_vector.templates.h
deal.II/lac/include/lac/precondition_block.h
deal.II/lac/include/lac/solver.h
deal.II/lac/include/lac/sparse_vanka.templates.h
deal.II/lac/include/lac/vector.h
deal.II/lac/include/lac/vector.templates.h
deal.II/lac/include/lac/vector_memory.h
deal.II/lac/source/full_matrix.double.cc
deal.II/lac/source/sparsity_pattern.cc

index b2f01df5f6814d736039ceeb2d6041ba38c06c24..08d2e69ee39f9f08279ed9a4c66d1c5c6b8654e9 100644 (file)
@@ -300,4 +300,68 @@ AC_DEFUN(DEAL_II_CHECK_ASSERT_THROW, dnl
        AC_MSG_RESULT("no")
        $3
     ])
+)
+
+
+
+dnl IBM xlC 5.0 from the VisualAge C++ pack has a bug with the following 
+dnl code. We can work around it if we insert code like "using namespace std;"
+dnl in the right place, but we'd like to do so only if absolutely necessary.
+dnl Check whether the compiler which we are using has this bug.
+dnl
+dnl Usage: DEAL_II_CHECK_IBM_XLC_ERROR
+dnl
+AC_DEFUN(DEAL_II_CHECK_IBM_XLC_ERROR, dnl
+  AC_MSG_CHECKING(for std::vector bug)
+  AC_LANG_CPLUSPLUS
+  CXXFLAGS="$CXXFLAGSG"
+  AC_TRY_COMPILE(
+    [
+      namespace std {
+        template <class _Ty>                             class allocator {};
+        template<class _Ty, class _Ax = allocator<_Ty> > class vector{};
+      }
+
+      struct X {};
+      template <int dim> void g (const std::vector<X> &x);
+
+      void f ()  {
+        std::vector<X> x;
+        g<1> (x);
+      };
+    ],
+    [],
+    [
+      AC_MSG_RESULT(no)
+    ],
+    [
+      AC_MSG_RESULT(yes. trying to work around)
+      AC_DEFINE(XLC_WORK_AROUND_STD_BUG)
+    ])
+)
+
+
+dnl gcc2.95 doesn't have the std::iterator class, but the standard requires it, so
+dnl check whether we have to work around it
+dnl
+dnl Usage: DEAL_II_HAVE_STD_ITERATOR
+dnl
+AC_DEFUN(DEAL_II_HAVE_STD_ITERATOR, dnl
+  AC_MSG_CHECKING(for std::iterator class)
+  AC_LANG_CPLUSPLUS
+  CXXFLAGS="$CXXFLAGSG"
+  AC_TRY_COMPILE(
+    [
+#include <iterator>
+      class MyIterator : public std::iterator<std::bidirectional_iterator_tag,int>
+      {};
+    ],
+    [],
+    [
+      AC_MSG_RESULT(yes)
+      AC_DEFINE(HAVE_STD_ITERATOR_CLASS)
+    ],
+    [
+      AC_MSG_RESULT(no)
+    ])
 )
\ No newline at end of file
index a6d1912e9fe0f2603e291bf1f87a41498953d440..c7fcbd82d10d196afbc1c2832f9f66a34652b420 100644 (file)
@@ -76,11 +76,11 @@ endif
 
 
 lib/libbase.a: $(forward-declarations) $(o-files)
-       @echo =====base=============debug======$(MT)== Linking library:   $@
+       @echo =====base=============optimized==$(MT)== Linking library:   $@
        @ar ruv $@ $(o-files)
 
 lib/libbase.g.a: $(forward-declarations) $(go-files)
-       @echo =====base=============optimized==$(MT)== Linking library:   $@
+       @echo =====base=============debug======$(MT)== Linking library:   $@
        @ar ruv $@ $(go-files)
 
 
index 616b2dd7bed3080697d0e50d04caa026fcf87d00..05465b3fa0c2488970450cfe9a1c3d36344382cf 100644 (file)
@@ -1003,7 +1003,7 @@ class DataOutBase
                                      * on the parameters.
                                      */
     template <int dim, int spacedim>
-    static void write_ucd (const std::vector<Patch<dim,spacedim> > &patches,
+    static void write_ucd (const typename std::vector<Patch<dim,spacedim> > &patches,
                           const std::vector<std::string>          &data_names,
                           const UcdFlags                          &flags,
                           std::ostream                            &out);
@@ -1016,7 +1016,7 @@ class DataOutBase
                                      * on the parameters.
                                      */
     template <int dim, int spacedim>
-    static void write_gnuplot (const std::vector<Patch<dim,spacedim> > &patches,
+    static void write_gnuplot (const typename std::vector<Patch<dim,spacedim> > &patches,
                               const std::vector<std::string>          &data_names,
                               const GnuplotFlags                      &flags,
                               std::ostream                            &out);
@@ -1029,7 +1029,7 @@ class DataOutBase
                                      * on the parameters.
                                      */
     template <int dim, int spacedim>
-    static void write_povray (const std::vector<Patch<dim,spacedim> > &patches,
+    static void write_povray (const typename std::vector<Patch<dim,spacedim> > &patches,
                              const std::vector<std::string>          &data_names,
                              const PovrayFlags                       &flags,
                              std::ostream                            &out);
@@ -1042,7 +1042,7 @@ class DataOutBase
                                      * on the parameters.
                                      */
     template <int dim, int spacedim>
-    static void write_eps (const std::vector<Patch<dim,spacedim> > &patches,
+    static void write_eps (const typename std::vector<Patch<dim,spacedim> > &patches,
                           const std::vector<std::string>          &data_names,
                           const EpsFlags                          &flags,
                           std::ostream                            &out);
@@ -1055,7 +1055,7 @@ class DataOutBase
                                      * on the parameters.
                                      */
     template <int dim, int spacedim>
-    static void write_gmv (const std::vector<Patch<dim,spacedim> > &patches,
+    static void write_gmv (const typename std::vector<Patch<dim,spacedim> > &patches,
                           const std::vector<std::string>          &data_names,
                           const GmvFlags                          &flags,
                           std::ostream                            &out);
@@ -1175,7 +1175,7 @@ class DataOutBase
                                      */
     template <int dim, int spacedim>
     static void
-    write_gmv_reorder_data_vectors (const std::vector<Patch<dim,spacedim> > &patches,
+    write_gmv_reorder_data_vectors (const typename std::vector<Patch<dim,spacedim> > &patches,
                                    std::vector<std::vector<double> >       &data_vectors);
 };
 
@@ -1514,7 +1514,7 @@ class DataOutInterface : private DataOutBase
                                      * allow the output functions to
                                      * know what they shall print.
                                      */
-    virtual const std::vector<DataOutBase::Patch<dim,spacedim> > &
+    virtual const typename std::vector<typename DataOutBase::Patch<dim,spacedim> > &
     get_patches () const = 0;
 
                                     /**
index 927c2e1e905cf10ccafd40ada752193e898b4451..e92efa71e92ae1c520ae983234f93c75039c9653 100644 (file)
@@ -14,8 +14,8 @@
 #define __deal2__exceptions_h
 
 
+#include <iosfwd>
 #include <iostream>
-#include <exception>
 #include <cstdlib>
 
 #ifndef __GNUC__
index de66b9f6229219ab111ec31f6edfba769bc2f54e..9e6435205375f53d67ffdf71d205e4c52d48d1e8 100644 (file)
@@ -162,7 +162,7 @@ class Function : public FunctionTime,
                                      * right size, i.e.  the same
                                      * size as the @p{points} array.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
                             std::vector<double>            &values,
                             const unsigned int              component = 0) const;
 
@@ -177,7 +177,7 @@ class Function : public FunctionTime,
                                      * the same number of components
                                      * as this function has.
                                      */
-    virtual void vector_value_list (const std::vector<Point<dim> > &points,
+    virtual void vector_value_list (const typename std::vector<Point<dim> > &points,
                                    std::vector<Vector<double> >   &values) const;
     
                                     /**
@@ -194,7 +194,7 @@ class Function : public FunctionTime,
                                      * function at the given point.
                                      */
     virtual void          vector_gradient (const Point<dim>            &p,
-                                          std::vector<Tensor<1,dim> > &gradients) const;
+                                          typename std::vector<Tensor<1,dim> > &gradients) const;
     
                                     /**
                                      * Set @p{gradients} to the
@@ -205,8 +205,8 @@ class Function : public FunctionTime,
                                      * right size, i.e.  the same
                                      * size as the @p{points} array.
                                      */
-    virtual void gradient_list (const std::vector<Point<dim> > &points,
-                               std::vector<Tensor<1,dim> >    &gradients,
+    virtual void gradient_list (const typename std::vector<Point<dim> > &points,
+                               typename std::vector<Tensor<1,dim> >    &gradients,
                                const unsigned int              component = 0) const;
     
                                     /**
@@ -223,8 +223,8 @@ class Function : public FunctionTime,
                                      * over the different components
                                      * of the function.
                                      */
-    virtual void vector_gradient_list (const std::vector<Point<dim> >            &points,
-                                      std::vector<std::vector<Tensor<1,dim> > > &gradients) const;
+    virtual void vector_gradient_list (const typename std::vector<Point<dim> >            &points,
+                                      typename std::vector<typename std::vector<Tensor<1,dim> > > &gradients) const;
 
                                     /**
                                      * Compute the Laplacian of a
@@ -245,7 +245,7 @@ class Function : public FunctionTime,
                                      * Compute the Laplacian of one
                                      * component at a set of points.
                                      */
-    virtual void laplacian_list (const std::vector<Point<dim> > &points,
+    virtual void laplacian_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int              component = 0) const;
 
@@ -253,7 +253,7 @@ class Function : public FunctionTime,
                                      * Compute the Laplacians of all
                                      * components at a set of points.
                                      */
-    virtual void vector_laplacian_list (const std::vector<Point<dim> > &points,
+    virtual void vector_laplacian_list (const typename std::vector<Point<dim> > &points,
                                        std::vector<Vector<double> >   &values) const;
 
                                     /**
@@ -329,7 +329,7 @@ class ZeroFunction : public Function<dim>
                                      * the same size as the @p{points}
                                      * array.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
                             std::vector<double>            &values,
                             const unsigned int              component = 0) const;
 
@@ -342,7 +342,7 @@ class ZeroFunction : public Function<dim>
                                      * the same size as the @p{points}
                                      * array.
                                      */
-    virtual void vector_value_list (const std::vector<Point<dim> > &points,
+    virtual void vector_value_list (const typename std::vector<Point<dim> > &points,
                                    std::vector<Vector<double> >   &values) const;
     
                                     /**
@@ -360,7 +360,7 @@ class ZeroFunction : public Function<dim>
                                      * for all components.
                                      */
     virtual void          vector_gradient (const Point<dim>            &p,
-                                          std::vector<Tensor<1,dim> > &gradients) const;
+                                          typename std::vector<Tensor<1,dim> > &gradients) const;
     
                                     /**
                                      * Set @p{gradients} to the gradients of
@@ -370,8 +370,8 @@ class ZeroFunction : public Function<dim>
                                      * already has the right size, i.e.
                                      * the same size as the @p{points} array.
                                      */
-    virtual void gradient_list (const std::vector<Point<dim> > &points,
-                               std::vector<Tensor<1,dim> >    &gradients,
+    virtual void gradient_list (const typename std::vector<Point<dim> > &points,
+                               typename std::vector<Tensor<1,dim> >    &gradients,
                                const unsigned int              component = 0) const;
     
                                     /**
@@ -388,8 +388,8 @@ class ZeroFunction : public Function<dim>
                                      * over the different components
                                      * of the function.
                                      */
-    virtual void vector_gradient_list (const std::vector<Point<dim> >            &points,
-                                      std::vector<std::vector<Tensor<1,dim> > > &gradients) const;
+    virtual void vector_gradient_list (const typename std::vector<Point<dim> >            &points,
+                                      typename std::vector<typename std::vector<Tensor<1,dim> > > &gradients) const;
 };
 
 
@@ -457,7 +457,7 @@ class ConstantFunction : public ZeroFunction<dim>
                                      * the same size as the @p{points}
                                      * array.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
                             std::vector<double>            &values,
                             const unsigned int              component = 0) const;
 
@@ -470,7 +470,7 @@ class ConstantFunction : public ZeroFunction<dim>
                                      * the same size as the @p{points}
                                      * array.
                                      */
-    virtual void vector_value_list (const std::vector<Point<dim> > &points,
+    virtual void vector_value_list (const typename std::vector<Point<dim> > &points,
                                    std::vector<Vector<double> >   &values) const;
 
                                     /**
@@ -538,7 +538,7 @@ class ComponentSelectFunction : public ConstantFunction<dim>
                                      * the same size as the @p{points}
                                      * array.
                                      */
-    virtual void vector_value_list (const std::vector<Point<dim> > &points,
+    virtual void vector_value_list (const typename std::vector<Point<dim> > &points,
                                    std::vector<Vector<double> >   &values) const;
 
                                     /**
index 91375ee7064826c95db1c711292e80e5d368a031..bffcabc2c71c7fec8aaab41aef3baf4001ef8054 100644 (file)
@@ -86,9 +86,9 @@ class FunctionDerivative : public Function<dim>
                                     /**
                                      * Function values at multiple points.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
-                            std::vector<double>            &values,
-                            const unsigned int              component = 0) const;    
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
+                            std::vector<double>                     &values,
+                            const unsigned int                       component = 0) const;    
 
                                     /**
                                      * Determine an estimate for
index f0be7ae3fffa8fbddecc4fcbdd1b11c2224d0fcc..c7aab5d4eb6303a6cc077da859c63c797c46f1d6 100644 (file)
@@ -40,7 +40,7 @@ class SquareFunction : public Function<dim>
                                     /**
                                      * Function values at multiple points.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
                             std::vector<double>            &values,
                             const unsigned int              component = 0) const;
 
@@ -53,8 +53,8 @@ class SquareFunction : public Function<dim>
                                     /**
                                        Gradients at multiple points.
                                     */
-    virtual void gradient_list (const std::vector<Point<dim> > &points,
-                               std::vector<Tensor<1,dim> >    &gradients,
+    virtual void gradient_list (const typename std::vector<Point<dim> > &points,
+                               typename std::vector<Tensor<1,dim> >    &gradients,
                                const unsigned int              component = 0) const;
 
                                     /**
@@ -66,7 +66,7 @@ class SquareFunction : public Function<dim>
                                     /**
                                      * Laplacian of the function at multiple points.
                                      */
-    virtual void laplacian_list (const std::vector<Point<dim> > &points,
+    virtual void laplacian_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int              component = 0) const;
 };
@@ -92,7 +92,7 @@ class Q1WedgeFunction : public Function<dim>
                                     /**
                                      * Function values at multiple points.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
                             std::vector<double>            &values,
                             const unsigned int              component = 0) const;
 
@@ -105,8 +105,8 @@ class Q1WedgeFunction : public Function<dim>
                                     /**
                                        Gradients at multiple points.
                                     */
-    virtual void gradient_list (const std::vector<Point<dim> > &points,
-                               std::vector<Tensor<1,dim> >    &gradients,
+    virtual void gradient_list (const typename std::vector<Point<dim> > &points,
+                               typename std::vector<Tensor<1,dim> >    &gradients,
                                const unsigned int              component = 0) const;
      
                                     /**
@@ -118,7 +118,7 @@ class Q1WedgeFunction : public Function<dim>
                                     /**
                                      * Laplacian of the function at multiple points.
                                      */
-    virtual void laplacian_list (const std::vector<Point<dim> > &points,
+    virtual void laplacian_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int              component = 0) const;
 };
@@ -159,7 +159,7 @@ class PillowFunction : public Function<dim>
                                     /**
                                      * Values at multiple points.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
                             std::vector<double>            &values,
                             const unsigned int              component = 0) const;
 
@@ -172,8 +172,8 @@ class PillowFunction : public Function<dim>
                                     /**
                                      * Gradients at multiple points.
                                      */
-    virtual void gradient_list (const std::vector<Point<dim> > &points,
-                               std::vector<Tensor<1,dim> >    &gradients,
+    virtual void gradient_list (const typename std::vector<Point<dim> > &points,
+                               typename std::vector<Tensor<1,dim> >    &gradients,
                                const unsigned int              component = 0) const;
 
                                     /**
@@ -185,7 +185,7 @@ class PillowFunction : public Function<dim>
                                     /**
                                      * Laplacian at multiple points.
                                      */
-    virtual void laplacian_list (const std::vector<Point<dim> > &points,
+    virtual void laplacian_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int              component = 0) const;
   private:
@@ -213,7 +213,7 @@ class CosineFunction : public Function<dim>
                                     /**
                                      * Values at multiple points.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
                             std::vector<double>            &values,
                             const unsigned int              component = 0) const;
 
@@ -226,8 +226,8 @@ class CosineFunction : public Function<dim>
                                     /**
                                      * Gradients at multiple points.
                                      */
-    virtual void gradient_list (const std::vector<Point<dim> > &points,
-                               std::vector<Tensor<1,dim> >    &gradients,
+    virtual void gradient_list (const typename std::vector<Point<dim> > &points,
+                               typename std::vector<Tensor<1,dim> >    &gradients,
                                const unsigned int              component = 0) const;
 
                                     /**
@@ -239,7 +239,7 @@ class CosineFunction : public Function<dim>
                                     /**
                                      * Laplacian at multiple points.
                                      */
-    virtual void laplacian_list (const std::vector<Point<dim> > &points,
+    virtual void laplacian_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int              component = 0) const;
 };
@@ -263,7 +263,7 @@ class ExpFunction : public Function<dim>
                                     /**
                                      * Values at multiple points.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
                             std::vector<double>            &values,
                             const unsigned int              component = 0) const;
 
@@ -276,8 +276,8 @@ class ExpFunction : public Function<dim>
                                     /**
                                      * Gradients at multiple points.
                                      */
-    virtual void gradient_list (const std::vector<Point<dim> > &points,
-                               std::vector<Tensor<1,dim> >    &gradients,
+    virtual void gradient_list (const typename std::vector<Point<dim> > &points,
+                               typename std::vector<Tensor<1,dim> >    &gradients,
                                const unsigned int              component = 0) const;
 
                                     /**
@@ -289,7 +289,7 @@ class ExpFunction : public Function<dim>
                                     /**
                                      * Laplacian at multiple points.
                                      */
-    virtual void laplacian_list (const std::vector<Point<dim> > &points,
+    virtual void laplacian_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int              component = 0) const;
 };
@@ -428,7 +428,7 @@ class JumpFunction : public Function<dim>
                                     /**
                                      * Function values at multiple points.
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
                             std::vector<double>            &values,
                             const unsigned int              component = 0) const;
 
@@ -441,8 +441,8 @@ class JumpFunction : public Function<dim>
                                     /**
                                        Gradients at multiple points.
                                     */
-    virtual void gradient_list (const std::vector<Point<dim> > &points,
-                               std::vector<Tensor<1,dim> >    &gradients,
+    virtual void gradient_list (const typename std::vector<Point<dim> > &points,
+                               typename std::vector<Tensor<1,dim> >    &gradients,
                                const unsigned int              component = 0) const;
 
                                     /**
@@ -454,7 +454,7 @@ class JumpFunction : public Function<dim>
                                     /**
                                      * Laplacian of the function at multiple points.
                                      */
-    virtual void laplacian_list (const std::vector<Point<dim> > &points,
+    virtual void laplacian_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int              component = 0) const;
 
index 1df064f48a60b9d1bc7c4138dc8cca6b46f8b426..0035ff865817e096018cdf5994f3d070b7e904dd 100644 (file)
@@ -194,7 +194,7 @@ namespace MemoryConsumption
                                    * vectors of bools.
                                    */
   template <typename T>
-  unsigned int memory_consumption (const std::vector<T> &v);
+  unsigned int memory_consumption (const typename std::vector<T> &v);
 
                                   /**
                                    * Estimate the amount of memory
@@ -274,7 +274,23 @@ namespace MemoryConsumption
                                    * for a vector of pointers.
                                    */
   template <typename T>
-  unsigned int memory_consumption (const std::vector<T *> &v);
+  unsigned int memory_consumption (const typename std::vector<T *> &v);
+
+                                  /** 
+                                   * Specialization of the
+                                   * determination of the memory
+                                   * consumption of a vector, here
+                                   * for a vector of strings. This
+                                   * function is not necessary from a
+                                   * struct C++ viewpoint, since it
+                                   * could be generated, but is
+                                   * necessary for compatibility with
+                                   * IBM's xlC 5.0 compiler, and
+                                   * doesn't harm for other compilers
+                                   * as well.  
+                                   */
+  unsigned int memory_consumption (const std::vector<std::string> &v);
+
 
                                   /**
                                    * Determine an estimate of the
@@ -282,7 +298,7 @@ namespace MemoryConsumption
                                    * consumed by a pair of values.
                                    */
   template <typename A, typename B>
-  unsigned int memory_consumption (const std::pair<A,B> &p);
+  unsigned int memory_consumption (const typename std::pair<A,B> &p);
     
                                   /**
                                    * Return the amount of memory
@@ -413,8 +429,13 @@ namespace MemoryConsumption
 
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+  using namespace std;
+#endif
+
   template <typename T>
-  unsigned int memory_consumption (const std::vector<T> &v)
+  unsigned int memory_consumption (const typename std::vector<T> &v)
   {
     unsigned int mem = sizeof(std::vector<T>);
     const unsigned int n = v.size();
@@ -492,7 +513,7 @@ namespace MemoryConsumption
     
   template <typename T>
   inline
-  unsigned int memory_consumption (const std::vector<T *> &v)
+  unsigned int memory_consumption (const typename std::vector<T *> &v)
   {
     return (v.capacity() * sizeof(T *) +
            sizeof(v));
@@ -502,7 +523,7 @@ namespace MemoryConsumption
                                    
   template <typename A, typename B>
   inline
-  unsigned int memory_consumption (const std::pair<A,B> &p)
+  unsigned int memory_consumption (const typename std::pair<A,B> &p)
   {
     return (memory_consumption(p.first) +
            memory_consumption(p.second));
index aac88a1ed6e5b3873804d5e90de14c58c46d8c59..81f1a4e8f2839f3c3fe51b48d66cdef627726718 100644 (file)
@@ -1625,17 +1625,6 @@ class MultipleParameterLoop : public ParameterHandler
     unsigned int memory_consumption () const;
 
   private:
-                                    /**
-                                     * Declare what a multiple entry
-                                     * is: a variant * entry (in
-                                     * curly braces @p{{}}) or an
-                                     * array (in double curly braces
-                                     * @p{{{}}}).
-                                     */
-    enum MultipleEntryType 
-    {
-         variant, array
-    };
 
                                     /**
                                      * An object in the list of entries with
@@ -1644,6 +1633,18 @@ class MultipleParameterLoop : public ParameterHandler
     class Entry 
     {
       public:
+      /**
+       * Declare what a multiple entry
+       * is: a variant * entry (in
+       * curly braces @p{{}}) or an
+       * array (in double curly braces
+       * @p{{{}}}).
+       */
+      enum MultipleEntryType 
+      {
+       variant, array
+      };
+
                                         /**
                                          * Constructor
                                          */
index bcb07d2a172c64daf8f50ebc8c9f52ec617cbfbb..11799280faf643abc6991a2e2b816a56c9fe4b93 100644 (file)
@@ -385,5 +385,34 @@ Point<dim> operator * (const double factor, const Point<dim> &p)
 };
 
 
+/**
+ * Output operator for points. Print the elements consecutively,
+ * with a space in between.
+ */
+template <int dim>
+inline
+std::ostream & operator << (std::ostream &out, const Point<dim> &p)
+{
+  for (unsigned int i=0; i<dim-1; ++i)
+    out << p[i] << ' ';
+  out << p[dim-1];
+
+  return out;
+};
+
+
+
+/** 
+ * Output operator for points of dimension 1. This is implemented
+ * specialized from the general template in order to avoid a compiler
+ * warning that the loop is empty.  
+ */
+inline
+std::ostream & operator << (std::ostream &out, const Point<1> &p)
+{
+  out << p[0];
+
+  return out;
+};
 
 #endif
index 410705c6881a80acf5aecb386b510c2720d21b88..af53021cdfecf71ef6bb71d0f144c7dd170beb79 100644 (file)
@@ -94,7 +94,7 @@ class Quadrature : public Subscriptor
                                     /**
                                      * Constructor from given vectors.
                                      */
-    Quadrature (const std::vector<Point<dim> > &points,
+    Quadrature (const typename std::vector<Point<dim> > &points,
                const std::vector<double>      &weights);
     
                                     /**
@@ -111,7 +111,7 @@ class Quadrature : public Subscriptor
                                      * Return a reference to the whole array of
                                      * quadrature points.
                                      */
-    const std::vector<Point<dim> > & get_points () const;
+    const typename std::vector<Point<dim> > & get_points () const;
     
                                     /**
                                      * Return the weight of the @p{i}th
@@ -138,7 +138,7 @@ class Quadrature : public Subscriptor
                                      * List of quadrature points. To be filled
                                      * by the constructors of derived classes.
                                      */
-    std::vector<Point<dim> > quadrature_points;
+    typename std::vector<Point<dim> > quadrature_points;
 
                                     /**
                                      * List of weights of the quadrature points.
@@ -256,7 +256,7 @@ class QProjector
                                      */
     static void project_to_face (const Quadrature<dim-1>  &quadrature,
                                 const unsigned int        face_no,
-                                std::vector<Point<dim> > &q_points);
+                                typename std::vector<Point<dim> > &q_points);
 
                                     /**
                                      * Projection to all faces.
@@ -264,7 +264,7 @@ class QProjector
                                      * over all faces at the same time.
                                      */
     static void project_to_faces (const Quadrature<dim-1>  &quadrature,
-                                 std::vector<Point<dim> > &q_points);
+                                 typename std::vector<Point<dim> > &q_points);
     
                                     /**
                                      * Compute the quadrature points on the
@@ -277,7 +277,7 @@ class QProjector
     static void project_to_subface (const Quadrature<dim-1>  &quadrature,
                                    const unsigned int        face_no,
                                    const unsigned int        subface_no,
-                                   std::vector<Point<dim> > &q_points);
+                                   typename std::vector<Point<dim> > &q_points);
 
                                     /**
                                      * Projection to all child faces.
@@ -287,7 +287,7 @@ class QProjector
                                      * then by subface
                                      */
     static void project_to_subfaces (const Quadrature<dim-1>  &quadrature,
-                                    std::vector<Point<dim> > &q_points);
+                                    typename std::vector<Point<dim> > &q_points);
 };
 
 
index 616c624338102b2469d62d34eb1dfe49d416b5d6..04325c89b7a4b677202ce7dde9703a07cf4b2639 100644 (file)
@@ -85,8 +85,8 @@ class TensorFunction : public FunctionTime,
                                      * the right size, i.e.  the same
                                      * size as the @p{points} array.  
                                      */
-    virtual void value_list (const std::vector<Point<dim> > &points,
-                            std::vector<Tensor<rank,dim> > &values) const;
+    virtual void value_list (const typename std::vector<Point<dim> > &points,
+                            typename std::vector<Tensor<rank,dim> > &values) const;
 
                                     /**
                                      * Return the gradient of the
@@ -102,8 +102,8 @@ class TensorFunction : public FunctionTime,
                                      * the right size, i.e.  the same
                                      * size as the @p{points} array.  
                                      */
-    virtual void gradient_list (const std::vector<Point<dim> >   &points,
-                               std::vector<Tensor<rank+1,dim> > &gradients) const;
+    virtual void gradient_list (const typename std::vector<Point<dim> >   &points,
+                               typename std::vector<Tensor<rank+1,dim> > &gradients) const;
 
                                     /**
                                      * Exception
index b1096d5268d7b5236c62beb00d3862188dd393c2..775c35bc06a59ae42003e916060cec90a0896b63 100644 (file)
@@ -122,7 +122,7 @@ void ConvergenceTable::evaluate_convergence_rates(const std::string &data_column
                                             // first row
            add_value(rate_key, std::string("-"));
            for (unsigned int i=1; i<n; ++i)
-             add_value(rate_key, log(values[i-1]/values[i])/log(2));
+             add_value(rate_key, log(values[i-1]/values[i])/log(2.0));
            break;
       default:
            ExcNotImplemented();  
index 4cf50d335a5e49c059183ab6a281a0e1f5d12234..3e49eb3b06a1d03ddd77ec93ff92a4bdeb8d4d3b 100644 (file)
 #include <set>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 template <int dim, int spacedim>
 DataOutBase::Patch<dim,spacedim>::Patch () :
                n_subdivisions (1)
@@ -50,7 +57,7 @@ DataOutBase::Patch<dim,spacedim>::memory_consumption () const
 
 
 template <int dim, int spacedim>
-void DataOutBase::write_ucd (const std::vector<Patch<dim,spacedim> > &patches,
+void DataOutBase::write_ucd (const typename std::vector<Patch<dim,spacedim> > &patches,
                             const std::vector<std::string>          &data_names,
                             const UcdFlags                          &flags,
                             std::ostream                            &out) 
@@ -460,7 +467,7 @@ void DataOutBase::write_ucd (const std::vector<Patch<dim,spacedim> > &patches,
 
 
 template <int dim, int spacedim>
-void DataOutBase::write_gnuplot (const std::vector<Patch<dim,spacedim> > &patches,
+void DataOutBase::write_gnuplot (const typename std::vector<Patch<dim,spacedim> > &patches,
                                 const std::vector<std::string>          &data_names,
                                 const GnuplotFlags                      &/*flags*/,
                                 std::ostream                            &out) 
@@ -748,7 +755,7 @@ void DataOutBase::write_gnuplot (const std::vector<Patch<dim,spacedim> > &patche
 
 
 template <int dim, int spacedim>
-void DataOutBase::write_povray (const std::vector<Patch<dim,spacedim> > &patches,
+void DataOutBase::write_povray (const typename std::vector<Patch<dim,spacedim> > &patches,
                                const std::vector<std::string>          &data_names,
                                const PovrayFlags                       &flags,
                                std::ostream                            &out) 
@@ -954,13 +961,13 @@ void DataOutBase::write_povray (const std::vector<Patch<dim,spacedim> > &patches
                          << ver[dl](0) << ","   
                          << patch->data(0,dl) << ","
                          << ver[dl](1) << ">, <"
-                         << nrml[dl] << ">," << std::endl
-                         << " \t<" 
+                         << nrml[dl] << ">," << std::endl;
+                     out << " \t<" 
                          << ver[dl+n_subdivisions+1](0) << "," 
                          << patch->data(0,dl+n_subdivisions+1)  << ","
                          << ver[dl+n_subdivisions+1](1) << ">, <"
-                         << nrml[dl+n_subdivisions+1] << ">," << std::endl 
-                         << "\t<" 
+                         << nrml[dl+n_subdivisions+1] << ">," << std::endl;
+                     out << "\t<" 
                          << ver[dl+n_subdivisions+2](0) << "," 
                          << patch->data(0,dl+n_subdivisions+2)  << ","
                          << ver[dl+n_subdivisions+2](1) << ">, <"
@@ -971,13 +978,13 @@ void DataOutBase::write_povray (const std::vector<Patch<dim,spacedim> > &patches
                          << ver[dl](0) << "," 
                          << patch->data(0,dl) << ","
                          << ver[dl](1) << ">, <"
-                         << nrml[dl] << ">," << std::endl 
-                         << "\t<" 
+                         << nrml[dl] << ">," << std::endl;
+                     out << "\t<" 
                          << ver[dl+n_subdivisions+2](0) << "," 
                          << patch->data(0,dl+n_subdivisions+2)  << ","
                          << ver[dl+n_subdivisions+2](1) << ">, <"
-                         << nrml[dl+n_subdivisions+2] << ">," << std::endl 
-                         << "\t<" 
+                         << nrml[dl+n_subdivisions+2] << ">," << std::endl;
+                     out << "\t<" 
                          << ver[dl+1](0) << "," 
                          << patch->data(0,dl+1)  << ","
                          << ver[dl+1](1) << ">, <"
@@ -990,12 +997,12 @@ void DataOutBase::write_povray (const std::vector<Patch<dim,spacedim> > &patches
                      out << "triangle {" << std::endl << "\t<" 
                          << ver[dl](0) << "," 
                          << patch->data(0,dl) << ","
-                         << ver[dl](1) << ">," << std::endl
-                         << "\t<" 
+                         << ver[dl](1) << ">," << std::endl;
+                     out << "\t<" 
                          << ver[dl+n_subdivisions+1](0) << "," 
                          << patch->data(0,dl+n_subdivisions+1)  << ","
-                         << ver[dl+n_subdivisions+1](1) << ">," << std::endl 
-                         << "\t<" 
+                         << ver[dl+n_subdivisions+1](1) << ">," << std::endl;
+                     out << "\t<" 
                          << ver[dl+n_subdivisions+2](0) << "," 
                          << patch->data(0,dl+n_subdivisions+2)  << ","
                          << ver[dl+n_subdivisions+2](1) << ">}" << std::endl; 
@@ -1004,12 +1011,12 @@ void DataOutBase::write_povray (const std::vector<Patch<dim,spacedim> > &patches
                      out << "triangle {" << std::endl << "\t<" 
                          << ver[dl](0) << "," 
                          << patch->data(0,dl) << ","
-                         << ver[dl](1) << ">," << std::endl 
-                         << "\t<"
+                         << ver[dl](1) << ">," << std::endl;
+                     out << "\t<"
                          << ver[dl+n_subdivisions+2](0) << "," 
                          << patch->data(0,dl+n_subdivisions+2)  << ","
-                         << ver[dl+n_subdivisions+2](1) << ">," << std::endl 
-                         << "\t<" 
+                         << ver[dl+n_subdivisions+2](1) << ">," << std::endl;
+                     out << "\t<" 
                          << ver[dl+1](0) << "," 
                          << patch->data(0,dl+1)  << ","
                          << ver[dl+1](1) << ">}" << std::endl;
@@ -1050,7 +1057,7 @@ void DataOutBase::write_povray (const std::vector<Patch<dim,spacedim> > &patches
 
 
 template <int dim, int spacedim>
-void DataOutBase::write_eps (const std::vector<Patch<dim,spacedim> > &patches,
+void DataOutBase::write_eps (const typename std::vector<Patch<dim,spacedim> > &patches,
                             const std::vector<std::string>          &/*data_names*/,
                             const EpsFlags                          &flags,
                             std::ostream                            &out) 
@@ -1389,7 +1396,7 @@ void DataOutBase::write_eps (const std::vector<Patch<dim,spacedim> > &patches,
 
 
 template <int dim, int spacedim>
-void DataOutBase::write_gmv (const std::vector<Patch<dim,spacedim> > &patches,
+void DataOutBase::write_gmv (const typename std::vector<Patch<dim,spacedim> > &patches,
                             const std::vector<std::string>          &data_names,
                             const GmvFlags                          &/*flags*/,
                             std::ostream                            &out) 
@@ -1563,7 +1570,7 @@ void DataOutBase::write_gmv (const std::vector<Patch<dim,spacedim> > &patches,
                                             // d>spacedim. write zeros instead
            {
              const unsigned int n_points
-               = static_cast<unsigned int>(pow (n_subdivisions+1, dim));
+               = static_cast<unsigned int>(pow (static_cast<double>(n_subdivisions+1), dim));
              for (unsigned int i=0; i<n_points; ++i)
                out << "0 ";
            };
@@ -1703,7 +1710,7 @@ void DataOutBase::write_gmv (const std::vector<Patch<dim,spacedim> > &patches,
 
 template <int dim, int spacedim>
 void
-DataOutBase::write_gmv_reorder_data_vectors (const std::vector<Patch<dim,spacedim> > &patches,
+DataOutBase::write_gmv_reorder_data_vectors (const typename std::vector<Patch<dim,spacedim> > &patches,
                                             std::vector<std::vector<double> >       &data_vectors)
 {
                                   // unlike in the main function, we
@@ -1796,7 +1803,7 @@ template <int dim, int spacedim>
 void DataOutInterface<dim,spacedim>::write_ucd (std::ostream &out) const 
 {
   DataOutBase::write_ucd (get_patches(), get_dataset_names(),
-                                       ucd_flags, out);
+                         ucd_flags, out);
 };
 
 
@@ -1954,7 +1961,7 @@ std::string DataOutInterface<dim,spacedim>::default_suffix (OutputFormat output_
 
 
 template <int dim, int spacedim>
-DataOutInterface<dim,spacedim>::OutputFormat
+typename DataOutInterface<dim,spacedim>::OutputFormat
 DataOutInterface<dim,spacedim>::parse_output_format (const std::string &format_name)
 {
   if (format_name == "ucd")
index 0b39d30ba65259edb01e2239a332ed6aa63a9070..38499f74eff4685e92da3e2ddad1bd0e4f5ca328 100644 (file)
@@ -48,10 +48,15 @@ void Function<dim>::vector_value (const Point<dim> &,
 };
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
 template <int dim>
-void Function<dim>::value_list (const std::vector<Point<dim> > &points,
-                               std::vector<double>            &values,
-                               const unsigned int              component) const
+void Function<dim>::value_list (const typename std::vector<Point<dim> > &points,
+                               std::vector<double>                     &values,
+                               const unsigned int                       component) const
 {
                                   // check whether component is in
                                   // the valid range is up to the
@@ -65,7 +70,7 @@ void Function<dim>::value_list (const std::vector<Point<dim> > &points,
 
 
 template <int dim>
-void Function<dim>::vector_value_list (const std::vector<Point<dim> > &points,
+void Function<dim>::vector_value_list (const typename std::vector<Point<dim> > &points,
                                       std::vector<Vector<double> >   &values) const
 {
                                   // check whether component is in
@@ -90,15 +95,15 @@ Tensor<1,dim> Function<dim>::gradient (const Point<dim> &,
 
 template <int dim>
 void Function<dim>::vector_gradient (const Point<dim>       &,
-                                    std::vector<Tensor<1,dim> > &) const
+                                    typename std::vector<Tensor<1,dim> > &) const
 {
   Assert (false, ExcPureFunctionCalled());
 };
 
 
 template <int dim>
-void Function<dim>::gradient_list (const std::vector<Point<dim> > &points,
-                                  std::vector<Tensor<1,dim> >    &gradients,
+void Function<dim>::gradient_list (const typename std::vector<Point<dim> > &points,
+                                  typename std::vector<Tensor<1,dim> >    &gradients,
                                   const unsigned int              component) const
 {
   Assert (gradients.size() == points.size(),
@@ -110,8 +115,8 @@ void Function<dim>::gradient_list (const std::vector<Point<dim> > &points,
 
 
 template <int dim>
-void Function<dim>::vector_gradient_list (const std::vector<Point<dim> >            &points,
-                                         std::vector<std::vector<Tensor<1,dim> > > &gradients) const
+void Function<dim>::vector_gradient_list (const typename std::vector<Point<dim> >            &points,
+                                         typename std::vector<std::vector<Tensor<1,dim> > > &gradients) const
 {
   Assert (gradients.size() == points.size(),
          ExcDimensionMismatch(gradients.size(), points.size()));
@@ -146,7 +151,7 @@ void Function<dim>::vector_laplacian (const Point<dim> &,
 
 
 template <int dim>
-void Function<dim>::laplacian_list (const std::vector<Point<dim> > &points,
+void Function<dim>::laplacian_list (const typename std::vector<Point<dim> > &points,
                                    std::vector<double>            &laplacians,
                                    const unsigned int              component) const
 {
@@ -162,7 +167,7 @@ void Function<dim>::laplacian_list (const std::vector<Point<dim> > &points,
 
 
 template <int dim>
-void Function<dim>::vector_laplacian_list (const std::vector<Point<dim> > &points,
+void Function<dim>::vector_laplacian_list (const typename std::vector<Point<dim> > &points,
                                           std::vector<Vector<double> >   &laplacians) const
 {
                                   // check whether component is in
@@ -220,7 +225,7 @@ void ZeroFunction<dim>::vector_value (const Point<dim> &,
 
 
 template <int dim>
-void ZeroFunction<dim>::value_list (const std::vector<Point<dim> > &points,
+void ZeroFunction<dim>::value_list (const typename std::vector<Point<dim> > &points,
                                    std::vector<double>            &values,
                                    const unsigned int         /*component*/) const {
   Assert (values.size() == points.size(),
@@ -231,7 +236,7 @@ void ZeroFunction<dim>::value_list (const std::vector<Point<dim> > &points,
 
 
 template <int dim>
-void ZeroFunction<dim>::vector_value_list (const std::vector<Point<dim> > &points,
+void ZeroFunction<dim>::vector_value_list (const typename std::vector<Point<dim> > &points,
                                           std::vector<Vector<double> >   &values) const
 {
   Assert (values.size() == points.size(),
@@ -256,7 +261,7 @@ Tensor<1,dim> ZeroFunction<dim>::gradient (const Point<dim> &,
 
 template <int dim>
 void ZeroFunction<dim>::vector_gradient (const Point<dim>       &,
-                                        std::vector<Tensor<1,dim> > &gradients) const
+                                        typename std::vector<Tensor<1,dim> > &gradients) const
 {
   Assert (gradients.size() == n_components,
          ExcDimensionMismatch(gradients.size(), n_components));
@@ -267,8 +272,8 @@ void ZeroFunction<dim>::vector_gradient (const Point<dim>       &,
 
 
 template <int dim>
-void ZeroFunction<dim>::gradient_list (const std::vector<Point<dim> > &points,
-                                      std::vector<Tensor<1,dim> >    &gradients,
+void ZeroFunction<dim>::gradient_list (const typename std::vector<Point<dim> > &points,
+                                      typename std::vector<Tensor<1,dim> >    &gradients,
                                       const unsigned int              /*component*/) const
 {
   Assert (gradients.size() == points.size(),
@@ -280,8 +285,8 @@ void ZeroFunction<dim>::gradient_list (const std::vector<Point<dim> > &points,
 
 
 template <int dim>
-void ZeroFunction<dim>::vector_gradient_list (const std::vector<Point<dim> >            &points,
-                                             std::vector<std::vector<Tensor<1,dim> > > &gradients) const
+void ZeroFunction<dim>::vector_gradient_list (const typename std::vector<Point<dim> >            &points,
+                                             typename std::vector<typename std::vector<Tensor<1,dim> > > &gradients) const
 {
   Assert (gradients.size() == points.size(),
          ExcDimensionMismatch(gradients.size(), points.size()));
@@ -328,7 +333,7 @@ void ConstantFunction<dim>::vector_value (const Point<dim> &,
 
 
 template <int dim>
-void ConstantFunction<dim>::value_list (const std::vector<Point<dim> > &points,
+void ConstantFunction<dim>::value_list (const typename std::vector<Point<dim> > &points,
                                        std::vector<double>            &values,
                                        const unsigned int              /*component*/) const
 {
@@ -340,7 +345,7 @@ void ConstantFunction<dim>::value_list (const std::vector<Point<dim> > &points,
 
 
 template <int dim>
-void ConstantFunction<dim>::vector_value_list (const std::vector<Point<dim> > &points,
+void ConstantFunction<dim>::vector_value_list (const typename std::vector<Point<dim> > &points,
                                               std::vector<Vector<double> >   &values) const
 {
   Assert (values.size() == points.size(),
@@ -391,7 +396,7 @@ void ComponentSelectFunction<dim>::vector_value (const Point<dim> &,
 
 
 template <int dim>
-void ComponentSelectFunction<dim>::vector_value_list (const std::vector<Point<dim> > &points,
+void ComponentSelectFunction<dim>::vector_value_list (const typename std::vector<Point<dim> > &points,
                                                      std::vector<Vector<double> >   &values) const
 {
   Assert (values.size() == points.size(),
index cf1f624cc688d8910d0d81a7f0563b87ec6bc14c..be2607c6f46e88e8e67d60efbc0b778f059d4741 100644 (file)
@@ -72,9 +72,15 @@ FunctionDerivative<dim>::value (const Point<dim>   &p,
 
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 template <int dim>
 void
-FunctionDerivative<dim>::value_list (const std::vector<Point<dim> > &points,
+FunctionDerivative<dim>::value_list (const typename std::vector<Point<dim> > &points,
                                     std::vector<double>            &values,
                                     const unsigned int              component) const
 {
@@ -158,6 +164,6 @@ FunctionDerivative<dim>::memory_consumption () const
 };
 
 
-template FunctionDerivative<1>;
-template FunctionDerivative<2>;
-template FunctionDerivative<3>;
+template class FunctionDerivative<1>;
+template class FunctionDerivative<2>;
+template class FunctionDerivative<3>;
index 6f860abf6e1ae8535acb640b35e25b9251ae3f46..afe6e5ca2d48a5e3b9b8a408ef97df87190cfdda 100644 (file)
@@ -39,10 +39,14 @@ SquareFunction<dim>::value (const Point<dim>   &p,
 }
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
 
 template<int dim>
 void
-SquareFunction<dim>::value_list (const std::vector<Point<dim> > &points,
+SquareFunction<dim>::value_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int) const
 {
@@ -68,7 +72,7 @@ SquareFunction<dim>::laplacian (const Point<dim>   &,
 
 template<int dim>
 void
-SquareFunction<dim>::laplacian_list (const std::vector<Point<dim> > &points,
+SquareFunction<dim>::laplacian_list (const typename std::vector<Point<dim> > &points,
                                     std::vector<double>            &values,
                                     const unsigned int) const
 {
@@ -93,8 +97,8 @@ SquareFunction<dim>::gradient (const Point<dim>   &p,
 
 template<int dim>
 void
-SquareFunction<dim>::gradient_list (const std::vector<Point<dim> > &points,
-                                   std::vector<Tensor<1,dim> >    &gradients,
+SquareFunction<dim>::gradient_list (const typename std::vector<Point<dim> > &points,
+                                   typename std::vector<Tensor<1,dim> >    &gradients,
                                    const unsigned int) const
 {
   Assert (gradients.size() == points.size(),
@@ -120,7 +124,7 @@ Q1WedgeFunction<dim>::value (const Point<dim>   &p,
 
 template<int dim>
 void
-Q1WedgeFunction<dim>::value_list (const std::vector<Point<dim> > &points,
+Q1WedgeFunction<dim>::value_list (const typename std::vector<Point<dim> > &points,
                                  std::vector<double>            &values,
                                  const unsigned int) const
 {
@@ -146,7 +150,7 @@ Q1WedgeFunction<dim>::laplacian (const Point<dim>   &,
 
 template<int dim>
 void
-Q1WedgeFunction<dim>::laplacian_list (const std::vector<Point<dim> > &points,
+Q1WedgeFunction<dim>::laplacian_list (const typename std::vector<Point<dim> > &points,
                                      std::vector<double>            &values,
                                      const unsigned int) const
 {
@@ -174,8 +178,8 @@ Q1WedgeFunction<dim>::gradient (const Point<dim>   &p,
 
 template<int dim>
 void
-Q1WedgeFunction<dim>::gradient_list (const std::vector<Point<dim> > &points,
-                                    std::vector<Tensor<1,dim> >    &gradients,
+Q1WedgeFunction<dim>::gradient_list (const typename std::vector<Point<dim> > &points,
+                                    typename std::vector<Tensor<1,dim> >    &gradients,
                                     const unsigned int) const
 {
   Assert (gradients.size() == points.size(),
@@ -220,7 +224,7 @@ PillowFunction<dim>::value (const Point<dim>   &p,
 
 template<int dim>
 void
-PillowFunction<dim>::value_list (const std::vector<Point<dim> > &points,
+PillowFunction<dim>::value_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int) const
 {
@@ -272,7 +276,7 @@ PillowFunction<dim>::laplacian (const Point<dim>   &p,
 
 template<int dim>
 void
-PillowFunction<dim>::laplacian_list (const std::vector<Point<dim> > &points,
+PillowFunction<dim>::laplacian_list (const typename std::vector<Point<dim> > &points,
                                     std::vector<double>            &values,
                                     const unsigned int) const
 {
@@ -329,8 +333,8 @@ PillowFunction<dim>::gradient (const Point<dim>   &p,
 
 template<int dim>
 void
-PillowFunction<dim>::gradient_list (const std::vector<Point<dim> > &points,
-                                   std::vector<Tensor<1,dim> >    &gradients,
+PillowFunction<dim>::gradient_list (const typename std::vector<Point<dim> > &points,
+                                   typename std::vector<Tensor<1,dim> >    &gradients,
                                    const unsigned int) const
 {
   Assert (gradients.size() == points.size(),
@@ -382,7 +386,7 @@ CosineFunction<dim>::value (const Point<dim>   &p,
 
 template<int dim>
 void
-CosineFunction<dim>::value_list (const std::vector<Point<dim> > &points,
+CosineFunction<dim>::value_list (const typename std::vector<Point<dim> > &points,
                                 std::vector<double>            &values,
                                 const unsigned int) const
 {
@@ -430,7 +434,7 @@ CosineFunction<dim>::laplacian (const Point<dim>   &p,
 
 template<int dim>
 void
-CosineFunction<dim>::laplacian_list (const std::vector<Point<dim> > &points,
+CosineFunction<dim>::laplacian_list (const typename std::vector<Point<dim> > &points,
                                     std::vector<double>            &values,
                                     const unsigned int) const
 {
@@ -485,8 +489,8 @@ CosineFunction<dim>::gradient (const Point<dim>   &p,
 
 template<int dim>
 void
-CosineFunction<dim>::gradient_list (const std::vector<Point<dim> > &points,
-                                   std::vector<Tensor<1,dim> >    &gradients,
+CosineFunction<dim>::gradient_list (const typename std::vector<Point<dim> > &points,
+                                   typename std::vector<Tensor<1,dim> >    &gradients,
                                    const unsigned int) const
 {
   Assert (gradients.size() == points.size(),
@@ -538,7 +542,7 @@ ExpFunction<dim>::value (const Point<dim>   &p,
 
 template<int dim>
 void
-ExpFunction<dim>::value_list (const std::vector<Point<dim> > &points,
+ExpFunction<dim>::value_list (const typename std::vector<Point<dim> > &points,
                              std::vector<double>            &values,
                              const unsigned int) const
 {
@@ -586,7 +590,7 @@ ExpFunction<dim>::laplacian (const Point<dim>   &p,
 
 template<int dim>
 void
-ExpFunction<dim>::laplacian_list (const std::vector<Point<dim> > &points,
+ExpFunction<dim>::laplacian_list (const typename std::vector<Point<dim> > &points,
                                  std::vector<double>            &values,
                                  const unsigned int) const
 {
@@ -641,8 +645,8 @@ ExpFunction<dim>::gradient (const Point<dim>   &p,
 
 template<int dim>
 void
-ExpFunction<dim>::gradient_list (const std::vector<Point<dim> > &points,
-                                std::vector<Tensor<1,dim> >    &gradients,
+ExpFunction<dim>::gradient_list (const typename std::vector<Point<dim> > &points,
+                                typename std::vector<Tensor<1,dim> >    &gradients,
                                 const unsigned int) const
 {
   Assert (gradients.size() == points.size(),
@@ -891,7 +895,7 @@ JumpFunction<dim>::value (const Point<dim>   &p,
 
 template<int dim>
 void
-JumpFunction<dim>::value_list (const std::vector<Point<dim> > &p,
+JumpFunction<dim>::value_list (const typename std::vector<Point<dim> > &p,
                               std::vector<double>          &values,
                               const unsigned int) const
 {
@@ -919,7 +923,7 @@ JumpFunction<dim>::laplacian (const Point<dim>   &p,
 
 template<int dim>
 void
-JumpFunction<dim>::laplacian_list (const std::vector<Point<dim> > &p,
+JumpFunction<dim>::laplacian_list (const typename std::vector<Point<dim> > &p,
                                   std::vector<double>          &values,
                                   const unsigned int) const
 {
@@ -955,8 +959,8 @@ JumpFunction<dim>::gradient (const Point<dim>   &p,
 
 template<int dim>
 void
-JumpFunction<dim>::gradient_list (const std::vector<Point<dim> > &p,
-                                 std::vector<Tensor<1,dim> >  &gradients,
+JumpFunction<dim>::gradient_list (const typename std::vector<Point<dim> > &p,
+                                 typename std::vector<Tensor<1,dim> >  &gradients,
                                  const unsigned int) const
 {
   Assert (gradients.size() == p.size(),
@@ -983,21 +987,21 @@ JumpFunction<dim>::memory_consumption () const
 };
 
 
-template SquareFunction<1>;
-template SquareFunction<2>;
-template SquareFunction<3>;
-template Q1WedgeFunction<1>;
-template Q1WedgeFunction<2>;
-template Q1WedgeFunction<3>;
-template PillowFunction<1>;
-template PillowFunction<2>;
-template PillowFunction<3>;
-template CosineFunction<1>;
-template CosineFunction<2>;
-template CosineFunction<3>;
-template ExpFunction<1>;
-template ExpFunction<2>;
-template ExpFunction<3>;
-template JumpFunction<1>;
-template JumpFunction<2>;
-template JumpFunction<3>;
+template class SquareFunction<1>;
+template class SquareFunction<2>;
+template class SquareFunction<3>;
+template class Q1WedgeFunction<1>;
+template class Q1WedgeFunction<2>;
+template class Q1WedgeFunction<3>;
+template class PillowFunction<1>;
+template class PillowFunction<2>;
+template class PillowFunction<3>;
+template class CosineFunction<1>;
+template class CosineFunction<2>;
+template class CosineFunction<3>;
+template class ExpFunction<1>;
+template class ExpFunction<2>;
+template class ExpFunction<3>;
+template class JumpFunction<1>;
+template class JumpFunction<2>;
+template class JumpFunction<3>;
index 6c208e380e2c4b367bbce0049889f650fef4a4b3..d981557b16a229a01cc636b573c101afd823bcbf 100644 (file)
@@ -1165,13 +1165,13 @@ void MultipleParameterLoop::init_branches ()
                                   // finally calculate number of branches
   n_branches = 1;
   for (unsigned int i=0; i<multiple_choices.size(); ++i)
-    if (multiple_choices[i].type == variant)
+    if (multiple_choices[i].type == Entry::variant)
       n_branches *= multiple_choices[i].different_values.size();
 
                                   // check whether array entries have the correct
                                   // number of entries
   for (unsigned int i=0; i<multiple_choices.size(); ++i)
-    if (multiple_choices[i].type == array)
+    if (multiple_choices[i].type == Entry::array)
       if (multiple_choices[i].different_values.size() != n_branches)
        std::cerr << "    The entry value" << std::endl
                  << "        " << multiple_choices[i].entry_value << std::endl
@@ -1232,7 +1232,7 @@ void MultipleParameterLoop::fill_entry_values (const unsigned int run_no)
       Section* pd = get_present_defaults_subsection ();
       int selection = (run_no/possibilities) % choice->different_values.size();
       std::string entry_value;
-      if (choice->type == variant)
+      if (choice->type == Entry::variant)
        entry_value = choice->different_values[selection];
       else 
        {
@@ -1278,7 +1278,7 @@ void MultipleParameterLoop::fill_entry_values (const unsigned int run_no)
       subsection_path.swap (choice->subsection_path);
 
                                       // move ahead if it was a variant entry
-      if (choice->type == variant)
+      if (choice->type == Entry::variant)
        possibilities *= choice->different_values.size();
     };
   
@@ -1348,9 +1348,9 @@ void MultipleParameterLoop::Entry::split_different_values ()
                                   // entry ({...}) or an array ({{...}})
   if ((entry_value.find("{{") != std::string::npos) &&
       (entry_value.find("}}") != std::string::npos))
-    type = array;
+    type = Entry::array;
   else
-    type = variant;
+    type = Entry::variant;
 };
 
 
index cf20d6a7a72588f1f9e5cd34b8520319b798667e..1fa2b32176f6e6f47504b0af445ffc84273b37d5 100644 (file)
@@ -20,6 +20,7 @@
 
 template <>
 Quadrature<0>::Quadrature (const unsigned int)
+              : n_quadrature_points(0)
 {};
 
 
@@ -33,8 +34,14 @@ Quadrature<dim>::Quadrature (const unsigned int n_q) :
 
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 template <int dim>
-Quadrature<dim>::Quadrature (const std::vector<Point<dim> >  &points,
+Quadrature<dim>::Quadrature (const typename std::vector<Point<dim> >  &points,
                             const std::vector<double>       &weights)
                : n_quadrature_points(points.size()),
                  quadrature_points(points),
@@ -58,7 +65,8 @@ Quadrature<0>::Quadrature (const Quadrature<-1> &,
 
 template <>
 Quadrature<1>::Quadrature (const Quadrature<0> &,
-                          const Quadrature<1> &)
+                          const Quadrature<1> &) :
+                n_quadrature_points (0)
 {
   Assert (false, ExcInternalError());
 };
@@ -139,7 +147,7 @@ const std::vector<Point<0> > & Quadrature<0>::get_points () const
 
 
 template <int dim>
-const std::vector<Point<dim> > & Quadrature<dim>::get_points () const
+const typename std::vector<Point<dim> > & Quadrature<dim>::get_points () const
 {
   return quadrature_points;
 };
@@ -524,8 +532,8 @@ void QProjector<3>::project_to_subface (const Quadrature<2>    &quadrature,
 
 template <int dim>
 void
-QProjector<dim>::project_to_faces (const Quadrature<dim-1>  &quadrature,
-                                  std::vector<Point<dim> > &q_points)
+QProjector<dim>::project_to_faces (const Quadrature<dim-1>           &quadrature,
+                                  typename std::vector<Point<dim> > &q_points)
 {
   unsigned int npt = quadrature.n_quadrature_points;
   unsigned int nf = GeometryInfo<dim>::faces_per_cell;
@@ -547,8 +555,8 @@ QProjector<dim>::project_to_faces (const Quadrature<dim-1>  &quadrature,
 
 template <int dim>
 void
-QProjector<dim>::project_to_subfaces (const Quadrature<dim-1>  &quadrature,
-                                     std::vector<Point<dim> > &q_points)
+QProjector<dim>::project_to_subfaces (const Quadrature<dim-1>           &quadrature,
+                                     typename std::vector<Point<dim> > &q_points)
 {
   unsigned int npt = quadrature.n_quadrature_points;
   unsigned int nf = GeometryInfo<dim>::faces_per_cell;
index 68c111ec72b19972e503859d1eace69c36a3d52f..d58695c7af31a40bfb1be3f47beb183e080f8f3b 100644 (file)
@@ -44,10 +44,16 @@ TensorFunction<rank, dim>::value (const Point<dim> &) const
 };
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 template <int rank, int dim>
 void
-TensorFunction<rank, dim>::value_list (const std::vector<Point<dim> > &points,
-                                      std::vector<Tensor<rank,dim> > &values) const
+TensorFunction<rank, dim>::value_list (const typename std::vector<Point<dim> > &points,
+                                      typename std::vector<Tensor<rank,dim> > &values) const
 {
   Assert (values.size() == points.size(),
          ExcDimensionMismatch(values.size(), points.size()));
@@ -68,8 +74,8 @@ TensorFunction<rank, dim>::gradient (const Point<dim> &) const
 
 template <int rank, int dim>
 void
-TensorFunction<rank, dim>::gradient_list (const std::vector<Point<dim> > &points,
-                                   std::vector<Tensor<rank+1,dim> >     &gradients) const
+TensorFunction<rank, dim>::gradient_list (const typename std::vector<Point<dim> >   &points,
+                                         typename std::vector<Tensor<rank+1,dim> > &gradients) const
 {
   Assert (gradients.size() == points.size(),
          ExcDimensionMismatch(gradients.size(), points.size()));
index 4eaca280f6cf93a93596b2b318926f88ad7e6fd9..f8fe0155968f394b97c167296f642c75dc7aaa04 100644 (file)
@@ -105,10 +105,11 @@ AC_PATH_PROG(CC,$CC)
 
 
 
-dnl    Find the right C++ compiler. This modifies the following
-dnl    variables: CXX, GXX, CXXFLAGS
+dnl Find the right C++ compiler. Note that for historical reasons, the
+dnl compiler name and version is in the name GXX_VERSION, even if the
+dnl compiler is not GCC.
 AC_PROG_CXX
-AC_PATH_PROG(CXX,$CXX)
+AC_PATH_PROG(CXX,$CXX) 
 if test "$GXX" = yes ; then
   # find out the right version
   GXX_VERSION_STRING=`($CXX -v 2>&1) | grep "gcc version"`
@@ -141,9 +142,22 @@ if test "$GXX" = yes ; then
        ;;
   esac
 else
-  AC_MSG_ERROR(No configuration options for this C++ compiler
-               supported at present)
-  exit 1
+
+  dnl Check for IBM xlC. For some reasons, depending on some environment variables,
+  dnl moon position, and other reasons unknown to me, the compiler displays
+  dnl different names in the first line of output, so check various possibilities
+  is_ibm_xlc="`($CXX 2>&1) | egrep 'VisualAge C++|C Set ++|C for AIX Compiler'`"
+  if test "x$is_ibm_xlc" != "x"  ; then
+    dnl Ah, this is IBM's C++ compiler. Unfortunately, we don't presently
+    dnl know how to check the version number, so assume that is sufficiently
+    dnl high...
+    AC_MSG_RESULT(compiler is IBM xlC)
+    GXX_VERSION=ibm_xlc
+  else
+    AC_MSG_ERROR(No configuration options for this C++ compiler
+                 supported at present)
+    exit 1
+  fi
 fi
 AC_SUBST(GXX_VERSION)
 
@@ -203,7 +217,7 @@ if test "$GXX" = yes ; then
 
   case "$GXX_VERSION" in
     egcs1.1 | gcc2.95)
-       CXXFLAGSG="$CXXFLAGSG -Wmissing-declarations -Wbad-function-cast -Wtraditional -Wnested-externs"
+       CXXFLAGSG="$CXXFLAGSG -DDEBUG -Wmissing-declarations -Wbad-function-cast -Wtraditional -Wnested-externs"
        CXXFLAGSO="$CXXFLAGSO -fnonnull-objects"
        ;;
 
@@ -212,10 +226,17 @@ if test "$GXX" = yes ; then
   esac
 
 else
-  dnl Other compiler
-  AC_MSG_ERROR(No compiler options for this C++ compiler
-               specified at present)
-  exit 1
+
+  if test "x$GXX_VERSION" = "xibm_xlc" ; then
+       CXXFLAGSG="$CXXFLAGS -g -check=bounds -info=all -qrtti=all"
+       CXXFLAGSO="$CXXFLAGS -O2 -w -qansialias -qrtti=all"
+  else
+
+    dnl Other compiler
+    AC_MSG_ERROR(No compiler options for this C++ compiler
+                 specified at present)
+    exit 1
+  fi
 fi
 
 AC_SUBST(CXXFLAGSG)
@@ -290,7 +311,12 @@ dnl compiler flags, and define `DISABLE_ASSERT_THROW' if necessary.
 DEAL_II_CHECK_ASSERT_THROW(debug, $CXXFLAGSG, CXXFLAGSG="-DDISABLE_ASSERT_THROW $CXXFLAGSG")
 DEAL_II_CHECK_ASSERT_THROW(optimized, $CXXFLAGSO, CXXFLAGSO="-DDISABLE_ASSERT_THROW $CXXFLAGSO")
 
+dnl IBM's xlC compiler has a problem with some kind of code that does not
+dnl "using namespace std;" Try to work around if necessary
+DEAL_II_CHECK_IBM_XLC_ERROR
 
+dnl See whether we can use the std::iterator class
+DEAL_II_HAVE_STD_ITERATOR
 
 
 dnl -------------------------------------------------------------
@@ -316,13 +342,25 @@ dnl   headers to make reentrant functions (with suffix _r) declared
 dnl - remove -ansi from compiler flags again, since ACE yields hundreds of
 dnl   error messages with this flag
 if test "$enablemultithreading" = yes ; then
-  DEAL_II_GET_THREAD_FLAGS
-  DEAL_II_THREAD_CPPFLAGS
+  if test "$GXX" = yes ; then
+    DEAL_II_GET_THREAD_FLAGS
+    DEAL_II_THREAD_CPPFLAGS
 
-  AC_DEFINE(__USE_MALLOC)
-  AC_DEFINE(_REENTRANT)
+    AC_DEFINE(__USE_MALLOC)
+    AC_DEFINE(_REENTRANT)
 
-  CXXFLAGSG="`echo $CXXFLAGSG | perl -pi -e 's/-ansi//g;'`"
+    CXXFLAGSG="`echo $CXXFLAGSG | perl -pi -e 's/-ansi//g;'`"
+  else
+    if test "x$GXX_VERSION" = "xibm_xlc" ; then
+      CXXFLAGSG = "$CXXFLAGSG -threaded"  
+      CXXFLAGSO = "$CXXFLAGSO -threaded"
+    else
+      dnl Other compiler
+      AC_MSG_ERROR(No threading compiler options for this C++ compiler
+                   specified at present)
+      exit 1
+    fi
+  fi
 fi
 
 
index bbf48cc499c157abd01ae615775af0016b2599d4..f78a197171896f193cecaa262b181d189e62cb6d 100644 (file)
@@ -145,6 +145,7 @@ class DoFAccessor
 template <int celldim, int dim>
 class DoFObjectAccessor_Inheritance 
 {
+  public:
                                     /**
                                      * Declaration of the @p{typedef}.
                                      * See the full documentation for
@@ -170,6 +171,7 @@ class DoFObjectAccessor_Inheritance
 template <int dim>
 class DoFObjectAccessor_Inheritance<dim,dim>
 {
+  public:
                                     /**
                                      * Declaration of the @p{typedef}.
                                      * See the full documentation for
@@ -222,7 +224,8 @@ class DoFObjectAccessor_Inheritance<dim,dim>
 template<int celldim, int dim>
 class DoFObjectAccessor : public DoFAccessor<dim>,
                          public TriaObjectAccessor<celldim,dim>
-{  public:
+{
+  public:
                                     /**
                                      * Data type  passed by the iterator class.
                                      */
index 3c351e95cab74827de44977c3cc1420da176481a..d46bfc1e613480c64a28f0810c7281251d1ccf41 100644 (file)
@@ -237,6 +237,12 @@ DoFObjectAccessor<2,dim>::vertex_dof_index (const unsigned int vertex,
 };
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 template <int dim>
 inline
 void
index 2dab1ce981734a0c37a77a07f3cdc4b4c75887d9..eab1a27c02d68ee7635e824ee119d694d87921f7 100644 (file)
@@ -257,7 +257,7 @@ class DoFHandler  :  public Subscriptor,
                                      * for each boundary indicator, which is
                                      * guaranteed by the @p{map} data type.
                                      */
-    typedef std::map<unsigned char,const Function<dim>*> FunctionMap;
+    typedef typename std::map<unsigned char,const Function<dim>*> FunctionMap;
 
                                     /**
                                      * When the arrays holding the
@@ -1137,7 +1137,7 @@ class DoFHandler  :  public Subscriptor,
                                      * @p{levels[]} tree of the @ref{Triangulation}
                                      * objects.
                                      */
-    std::vector<DoFLevel<dim>*>    levels;
+    typename std::vector<DoFLevel<dim>*>    levels;
 
                                     /**
                                      * Store the number of dofs created last
index 3965d2568b13784c3224db365344082dcb5283da..a0600eb0c6f78e0c7ff46696035471c2cb21b5c3 100644 (file)
@@ -1098,8 +1098,10 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * @p{p_real} on the real cell
                                      * @p{cell} and returns @p{p_real}.
                                      */
-    virtual Point<dim> transform_unit_to_real_cell (const DoFHandler<dim>::cell_iterator cell,
-                                                   const Point<dim> &p) const = 0;
+    virtual 
+    Point<dim>
+    transform_unit_to_real_cell (const typename DoFHandler<dim>::cell_iterator &cell,
+                                const Point<dim>                              &p) const = 0;
     
                                     /**
                                      * Transforms the point @p{p} on
@@ -1107,8 +1109,10 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * @p{p_unit} on the unit cell
                                      * @p{cell} and returns @p{p_unit}.
                                      */
-    virtual Point<dim> transform_real_to_unit_cell (const DoFHandler<dim>::cell_iterator cell,
-                                                   const Point<dim> &p) const = 0;
+    virtual 
+    Point<dim> 
+    transform_real_to_unit_cell (const typename DoFHandler<dim>::cell_iterator &cell,
+                                const Point<dim>                              &p) const = 0;
 
                                     /**
                                      * Return the value of the
@@ -1214,18 +1218,18 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * not be used by users unless
                                      * absolutely needed.
                                      */
-    virtual void fill_fe_values (const DoFHandler<dim>::cell_iterator &cell,
-                                const std::vector<Point<dim> > &unit_points,
-                                std::vector<Tensor<2,dim> >    &jacobians,
+    virtual void fill_fe_values (const typename DoFHandler<dim>::cell_iterator &cell,
+                                const typename std::vector<Point<dim> > &unit_points,
+                                typename std::vector<Tensor<2,dim> >    &jacobians,
                                 const bool                      compute_jacobians,
-                                std::vector<Tensor<3,dim> >    &jacobians_grad,
+                                typename std::vector<Tensor<3,dim> >    &jacobians_grad,
                                 const bool                      compute_jacobians_grad,
-                                std::vector<Point<dim> >       &support_points,
+                                typename std::vector<Point<dim> >       &support_points,
                                 const bool                      compute_support_points,
-                                std::vector<Point<dim> >       &q_points,
+                                typename std::vector<Point<dim> >       &q_points,
                                 const bool                      compute_q_points,
                                 const FullMatrix<double>       &shape_values_transform,
-                                const std::vector<std::vector<Tensor<1,dim> > > &shape_grads_transform) const;
+                                const typename std::vector<typename std::vector<Tensor<1,dim> > > &shape_grads_transform) const;
 
                                     /**
                                      * Do the same thing that the
@@ -1357,24 +1361,24 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * and should not be used by users unless
                                      * absolutely needed.
                                      */
-    virtual void fill_fe_face_values (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void fill_fe_face_values (const typename DoFHandler<dim>::cell_iterator &cell,
                                      const unsigned int           face_no,
-                                     const std::vector<Point<dim-1> > &unit_points,
-                                     const std::vector<Point<dim> >   &global_unit_points,
-                                     std::vector<Tensor<2,dim> >      &jacobians,
+                                     const typename std::vector<Point<dim-1> > &unit_points,
+                                     const typename std::vector<Point<dim> >   &global_unit_points,
+                                     typename std::vector<Tensor<2,dim> >      &jacobians,
                                      const bool                        compute_jacobians,
-                                     std::vector<Tensor<3,dim> >      &jacobians_grad,
+                                     typename std::vector<Tensor<3,dim> >      &jacobians_grad,
                                      const bool                        compute_jacobians_grad,
-                                     std::vector<Point<dim> > &support_points,
+                                     typename std::vector<Point<dim> > &support_points,
                                      const bool                compute_support_points,
-                                     std::vector<Point<dim> > &q_points,
+                                     typename std::vector<Point<dim> > &q_points,
                                      const bool                compute_q_points,
                                      std::vector<double>      &face_jacobi_determinants,
                                      const bool                compute_face_jacobians,
-                                     std::vector<Point<dim> > &normal_vectors,
+                                     typename std::vector<Point<dim> > &normal_vectors,
                                      const bool                compute_normal_vectors,
                                      const FullMatrix<double> &shape_values_transform,
-                                     const std::vector<std::vector<Tensor<1,dim> > > &shape_grads_transform) const;
+                                     const typename std::vector<typename std::vector<Tensor<1,dim> > > &shape_grads_transform) const;
 
                                     /**
                                      * This function does almost the
@@ -1415,23 +1419,23 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * should not be used by users
                                      * unless absolutely needed.
                                      */                                       
-    virtual void fill_fe_subface_values (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void fill_fe_subface_values (const typename DoFHandler<dim>::cell_iterator &cell,
                                         const unsigned int           face_no,
                                         const unsigned int           subface_no,
-                                        const std::vector<Point<dim-1> > &unit_points,
-                                        const std::vector<Point<dim> >   &global_unit_points,
-                                        std::vector<Tensor<2,dim> >      &jacobians,
+                                        const typename std::vector<Point<dim-1> > &unit_points,
+                                        const typename std::vector<Point<dim> >   &global_unit_points,
+                                        typename std::vector<Tensor<2,dim> >      &jacobians,
                                         const bool                        compute_jacobians,
-                                        std::vector<Tensor<3,dim> >      &jacobians_grad,
+                                        typename std::vector<Tensor<3,dim> >      &jacobians_grad,
                                         const bool                compute_jacobians_grad,
-                                        std::vector<Point<dim> > &q_points,
+                                        typename std::vector<Point<dim> > &q_points,
                                         const bool                compute_q_points,
                                         std::vector<double>      &face_jacobi_determinants,
                                         const bool                compute_face_jacobians,
-                                        std::vector<Point<dim> > &normal_vectors,
+                                        typename std::vector<Point<dim> > &normal_vectors,
                                         const bool                compute_normal_vectors,
                                         const FullMatrix<double> &shape_values_transform,
-                                        const std::vector<std::vector<Tensor<1,dim> > > &shape_grads_transform) const;
+                                        const typename std::vector<typename std::vector<Tensor<1,dim> > > &shape_grads_transform) const;
 
                                     /**
                                      * Return the support points of
@@ -1454,7 +1458,7 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * dimensions, an overwritten
                                      * function has to be provided.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &unit_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &unit_points) const;
     
                                     /**
                                      * Compute the off-points of the
@@ -1505,8 +1509,8 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * object of which a pointer is
                                      * stored by the triangulation.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
     
                                     /**
                                      * Compute the off-points of the
@@ -1571,8 +1575,8 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * to the @p{get_support_points}
                                      * function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const =0;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const =0;
 
                                     /**
                                      * This is the second separated function
@@ -1594,8 +1598,8 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * refer to the @p{get_support_points}
                                      * function.
                                      */
-    virtual void get_face_jacobians (const DoFHandler<dim>::face_iterator &face,
-                                    const std::vector<Point<dim-1> > &unit_points,
+    virtual void get_face_jacobians (const typename DoFHandler<dim>::face_iterator &face,
+                                    const typename std::vector<Point<dim-1> > &unit_points,
                                     std::vector<double>      &face_jacobi_determinants) const =0;
 
                                     /**
@@ -1614,9 +1618,9 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * not be called for faces at the
                                      * boundary.
                                      */
-    virtual void get_subface_jacobians (const DoFHandler<dim>::face_iterator &face,
+    virtual void get_subface_jacobians (const typename DoFHandler<dim>::face_iterator &face,
                                        const unsigned int           subface_no,
-                                       const std::vector<Point<dim-1> > &unit_points,
+                                       const typename std::vector<Point<dim-1> > &unit_points,
                                        std::vector<double>      &face_jacobi_determinants) const =0;
 
                                     /**
@@ -1644,10 +1648,10 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * to the @p{get_support_points}
                                      * function.
                                      */
-    virtual void get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                     const unsigned int                face_no,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<Point<dim> >         &normal_vectors) const =0;
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<Point<dim> >         &normal_vectors) const =0;
 
                                     /**
                                      * Does the same as the above function,
@@ -1659,11 +1663,11 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * must not be called for faces at the
                                      * boundary.
                                      */
-    virtual void get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                     const unsigned int           face_no,
                                     const unsigned int           subface_no,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<Point<dim> >         &normal_vectors) const =0;
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<Point<dim> >         &normal_vectors) const =0;
 
                                     /**
                                      * Fill in the given matrix with
@@ -1799,7 +1803,7 @@ class FiniteElement : public FiniteElementBase<dim>
                                      * to the @p{get_support_points}
                                      * function.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const =0;
 
                                     /**
index ca95058de41c1750752a17c2d8fb0864aae3a8d4..182f05aa13695896d11286246abbf5ef2c732755 100644 (file)
@@ -186,7 +186,7 @@ class FECrissCross : public FiniteElement<dim>
                                      * @p{p_real} on the real cell
                                      * @p{cell} and returns @p{p_real}.
                                      */
-    virtual Point<dim> transform_unit_to_real_cell (const DoFHandler<dim>::cell_iterator cell,
+    virtual Point<dim> transform_unit_to_real_cell (const typename DoFHandler<dim>::cell_iterator &cell,
                                                    const Point<dim> &p) const;
     
                                     /**
@@ -195,7 +195,7 @@ class FECrissCross : public FiniteElement<dim>
                                      * @p{p_unit} on the unit cell
                                      * @p{cell} and returns @p{p_unit}.
                                      */
-    virtual Point<dim> transform_real_to_unit_cell (const DoFHandler<dim>::cell_iterator cell,
+    virtual Point<dim> transform_real_to_unit_cell (const typename DoFHandler<dim>::cell_iterator &cell,
                                                    const Point<dim> &p) const;
 
                                     /**
@@ -231,27 +231,27 @@ class FECrissCross : public FiniteElement<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
                                     /**
@@ -283,9 +283,9 @@ class FECrissCross : public FiniteElement<dim>
                                      * In two spatial dimensions, this function
                                      * simply returns the length of the face.
                                      */
-    virtual void get_face_jacobians (const DoFHandler<dim>::face_iterator &face,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<double>      &face_jacobi_determinants) const;
+    virtual void get_face_jacobians (const typename DoFHandler<dim>::face_iterator &face,
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<double>      &face_jacobi_determinants) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -295,10 +295,10 @@ class FECrissCross : public FiniteElement<dim>
                                      * simply returns half the length of the
                                      * whole face.
                                      */
-    virtual void get_subface_jacobians (const DoFHandler<dim>::face_iterator &face,
+    virtual void get_subface_jacobians (const typename DoFHandler<dim>::face_iterator &face,
                                        const unsigned int           subface_no,
-                                       const std::vector<Point<dim-1> > &unit_points,
-                                       std::vector<double>      &face_jacobi_determinants) const;
+                                       const typename std::vector<Point<dim-1> > &unit_points,
+                                       typename std::vector<double>      &face_jacobi_determinants) const;
 
                                     /**
                                      * Return the normal vectors to the
@@ -314,10 +314,10 @@ class FECrissCross : public FiniteElement<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                     const unsigned int          face_no,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<Point<dim> >         &normal_vectors) const;
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<Point<dim> >         &normal_vectors) const;
 
                                     /**
                                      * Return the normal vectors to the
@@ -334,11 +334,11 @@ class FECrissCross : public FiniteElement<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                     const unsigned int           face_no,
                                     const unsigned int           subface_no,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<Point<dim> >         &normal_vectors) const;    
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<Point<dim> >         &normal_vectors) const;    
 
                                     /**
                                      * Refer to the base class for detailed
@@ -350,18 +350,18 @@ class FECrissCross : public FiniteElement<dim>
                                      * For higher dimensional finite elements
                                      * we use multilinear mappings.
                                      */
-    virtual void fill_fe_values (const DoFHandler<dim>::cell_iterator &cell,
-                                const std::vector<Point<dim> >            &unit_points,
-                                std::vector<Tensor<2,dim> >               &jacobians,
+    virtual void fill_fe_values (const typename DoFHandler<dim>::cell_iterator &cell,
+                                const typename std::vector<Point<dim> >            &unit_points,
+                                typename std::vector<Tensor<2,dim> >               &jacobians,
                                 const bool              compute_jacobians,
-                                std::vector<Tensor<3,dim> > &jacobians_grad,
+                                typename std::vector<Tensor<3,dim> > &jacobians_grad,
                                 const bool              compute_jacobians_grad,
-                                std::vector<Point<dim> >    &support_points,
+                                typename std::vector<Point<dim> >    &support_points,
                                 const bool              compute_support_points,
-                                std::vector<Point<dim> >    &q_points,
+                                typename std::vector<Point<dim> >    &q_points,
                                 const bool              compute_q_points,
                                 const FullMatrix<double>         &shape_values_transform,
-                                const std::vector<std::vector<Tensor<1,dim> > > &shape_grad_transform) const;
+                                const typename std::vector<typename std::vector<Tensor<1,dim> > > &shape_grad_transform) const;
 
     DeclException0 (ExcNotUseful);
 };
index 751470a45b09465eda4d61b44dfc672995cfff76..fec18977e274508fbc6890e9dd6bb72f4924bae5 100644 (file)
@@ -66,27 +66,27 @@ class FEDG_Q0 : public FEQ1Mapping<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 };
 
@@ -124,8 +124,8 @@ class FEDG_Q1 : public FEQ1<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 };
 
 
@@ -161,8 +161,8 @@ class FEDG_Q2 : public FEQ2<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 };
 
 
@@ -198,8 +198,8 @@ class FEDG_Q3 : public FEQ3<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 };
 
 
@@ -235,8 +235,8 @@ class FEDG_Q4 : public FEQ4<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 };
 
 
index 10978b64748da0b333263d878b34c2645cf6ab9e..a01f3fcbbcf04bdf7de8cfec52be19fda4d49333 100644 (file)
@@ -68,21 +68,21 @@ class FEDG_P1 : public FEQ1Mapping<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -97,7 +97,7 @@ class FEDG_P1 : public FEQ1Mapping<dim>
                                      * costs. The specified exception
                                      * is thrown instead.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
   private:
@@ -162,21 +162,21 @@ class FEDG_P2 : public FEQ1Mapping<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -191,7 +191,7 @@ class FEDG_P2 : public FEQ1Mapping<dim>
                                      * costs. The specified exception
                                      * is thrown instead.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
   private:
@@ -256,21 +256,21 @@ class FEDG_P3 : public FEQ1Mapping<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -285,7 +285,7 @@ class FEDG_P3 : public FEQ1Mapping<dim>
                                      * costs. The specified exception
                                      * is thrown instead.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
   private:
@@ -350,21 +350,21 @@ class FEDG_P4 : public FEQ1Mapping<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -379,7 +379,7 @@ class FEDG_P4 : public FEQ1Mapping<dim>
                                      * costs. The specified exception
                                      * is thrown instead.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
   private:
index 22c6a85e621a268007613e79f868d412d5157f1d..47292a7a77787e8dac70b8c08ede5c4dee007aaa 100644 (file)
@@ -85,21 +85,21 @@ class FEQ1 : public FEQ1Mapping<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -114,7 +114,7 @@ class FEQ1 : public FEQ1Mapping<dim>
                                      * costs. The specified exception
                                      * is thrown instead.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
   private:
@@ -262,21 +262,21 @@ class FEQ2 : public FEQ1Mapping<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -291,7 +291,7 @@ class FEQ2 : public FEQ1Mapping<dim>
                                      * costs. The specified exception
                                      * is thrown instead.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
   private:
@@ -383,21 +383,21 @@ class FEQ3 : public FEQ1Mapping<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -412,7 +412,7 @@ class FEQ3 : public FEQ1Mapping<dim>
                                      * costs. The specified exception
                                      * is thrown instead.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
   private:
@@ -506,21 +506,21 @@ class FEQ4 : public FEQ1Mapping<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -535,7 +535,7 @@ class FEQ4 : public FEQ1Mapping<dim>
                                      * costs. The specified exception
                                      * is thrown instead.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
   private:
index 123ce93ec0e86d6e0372cee41e1373fa6e1d129f..0d749208a5e9e30acd0f6987a62a135eb668c79a 100644 (file)
@@ -185,7 +185,7 @@ class FESystem : public FiniteElement<dim>
                                      * For the ordering of shape functions
                                      * refer to the @p{shape_value} function.
                                      */
-    virtual void get_unit_support_points (std::vector<Point<dim> > &support_points) const;
+    virtual void get_unit_support_points (typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -194,15 +194,15 @@ class FESystem : public FiniteElement<dim>
                                      * For the ordering of shape functions
                                      * refer to the @p{shape_value} function.
                                      */
-    virtual void get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                    std::vector<Point<dim> > &support_points) const;
+    virtual void get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                    typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_face_support_points (const DoFHandler<dim>::face_iterator &face,
-                                         std::vector<Point<dim> > &support_points) const;
+    virtual void get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
+                                         typename std::vector<Point<dim> > &support_points) const;
 
                                     /**
                                      * Fill the local mass matrix. The elements
@@ -248,7 +248,7 @@ class FESystem : public FiniteElement<dim>
                                      * Refer to the base class for more
                                      * information on this function.
                                      */
-    virtual void get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                        FullMatrix<double> &local_mass_matrix) const;
 
                                     /**
@@ -264,7 +264,7 @@ class FESystem : public FiniteElement<dim>
                                      * the @p{transform} function of
                                      * @p{base_element(0)}.
                                      */
-    virtual Point<dim> transform_unit_to_real_cell (const DoFHandler<dim>::cell_iterator cell,
+    virtual Point<dim> transform_unit_to_real_cell (const typename DoFHandler<dim>::cell_iterator &cell,
                                                    const Point<dim> &p) const;
 
                                     /**
@@ -280,7 +280,7 @@ class FESystem : public FiniteElement<dim>
                                      * the @p{transform} function of
                                      * @p{base_element(0)}.
                                      */
-    virtual Point<dim> transform_real_to_unit_cell (const DoFHandler<dim>::cell_iterator cell,
+    virtual Point<dim> transform_real_to_unit_cell (const typename DoFHandler<dim>::cell_iterator &cell,
                                                    const Point<dim> &p) const;
 
                                     /**
@@ -316,9 +316,9 @@ class FESystem : public FiniteElement<dim>
                                      * function simply passes down to the
                                      * underlying object.
                                      */
-    virtual void get_face_jacobians (const DoFHandler<dim>::face_iterator &face,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<double>      &face_jacobi_determinants) const;
+    virtual void get_face_jacobians (const typename DoFHandler<dim>::face_iterator &face,
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<double>      &face_jacobi_determinants) const;
 
                                     /**
                                      * Refer to the base class for detailed
@@ -331,10 +331,10 @@ class FESystem : public FiniteElement<dim>
                                      * function simply passes down to the
                                      * underlying object.
                                      */
-    virtual void get_subface_jacobians (const DoFHandler<dim>::face_iterator &face,
+    virtual void get_subface_jacobians (const typename DoFHandler<dim>::face_iterator &face,
                                        const unsigned int           subface_no,
-                                       const std::vector<Point<dim-1> > &unit_points,
-                                       std::vector<double>      &face_jacobi_determinants) const;
+                                       const typename std::vector<Point<dim-1> > &unit_points,
+                                       typename std::vector<double>      &face_jacobi_determinants) const;
 
                                     /**
                                      * Return the normal vectors to the
@@ -350,10 +350,10 @@ class FESystem : public FiniteElement<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                     const unsigned int          face_no,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<Point<dim> >         &normal_vectors) const;
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<Point<dim> >         &normal_vectors) const;
 
                                     /**
                                      * Return the normal vectors to the
@@ -370,29 +370,29 @@ class FESystem : public FiniteElement<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                     const unsigned int           face_no,
                                     const unsigned int           subface_no,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<Point<dim> >         &normal_vectors) const;
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<Point<dim> >         &normal_vectors) const;
 
                                     /**
                                      * Implementation of the
                                      * corresponding function of
                                      * @p{FiniteElement}.
                                      */
-    virtual void fill_fe_values (const DoFHandler<dim>::cell_iterator &cell,
-                                const std::vector<Point<dim> >            &unit_points,
-                                std::vector<Tensor<2,dim> >               &jacobians,
+    virtual void fill_fe_values (const typename DoFHandler<dim>::cell_iterator &cell,
+                                const typename std::vector<Point<dim> >            &unit_points,
+                                typename std::vector<Tensor<2,dim> >               &jacobians,
                                 const bool              compute_jacobians,
-                                std::vector<Tensor<3,dim> > &jacobians_grad,
+                                typename std::vector<Tensor<3,dim> > &jacobians_grad,
                                 const bool              compute_jacobians_grad,
-                                std::vector<Point<dim> > &support_points,
+                                typename std::vector<Point<dim> > &support_points,
                                 const bool           compute_support_points,
-                                std::vector<Point<dim> > &q_points,
+                                typename std::vector<Point<dim> > &q_points,
                                 const bool           compute_q_points,
                                 const FullMatrix<double>  &shape_values_transform,
-                                const std::vector<std::vector<Tensor<1,dim> > > &shape_grad_transform) const;
+                                const typename std::vector<typename std::vector<Tensor<1,dim> > > &shape_grad_transform) const;
     
                                     /** 
                                      * Number of different base
@@ -449,7 +449,7 @@ class FESystem : public FiniteElement<dim>
                                      * Pairs of multiplicity and
                                      * element type.
                                      */
-    typedef std::pair<const FiniteElement<dim> *, unsigned int> ElementPair;
+    typedef typename std::pair<const FiniteElement<dim> *, unsigned int> ElementPair;
     
                                     /**
                                      * Pointer to underlying finite
@@ -462,7 +462,7 @@ class FESystem : public FiniteElement<dim>
                                      * created by the constructor and
                                      * constant afterwards.
                                      */
-    std::vector<ElementPair> base_elements;
+    typename std::vector<ElementPair> base_elements;
 
 
                                     /**
index 5489a9011cc32d320fac952ffa6b47c241461b3f..58e95d1e26cf542f587f08a85a023eddcf09a803 100644 (file)
@@ -315,7 +315,7 @@ class FEValuesBase
                                      */
     template <class InputVector, typename number>
     void get_function_values (const InputVector &fe_function,
-                             std::vector<number>    &values) const;
+                             typename std::vector<number>    &values) const;
 
                                     /**
                                      * Access to vector valued finite
@@ -334,7 +334,7 @@ class FEValuesBase
                                      */
     template <class InputVector, typename number>
     void get_function_values (const InputVector       &fe_function,
-                             std::vector<Vector<number> > &values) const;
+                             typename std::vector<Vector<number> > &values) const;
 
                                     /**
                                      * Return the gradient of the @p{i}th shape
@@ -359,7 +359,7 @@ class FEValuesBase
                                      * For the format of this matrix, see the
                                      * documentation for the matrix itself.
                                      */
-    const std::vector<std::vector<Tensor<1,dim> > > & get_shape_grads () const;
+    const typename std::vector<typename std::vector<Tensor<1,dim> > > & get_shape_grads () const;
 
                                     /**
                                      * Return the gradients of the finite
@@ -383,7 +383,7 @@ class FEValuesBase
                                      */
     template <class InputVector>
     void get_function_grads (const InputVector      &fe_function,
-                            std::vector<Tensor<1,dim> > &gradients) const;
+                            typename std::vector<Tensor<1,dim> > &gradients) const;
 
                                     /**
                                      * Return the gradients of the finite
@@ -412,7 +412,7 @@ class FEValuesBase
                                      */
     template <class InputVector>
     void get_function_grads (const InputVector               &fe_function,
-                            std::vector<std::vector<Tensor<1,dim> > > &gradients) const;
+                            typename std::vector<typename std::vector<Tensor<1,dim> > > &gradients) const;
 
                                     /**
                                      * Return the 2nd derivatives of
@@ -445,7 +445,7 @@ class FEValuesBase
                                      * documentation for the matrix
                                      * itself.
                                      */
-    const std::vector<std::vector<Tensor<2,dim> > > & get_shape_2nd_derivatives () const;
+    const typename std::vector<typename std::vector<Tensor<2,dim> > > & get_shape_2nd_derivatives () const;
     
                                     /**
                                      * Return the tensor of second
@@ -466,7 +466,7 @@ class FEValuesBase
                                      */
     template <class InputVector>
     void get_function_2nd_derivatives (const InputVector      &fe_function,
-                                      std::vector<Tensor<2,dim> > &second_derivatives) const;
+                                      typename std::vector<Tensor<2,dim> > &second_derivatives) const;
 
     
                                     /**
@@ -493,7 +493,7 @@ class FEValuesBase
                                      */
     template <class InputVector>
     void get_function_2nd_derivatives (const InputVector      &fe_function,
-                                      std::vector<std::vector<Tensor<2,dim> > > &second_derivatives) const;
+                                      typename std::vector<typename std::vector<Tensor<2,dim> > > &second_derivatives) const;
     
                                     /**
                                      * Return the position of the @p{i}th
@@ -514,7 +514,7 @@ class FEValuesBase
                                      * Return a pointer to the vector of
                                      * quadrature points.
                                      */
-    const std::vector<Point<dim> > & get_quadrature_points () const;
+    const typename std::vector<Point<dim> > & get_quadrature_points () const;
 
                                     /**
                                      * Return the point in real space where
@@ -544,7 +544,7 @@ class FEValuesBase
                                      * denoting the location of the trial
                                      * functions.
                                      */
-    const std::vector<Point<dim> > & get_support_points () const;
+    const typename std::vector<Point<dim> > & get_support_points () const;
     
                                     /**
                                      * Return the Jacobi determinant times
@@ -582,7 +582,7 @@ class FEValuesBase
                                     /**
                                      * Return the present cell.
                                      */
-    const DoFHandler<dim>::cell_iterator & get_cell() const;
+    const typename DoFHandler<dim>::cell_iterator & get_cell() const;
 
                                     /**
                                      * Determine an estimate for the
@@ -657,7 +657,7 @@ class FEValuesBase
                                      * gradients on the real element, rather
                                      * than on the reference element.
                                      */
-    std::vector<std::vector<Tensor<1,dim> > >  shape_gradients;
+    typename std::vector<typename std::vector<Tensor<1,dim> > >  shape_gradients;
 
                                     /**
                                      * Store the 2nd derivatives of the shape
@@ -668,7 +668,7 @@ class FEValuesBase
                                      * gradients on the real element, rather
                                      * than on the reference element.
                                      */
-    std::vector<std::vector<Tensor<2,dim> > >  shape_2nd_derivatives;
+    typename std::vector<typename std::vector<Tensor<2,dim> > >  shape_2nd_derivatives;
 
                                     /**
                                      * Store an array of the weights of the
@@ -702,7 +702,7 @@ class FEValuesBase
                                      * real element, rather than on the
                                      * reference element.
                                      */
-    std::vector<Point<dim> >  quadrature_points;
+    typename std::vector<Point<dim> >  quadrature_points;
 
                                     /**
                                      * Array of points denoting the off-point
@@ -711,7 +711,7 @@ class FEValuesBase
                                      * on the unit cell, so no function is
                                      * provided for this).
                                      */
-    std::vector<Point<dim> >  support_points;
+    typename std::vector<Point<dim> >  support_points;
     
                                     /**
                                      * Store the jacobi matrices at the
@@ -726,7 +726,7 @@ class FEValuesBase
                                      * transformation of the gradients to the
                                      * real cell.
                                      */
-    std::vector<Tensor<2,dim> > jacobi_matrices;
+    typename std::vector<Tensor<2,dim> > jacobi_matrices;
 
                                     /**
                                      * Store the derivatives of the jacobi
@@ -739,7 +739,7 @@ class FEValuesBase
                                      * The same general remarks apply as for
                                      * @p{jacobi_matrices}.
                                      */
-    std::vector<Tensor<3,dim> > jacobi_matrices_grad;
+    typename std::vector<Tensor<3,dim> > jacobi_matrices_grad;
     
                                     /**
                                      * Store the values of the basis functions
@@ -785,7 +785,7 @@ class FEValuesBase
                                      * to the @p{get_function_*} functions
                                      * safer.
                                      */
-    DoFHandler<dim>::cell_iterator present_cell;
+    typename DoFHandler<dim>::cell_iterator present_cell;
 
                                     /**
                                      * Store the finite element for later use.
@@ -876,7 +876,7 @@ class FEValues : public FEValuesBase<dim>
                                      * of the object and contains the gradients
                                      * on the reference element.
                                      */
-    std::vector<std::vector<Tensor<1,dim> > > unit_shape_gradients;
+    typename std::vector<typename std::vector<Tensor<1,dim> > > unit_shape_gradients;
 
                                     /**
                                      * Store the 2nd derivatives of the shape
@@ -886,7 +886,7 @@ class FEValues : public FEValuesBase<dim>
                                      * of the object and contains the
                                      * derivatives on the reference element.
                                      */
-    std::vector<std::vector<Tensor<2,dim> > > unit_shape_2nd_derivatives;
+    typename std::vector<typename std::vector<Tensor<2,dim> > > unit_shape_2nd_derivatives;
     
                                     /**
                                      * Gradients of the basis
@@ -894,7 +894,7 @@ class FEValues : public FEValuesBase<dim>
                                      * Analogous to the @p{shape_values_transform}
                                      * array of the base class.
                                      */
-    std::vector<std::vector<Tensor<1,dim> > > unit_shape_gradients_transform;
+    typename std::vector<typename std::vector<Tensor<1,dim> > > unit_shape_gradients_transform;
     
                                     /**
                                      * Array of quadrature points in the unit
@@ -902,7 +902,7 @@ class FEValues : public FEValuesBase<dim>
                                      * construction and contains the quadrature
                                      * points on the reference element.
                                      */
-    std::vector<Point<dim> >  unit_quadrature_points;    
+    typename std::vector<Point<dim> >  unit_quadrature_points;    
 };
 
 
@@ -1016,13 +1016,13 @@ class FEFaceValuesBase : public FEValuesBase<dim>
                                      * vectors to the cell at the
                                      * quadrature points.
                                      */
-    const std::vector<Point<dim> > & get_normal_vectors () const;
+    const typename std::vector<Point<dim> > & get_normal_vectors () const;
 
                                     /**
                                      * Return the present
                                      * face.
                                      */
-    DoFHandler<dim>::face_iterator get_face() const;
+    typename DoFHandler<dim>::face_iterator get_face() const;
 
                                     /**
                                      * Determine an estimate for the
@@ -1045,7 +1045,7 @@ class FEFaceValuesBase : public FEValuesBase<dim>
                                      * subface, with indices like that:
                                      * @p{unit_shape_gradients[face][dof][q_point]}
                                      */
-    std::vector<std::vector<std::vector<Tensor<1,dim> > > > unit_shape_gradients;
+    typename std::vector<typename std::vector<typename std::vector<Tensor<1,dim> > > > unit_shape_gradients;
     
                                     /**
                                      * Store the 2nd derivatives of the shape
@@ -1055,7 +1055,7 @@ class FEFaceValuesBase : public FEValuesBase<dim>
                                      * of the object and contains the
                                      * derivatives on the reference element.
                                      */
-    std::vector<std::vector<std::vector<Tensor<2,dim> > > > unit_shape_2nd_derivatives;
+    typename std::vector<typename std::vector<typename std::vector<Tensor<2,dim> > > > unit_shape_2nd_derivatives;
 
                                     /**
                                      * Gradients of the basis
@@ -1063,7 +1063,7 @@ class FEFaceValuesBase : public FEValuesBase<dim>
                                      * Analogous to the @p{shape_values_transform}
                                      * array of the base class.
                                      */
-    std::vector<std::vector<std::vector<Tensor<1,dim> > > > unit_shape_gradients_transform;
+    typename std::vector<typename std::vector<typename std::vector<Tensor<1,dim> > > > unit_shape_gradients_transform;
 
                                     /**
                                      * Array of quadrature points on the
@@ -1071,7 +1071,7 @@ class FEFaceValuesBase : public FEValuesBase<dim>
                                      * alike field of the quadrature formula
                                      * passed upon construction.
                                      */
-    std::vector<Point<dim-1> > unit_face_quadrature_points;
+    typename std::vector<Point<dim-1> > unit_face_quadrature_points;
     
                                     /**
                                      * Array of quadrature points in the unit
@@ -1084,7 +1084,7 @@ class FEFaceValuesBase : public FEValuesBase<dim>
                                      * those on the unit face, but are stored
                                      * as coordinates on the unit cell.
                                      */
-    std::vector<std::vector<Point<dim> > > unit_quadrature_points;
+    typename std::vector<typename std::vector<Point<dim> > > unit_quadrature_points;
     
                                     /**
                                      * List of values denoting the determinant
@@ -1099,7 +1099,7 @@ class FEFaceValuesBase : public FEValuesBase<dim>
                                      * quadrature points. This field is filled
                                      * in by the finite element class.
                                      */
-    std::vector<Point<dim> >  normal_vectors;
+    typename std::vector<Point<dim> >  normal_vectors;
 
                                     /**
                                      * Stores the face or subface,
@@ -1108,7 +1108,7 @@ class FEFaceValuesBase : public FEValuesBase<dim>
                                      * function was called. Is used
                                      * by the @p{get_face} function.
                                      */
-    DoFHandler<dim>::face_iterator present_face;
+    typename DoFHandler<dim>::face_iterator present_face;
 };
 
 
@@ -1348,7 +1348,7 @@ const FullMatrix<double> & FEValuesBase<dim>::get_shape_values () const
 
 template <int dim>
 inline
-const std::vector<std::vector<Tensor<1,dim> > > &
+const typename std::vector<typename std::vector<Tensor<1,dim> > > &
 FEValuesBase<dim>::get_shape_grads () const
 {
   Assert (update_flags & update_gradients, ExcAccessToUninitializedField());
@@ -1359,7 +1359,7 @@ FEValuesBase<dim>::get_shape_grads () const
 
 template <int dim>
 inline
-const std::vector<std::vector<Tensor<2,dim> > > &
+const typename std::vector<typename std::vector<Tensor<2,dim> > > &
 FEValuesBase<dim>::get_shape_2nd_derivatives () const
 {
   Assert (update_flags & update_second_derivatives, ExcAccessToUninitializedField());
@@ -1370,7 +1370,7 @@ FEValuesBase<dim>::get_shape_2nd_derivatives () const
 
 template <int dim>
 inline
-const std::vector<Point<dim> > &
+const typename std::vector<Point<dim> > &
 FEValuesBase<dim>::get_quadrature_points () const
 {
   Assert (update_flags & update_q_points, ExcAccessToUninitializedField());
@@ -1381,7 +1381,7 @@ FEValuesBase<dim>::get_quadrature_points () const
 
 template <int dim>
 inline
-const std::vector<Point<dim> > &
+const typename std::vector<Point<dim> > &
 FEValuesBase<dim>::get_support_points () const
 {
   Assert (update_flags & update_support_points, ExcAccessToUninitializedField());
@@ -1413,7 +1413,7 @@ FEValuesBase<dim>::get_fe () const
 
 template <int dim>
 inline
-const DoFHandler<dim>::cell_iterator &
+const typename DoFHandler<dim>::cell_iterator &
 FEValuesBase<dim>::get_cell() const
 {
   return present_cell;
@@ -1423,7 +1423,7 @@ FEValuesBase<dim>::get_cell() const
 
 template <int dim>
 inline
-const std::vector<Point<dim> > &
+const typename std::vector<Point<dim> > &
 FEFaceValuesBase<dim>::get_normal_vectors () const
 {
   Assert (update_flags & update_normal_vectors,
@@ -1432,10 +1432,12 @@ FEFaceValuesBase<dim>::get_normal_vectors () const
 };
 
 
+
 template <int dim>
 inline
-DoFHandler<dim>::face_iterator
-FEFaceValuesBase<dim>::get_face() const {
+typename DoFHandler<dim>::face_iterator
+FEFaceValuesBase<dim>::get_face() const 
+{
   return present_face;
 };
 
index 6df25029e87e96a8f25b7999b92447e5815a5e23..0951a64ca86355dce73769e8031d8f495ae6c98d 100644 (file)
@@ -53,7 +53,7 @@ class FEQ1Mapping : public FiniteElement<dim>
                                      * @p{p_real} on the real cell
                                      * @p{cell} and returns @p{p_real}.
                                      */
-    virtual Point<dim> transform_unit_to_real_cell (const DoFHandler<dim>::cell_iterator cell,
+    virtual Point<dim> transform_unit_to_real_cell (const typename DoFHandler<dim>::cell_iterator &cell,
                                                    const Point<dim> &p) const;
     
                                     /**
@@ -62,7 +62,7 @@ class FEQ1Mapping : public FiniteElement<dim>
                                      * @p{p_unit} on the unit cell
                                      * @p{cell} and returns @p{p_unit}.
                                      */
-    virtual Point<dim> transform_real_to_unit_cell (const DoFHandler<dim>::cell_iterator cell,
+    virtual Point<dim> transform_real_to_unit_cell (const typename DoFHandler<dim>::cell_iterator &cell,
                                                    const Point<dim> &p) const;
     
                                     /**
@@ -94,8 +94,8 @@ class FEQ1Mapping : public FiniteElement<dim>
                                      * In two spatial dimensions, this function
                                      * simply returns the length of the face.
                                      */
-    virtual void get_face_jacobians (const DoFHandler<dim>::face_iterator &face,
-                                    const std::vector<Point<dim-1> > &unit_points,
+    virtual void get_face_jacobians (const typename DoFHandler<dim>::face_iterator &face,
+                                    const typename std::vector<Point<dim-1> > &unit_points,
                                     std::vector<double>      &face_jacobi_determinants) const;
 
                                     /**
@@ -106,10 +106,10 @@ class FEQ1Mapping : public FiniteElement<dim>
                                      * simply returns half the length of the
                                      * whole face.
                                      */
-    virtual void get_subface_jacobians (const DoFHandler<dim>::face_iterator &face,
+    virtual void get_subface_jacobians (const typename DoFHandler<dim>::face_iterator &face,
                                        const unsigned int           subface_no,
-                                       const std::vector<Point<dim-1> > &unit_points,
-                                       std::vector<double>      &face_jacobi_determinants) const;
+                                       const typename std::vector<Point<dim-1> > &unit_points,
+                                       typename std::vector<double>      &face_jacobi_determinants) const;
 
                                     /**
                                      * Return the normal vectors to the
@@ -125,10 +125,10 @@ class FEQ1Mapping : public FiniteElement<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                     const unsigned int           face_no,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<Point<dim> >         &normal_vectors) const;
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<Point<dim> >         &normal_vectors) const;
 
                                     /**
                                      * Return the normal vectors to the
@@ -145,11 +145,11 @@ class FEQ1Mapping : public FiniteElement<dim>
                                      * Refer to the base class for detailed
                                      * information on this function.
                                      */
-    virtual void get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+    virtual void get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                     const unsigned int           face_no,
                                     const unsigned int           subface_no,
-                                    const std::vector<Point<dim-1> > &unit_points,
-                                    std::vector<Point<dim> >         &normal_vectors) const;    
+                                    const typename std::vector<Point<dim-1> > &unit_points,
+                                    typename std::vector<Point<dim> >         &normal_vectors) const;    
 
                                     /**
                                      * Refer to the base class for detailed
@@ -161,18 +161,18 @@ class FEQ1Mapping : public FiniteElement<dim>
                                      * For higher dimensional finite elements
                                      * we use multilinear mappings.
                                      */
-    virtual void fill_fe_values (const DoFHandler<dim>::cell_iterator &cell,
-                                const std::vector<Point<dim> >            &unit_points,
-                                std::vector<Tensor<2,dim> >               &jacobians,
+    virtual void fill_fe_values (const typename DoFHandler<dim>::cell_iterator &cell,
+                                const typename std::vector<Point<dim> >            &unit_points,
+                                typename std::vector<Tensor<2,dim> >               &jacobians,
                                 const bool              compute_jacobians,
-                                std::vector<Tensor<3,dim> > &jacobians_grad,
+                                typename std::vector<Tensor<3,dim> > &jacobians_grad,
                                 const bool              compute_jacobians_grad,
-                                std::vector<Point<dim> >    &support_points,
+                                typename std::vector<Point<dim> >    &support_points,
                                 const bool              compute_support_points,
-                                std::vector<Point<dim> >    &q_points,
+                                typename std::vector<Point<dim> >    &q_points,
                                 const bool              compute_q_points,
                                 const FullMatrix<double>         &shape_values_transform,
-                                const std::vector<std::vector<Tensor<1,dim> > > &shape_grad_transform) const;
+                                const typename std::vector<typename std::vector<Tensor<1,dim> > > &shape_grad_transform) const;
 
                                     /**
                                      * Compute the gradients of the jacobian
@@ -180,9 +180,9 @@ class FEQ1Mapping : public FiniteElement<dim>
                                      * and real cell at the given
                                      * points on the unit cell.
                                      */
-    static void compute_jacobian_gradients (const DoFHandler<dim>::cell_iterator &cell,
-                                           const std::vector<Point<dim> >            &unit_points,
-                                           std::vector<Tensor<3,dim> >               &jacobians);
+    static void compute_jacobian_gradients (const typename DoFHandler<dim>::cell_iterator &cell,
+                                           const typename std::vector<Point<dim> >            &unit_points,
+                                           typename std::vector<Tensor<3,dim> >               &jacobians);
 
 
                                     /**
index c5f7031b7499df618e88ec16d3a8a5e4965be717..afc3c340077a9f941a4873c4cd4d01bb24ccc9d5 100644 (file)
  *
  * @author Wolfgang Bangerth, Guido Kanschat, 1998, 1999
  */
-template <int _dim>
+template <int dim_>
 struct GeometryInfo
 {
                                     /**
                                      * Present dimension. Does not
                                      * look useful, but might be.
                                      */
-    static const unsigned int dim               = _dim;
+    static const unsigned int dim               = dim_;
 
                                     /**
                                      * Number of children a cell has.
                                      */
-    static const unsigned int children_per_cell = (1<<_dim);
+    static const unsigned int children_per_cell = (1<<dim_);
 
                                     /**
                                      * Number of faces a cell has.
                                      */
-    static const unsigned int faces_per_cell    = 2*_dim;
+    static const unsigned int faces_per_cell    = 2*dim_;
 
                                     /**
                                      * Number of children each face has
                                      * when the adjacent cell is refined.
                                      */
-    static const unsigned int subfaces_per_face = GeometryInfo<_dim-1>::children_per_cell;
+    static const unsigned int subfaces_per_face = GeometryInfo<dim_-1>::children_per_cell;
 
                                     /**
                                      * Number of vertices a cell has.
                                      */
-    static const unsigned int vertices_per_cell = (1<<_dim);
+    static const unsigned int vertices_per_cell = (1<<dim_);
 
                                     /**
                                      * Number of vertices each face has.
@@ -72,17 +72,17 @@ struct GeometryInfo
                                      * @p{for (i=0; i<vertices_per_face; ++i)},
                                      * at least if @p{i} is an @p{unsigned int}.
                                      */
-    static const unsigned int vertices_per_face = GeometryInfo<_dim-1>::vertices_per_cell;
+    static const unsigned int vertices_per_face = GeometryInfo<dim_-1>::vertices_per_cell;
 
                                     /**
                                      * Number of lines each face has.
                                      */
-    static const unsigned int lines_per_face = GeometryInfo<_dim-1>::lines_per_cell;
+    static const unsigned int lines_per_face = GeometryInfo<dim_-1>::lines_per_cell;
     
                                     /**
                                      * Number of quads on each face.
                                      */
-    static const unsigned int quads_per_face = GeometryInfo<_dim-1>::quads_per_cell;
+    static const unsigned int quads_per_face = GeometryInfo<dim_-1>::quads_per_cell;
 
                                     /**
                                      * Number of lines of a cell.
@@ -101,16 +101,16 @@ struct GeometryInfo
                                      * hypercube and the copy by
                                      * lines.
                                      */
-    static const unsigned int lines_per_cell = (2*GeometryInfo<dim-1>::lines_per_cell
-                                               + GeometryInfo<dim-1>::vertices_per_cell);
+    static const unsigned int lines_per_cell = (2*GeometryInfo<dim_-1>::lines_per_cell
+                                               + GeometryInfo<dim_-1>::vertices_per_cell);
     
                                     /**
                                      * Number of quadrilaterals of a cell.
                                      *
                                      * Computation is analogous to @p{lines_per_cell}.
                                      */
-    static const unsigned int quads_per_cell = (2*GeometryInfo<dim-1>::quads_per_cell
-                                               + GeometryInfo<dim-1>::lines_per_cell);
+    static const unsigned int quads_per_cell = (2*GeometryInfo<dim_-1>::quads_per_cell
+                                               + GeometryInfo<dim_-1>::lines_per_cell);
 
                                     /**
                                      * Number of hexahedra of a cell.
@@ -120,8 +120,8 @@ struct GeometryInfo
                                      * important for more than three
                                      * dimensions!
                                      */
-    static const unsigned int hexes_per_cell = (2*GeometryInfo<dim-1>::hexes_per_cell
-                                               + GeometryInfo<dim-1>::quads_per_cell);
+    static const unsigned int hexes_per_cell = (2*GeometryInfo<dim_-1>::hexes_per_cell
+                                               + GeometryInfo<dim_-1>::quads_per_cell);
 
                                     /**
                                      * List of numbers which is
@@ -174,7 +174,6 @@ struct GeometryInfo
                                      */
     static unsigned int child_cell_on_face (unsigned int face,
                                            unsigned int subface);
-
 };
 
 
index 8962f5fce9402608fa53963e296a15c1797b6a1b..10c42a6b13217a38e0667b1f5ff47a5dc74f06e9 100644 (file)
@@ -256,9 +256,9 @@ class GridIn
                                      * have to eliminate unused
                                      * vertices beforehand.
                                      */
-    static void delete_unused_vertices (std::vector<Point<dim> >    &vertices,
-                                       std::vector<CellData<dim> > &cells,
-                                       SubCellData                 &subcelldata);
+    static void delete_unused_vertices (typename std::vector<Point<dim> >    &vertices,
+                                       typename std::vector<CellData<dim> > &cells,
+                                       SubCellData                          &subcelldata);
 
                                     /**
                                      * This function can write the
@@ -305,9 +305,9 @@ class GridIn
                                      * without further ado by the
                                      * user.
                                      */
-    static void debug_output_grid (const std::vector<CellData<dim> > &cells,
-                                  const std::vector<Point<dim> >    &vertices,
-                                  std::ostream                      &out);
+    static void debug_output_grid (const typename std::vector<CellData<dim> > &cells,
+                                  const typename std::vector<Point<dim> >    &vertices,
+                                  std::ostream                               &out);
 };
 
 
index 5a3801701e681ceb2b80ac375373248ed18dca53..2d200b61b70738734646b0f54fef2d40439e08e4 100644 (file)
@@ -525,7 +525,7 @@ class GridReordering : private GridReorderingInfo<dim>
                                      * general documentation of this
                                      * class.
                                      */
-    static void reorder_cells (std::vector<CellData<dim> > &original_cells);
+    static void reorder_cells (typename std::vector<CellData<dim> > &original_cells);
     
   private:
 
@@ -681,7 +681,7 @@ class GridReordering : private GridReorderingInfo<dim>
                                          * @p{adjacent_cells} field
                                          * of the inserted faces.
                                          */
-       void insert_faces (std::map<Face,FaceData > &global_faces);
+       void insert_faces (typename std::map<Face,FaceData > &global_faces);
 
                                         /**
                                          * Find out the neighbors of the
@@ -754,9 +754,11 @@ class GridReordering : private GridReorderingInfo<dim>
     {
                                         /**
                                          * Indices of the vertices of
-                                         * this face.
+                                         * this face. The size of the array 
+                                         * is equal to
+                                         * @p{GeometryInfo<dim>::vertices_per_face}.
                                          */
-       unsigned int vertices[GeometryInfo<dim>::vertices_per_face];
+       unsigned int vertices[1<<(dim-1)];
 
                                         /**
                                          * Comparison operator. Use
@@ -868,12 +870,12 @@ class GridReordering : private GridReorderingInfo<dim>
                                      * as recursive calls but rather
                                      * as eliminated tail-recursion.
                                      */
-    static void track_back (std::vector<Cell>  &cells,
-                           RotationStack      &rotation_states,
-                           const unsigned int  track_back_to_cell);
+    static void track_back (typename std::vector<Cell>  &cells,
+                           RotationStack               &rotation_states,
+                           const unsigned int          track_back_to_cell);
 
-    static bool try_rotate_single_neighbors (std::vector<Cell>  &cells,
-                                            RotationStack      &rotation_states);
+    static bool try_rotate_single_neighbors (typename std::vector<Cell>  &cells,
+                                            RotationStack               &rotation_states);
     
                                     /**
                                      * This is the main function that
@@ -892,9 +894,9 @@ class GridReordering : private GridReorderingInfo<dim>
                                      * between original cells and
                                      * presorted cells.
                                      */
-    static void find_reordering (std::vector<Cell>               &cells,
-                                std::vector<CellData<dim> >     &original_cells,
-                                const std::vector<unsigned int> &new_cell_numbers);
+    static void find_reordering (typename std::vector<Cell>           &cells,
+                                typename std::vector<CellData<dim> > &original_cells,
+                                const std::vector<unsigned int>      &new_cell_numbers);
 
                                     /**
                                      * Preorder the incoming cells by
@@ -909,8 +911,25 @@ class GridReordering : private GridReorderingInfo<dim>
                                      */
     static
     std::vector<unsigned int>
-    presort_cells (std::vector<Cell>       &cells,
-                  std::map<Face,FaceData> &faces);
+    presort_cells (typename std::vector<Cell>       &cells,
+                  typename std::map<Face,FaceData> &faces);
+
+                                    /** 
+                                     * By the resolution of Defect
+                                     * Report 45 to the ISO C++ 1998
+                                     * standard, nested classes
+                                     * automatically have access to
+                                     * members of the enclosing
+                                     * class. Nevertheless, some
+                                     * compilers don't implement this
+                                     * resolution yet, so we have to
+                                     * make them @p{friend}, which
+                                     * doesn't hurt on the other
+                                     * compilers as well.
+                                     */
+    friend class Cell;
+    friend class Face;
+    friend class FaceData;
 };
 
 
index 9e5d103808e45f3623cb8ca7d73a0de529d247a9..1f8856da63966a13b8169fb49a57c4ad8767ac7d 100644 (file)
@@ -13,7 +13,8 @@
 #ifndef __deal2__intergrid_map_h
 #define __deal2__intergrid_map_h
 
-template <class T> class SmartPointer;
+#include <base/smartpointer.h>
+
 
 /**
  * This class provides a map between two grids which are derived from
@@ -200,7 +201,7 @@ class InterGridMap
                                      * The actual data. Hold one iterator
                                      * for each cell on each level.
                                      */
-    std::vector<std::vector<cell_iterator> > mapping;
+    typename std::vector<typename std::vector<cell_iterator> > mapping;
 
                                     /**
                                      * Store a pointer to the source grid.
index 08fe0b2fb35d765494d2872645ba2fa28248cafe..93fc28e7c17c0fa2f86b93ed58f89ad4685e11be 100644 (file)
@@ -180,9 +180,9 @@ class PersistentTriangulation : public Triangulation<dim>
                                      * is not useful in the context of this
                                      * class.
                                      */
-    virtual void create_triangulation (const std::vector<Point<dim> >    &vertices,
-                                      const std::vector<CellData<dim> > &cells,
-                                      const SubCellData                 &subcelldata);
+    virtual void create_triangulation (const typename std::vector<Point<dim> >    &vertices,
+                                      const typename std::vector<CellData<dim> > &cells,
+                                      const SubCellData                          &subcelldata);
 
                                     /**
                                      * Writes all refine and coarsen
index 758e6e5b912206b2ea00414158503ef44ab0b687..a32a5b9ce2aef96eb21a519fce43654107964daf 100644 (file)
@@ -1818,9 +1818,9 @@ class Triangulation : public TriaDimensionInfo<dim>,
                                      * and the @ref{GridIn} and
                                      * @ref{GridReordering} class.
                                      */
-    virtual void create_triangulation (const std::vector<Point<dim> >    &vertices,
-                                      const std::vector<CellData<dim> > &cells,
-                                      const SubCellData                 &subcelldata);
+    virtual void create_triangulation (const typename std::vector<Point<dim> >    &vertices,
+                                      const typename std::vector<CellData<dim> > &cells,
+                                      const SubCellData                          &subcelldata);
 
                                     /**
                                      * Distort the grid by randomly
@@ -3109,13 +3109,13 @@ class Triangulation : public TriaDimensionInfo<dim>,
                                      *
                                      *  Usage is like @p{levels[3]->quads}.
                                      */
-    std::vector<TriangulationLevel<dim>*> levels;
+    typename std::vector<TriangulationLevel<dim>*> levels;
 
                                     /**
                                      *  Array of the vertices of this
                                      *  triangulation.
                                      */
-    std::vector<Point<dim> >              vertices;
+    typename std::vector<Point<dim> >              vertices;
 
                                     /**
                                      *  Array storing a bit-pattern which
index 80423dc42644ff9da038cdc30b27c7f50f463636..6553bfbe2351a7160e9ce96e380df181e99bbab9 100644 (file)
@@ -903,32 +903,39 @@ TriaObjectAccessor<celldim,dim>::operator -- ()
 template <>
 inline
 TriaIterator<1,TriaObjectAccessor<0, 1> >
-CellAccessor<1>::face (const unsigned int) const {
-  Assert (false, ExcNotUsefulForThisDimension());
+CellAccessor<1>::face (const unsigned int) const 
+{
+  Assert (false, TriaAccessor<1>::ExcNotUsefulForThisDimension());
   return TriaIterator<1,TriaObjectAccessor<0, 1> >();
 };
 
 
+
 template <>
 inline
 Triangulation<2>::face_iterator
-CellAccessor<2>::face (const unsigned int i) const {
+CellAccessor<2>::face (const unsigned int i) const 
+{
   return line(i);
 };
 
 
+
 template <>
 inline
 Triangulation<3>::face_iterator
-CellAccessor<3>::face (const unsigned int i) const {
-  return quad(i);
+CellAccessor<3>::face (const unsigned int i) const 
+{
+  return this->quad(i);
 };
 
 
+
 template <int dim>
 inline
 int
-CellAccessor<dim>::neighbor_index (const unsigned int i) const {
+CellAccessor<dim>::neighbor_index (const unsigned int i) const 
+{
   Assert (i<GeometryInfo<dim>::faces_per_cell,
          typename TriaAccessor<dim>::ExcInvalidNeighbor(i));
   return tria->levels[present_level]->
index ab4e3d27b2bcd33cf0934b5793095f6410de94da..517d08f1cb5e7c4a94da7aab4143b002a832f0d9 100644 (file)
@@ -222,7 +222,12 @@ template <int dim> class Triangulation;
  *   @author Wolfgang Bangerth, 1998
  */
 template <int dim, typename Accessor>
-class TriaRawIterator : public std::bidirectional_iterator<Accessor,int>
+class TriaRawIterator :
+#ifdef HAVE_STD_ITERATOR_CLASS  
+               public std::iterator<std::bidirectional_iterator_tag,int>
+#else
+               bidirectional_iterator<Accessor,int>
+#endif
 {
   public:
                                     /**
index a20621390a6beed38ae9fde7e4ad2d7b0c3ce238..1112e64a99cb8dadee27c903b55c0e94ce9d34bc 100644 (file)
@@ -20,6 +20,7 @@
 #include <base/subscriptor.h>
 #include <base/smartpointer.h>
 #include <lac/vector.h>
+#include <lac/sparsity_pattern.h>
 
 #include <vector>
 
@@ -103,7 +104,7 @@ class MGLevelObject : public Subscriptor
                                     /**
                                      * Array of the objects to be held.
                                      */
-    std::vector<Object> objects;
+    typename std::vector<Object> objects;
 };
 
 
index 00795b821708de31b6f9dee3ffc36ba54b4a6116..a710a2318220fb50c933fa13def763734f5b46d3 100644 (file)
@@ -944,7 +944,7 @@ class MGDoFHandler : public DoFHandler<dim>
                                      * numbers which start from zero on each
                                      * level.
                                      */
-    std::vector<DoFLevel<dim>*>    mg_levels;
+    typename std::vector<DoFLevel<dim>*>    mg_levels;
 
                                     /**
                                      * For each vertex there is a list of
@@ -952,7 +952,7 @@ class MGDoFHandler : public DoFHandler<dim>
                                      * on the different levels it lives on and
                                      * which are these levels.
                                      */
-    std::vector<MGVertexDoFs>      mg_vertex_dofs;
+    typename std::vector<MGVertexDoFs>      mg_vertex_dofs;
     
                                     /**
                                      * Vectors storing the number of degrees of
index b9fc284527ac6319162f042d9b5c2d2e3d69da81..b202085dba8b06eb8fe1b7ea4db7f8a6de48b3dc 100644 (file)
@@ -17,6 +17,8 @@
 /*----------------------------   problem_assembler.h     ---------------------------*/
 
 #include <base/exceptions.h>
+#include <lac/full_matrix.h>
+#include <lac/vector.h>
 #include <dofs/dof_handler.h>
 #include <dofs/dof_accessor.h>
 #include <fe/fe_values.h>
@@ -63,7 +65,7 @@ class Equation
     virtual void assemble (FullMatrix<double>  &cell_matrix,
                           Vector<double>      &rhs,
                           const FEValues<dim> &fe_values,
-                          const DoFHandler<dim>::cell_iterator &cell) const;
+                          const typename DoFHandler<dim>::cell_iterator &cell) const;
 
                                     /**
                                      * Virtual function which only assembles
@@ -80,7 +82,7 @@ class Equation
                                      */
     virtual void assemble (FullMatrix<double>  &cell_matrix,
                           const FEValues<dim> &fe_values,
-                          const DoFHandler<dim>::cell_iterator &cell) const;
+                          const typename DoFHandler<dim>::cell_iterator &cell) const;
 
                                     /**
                                      * Virtual function which only assembles
@@ -97,7 +99,7 @@ class Equation
                                      */
     virtual void assemble (Vector<double>      &rhs,
                           const FEValues<dim> &fe_values,
-                          const DoFHandler<dim>::cell_iterator &cell) const;
+                          const typename DoFHandler<dim>::cell_iterator &cell) const;
 
                                     /**
                                      * Return number of equations for this
index d90acf9957a2560bb79f64a225b478432567f589..eb0749e23ce24b247cf722db304c55b3d7328c20 100644 (file)
@@ -108,7 +108,7 @@ class ProblemBase
                                      * See the general documentation of this
                                      * class for more detail.
                                      */
-    typedef std::map<unsigned char,const Function<dim>*> FunctionMap;
+    typedef typename std::map<unsigned char,const Function<dim>*> FunctionMap;
                                     /**
                                      * Typdedef an iterator which assembles
                                      * matrices and vectors.
index 0d7de828964137e2e7435be69a43ab1cb5c4ae8d..19d749fa4456452220ba928bd78e8c3439db55ea 100644 (file)
@@ -398,13 +398,13 @@ class DataOut_DoFData : public DataOutInterface<patch_dim,patch_space_dim>
                                      * List of data elements with vectors of
                                      * values for each degree of freedom.
                                      */
-    std::vector<DataEntry>  dof_data;
+    typename std::vector<DataEntry>  dof_data;
 
                                     /**
                                      * List of data elements with vectors of
                                      * values for each cell.
                                      */
-    std::vector<DataEntry>  cell_data;
+    typename std::vector<DataEntry>  cell_data;
 
                                     /**
                                      * This is a list of patches that is
@@ -413,7 +413,7 @@ class DataOut_DoFData : public DataOutInterface<patch_dim,patch_space_dim>
                                      * in the output routines of the base
                                      * classes.
                                      */
-    std::vector<DataOutBase::Patch<patch_dim,patch_space_dim> > patches;
+    typename std::vector<DataOutBase::Patch<patch_dim,patch_space_dim> > patches;
 
                                     /**
                                      * Function by which the base
@@ -421,7 +421,7 @@ class DataOut_DoFData : public DataOutInterface<patch_dim,patch_space_dim>
                                      * what patches they shall write
                                      * to a file.
                                      */
-    virtual const std::vector<DataOutBase::Patch<patch_dim,patch_space_dim> > &
+    virtual const typename std::vector<typename DataOutBase::Patch<patch_dim,patch_space_dim> > &
     get_patches () const;
 
                                     /**
index 7fe07ed438d253abbc48572e1639f19afeb113a9..41ef0f91c3370b8d27fa3b48bcfb9b830fc36dc1 100644 (file)
@@ -118,7 +118,7 @@ class DataOutFaces : public DataOut_DoFData<dim,dim-1,dim>
                                      * aliased to a name that is
                                      * better to type.
                                      */
-    typedef std::pair<typename DoFHandler<dim>::cell_iterator,unsigned int> FaceDescriptor;
+    typedef typename std::pair<typename DoFHandler<dim>::cell_iterator,unsigned int> FaceDescriptor;
     
     
                                     /**
index 2625161d094835901d1ff5ece5de450c69f71784..96354376bb06dd9de61e71d03e7b6742933c7839 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <base/data_out_base.h>
 #include <base/smartpointer.h>
+#include <lac/vector.h>
 
 #include <string>
 #include <vector>
@@ -362,7 +363,7 @@ class DataOutStack : public DataOutInterface<dim+1>
                                      * List of patches of all past and
                                      * present parameter value data sets.
                                      */
-    std::vector<DataOutBase::Patch<dim+1> >   patches;
+    typename std::vector<DataOutBase::Patch<dim+1> >   patches;
 
                                     /**
                                      * Structure holding data vectors
@@ -393,12 +394,12 @@ class DataOutStack : public DataOutInterface<dim+1>
                                     /**
                                      * List of DoF data vectors.
                                      */
-    std::vector<DataVector> dof_data;
+    typename std::vector<DataVector> dof_data;
 
                                     /**
                                      * List of cell data vectors.
                                      */
-    std::vector<DataVector> cell_data;
+    typename std::vector<DataVector> cell_data;
     
                                     /**
                                      * This is the function through
@@ -408,7 +409,7 @@ class DataOutStack : public DataOutInterface<dim+1>
                                      * the base class @ref{DataOutBase}) to
                                      * the actual output function.
                                      */
-    virtual const std::vector<DataOutBase::Patch<dim+1> > & get_patches () const;
+    virtual const typename std::vector<typename DataOutBase::Patch<dim+1> > & get_patches () const;
 
 
                                     /**
index eb54015e3f3dbd6ad626ddcf51fd5611a368e4d7..76acef42f049012f019786ff5d90e161b7a611d9 100644 (file)
@@ -296,7 +296,7 @@ class DoFRenumbering
     template <int dim>
     static void
     cell_wise_dg (DoFHandler<dim>                     &dof_handler,
-                 const std::vector<typename DoFHandler<dim>::cell_iterator> &cell_order);
+                 const typename std::vector<typename DoFHandler<dim>::cell_iterator> &cell_order);
     
 
                                     /**
@@ -307,9 +307,9 @@ class DoFRenumbering
                                      */
     template <int dim>
     static void
-    cell_wise_dg (MGDoFHandler<dim>                                       &dof_handler,
-                 const unsigned int                                       level,
-                 const std::vector<typename MGDoFHandler<dim>::cell_iterator> &cell_order);
+    cell_wise_dg (MGDoFHandler<dim>   &dof_handler,
+                 const unsigned int   level,
+                 const typename std::vector<typename MGDoFHandler<dim>::cell_iterator> &cell_order);
     
 
                                     /**
index ac602729d2837cf41a0de12deed724f147c9d579..96f53add2fc76574fc02b5575a229dbe1430622b 100644 (file)
@@ -216,7 +216,7 @@ class KellyErrorEstimator
                                      * for each boundary indicator, which is
                                      * guaranteed by the @p{map} data type.
                                      */    
-    typedef std::map<unsigned char,const Function<dim>*> FunctionMap;
+    typedef typename std::map<unsigned char,const Function<dim>*> FunctionMap;
 
 
                                     /**
@@ -359,14 +359,14 @@ class KellyErrorEstimator
                                      * general documentation of this
                                      * class for more information.
                                      */
-    typedef std::map<typename DoFHandler<dim>::face_iterator,std::vector<double> > FaceIntegrals;
+    typedef typename std::map<typename DoFHandler<dim>::face_iterator,std::vector<double> > FaceIntegrals;
 
 
                                     /**
                                      * Redeclare an active cell iterator.
                                      * This is simply for convenience.
                                      */
-    typedef DoFHandler<dim>::active_cell_iterator active_cell_iterator;
+    typedef typename DoFHandler<dim>::active_cell_iterator active_cell_iterator;
 
 
                                     /**
@@ -465,18 +465,18 @@ class KellyErrorEstimator
                                          * index of the solution
                                          * vector.
                                          */
-       std::vector<std::vector<std::vector<Tensor<1,dim> > > > psi;
+       typename std::vector<typename std::vector<typename std::vector<Tensor<1,dim> > > > psi;
 
                                         /**
                                          * The same vector for a neighbor cell
                                          */
-       std::vector<std::vector<std::vector<Tensor<1,dim> > > > neighbor_psi;
+       typename std::vector<typename std::vector<typename std::vector<Tensor<1,dim> > > > neighbor_psi;
 
                                         /**
                                          * The normal vectors of the finite
                                          * element function on one face
                                          */
-       std::vector<Point<dim> > normal_vectors;
+       typename std::vector<Point<dim> > normal_vectors;
 
                                         /**
                                          * Two arrays needed for the
@@ -571,6 +571,21 @@ class KellyErrorEstimator
                                               const unsigned int          face_no,
                                               FEFaceValues<dim>          &fe_face_values,
                                               FESubfaceValues<dim>       &fe_subface_values);
+
+                                    /** 
+                                     * By the resolution of Defect
+                                     * Report 45 to the ISO C++ 1998
+                                     * standard, nested classes
+                                     * automatically have access to
+                                     * members of the enclosing
+                                     * class. Nevertheless, some
+                                     * compilers don't implement this
+                                     * resolution yet, so we have to
+                                     * make them @p{friend}, which
+                                     * doesn't hurt on the other
+                                     * compilers as well.
+                                     */
+    friend class Data;
 };
 
 
index ee4cf459e93f85d678251c71a1146e7444c2b946..7938f59e0d265499a161e94196a047a2dbf3f410 100644 (file)
@@ -109,10 +109,10 @@ class Histogram
                                      * on this.
                                      */
     template <typename number>
-    void evaluate (const std::vector<Vector<number> > &values,
-                  const std::vector<double>          &y_values,
-                  const unsigned int                  n_intervals,
-                  const IntervalSpacing               interval_spacing = linear);
+    void evaluate (const typename std::vector<Vector<number> > &values,
+                  const std::vector<double>                   &y_values,
+                  const unsigned int                           n_intervals,
+                  const IntervalSpacing                        interval_spacing = linear);
 
                                     /**
                                      * This function is only a wrapper
index 6ce4fecfbb2094fa08c181353d6b309d49d9ccec..80d79f36c438a59a918c3722d7c6675a8a75567a 100644 (file)
@@ -196,7 +196,7 @@ class MatrixCreator
                                      * See the general documentation of this
                                      * class for more detail.
                                      */
-    typedef std::map<unsigned char,const Function<dim>*> FunctionMap;
+    typedef typename std::map<unsigned char,const Function<dim>*> FunctionMap;
 
                                     /**
                                      * Assemble the mass matrix. If no 
index fb5f38186848355a63267165d284d1290edc935f..c687d6239dd3f1c8970ce4d1037d023beba5971d 100644 (file)
@@ -202,7 +202,7 @@ class SolutionTransfer
                                      * onto the new (refined and/or
                                      * coarsenend) grid.
                                      */
-    void prepare_for_coarsening_and_refinement (const std::vector<Vector<number> > &all_in);
+    void prepare_for_coarsening_and_refinement (const typename std::vector<Vector<number> > &all_in);
     
                                     /**
                                      * Same as previous function
@@ -266,8 +266,8 @@ class SolutionTransfer
                                      * several functions can be
                                      * performed in one step.
                                      */
-    void interpolate (const std::vector<Vector<number> >&all_in,
-                     std::vector<Vector<number> >      &all_out) const;
+    void interpolate (const typename std::vector<Vector<number> >&all_in,
+                     typename std::vector<Vector<number> >      &all_out) const;
       
                                     /**
                                      * Same as the previous function.
@@ -394,7 +394,7 @@ class SolutionTransfer
        unsigned int memory_consumption () const;
        
        std::vector<unsigned int>    *indices_ptr;
-       std::vector<Vector<number> > *dof_values_ptr;
+       typename std::vector<Vector<number> > *dof_values_ptr;
     };
 
                                     /**
@@ -406,7 +406,7 @@ class SolutionTransfer
                                      * collecting all these structures in a vector
                                      * helps avoiding fraqmentation of the memory.
                                      */
-    std::vector<Pointerstruct> all_pointerstructs;
+    typename std::vector<Pointerstruct> all_pointerstructs;
 
                                     /**
                                      * Is used for
@@ -415,7 +415,7 @@ class SolutionTransfer
                                      * of all cells that'll be coarsened
                                      * will be stored in this vector.
                                      */
-    std::vector<std::vector<Vector<number> > > dof_values_on_cell;
+    typename std::vector<std::vector<Vector<number> > > dof_values_on_cell;
 };
 
 
index 04607f171469ba8707be97939552ad7e0aef615d..7044cca55373e899cb73d1df3af1810692aacc7b 100644 (file)
@@ -440,7 +440,7 @@ class VectorTools
                                      */
     template <int dim>
     static void project_boundary_values (const DoFHandler<dim>    &dof,
-                                        const std::map<unsigned char,const Function<dim>*> &boundary_function,
+                                        const typename std::map<unsigned char,const Function<dim>*> &boundary_function,
                                         const Quadrature<dim-1>  &q,
                                         std::map<unsigned int,double> &boundary_values);
     
index 419f253434865ebb37fadc84787dd9958142cde0..d7aa8ea17e8b52ea2a2e0e06bbf16e4adfc19ce5 100644 (file)
 //----------------------------  dof_accessor.cc  ---------------------------
 
 
+#include <lac/vector.h>
+#include <lac/block_vector.h>
+#include <lac/sparse_matrix.h>
+
 #include <dofs/dof_accessor.h>
 #include <dofs/dof_accessor.templates.h>
 #include <dofs/dof_handler.h>
 #include <grid/tria_iterator.templates.h>
 #include <fe/fe.h>
 
-#include <lac/vector.h>
-#include <lac/block_vector.h>
-#include <lac/sparse_matrix.h>
-
 #include <vector>
 
 
@@ -714,7 +714,7 @@ DoFCellAccessor<dim>::set_dof_values_by_interpolation (const Vector<number> &loc
          DoFAccessor<dim>::ExcVectorDoesNotMatch());
 
   if (!has_children())
-                                    // if this cell has no children: simply
+                                     // if this cell has no children: simply
                                     // set the values on this cell
     set_dof_values (local_values, values);
   else
index 2c3046c3b4c173c610dd3c2eb442f698e27533e3..eb8b1fa60657fccef6dba686a89886e5adc42115 100644 (file)
 #include <algorithm>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 
 template <int dim>
 const unsigned int DoFHandler<dim>::invalid_dof_index;
index 817c26896a3fc86d986e3235f5f7f832ad3ef00b..ae70b830415aa08724fd930b8acb2e1d32e4c181 100644 (file)
 #include <algorithm>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 template <int dim>
 void DoFRenumbering::Cuthill_McKee (DoFHandler<dim>                 &dof_handler,
                                    const bool                       reversed_numbering,
@@ -545,7 +551,7 @@ DoFRenumbering::sort_selected_dofs_back (DoFHandler<dim>         &dof_handler,
 template <int dim>
 void
 DoFRenumbering::cell_wise_dg (DoFHandler<dim>& dof,
-                             const std::vector<typename DoFHandler<dim>::cell_iterator>& cells)
+                             const typename std::vector<typename DoFHandler<dim>::cell_iterator>& cells)
 {
   Assert(cells.size() == dof.get_tria().n_active_cells(),
         ExcDimensionMismatch(cells.size(),
@@ -599,7 +605,7 @@ template <int dim>
 void
 DoFRenumbering::cell_wise_dg (MGDoFHandler<dim>& dof,
                              unsigned int level,
-                             const std::vector<typename MGDoFHandler<dim>::cell_iterator>& cells)
+                             const typename std::vector<typename MGDoFHandler<dim>::cell_iterator>& cells)
 {
   Assert(cells.size() == dof.get_tria().n_cells(level),
         ExcDimensionMismatch(cells.size(),
@@ -719,13 +725,6 @@ DoFRenumbering::downstream_dg (MGDoFHandler<dim>& dof,
 }
 
 
-// for whatever reason, the random_shuffle function used below needs
-// lrand48 to be declared (rather than do so itself. however,
-// inclusion of <cstdlib> or <stdlib.h> does not help, so we declare
-// that function ourselves
-extern "C" long int lrand48 (void) throw();
-
-
 template <int dim>
 void
 DoFRenumbering::random (DoFHandler<dim> &dof_handler)
index 29f66c3c346cc2b495f56b6fad1c464a790a2cf5..f285723bf1517e921fdbc097cbd2b80560700a5c 100644 (file)
 #include <algorithm>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 template <int dim, class SparsityPattern>
 void
 DoFTools::make_sparsity_pattern (const DoFHandler<dim> &dof,
@@ -174,7 +181,7 @@ DoFTools::make_boundary_sparsity_pattern (const DoFHandler<dim>& dof,
 
 template <int dim>
 void DoFTools::make_boundary_sparsity_pattern (const DoFHandler<dim>& dof,
-                                              const DoFHandler<dim>::FunctionMap  &boundary_indicators,
+                                              const typename DoFHandler<dim>::FunctionMap  &boundary_indicators,
                                               const std::vector<unsigned int>  &dof_to_boundary_mapping,
                                               SparsityPattern    &sparsity)
 {
@@ -922,7 +929,6 @@ DoFTools::extract_hanging_node_dofs (const DoFHandler<1> &dof_handler,
 #endif
 
 
-
 #if deal_II_dimension == 2
 
 template <>
index 8c290ea738aebc78b5a6a111773b346f6241ecd0..9897095c1839698ea05210f10f2ccd1d9270ff90 100644 (file)
 #include <dofs/dof_accessor.h>
 #include <grid/tria_boundary.h>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 
 /*------------------------------- FiniteElementData ----------------------*/
 
 template <int dim>
-FiniteElementData<dim>::FiniteElementData ()
+FiniteElementData<dim>::FiniteElementData () :
+               dofs_per_vertex(static_cast<unsigned int>(-1)),
+               dofs_per_line(static_cast<unsigned int>(-1)),
+               dofs_per_quad(static_cast<unsigned int>(-1)),
+               dofs_per_hex(static_cast<unsigned int>(-1)),
+               first_line_index(static_cast<unsigned int>(-1)),
+               first_quad_index(static_cast<unsigned int>(-1)),
+               first_hex_index(static_cast<unsigned int>(-1)),
+               first_face_line_index(static_cast<unsigned int>(-1)),
+               first_face_quad_index(static_cast<unsigned int>(-1)),
+               dofs_per_face(static_cast<unsigned int>(-1)),
+               dofs_per_cell(static_cast<unsigned int>(-1)),
+               transform_functions(static_cast<unsigned int>(-1)),
+               components(static_cast<unsigned int>(-1))
 {
   Assert (false, ExcNotImplemented());
 };
@@ -143,6 +163,7 @@ bool FiniteElementData<dim>::operator== (const FiniteElementData<dim> &f) const
 /*------------------------------- FiniteElementBase ----------------------*/
 
 
+
 template <int dim>
 FiniteElementBase<dim>::FiniteElementBase (const FiniteElementData<dim> &fe_data,
                                           const std::vector<bool> &restriction_is_additive_flags) :
@@ -430,41 +451,41 @@ void FiniteElement<1>::get_support_points (const DoFHandler<1>::cell_iterator &c
 
 
 template <int dim>
-void FiniteElement<dim>::fill_fe_values (const DoFHandler<dim>::cell_iterator &,
-                                        const std::vector<Point<dim> > &,
-                                        std::vector<Tensor<2,dim> > &,
+void FiniteElement<dim>::fill_fe_values (const typename DoFHandler<dim>::cell_iterator &,
+                                        const typename std::vector<Point<dim> > &,
+                                        typename std::vector<Tensor<2,dim> > &,
                                         const bool,
-                                        std::vector<Tensor<3,dim> > &,
+                                        typename std::vector<Tensor<3,dim> > &,
                                         const bool,
-                                        std::vector<Point<dim> > &,
+                                        typename std::vector<Point<dim> > &,
                                         const bool,
-                                        std::vector<Point<dim> > &,
+                                        typename std::vector<Point<dim> > &,
                                         const bool,
                                         const FullMatrix<double>      &,
-                                        const std::vector<std::vector<Tensor<1,dim> > > &) const {
+                                        const typename std::vector<typename std::vector<Tensor<1,dim> > > &) const {
   Assert (false, ExcPureFunctionCalled());
 };
 
 
 template <int dim>
-void FiniteElement<dim>::fill_fe_face_values (const DoFHandler<dim>::cell_iterator &cell,
+void FiniteElement<dim>::fill_fe_face_values (const typename DoFHandler<dim>::cell_iterator &cell,
                                              const unsigned int           face_no,
-                                             const std::vector<Point<dim-1> > &unit_points,
-                                             const std::vector<Point<dim> > &global_unit_points,
-                                             std::vector<Tensor<2,dim> >    &jacobians,
+                                             const typename std::vector<Point<dim-1> > &unit_points,
+                                             const typename std::vector<Point<dim> > &global_unit_points,
+                                             typename std::vector<Tensor<2,dim> >    &jacobians,
                                              const bool           compute_jacobians,
-                                             std::vector<Tensor<3,dim> >    &jacobians_grad,
+                                             typename std::vector<Tensor<3,dim> >    &jacobians_grad,
                                              const bool           compute_jacobians_grad,
-                                             std::vector<Point<dim> > &support_points,
+                                             typename std::vector<Point<dim> > &support_points,
                                              const bool           compute_support_points,
-                                             std::vector<Point<dim> > &q_points,
+                                             typename std::vector<Point<dim> > &q_points,
                                              const bool           compute_q_points,
                                              std::vector<double>      &face_jacobi_determinants,
                                              const bool           compute_face_jacobians,
-                                             std::vector<Point<dim> > &normal_vectors,
+                                             typename std::vector<Point<dim> > &normal_vectors,
                                              const bool           compute_normal_vectors,
                                              const FullMatrix<double>      &shape_values_transform,
-                                             const std::vector<std::vector<Tensor<1,dim> > > &shape_gradients_transform) const
+                                             const typename std::vector<typename std::vector<Tensor<1,dim> > > &shape_gradients_transform) const
 {
   Assert (jacobians.size() == unit_points.size(),
          typename FiniteElementBase<dim>::ExcWrongFieldDimension(jacobians.size(),
@@ -502,23 +523,23 @@ void FiniteElement<dim>::fill_fe_face_values (const DoFHandler<dim>::cell_iterat
 
 
 template <int dim>
-void FiniteElement<dim>::fill_fe_subface_values (const DoFHandler<dim>::cell_iterator &cell,
+void FiniteElement<dim>::fill_fe_subface_values (const typename DoFHandler<dim>::cell_iterator &cell,
                                                 const unsigned int           face_no,
                                                 const unsigned int           subface_no,
-                                                const std::vector<Point<dim-1> > &unit_points,
-                                                const std::vector<Point<dim> > &global_unit_points,
-                                                std::vector<Tensor<2,dim> >    &jacobians,
+                                                const typename std::vector<Point<dim-1> > &unit_points,
+                                                const typename std::vector<Point<dim> > &global_unit_points,
+                                                typename std::vector<Tensor<2,dim> >    &jacobians,
                                                 const bool           compute_jacobians,
-                                                std::vector<Tensor<3,dim> >    &jacobians_grad,
+                                                typename std::vector<Tensor<3,dim> >    &jacobians_grad,
                                                 const bool           compute_jacobians_grad,
-                                                std::vector<Point<dim> > &q_points,
+                                                typename std::vector<Point<dim> > &q_points,
                                                 const bool           compute_q_points,
                                                 std::vector<double>      &face_jacobi_determinants,
                                                 const bool           compute_face_jacobians,
-                                                std::vector<Point<dim> > &normal_vectors,
+                                                typename std::vector<Point<dim> > &normal_vectors,
                                                 const bool           compute_normal_vectors,
                                                 const FullMatrix<double>      &shape_values_transform,
-                                                const std::vector<std::vector<Tensor<1,dim> > > &shape_gradients_transform) const
+                                                const typename std::vector<std::vector<Tensor<1,dim> > > &shape_gradients_transform) const
 {
   Assert (jacobians.size() == unit_points.size(),
          typename FiniteElementBase<dim>::ExcWrongFieldDimension(jacobians.size(),
@@ -550,7 +571,7 @@ void FiniteElement<dim>::fill_fe_subface_values (const DoFHandler<dim>::cell_ite
 
 template <int dim>
 void
-FiniteElement<dim>::get_unit_support_points (std::vector<Point<dim> > &) const
+FiniteElement<dim>::get_unit_support_points (typename std::vector<Point<dim> > &) const
 {
   Assert (false, ExcPureFunctionCalled());
 };
@@ -558,8 +579,8 @@ FiniteElement<dim>::get_unit_support_points (std::vector<Point<dim> > &) const
 
 template <int dim>
 void
-FiniteElement<dim>::get_support_points (const DoFHandler<dim>::cell_iterator &,
-                                       std::vector<Point<dim> > &) const
+FiniteElement<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator &,
+                                       typename std::vector<Point<dim> > &) const
 {
   Assert (false, ExcPureFunctionCalled());
 };
index 4198e4fc7f81b396a0de2ee64fb8c51f88360475..e74dd30f44f4b12a2aeed8724d5a32e43cb88b9e 100644 (file)
 
 
 #include <fe/fe_lib.criss_cross.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 #include <grid/geometry_info.h>
 
 #include <cmath>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 
 /*-----------------------------------2d------------------------------------
   Maple script to automate some of the error-prone computations on
@@ -568,6 +575,7 @@ FECrissCross<2>::shape_grad_grad (const unsigned int i,
 template <>
 void FECrissCross<2>::get_unit_support_points (std::vector<Point<2> > &unit_points) const {
   Assert(unit_points.size()==dofs_per_cell,
+        FiniteElementBase<2>::
         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
 
   unit_points[0] = Point<2> (0,0);
@@ -584,6 +592,7 @@ void FECrissCross<2>::get_support_points (const DoFHandler<2>::cell_iterator &ce
   const unsigned int dim = 2;
   
   Assert (support_points.size() == dofs_per_cell,
+         FiniteElementBase<2>::
          ExcWrongFieldDimension (support_points.size(), dofs_per_cell));
 
                                   // copy vertices
@@ -621,6 +630,7 @@ void FECrissCross<2>::get_face_support_points (const DoFHandler<2>::face_iterato
   
   Assert ((support_points.size() == dofs_per_face) &&
          (support_points.size() == GeometryInfo<dim>::vertices_per_face),
+         FiniteElementBase<2>::
          ExcWrongFieldDimension (support_points.size(),
                                  GeometryInfo<dim>::vertices_per_face));
 
@@ -633,8 +643,10 @@ template <>
 void FECrissCross<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
                                             FullMatrix<double> &mass_matrix) const {
   Assert (mass_matrix.n() == dofs_per_cell,
+         FiniteElementBase<2>::
          ExcWrongFieldDimension(mass_matrix.n(),dofs_per_cell));
   Assert (mass_matrix.m() == dofs_per_cell,
+         FiniteElementBase<2>::
          ExcWrongFieldDimension(mass_matrix.m(),dofs_per_cell));
 
   const double x[4] = { cell->vertex(0)(0),
@@ -794,6 +806,7 @@ void FECrissCross<2>::get_face_jacobians (const DoFHandler<2>::face_iterator &fa
                                   // more or less copied from the linear
                                   // finite element
   Assert (unit_points.size() == face_jacobians.size(),
+         FiniteElementBase<2>::
          ExcWrongFieldDimension (unit_points.size(), face_jacobians.size()));
 
                                   // a linear mapping for a single line
@@ -815,9 +828,10 @@ void FECrissCross<2>::get_subface_jacobians (const DoFHandler<2>::face_iterator
                                   // more or less copied from the linear
                                   // finite element
   Assert (unit_points.size() == face_jacobians.size(),
-         ExcWrongFieldDimension (unit_points.size(), face_jacobians.size()));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), 
+                                                       face_jacobians.size()));
   Assert (face->at_boundary() == false,
-         ExcBoundaryFaceUsed ());
+         FiniteElement<2>::ExcBoundaryFaceUsed ());
 
                                   // a linear mapping for a single line
                                   // produces particularly simple
@@ -838,6 +852,7 @@ void FECrissCross<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &ce
                                   // more or less copied from the linear
                                   // finite element
   Assert (unit_points.size() == normal_vectors.size(),
+         FiniteElementBase<2>::
          ExcWrongFieldDimension (unit_points.size(), normal_vectors.size()));
 
   const DoFHandler<2>::face_iterator face = cell->face(face_no);
@@ -872,9 +887,9 @@ void FECrissCross<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &ce
                                   // subface have the same direction as that
                                   // for the face
   Assert (unit_points.size() == normal_vectors.size(),
-         ExcWrongFieldDimension (unit_points.size(), normal_vectors.size()));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), normal_vectors.size()));
   Assert (cell->face(face_no)->at_boundary() == false,
-         ExcBoundaryFaceUsed ());
+         FiniteElement<2>::ExcBoundaryFaceUsed ());
 
   const DoFHandler<2>::face_iterator face = cell->face(face_no);
                                   // compute direction of line
@@ -897,18 +912,18 @@ void FECrissCross<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &ce
 
 
 template <int dim>
-void FECrissCross<dim>::fill_fe_values (const DoFHandler<dim>::cell_iterator &cell,
-                                       const std::vector<Point<dim> >            &unit_points,
-                                       std::vector<Tensor<2,dim> >               &jacobians,
+void FECrissCross<dim>::fill_fe_values (const typename DoFHandler<dim>::cell_iterator &cell,
+                                       const typename std::vector<Point<dim> >            &unit_points,
+                                       typename std::vector<Tensor<2,dim> >               &jacobians,
                                        const bool              compute_jacobians,
-                                       std::vector<Tensor<3,dim> > &jacobians_grad,
+                                       typename std::vector<Tensor<3,dim> > &jacobians_grad,
                                        const bool              compute_jacobians_grad,
-                                       std::vector<Point<dim> >    &support_points,
+                                       typename std::vector<Point<dim> >    &support_points,
                                        const bool compute_support_points,
-                                       std::vector<Point<dim> >    &q_points,
+                                       typename std::vector<Point<dim> >    &q_points,
                                        const bool              compute_q_points,
                                        const FullMatrix<double>         &shape_values_transform,
-                                       const std::vector<std::vector<Tensor<1,dim> > > &/*shape_grad_transform*/) const {
+                                       const typename std::vector<typename std::vector<Tensor<1,dim> > > &/*shape_grad_transform*/) const {
   Assert (jacobians.size() == unit_points.size(),
          typename FiniteElementBase<dim>::ExcWrongFieldDimension(jacobians.size(),
                                                                  unit_points.size()));
@@ -1274,7 +1289,7 @@ Tensor<1,3> FECrissCross<3>::shape_grad_transform (const unsigned int,
 
 template <int dim>
 Point<dim>
-FECrissCross<dim>::transform_unit_to_real_cell (const typename DoFHandler<dim>::cell_iterator,
+FECrissCross<dim>::transform_unit_to_real_cell (const typename DoFHandler<dim>::cell_iterator &,
                                                const Point<dim> &) const
 {
   Assert (false, ExcNotImplemented());
@@ -1285,7 +1300,7 @@ FECrissCross<dim>::transform_unit_to_real_cell (const typename DoFHandler<dim>::
 
 template <int dim>
 Point<dim>
-FECrissCross<dim>::transform_real_to_unit_cell (const typename DoFHandler<dim>::cell_iterator,
+FECrissCross<dim>::transform_real_to_unit_cell (const typename DoFHandler<dim>::cell_iterator &,
                                                const Point<dim> &) const
 {
   Assert (false, ExcNotImplemented());
index 9dcb745bf479cb3fe6f088ee2b15bed3a0b233db..8563597fa14ec11b78e0fd65967566ef204f2b1c 100644 (file)
@@ -13,6 +13,7 @@
 
 
 #include <fe/fe_lib.lagrange.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 #include <grid/geometry_info.h>
@@ -916,9 +917,9 @@ template <>
 void FEQ3<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
                                     FullMatrix<double> &local_mass_matrix) const {
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
 
   const double x[4] = { cell->vertex(0)(0),
                        cell->vertex(1)(0),
@@ -943,13 +944,13 @@ void FEQ3<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
    which is sufficient since $det J$ is a bilinear function.
 */
   Assert ((-x[0]+x[1])*(-y[0]+y[3])-(-x[0]+x[3])*(-y[0]+y[1]),  // xi=eta=0
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((x[2]-x[3])*(-y[0]+y[3])-(-x[0]+x[3])*(y[2]-y[3]),    // xi=0, eta=1
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((x[2]-x[3])*(-y[1]+y[2])-(-x[1]+x[2])*(y[2]-y[3]),    // xi=eta=1
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((-x[0]+x[1])*(-y[1]+y[2])-(-x[1]+x[2])*(-y[0]+y[1]),  // xi=1, eta=0
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
 
   const double t1 = x[0]-x[1]+x[2]-x[3];
   const double t2 = -y[0]+y[1];
@@ -1476,7 +1477,7 @@ void FEQ3<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
 template <>
 void FEQ3<2>::get_unit_support_points (std::vector<Point<2> > &unit_points) const {
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
 
   unit_points[0] = Point<2>(0,0);
   unit_points[1] = Point<2>(1,0);
@@ -1501,7 +1502,7 @@ template <>
 void FEQ3<2>::get_support_points (const DoFHandler<2>::cell_iterator &cell,
                                  std::vector<Point<2> >  &support_points) const {
   Assert (support_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(), dofs_per_cell));
 
   const double x[4] = { cell->vertex(0)(0),
                        cell->vertex(1)(0),
@@ -1574,7 +1575,7 @@ template <>
 void FEQ3<2>::get_face_support_points (const DoFHandler<2>::face_iterator &face,
                                       std::vector<Point<2> >  &support_points) const {
   Assert (support_points.size() == dofs_per_face,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_face));
+         FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(), dofs_per_face));
 
   for (unsigned int vertex=0; vertex<2; ++vertex)
     support_points[vertex] = face->vertex(vertex);
@@ -11384,9 +11385,9 @@ FEQ3<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &,
                                FullMatrix<double> &local_mass_matrix) const
 {
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
 
   throw ExcComputationNotUseful(3);
 };
@@ -11396,7 +11397,7 @@ template <>
 void FEQ3<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) const
 {
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
   unit_points[0] = Point<3>(0, 0, 0);
   unit_points[1] = Point<3>(1, 0, 0);
   unit_points[2] = Point<3>(1, 0, 1);
@@ -11469,7 +11470,7 @@ void FEQ3<3>::get_support_points (const typename DoFHandler<3>::cell_iterator &c
                                  std::vector<Point<3> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension (support_points.size(), dofs_per_cell));
 
   const Point<3> vertices[8] = { cell->vertex(0),
                                 cell->vertex(1),
@@ -11847,7 +11848,7 @@ void FEQ3<3>::get_face_support_points (const typename DoFHandler<3>::face_iterat
                                       std::vector<Point<3> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_face,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_face));
+         FiniteElementBase<3>::ExcWrongFieldDimension (support_points.size(), dofs_per_face));
 
   for (unsigned int vertex=0; vertex<2; ++vertex)
     support_points[vertex] = face->vertex(vertex);
index 53a77a5983240edf50de4d6d09054e3da1049a16..eb99cbeed32e013c1511829c2d872e7618f61af9 100644 (file)
 //----------------------------  fe_lib.dg.cc  ---------------------------
 
 
-#include<fe/fe_lib.dg.h>
+#include <fe/fe_lib.dg.h>
+#include <grid/tria.h>
+
+
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
 
 
 #if deal_II_dimension == 1
@@ -4428,7 +4436,7 @@ FEDG_Q4<3>::FEDG_Q4():
 template <int dim>
 void
 FEDG_Q1<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator &,
-                                      std::vector<Point<dim> >  &support_points) const
+                                      typename std::vector<Point<dim> >  &support_points) const
 {
   Assert ((support_points.size() == 0),
          FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(),0));
@@ -4439,7 +4447,7 @@ FEDG_Q1<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iter
 template <int dim>
 void
 FEDG_Q2<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator &,
-                                      std::vector<Point<dim> >  &support_points) const
+                                      typename std::vector<Point<dim> >  &support_points) const
 {
   Assert ((support_points.size() == 0),
          FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(),0));
@@ -4450,7 +4458,7 @@ FEDG_Q2<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iter
 template <int dim>
 void
 FEDG_Q3<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator &,
-                                      std::vector<Point<dim> >  &support_points) const
+                                      typename std::vector<Point<dim> >  &support_points) const
 {
   Assert ((support_points.size() == 0),
          FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(),0));
@@ -4461,7 +4469,7 @@ FEDG_Q3<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iter
 template <int dim>
 void
 FEDG_Q4<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator &,
-                                      std::vector<Point<dim> >  &support_points) const
+                                      typename std::vector<Point<dim> >  &support_points) const
 {
   Assert ((support_points.size() == 0),
          FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(),0));
index 283196260809f624157878542ef144c1401ed1d3..dd2484abde86f59173a4a4527293a6672d59eaef 100644 (file)
 
 
 #include <fe/fe_lib.dg.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 #include <grid/geometry_info.h>
 #include <algorithm>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 
 template <int dim>
 FEDG_Q0<dim>::FEDG_Q0 () :
@@ -89,7 +97,7 @@ FEDG_Q0<dim>::shape_grad_grad (const unsigned int i,
 
 
 template <int dim>
-void FEDG_Q0<dim>::get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+void FEDG_Q0<dim>::get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                          FullMatrix<double> &local_mass_matrix) const
 {
   Assert (local_mass_matrix.n() == dofs_per_cell,
@@ -106,7 +114,7 @@ void FEDG_Q0<dim>::get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &
 
 template <int dim>
 void
-FEDG_Q0<dim>::get_unit_support_points (std::vector<Point<dim> > &unit_points) const
+FEDG_Q0<dim>::get_unit_support_points (typename std::vector<Point<dim> > &unit_points) const
 {
   Assert (unit_points.size() == dofs_per_cell,
          FiniteElementBase<dim>::ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
@@ -119,7 +127,7 @@ FEDG_Q0<dim>::get_unit_support_points (std::vector<Point<dim> > &unit_points) co
 template <int dim>
 void
 FEDG_Q0<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
-                                 std::vector<Point<dim> >  &support_points) const
+                                 typename std::vector<Point<dim> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_cell,
          FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(), dofs_per_cell));
@@ -132,7 +140,7 @@ FEDG_Q0<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator
 template <int dim>
 void
 FEDG_Q0<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator &,
-                                      std::vector<Point<dim> >  &support_points) const
+                                      typename std::vector<Point<dim> >  &support_points) const
 {
   Assert ((support_points.size() == 0),
          FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(),0));
index 736e5094146d022026f9ea8118c24612081fbe8a..3dc720957998ea0d122fe7456641d999dcc316d0 100644 (file)
 
 
 #include <fe/fe_lib.dgp.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 #include <grid/geometry_info.h>
 #include <algorithm>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
+
 // declare explicit specializations before use:
 template <> void FEDG_P1<deal_II_dimension>::initialize_matrices ();
 
@@ -227,9 +236,11 @@ void FEDG_P1<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &,
 {
   Assert(false, ExcNotImplemented ());
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(),
+                                                      dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(),
+                                                      dofs_per_cell));
 };
 
 
@@ -237,7 +248,8 @@ template <>
 void FEDG_P1<2>::get_unit_support_points (std::vector<Point<2> > &unit_points) const
 {
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
 
   unit_points[0] = Point<2> (.5,.5);
   unit_points[1] = Point<2> (1,0);
@@ -325,9 +337,11 @@ void FEDG_P1<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &,
                                        FullMatrix<double> &local_mass_matrix) const
 {
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(),
+                                                      dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(),
+                                                      dofs_per_cell));
 
   throw ExcComputationNotUseful(3);
 };
@@ -337,7 +351,8 @@ template <>
 void FEDG_P1<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) const
 {
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
 
   unit_points[0] = Point<3> (.5,.5,.5);
   unit_points[1] = Point<3> (1,0,0);
@@ -352,7 +367,7 @@ void FEDG_P1<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) c
 template <int dim>
 void
 FEDG_P1<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
-                                 std::vector<Point<dim> >  &support_points) const
+                                 typename std::vector<Point<dim> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_cell,
          typename FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(),
@@ -366,7 +381,7 @@ FEDG_P1<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator
 template <int dim>
 void
 FEDG_P1<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
-                                      std::vector<Point<dim> >  &support_points) const
+                                      typename std::vector<Point<dim> >  &support_points) const
 {
   Assert ((support_points.size() == dofs_per_face) &&
          (support_points.size() == GeometryInfo<dim>::vertices_per_face),
index ca22a2d0e519c34067c9a5ce7a0b57f1f0ce3b00..0a88bb02d2e924982b48d5a2e1fe45c94463eb31 100644 (file)
 
 
 #include <fe/fe_lib.dgp.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 #include <grid/geometry_info.h>
 #include <algorithm>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 
 // declare explicit specializations before use:
 template <> void FEDG_P2<deal_II_dimension>::initialize_matrices ();
@@ -216,7 +224,8 @@ template <>
 void FEDG_P2<2>::get_unit_support_points (std::vector<Point<2> > &unit_points) const
 {
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
 
   unit_points[0] = Point<2> (.5,.5);
   unit_points[1] = Point<2> (1,0);
@@ -303,23 +312,29 @@ FEDG_P2<3>::shape_grad_grad (const unsigned int i,
 };
 
 
+
 template <>
 void FEDG_P2<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &,
                                        FullMatrix<double> &local_mass_matrix) const
 {
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(),
+                                                      dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(),
+                                                      dofs_per_cell));
 
   throw ExcComputationNotUseful(3);
 };
 
 
+
 template <>
-void FEDG_P2<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) const {
+void FEDG_P2<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) const
+{
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
 
   unit_points[0] = Point<3> (.5,.5,.5);
   unit_points[1] = Point<3> (1,0,0);
@@ -334,7 +349,7 @@ void FEDG_P2<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) c
 template <int dim>
 void
 FEDG_P2<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
-                                 std::vector<Point<dim> >  &support_points) const
+                                 typename std::vector<Point<dim> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_cell,
          typename FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(),
@@ -348,7 +363,7 @@ FEDG_P2<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator
 template <int dim>
 void
 FEDG_P2<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
-                                      std::vector<Point<dim> >  &support_points) const
+                                      typename std::vector<Point<dim> >  &support_points) const
 {
   Assert ((support_points.size() == dofs_per_face) &&
          (support_points.size() == GeometryInfo<dim>::vertices_per_face),
index 1b31baaf1bc9f90bd76f64be962ca94af7b681a3..ba31d9a3e0e053961217aa81fb2aabb662353626 100644 (file)
 
 
 #include <fe/fe_lib.dgp.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 #include <grid/geometry_info.h>
 #include <algorithm>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 
 // declare explicit specializations before use:
 template <> void FEDG_P3<deal_II_dimension>::initialize_matrices ();
@@ -227,7 +234,8 @@ void FEDG_P3<2>::get_unit_support_points (std::vector<Point<2> > &unit_points) c
 {
   Assert(false, ExcNotImplemented ());
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
 
   unit_points[0] = Point<2> (.5,.5);
   unit_points[1] = Point<2> (1,0);
@@ -319,18 +327,23 @@ void FEDG_P3<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &,
                                        FullMatrix<double> &local_mass_matrix) const
 {
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(),
+                                                      dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(),
+                                                      dofs_per_cell));
 
   throw ExcComputationNotUseful(3);
 };
 
 
+
 template <>
-void FEDG_P3<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) const {
+void FEDG_P3<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) const
+{
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
 
   unit_points[0] = Point<3> (.5,.5,.5);
   unit_points[1] = Point<3> (1,0,0);
@@ -345,7 +358,7 @@ void FEDG_P3<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) c
 template <int dim>
 void
 FEDG_P3<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
-                                 std::vector<Point<dim> >  &support_points) const
+                                 typename std::vector<Point<dim> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_cell,
          typename FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(),
@@ -359,7 +372,7 @@ FEDG_P3<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator
 template <int dim>
 void
 FEDG_P3<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
-                                      std::vector<Point<dim> >  &support_points) const
+                                      typename std::vector<Point<dim> >  &support_points) const
 {
   Assert ((support_points.size() == dofs_per_face) &&
          (support_points.size() == GeometryInfo<dim>::vertices_per_face),
index 912ac5fcf8d856550385018532407b88d4f36ab8..fe33af27b1361021370919cc4fda0e7eeb444a61 100644 (file)
 
 
 #include <fe/fe_lib.lagrange.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 #include <grid/geometry_info.h>
 #include <algorithm>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 
 // declare explicit specializations before use:
 template <> void FEQ1<deal_II_dimension>::initialize_matrices ();
@@ -305,9 +313,11 @@ template <>
 void FEQ1<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
                                     FullMatrix<double> &local_mass_matrix) const {
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(),
+                                                      dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(),
+                                                      dofs_per_cell));
 
 /* Get the computation of the local mass matrix by these lines in maple:
 
@@ -355,13 +365,13 @@ void FEQ1<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
    which is sufficient since $det J$ is a bilinear function.
 */
   Assert ((-x[0]+x[1])*(-y[0]+y[3])-(-x[0]+x[3])*(-y[0]+y[1]),  // xi=eta=0
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((x[2]-x[3])*(-y[0]+y[3])-(-x[0]+x[3])*(y[2]-y[3]),    // xi=0, eta=1
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((x[2]-x[3])*(-y[1]+y[2])-(-x[1]+x[2])*(y[2]-y[3]),    // xi=eta=1
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((-x[0]+x[1])*(-y[1]+y[2])-(-x[1]+x[2])*(-y[0]+y[1]),  // xi=1, eta=0
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   
   const double t1 = x[1]*y[3],
               t2 = x[1]*y[2],
@@ -409,7 +419,8 @@ void FEQ1<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
 template <>
 void FEQ1<2>::get_unit_support_points (std::vector<Point<2> > &unit_points) const {
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
 
   unit_points[0] = Point<2> (0,0);
   unit_points[1] = Point<2> (1,0);
@@ -833,20 +844,26 @@ FEQ1<3>::shape_grad_grad (const unsigned int i,
 
 template <>
 void FEQ1<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &,
-                                    FullMatrix<double> &local_mass_matrix) const {
+                                    FullMatrix<double> &local_mass_matrix) const
+{
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(),
+                                                      dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(),
+                                                      dofs_per_cell));
 
   throw ExcComputationNotUseful(3);
 };
 
 
+
 template <>
-void FEQ1<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) const {
+void FEQ1<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) const
+{
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
 
   unit_points[0] = Point<3> (0,0,0);
   unit_points[1] = Point<3> (1,0,0);
@@ -865,7 +882,7 @@ void FEQ1<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) cons
 template <int dim>
 void
 FEQ1<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
-                              std::vector<Point<dim> >  &support_points) const {
+                              typename std::vector<Point<dim> >  &support_points) const {
   Assert (support_points.size() == dofs_per_cell,
          typename FiniteElementBase<dim>::ExcWrongFieldDimension (support_points.size(),
                                                                   dofs_per_cell));
@@ -878,7 +895,7 @@ FEQ1<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator &ce
 template <int dim>
 void
 FEQ1<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator &face,
-                                   std::vector<Point<dim> >  &support_points) const {
+                                   typename std::vector<Point<dim> >  &support_points) const {
   Assert ((support_points.size() == dofs_per_face) &&
          (support_points.size() == GeometryInfo<dim>::vertices_per_face),
          typename FiniteElementBase<dim>::
index 0e90185a5a5f1beac1282597da39c24ed49d76aa..1a9d53bd0869f97cd085c5ed5dc974807c44dcd6 100644 (file)
@@ -13,6 +13,7 @@
 
 
 #include <fe/fe_lib.lagrange.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 #include <grid/geometry_info.h>
@@ -805,9 +806,11 @@ void FEQ2<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
                                     FullMatrix<double> &local_mass_matrix) const
 {
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(),
+                                                      dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(),
+                                                      dofs_per_cell));
 
 /* Get the computation of the local mass matrix by these lines in maple. Note
    that tphi[i] are the basis function of the linear finite element, which
@@ -867,13 +870,13 @@ void FEQ2<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
    which is sufficient since $det J$ is a bilinear function.
 */
   Assert ((-x[0]+x[1])*(-y[0]+y[3])-(-x[0]+x[3])*(-y[0]+y[1]),  // xi=eta=0
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((x[2]-x[3])*(-y[0]+y[3])-(-x[0]+x[3])*(y[2]-y[3]),    // xi=0, eta=1
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((x[2]-x[3])*(-y[1]+y[2])-(-x[1]+x[2])*(y[2]-y[3]),    // xi=eta=1
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((-x[0]+x[1])*(-y[1]+y[2])-(-x[1]+x[2])*(-y[0]+y[1]),  // xi=1, eta=0
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
 
   const double t1 = (x[1]*y[0]);
   const double t2 = (x[1]*y[2]);
@@ -1080,7 +1083,8 @@ template <>
 void FEQ2<2>::get_unit_support_points (std::vector<Point<2> > &unit_points) const
 {
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
   
   unit_points[0] = Point<2> (0,0);
   unit_points[1] = Point<2> (1,0);
@@ -1100,7 +1104,8 @@ void FEQ2<2>::get_support_points (const DoFHandler<2>::cell_iterator &cell,
                                  std::vector<Point<2> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(),
+                                                       dofs_per_cell));
   
   for (unsigned int vertex=0; vertex<4; ++vertex)
     support_points[vertex] = cell->vertex(vertex);
@@ -1129,7 +1134,8 @@ void FEQ2<2>::get_face_support_points (const DoFHandler<2>::face_iterator &face,
                                       std::vector<Point<2> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_face,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_face));
+         FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(),
+                                                       dofs_per_face));
 
   for (unsigned int vertex=0; vertex<2; ++vertex)
     support_points[vertex] = face->vertex(vertex);
@@ -2798,9 +2804,11 @@ void FEQ2<3>::get_local_mass_matrix (const DoFHandler<3>::cell_iterator &,
                                     FullMatrix<double> &local_mass_matrix) const
 {
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.n(),
+                                                      dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension(local_mass_matrix.m(),
+                                                      dofs_per_cell));
 
   throw ExcComputationNotUseful(3);
 };
@@ -2811,7 +2819,8 @@ template <>
 void FEQ2<3>::get_unit_support_points (std::vector<Point<3> > &unit_points) const
 {
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
   
   unit_points[0] = Point<3>(0, 0, 0);
   unit_points[1] = Point<3>(1, 0, 0);
@@ -2849,7 +2858,8 @@ void FEQ2<3>::get_support_points (const DoFHandler<3>::cell_iterator &cell,
                                  std::vector<Point<3> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_cell));
+         FiniteElementBase<3>::ExcWrongFieldDimension (support_points.size(),
+                                                       dofs_per_cell));
 
   const Point<3> vertices[8] = { cell->vertex(0),
                                   cell->vertex(1),
@@ -2950,7 +2960,8 @@ void FEQ2<3>::get_face_support_points (const DoFHandler<3>::face_iterator &face,
                                       std::vector<Point<3> >  &support_points) const
 {
   Assert (support_points.size() == dofs_per_face,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_face));
+         FiniteElementBase<3>::ExcWrongFieldDimension (support_points.size(),
+                                                       dofs_per_face));
 
   for (unsigned int vertex=0; vertex<4; ++vertex)
     support_points[vertex] = face->vertex(vertex);
index a492010449185ea727d7dd631d74009e58dd46c0..07f3799abcbe1de1c8be818f18ae1b8eb7e3d9c9 100644 (file)
@@ -13,6 +13,7 @@
 
 
 #include <fe/fe_lib.lagrange.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 #include <grid/geometry_info.h>
@@ -1339,9 +1340,11 @@ template <>
 void FEQ4<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
                                     FullMatrix<double> &local_mass_matrix) const {
   Assert (local_mass_matrix.n() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.n(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.n(),
+                                                      dofs_per_cell));
   Assert (local_mass_matrix.m() == dofs_per_cell,
-         ExcWrongFieldDimension(local_mass_matrix.m(),dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension(local_mass_matrix.m(),
+                                                      dofs_per_cell));
 
   const double x[4] = { cell->vertex(0)(0),
                        cell->vertex(1)(0),
@@ -1366,13 +1369,13 @@ void FEQ4<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
    which is sufficient since $det J$ is a bilinear function.
 */
   Assert ((-x[0]+x[1])*(-y[0]+y[3])-(-x[0]+x[3])*(-y[0]+y[1]),  // xi=eta=0
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((x[2]-x[3])*(-y[0]+y[3])-(-x[0]+x[3])*(y[2]-y[3]),    // xi=0, eta=1
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((x[2]-x[3])*(-y[1]+y[2])-(-x[1]+x[2])*(y[2]-y[3]),    // xi=eta=1
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
   Assert ((-x[0]+x[1])*(-y[1]+y[2])-(-x[1]+x[2])*(-y[0]+y[1]),  // xi=1, eta=0
-         ExcJacobiDeterminantHasWrongSign());
+         FiniteElement<2>::ExcJacobiDeterminantHasWrongSign());
 
   const double t1 = -x[0]+x[1];
   const double t2 = y[0]-y[1]+y[2]-y[3];
@@ -2603,7 +2606,8 @@ void FEQ4<2>::get_local_mass_matrix (const DoFHandler<2>::cell_iterator &cell,
 template <>
 void FEQ4<2>::get_unit_support_points (std::vector<Point<2> > &unit_points) const {
   Assert (unit_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (unit_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       dofs_per_cell));
 
   unit_points[0] = Point<2>(0,0);
   unit_points[1] = Point<2>(1,0);
@@ -2635,9 +2639,11 @@ void FEQ4<2>::get_unit_support_points (std::vector<Point<2> > &unit_points) cons
 
 template <>
 void FEQ4<2>::get_support_points (const DoFHandler<2>::cell_iterator &cell,
-                                 std::vector<Point<2> >  &support_points) const {
+                                 std::vector<Point<2> >  &support_points) const
+{
   Assert (support_points.size() == dofs_per_cell,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_cell));
+         FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(),
+                                                       dofs_per_cell));
 
   const double x[4] = { cell->vertex(0)(0),
                        cell->vertex(1)(0),
@@ -2745,7 +2751,8 @@ template <>
 void FEQ4<2>::get_face_support_points (const DoFHandler<2>::face_iterator &face,
                                       std::vector<Point<2> >  &support_points) const {
   Assert (support_points.size() == dofs_per_face,
-         ExcWrongFieldDimension (support_points.size(), dofs_per_face));
+         FiniteElementBase<2>::ExcWrongFieldDimension (support_points.size(),
+                                                       dofs_per_face));
 
   for (unsigned int vertex=0; vertex<2; ++vertex)
     support_points[vertex] = face->vertex(vertex);
index 9018115f87d0526eb29396fe0849250d589ac4cb..a04b42917e70737bcece9c4f0611482c6eba102a 100644 (file)
 
 #include <base/memory_consumption.h>
 #include <fe/fe_system.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
 
 
 template <int dim>
@@ -768,7 +774,7 @@ FESystem<dim>::shape_grad_grad (const unsigned int  i,
 
 template <int dim>
 void FESystem<dim>::get_unit_support_points (
-  std::vector<Point<dim> > &unit_support_points) const
+  typename std::vector<Point<dim> > &unit_support_points) const
 {
   Assert(unit_support_points.size() == dofs_per_cell,
         typename FiniteElementBase<dim>::
@@ -820,8 +826,8 @@ void FESystem<dim>::get_unit_support_points (
 
 
 template <int dim>
-void FESystem<dim>::get_support_points (const DoFHandler<dim>::cell_iterator &cell,
-                                       std::vector<Point<dim> > &support_points) const
+void FESystem<dim>::get_support_points (const typename DoFHandler<dim>::cell_iterator &cell,
+                                       typename std::vector<Point<dim> > &support_points) const
 {
   Assert(support_points.size() == dofs_per_cell,
         typename FiniteElementBase<dim>::
@@ -851,8 +857,8 @@ void FESystem<dim>::get_support_points (const DoFHandler<dim>::cell_iterator &ce
 
 
 template <int dim>
-void FESystem<dim>::get_face_support_points (const DoFHandler<dim>::face_iterator & face,
-                                            std::vector<Point<dim> > & support_points) const
+void FESystem<dim>::get_face_support_points (const typename DoFHandler<dim>::face_iterator & face,
+                                            typename std::vector<Point<dim> > & support_points) const
 {
   Assert (support_points.size() == dofs_per_face,
          typename FiniteElementBase<dim>::
@@ -880,7 +886,7 @@ void FESystem<dim>::get_face_support_points (const DoFHandler<dim>::face_iterato
 
 
 template <int dim>
-void FESystem<dim>::get_local_mass_matrix (const DoFHandler<dim>::cell_iterator &cell,
+void FESystem<dim>::get_local_mass_matrix (const typename DoFHandler<dim>::cell_iterator &cell,
                                           FullMatrix<double>  &local_mass_matrix) const
 {
   Assert (local_mass_matrix.n() == dofs_per_cell,
@@ -927,7 +933,7 @@ void FESystem<dim>::get_local_mass_matrix (const DoFHandler<dim>::cell_iterator
 
 template <int dim>
 Point<dim> FESystem<dim>::transform_unit_to_real_cell (
-  const DoFHandler<dim>::cell_iterator cell,
+  const typename DoFHandler<dim>::cell_iterator &cell,
   const Point<dim> &p) const
 {
   return base_elements[0].first->transform_unit_to_real_cell(cell, p);
@@ -936,7 +942,7 @@ Point<dim> FESystem<dim>::transform_unit_to_real_cell (
 
 template <int dim>
 Point<dim> FESystem<dim>::transform_real_to_unit_cell (
-  const DoFHandler<dim>::cell_iterator cell,
+  const typename DoFHandler<dim>::cell_iterator &cell,
   const Point<dim> &p) const
 {
   return base_elements[0].first->transform_real_to_unit_cell(cell, p);
@@ -960,9 +966,9 @@ Tensor<1,dim> FESystem<dim>::shape_grad_transform (const unsigned int i,
 
 
 template <int dim>
-void FESystem<dim>::get_face_jacobians (const DoFHandler<dim>::face_iterator &face,
-                                       const std::vector<Point<dim-1> > &unit_points,
-                                       std::vector<double>      &face_jacobi_determinants) const
+void FESystem<dim>::get_face_jacobians (const typename DoFHandler<dim>::face_iterator &face,
+                                       const typename std::vector<Point<dim-1> > &unit_points,
+                                       typename std::vector<double>      &face_jacobi_determinants) const
 {
   base_elements[0].first->get_face_jacobians (face, unit_points,
                                              face_jacobi_determinants);
@@ -970,10 +976,10 @@ void FESystem<dim>::get_face_jacobians (const DoFHandler<dim>::face_iterator &fa
 
 
 template <int dim>
-void FESystem<dim>::get_subface_jacobians (const DoFHandler<dim>::face_iterator &face,
+void FESystem<dim>::get_subface_jacobians (const typename DoFHandler<dim>::face_iterator &face,
                                           const unsigned int           subface_no,
-                                          const std::vector<Point<dim-1> > &unit_points,
-                                          std::vector<double>      &face_jacobi_determinants) const
+                                          const typename std::vector<Point<dim-1> > &unit_points,
+                                          typename std::vector<double>      &face_jacobi_determinants) const
 {
   base_elements[0].first->get_subface_jacobians (face, subface_no, unit_points,
                                                 face_jacobi_determinants);
@@ -981,10 +987,10 @@ void FESystem<dim>::get_subface_jacobians (const DoFHandler<dim>::face_iterator
 
 
 template <int dim>
-void FESystem<dim>::get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+void FESystem<dim>::get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                        const unsigned int          face_no,
-                                       const std::vector<Point<dim-1> > &unit_points,
-                                       std::vector<Point<dim> >         &normal_vectors) const
+                                       const typename std::vector<Point<dim-1> > &unit_points,
+                                       typename std::vector<Point<dim> >         &normal_vectors) const
 {
   base_elements[0].first->get_normal_vectors (cell, face_no, unit_points,
                                              normal_vectors);
@@ -992,11 +998,11 @@ void FESystem<dim>::get_normal_vectors (const DoFHandler<dim>::cell_iterator &ce
 
 
 template <int dim>
-void FESystem<dim>::get_normal_vectors (const DoFHandler<dim>::cell_iterator &cell,
+void FESystem<dim>::get_normal_vectors (const typename DoFHandler<dim>::cell_iterator &cell,
                                        const unsigned int          face_no,
                                        const unsigned int          subface_no,
-                                       const std::vector<Point<dim-1> > &unit_points,
-                                       std::vector<Point<dim> >         &normal_vectors) const
+                                       const typename std::vector<Point<dim-1> > &unit_points,
+                                       typename std::vector<Point<dim> >         &normal_vectors) const
 {
   base_elements[0].first->get_normal_vectors (cell, face_no, subface_no, unit_points,
                                              normal_vectors);
@@ -1005,18 +1011,18 @@ void FESystem<dim>::get_normal_vectors (const DoFHandler<dim>::cell_iterator &ce
 
 template <int dim>
 void
-FESystem<dim>::fill_fe_values (const DoFHandler<dim>::cell_iterator &cell,
-                              const std::vector<Point<dim> >            &unit_points,
-                              std::vector<Tensor<2,dim> >               &jacobians,
+FESystem<dim>::fill_fe_values (const typename DoFHandler<dim>::cell_iterator &cell,
+                              const typename std::vector<Point<dim> >            &unit_points,
+                              typename std::vector<Tensor<2,dim> >               &jacobians,
                               const bool              compute_jacobians,
-                              std::vector<Tensor<3,dim> > &jacobians_grad,
+                              typename std::vector<Tensor<3,dim> > &jacobians_grad,
                               const bool              compute_jacobians_grad,
-                              std::vector<Point<dim> > &support_points,
+                              typename std::vector<Point<dim> > &support_points,
                               const bool           compute_support_points,
-                              std::vector<Point<dim> > &q_points,
+                              typename std::vector<Point<dim> > &q_points,
                               const bool           compute_q_points,
                               const FullMatrix<double>  &shape_values_transform,
-                              const std::vector<std::vector<Tensor<1,dim> > > &shape_grad_transform) const
+                              const typename std::vector<typename std::vector<Tensor<1,dim> > > &shape_grad_transform) const
 {
                                   // if we are to compute the support
                                   // points, then we need to get them
index f72796dc7f5ba2c48e5b695a0f83227ca7ec94fc..5bac6fe5e9011ede20c5236fc9cda2bdf6121c64 100644 (file)
 #include <dofs/dof_handler.h>
 #include <dofs/dof_accessor.h>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
 
 
 template <int dim, typename number>
index c61e3d396614a438459ebb6c1b1396eefa1c3141..b23ff7223518a099c9157ee188f9f9e4c694269b 100644 (file)
 #include <lac/block_vector.h>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 /*------------------------------- FEValuesBase ---------------------------*/
 
 
@@ -78,7 +84,7 @@ double FEValuesBase<dim>::shape_value (const unsigned int i,
 template <int dim>
 template <class InputVector, typename number>
 void FEValuesBase<dim>::get_function_values (const InputVector &fe_function,
-                                            std::vector<number>    &values) const
+                                            typename std::vector<number>    &values) const
 {
   Assert (fe->n_components() == 1,
          ExcWrongNoOfComponents());
@@ -112,7 +118,7 @@ void FEValuesBase<dim>::get_function_values (const InputVector &fe_function,
 template <int dim>
 template <class InputVector, typename number>
 void FEValuesBase<dim>::get_function_values (const InputVector       &fe_function,
-                                            std::vector<Vector<number> > &values) const
+                                            typename std::vector<Vector<number> > &values) const
 {
   Assert (n_quadrature_points == values.size(),
          ExcWrongVectorSize(values.size(), n_quadrature_points));
@@ -164,7 +170,7 @@ FEValuesBase<dim>::shape_grad (const unsigned int i,
 template <int dim>
 template <class InputVector>
 void FEValuesBase<dim>::get_function_grads (const InputVector      &fe_function,
-                                           std::vector<Tensor<1,dim> > &gradients) const
+                                           typename std::vector<Tensor<1,dim> > &gradients) const
 {
   Assert (fe->n_components() == 1,
          ExcWrongNoOfComponents());
@@ -199,7 +205,7 @@ void FEValuesBase<dim>::get_function_grads (const InputVector      &fe_function,
 template <int dim>
 template <class InputVector>
 void FEValuesBase<dim>::get_function_grads (const InputVector               &fe_function,
-                                           std::vector<std::vector<Tensor<1,dim> > > &gradients) const
+                                           typename std::vector<typename std::vector<Tensor<1,dim> > > &gradients) const
 {
   Assert (n_quadrature_points == gradients.size(),
          ExcWrongNoOfComponents());
@@ -255,7 +261,7 @@ FEValuesBase<dim>::shape_2nd_derivative (const unsigned int i,
 template <int dim>
 template <class InputVector>
 void FEValuesBase<dim>::get_function_2nd_derivatives (const InputVector      &fe_function,
-                                                     std::vector<Tensor<2,dim> > &second_derivatives) const
+                                                     typename std::vector<Tensor<2,dim> > &second_derivatives) const
 {
   Assert (fe->n_components() == 1,
          ExcWrongNoOfComponents());
@@ -292,7 +298,7 @@ template <class InputVector>
 void
 FEValuesBase<dim>::
 get_function_2nd_derivatives (const InputVector               &fe_function,
-                             std::vector<std::vector<Tensor<2,dim> > > &second_derivs) const
+                             typename std::vector<typename std::vector<Tensor<2,dim> > > &second_derivs) const
 {
   Assert (n_quadrature_points == second_derivs.size(),
          ExcWrongNoOfComponents());
index d886e68c310d2c6e501d2559efa3be8c4db4c4fa..337a57bc1a79cf456c4d72e30341a9e0af2b1abd 100644 (file)
 #include <base/quadrature.h>
 #include <lac/vector.h>
 #include <lac/full_matrix.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 
 #include <cmath>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 /*---------------------------- FEQ1Mapping ----------------------------------*/
 
 
@@ -199,7 +207,8 @@ void FEQ1Mapping<2>::get_face_jacobians (const DoFHandler<2>::face_iterator &fac
                                   // more or less copied from the linear
                                   // finite element
   Assert (unit_points.size() == face_jacobians.size(),
-         ExcWrongFieldDimension (unit_points.size(), face_jacobians.size()));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       face_jacobians.size()));
 
                                   // a linear mapping for a single line
                                   // produces particularly simple
@@ -220,9 +229,10 @@ void FEQ1Mapping<2>::get_subface_jacobians (const DoFHandler<2>::face_iterator &
                                   // more or less copied from the linear
                                   // finite element
   Assert (unit_points.size() == face_jacobians.size(),
-         ExcWrongFieldDimension (unit_points.size(), face_jacobians.size()));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       face_jacobians.size()));
   Assert (face->at_boundary() == false,
-         ExcBoundaryFaceUsed ());
+         FiniteElement<2>::ExcBoundaryFaceUsed ());
 
                                   // a linear mapping for a single line
                                   // produces particularly simple
@@ -243,7 +253,8 @@ void FEQ1Mapping<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cel
                                   // more or less copied from the linear
                                   // finite element
   Assert (unit_points.size() == normal_vectors.size(),
-         ExcWrongFieldDimension (unit_points.size(), normal_vectors.size()));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       normal_vectors.size()));
 
   const DoFHandler<2>::face_iterator face = cell->face(face_no);
                                   // compute direction of line
@@ -277,9 +288,10 @@ void FEQ1Mapping<2>::get_normal_vectors (const DoFHandler<2>::cell_iterator &cel
                                   // subface have the same direction as that
                                   // for the face
   Assert (unit_points.size() == normal_vectors.size(),
-         ExcWrongFieldDimension (unit_points.size(), normal_vectors.size()));
+         FiniteElementBase<2>::ExcWrongFieldDimension (unit_points.size(),
+                                                       normal_vectors.size()));
   Assert (cell->face(face_no)->at_boundary() == false,
-         ExcBoundaryFaceUsed ());
+         FiniteElement<2>::ExcBoundaryFaceUsed ());
 
   const DoFHandler<2>::face_iterator face = cell->face(face_no);
                                   // compute direction of line
@@ -385,7 +397,8 @@ void FEQ1Mapping<3>::get_face_jacobians (const DoFHandler<3>::face_iterator &fac
                                         const std::vector<Point<2> > &unit_points,
                                         std::vector<double> &face_jacobians) const {
   Assert (unit_points.size() == face_jacobians.size(),
-         ExcWrongFieldDimension (unit_points.size(), face_jacobians.size()));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(),
+                                                       face_jacobians.size()));
 
                                   // the computation of the face jacobians is
                                   // along the following lines: let x_i be
@@ -457,7 +470,8 @@ void FEQ1Mapping<3>::get_subface_jacobians (const DoFHandler<3>::face_iterator &
                                            const std::vector<Point<2> > &unit_points,
                                            std::vector<double> &face_jacobians) const {
   Assert (false,
-         ExcWrongFieldDimension (unit_points.size(), face_jacobians.size()));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(),
+                                                       face_jacobians.size()));
 };
 
 
@@ -467,7 +481,8 @@ void FEQ1Mapping<3>::get_normal_vectors (const DoFHandler<3>::cell_iterator &cel
                                         const std::vector<Point<2> > &unit_points,
                                         std::vector<Point<3> > &normal_vectors) const {
   Assert (unit_points.size() == normal_vectors.size(),
-         ExcWrongFieldDimension (unit_points.size(), normal_vectors.size()));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(),
+                                                       normal_vectors.size()));
   
                                   // taken from the same script as is
                                   // the computation of the jacobian
@@ -527,7 +542,8 @@ void FEQ1Mapping<3>::get_normal_vectors (const DoFHandler<3>::cell_iterator &/*c
                                   // subface have the same direction as that
                                   // for the face
   Assert (false,
-         ExcWrongFieldDimension (unit_points.size(), normal_vectors.size()));
+         FiniteElementBase<3>::ExcWrongFieldDimension (unit_points.size(),
+                                                       normal_vectors.size()));
 };
 
 #endif
@@ -535,7 +551,7 @@ void FEQ1Mapping<3>::get_normal_vectors (const DoFHandler<3>::cell_iterator &/*c
 
 template <int dim>
 Point<dim> FEQ1Mapping<dim>::transform_unit_to_real_cell (
-  const DoFHandler<dim>::cell_iterator cell,
+  const typename DoFHandler<dim>::cell_iterator &cell,
   const Point<dim> &p) const
 {
   Point<dim> p_real;
@@ -547,7 +563,7 @@ Point<dim> FEQ1Mapping<dim>::transform_unit_to_real_cell (
 
 template <int dim>
 Point<dim> FEQ1Mapping<dim>::transform_real_to_unit_cell (
-  const DoFHandler<dim>::cell_iterator cell,
+  const typename DoFHandler<dim>::cell_iterator &cell,
   const Point<dim> &p) const
 {
                                   // Newton iteration to solve
@@ -599,18 +615,18 @@ Point<dim> FEQ1Mapping<dim>::transform_real_to_unit_cell (
 
   
 template <int dim>
-void FEQ1Mapping<dim>::fill_fe_values (const DoFHandler<dim>::cell_iterator &cell,
-                                      const std::vector<Point<dim> >            &unit_points,
-                                      std::vector<Tensor<2,dim> >               &jacobians,
+void FEQ1Mapping<dim>::fill_fe_values (const typename DoFHandler<dim>::cell_iterator &cell,
+                                      const typename std::vector<Point<dim> >            &unit_points,
+                                      typename std::vector<Tensor<2,dim> >               &jacobians,
                                       const bool              compute_jacobians,
-                                      std::vector<Tensor<3,dim> > &jacobians_grad,
+                                      typename std::vector<Tensor<3,dim> > &jacobians_grad,
                                       const bool              compute_jacobians_grad,
-                                      std::vector<Point<dim> > &support_points,
+                                      typename std::vector<Point<dim> > &support_points,
                                       const bool           compute_support_points,
-                                      std::vector<Point<dim> > &q_points,
+                                      typename std::vector<Point<dim> > &q_points,
                                       const bool           compute_q_points,
                                       const FullMatrix<double>      &shape_values_transform,
-                                      const std::vector<std::vector<Tensor<1,dim> > > &shape_grad_transform) const
+                                      const typename std::vector<typename std::vector<Tensor<1,dim> > > &shape_grad_transform) const
 {
   Assert ((!compute_jacobians) || (jacobians.size() == unit_points.size()),
          typename FiniteElementBase<dim>::ExcWrongFieldDimension(jacobians.size(),
index 683332fee747b52a6c96eb6000591a63320e9d98..505838872d22a9aefee5d5bafe3822a09770d745 100644 (file)
@@ -13,6 +13,7 @@
 
 
 #include <fe/q1_mapping.h>
+#include <grid/tria.h>
 #include <grid/tria_iterator.h>
 #include <dofs/dof_accessor.h>
 
@@ -37,7 +38,8 @@ void FEQ1Mapping<1>::compute_jacobian_gradients (const DoFHandler<1>::cell_itera
                                                     std::vector<Tensor<3,1> >    &jacobians_grad) 
 {
   Assert (unit_points.size() == jacobians_grad.size(),
-         ExcWrongFieldDimension(jacobians_grad.size(), unit_points.size()));
+         FiniteElementBase<3>::ExcWrongFieldDimension(jacobians_grad.size(),
+                                                      unit_points.size()));
 
                                   // derivative of the
                                   // jacobian is always zero
@@ -58,7 +60,8 @@ void FEQ1Mapping<2>::compute_jacobian_gradients (const DoFHandler<2>::cell_itera
                                                     std::vector<Tensor<3,2> >    &jacobians_grad) 
 {
   Assert (unit_points.size() == jacobians_grad.size(),
-         ExcWrongFieldDimension(jacobians_grad.size(), unit_points.size()));
+         FiniteElementBase<2>::ExcWrongFieldDimension(jacobians_grad.size(),
+                                                      unit_points.size()));
 
   const unsigned int dim = 2;
   
@@ -141,7 +144,8 @@ void FEQ1Mapping<3>::compute_jacobian_gradients (const DoFHandler<3>::cell_itera
                                                     std::vector<Tensor<3,3> >    &jacobians_grad) 
 {
   Assert (unit_points.size() == jacobians_grad.size(),
-         ExcWrongFieldDimension(jacobians_grad.size(), unit_points.size()));
+         FiniteElementBase<3>::ExcWrongFieldDimension(jacobians_grad.size(),
+                                                      unit_points.size()));
 
   const unsigned int dim = 3;
   
index f4b94fb80f2f787ed4d4aa1d3a8f38a226aa1dc6..7b683a85130a771fdcc582354630221cf22a6384 100644 (file)
 #include <grid/geometry_info.h>
 
 
-// egcs 1.1 does not need these definitions of static member
-// variables, as later compilers should need. on the other hand, if we
-// define them, then egcs1.1 wants initialization, which we would have
-// to mirror from the .h file. rather, we omit it here
-
-#if ! ((__GNUC__==2) && (__GNUC_MINOR__ < 95))
-const unsigned int GeometryInfo<deal_II_dimension>::vertices_per_cell;
-const unsigned int GeometryInfo<deal_II_dimension>::lines_per_cell;
-const unsigned int GeometryInfo<deal_II_dimension>::quads_per_cell;
-const unsigned int GeometryInfo<deal_II_dimension>::hexes_per_cell;
-const unsigned int GeometryInfo<deal_II_dimension>::children_per_cell;
-#endif
+template <> const unsigned int GeometryInfo<deal_II_dimension>::vertices_per_cell;
+template <> const unsigned int GeometryInfo<deal_II_dimension>::lines_per_cell;
+template <> const unsigned int GeometryInfo<deal_II_dimension>::quads_per_cell;
+template <> const unsigned int GeometryInfo<deal_II_dimension>::hexes_per_cell;
+template <> const unsigned int GeometryInfo<deal_II_dimension>::children_per_cell;
 
 
 template <>
index cbd0fe50e85d9dbd8d7bf57c26d189f00c7ebe57..d27ede6514785a8eea976b048c43c450f9362019 100644 (file)
@@ -214,17 +214,17 @@ template <>
 void GridGenerator::hyper_ball<> (Triangulation<2> &tria,
                                  const Point<2>    &p,
                                  const double      radius) {
-  const double a = 1./(1+sqrt(2)); // equilibrate cell sizes at transition
+  const double a = 1./(1+sqrt(2.0)); // equilibrate cell sizes at transition
                                   // from the inner part to the radial
                                   // cells
-  const Point<2> vertices[8] = { p+Point<2>(-1,-1)*(radius/sqrt(2)),
-                                  p+Point<2>(+1,-1)*(radius/sqrt(2)),
-                                  p+Point<2>(-1,-1)*(radius/sqrt(2)*a),
-                                  p+Point<2>(+1,-1)*(radius/sqrt(2)*a),
-                                  p+Point<2>(-1,+1)*(radius/sqrt(2)*a),
-                                  p+Point<2>(+1,+1)*(radius/sqrt(2)*a),
-                                  p+Point<2>(-1,+1)*(radius/sqrt(2)),
-                                  p+Point<2>(+1,+1)*(radius/sqrt(2)) };
+  const Point<2> vertices[8] = { p+Point<2>(-1,-1)*(radius/sqrt(2.0)),
+                                  p+Point<2>(+1,-1)*(radius/sqrt(2.0)),
+                                  p+Point<2>(-1,-1)*(radius/sqrt(2.0)*a),
+                                  p+Point<2>(+1,-1)*(radius/sqrt(2.0)*a),
+                                  p+Point<2>(-1,+1)*(radius/sqrt(2.0)*a),
+                                  p+Point<2>(+1,+1)*(radius/sqrt(2.0)*a),
+                                  p+Point<2>(-1,+1)*(radius/sqrt(2.0)),
+                                  p+Point<2>(+1,+1)*(radius/sqrt(2.0)) };
   
   const int cell_vertices[5][4] = {{0, 1, 3, 2},
                                   {0, 2, 4, 6},
index 66a3b4d9101de361ab8c18868bca559e1080f7f7..9d0f2891fe5ee1910ca0a41bf5ba1a0c933fc4c2 100644 (file)
 #include <algorithm>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 
 
 template <int dim>
@@ -405,9 +412,9 @@ void GridIn<dim>::skip_comment_lines (std::istream &in,
 
 template <int dim>
 void
-GridIn<dim>::delete_unused_vertices (std::vector<Point<dim> >    &vertices,
-                                    std::vector<CellData<dim> > &cells,
-                                    SubCellData                 &subcelldata)
+GridIn<dim>::delete_unused_vertices (typename std::vector<Point<dim> >    &vertices,
+                                    typename std::vector<CellData<dim> > &cells,
+                                    SubCellData                          &subcelldata)
 {
                                   // first check which vertices are
                                   // actually used
@@ -460,9 +467,9 @@ GridIn<dim>::delete_unused_vertices (std::vector<Point<dim> >    &vertices,
 
 
 template <int dim>
-void GridIn<dim>::debug_output_grid (const std::vector<CellData<dim> > &/*cells*/,
-                                    const std::vector<Point<dim> >    &/*vertices*/,
-                                    std::ostream                      &/*out*/)
+void GridIn<dim>::debug_output_grid (const typename std::vector<CellData<dim> > &/*cells*/,
+                                    const typename std::vector<Point<dim> >    &/*vertices*/,
+                                    std::ostream                               &/*out*/)
 {
   Assert (false, ExcNotImplemented());
 };
index fd6ecdf281084cdb4c36250ebf521a3acc7ac421..9b401846bd111195ab6b737946944d7aac47e914 100644 (file)
 #include <numeric>
 #include <algorithm>
 #include <cmath>
-
-#include <math.h>
+#include <functional>
 #include <fstream>
 
+
+
 template<typename number>
 void GridRefinement::qsort_index(const Vector<number>      &a,
                                 std::vector<unsigned int> &ind,
@@ -249,6 +250,10 @@ GridRefinement::refine_and_coarsen_fixed_fraction (Triangulation<dim>   &tria,
 
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
 
 
 template <int dim, typename number>
index 220b69adfb1760f765f594292852cc5add8fdddb..97f9034dee026a24f43edf2741f58c9a07d66497 100644 (file)
 #include <grid/grid_reordering.h>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 
 // static variables
 template <>
@@ -77,7 +83,7 @@ unsigned int GridReordering<dim>::Cell::count_neighbors () const
 
 template <int dim>
 void
-GridReordering<dim>::Cell::insert_faces (std::map<Face,FaceData> &/*global_faces*/)
+GridReordering<dim>::Cell::insert_faces (typename std::map<Face,FaceData> &/*global_faces*/)
 {
   Assert (false, ExcNotImplemented());
 };
@@ -692,9 +698,9 @@ GridReordering<dim>::FaceData::FaceData () :
 
 template <int dim>
 inline
-void GridReordering<dim>::track_back (std::vector<Cell> &cells,
-                                     RotationStack     &rotation_states,
-                                     unsigned int       track_back_to_cell)
+void GridReordering<dim>::track_back (typename std::vector<Cell> &cells,
+                                     RotationStack              &rotation_states,
+                                     unsigned int                track_back_to_cell)
 {
   top_of_function:
   
@@ -766,8 +772,8 @@ void GridReordering<dim>::track_back (std::vector<Cell> &cells,
 
 
 template <int dim>
-bool GridReordering<dim>::try_rotate_single_neighbors (std::vector<Cell> &cells,
-                                                      RotationStack     &rotation_states)
+bool GridReordering<dim>::try_rotate_single_neighbors (typename std::vector<Cell> &cells,
+                                                      RotationStack              &rotation_states)
 {
                                   // the rotation state of the cell
                                   // which we try to add by rotating
@@ -882,9 +888,9 @@ bool GridReordering<dim>::try_rotate_single_neighbors (std::vector<Cell> &cells,
 
 
 template <int dim>
-void GridReordering<dim>::find_reordering (std::vector<Cell>               &cells,
-                                          std::vector<CellData<dim> >     &original_cells,
-                                          const std::vector<unsigned int> &new_cell_numbers)
+void GridReordering<dim>::find_reordering (typename std::vector<Cell>           &cells,
+                                          typename std::vector<CellData<dim> > &original_cells,
+                                          const std::vector<unsigned int>      &new_cell_numbers)
 {
 //  cout << "Starting..." << flush;
   
@@ -1077,8 +1083,8 @@ void GridReordering<dim>::find_reordering (std::vector<Cell>               &cell
 
 template <int dim>
 std::vector<unsigned int>
-GridReordering<dim>::presort_cells (std::vector<Cell>       &cells,
-                                   std::map<Face,FaceData> &faces)
+GridReordering<dim>::presort_cells (typename std::vector<Cell>       &cells,
+                                   typename std::map<Face,FaceData> &faces)
 {
                                   // first find the cell with the
                                   // least neighbors
@@ -1197,7 +1203,7 @@ GridReordering<dim>::presort_cells (std::vector<Cell>       &cells,
                      
 
 template <int dim>
-void GridReordering<dim>::reorder_cells (std::vector<CellData<dim> > &original_cells)
+void GridReordering<dim>::reorder_cells (typename std::vector<CellData<dim> > &original_cells)
 {
                                   // we need more information than
                                   // provided by the input parameter,
index 6042dde5903c0b70976f259fda914b62a6813f33..b39b094a9d8db082b8fe5ce897567daaa9aea530 100644 (file)
 
 
 #include <base/memory_consumption.h>
+#include <base/smartpointer.h>
 #include <grid/tria.h>
 #include <dofs/dof_handler.h>
+#include <fe/fe.h>
 #include <grid/tria_accessor.h>
 #include <dofs/dof_accessor.h>
 #include <multigrid/mg_dof_handler.h>
index b16d233bd0ae8af0bbf3f0b99039939bbb4e9697..409f79def2de7a4bcc52de9f5a089eacdf1c7012 100644 (file)
 #include <iostream>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 template <int dim>
 PersistentTriangulation<dim>::
 PersistentTriangulation (const Triangulation<dim> &coarse_grid) :
@@ -95,8 +102,8 @@ PersistentTriangulation<dim>::copy_triangulation (const Triangulation<dim> &old_
 
 template <int dim>
 void
-PersistentTriangulation<dim>::create_triangulation (const std::vector<Point<dim> >    &,
-                                                   const std::vector<CellData<dim> > &,
+PersistentTriangulation<dim>::create_triangulation (const typename std::vector<Point<dim> >    &,
+                                                   const typename std::vector<CellData<dim> > &,
                                                    const SubCellData                 &)
 {
   Assert (false, ExcFunctionNotUseful());
index fe4ab6e46b959c7044c02f34c70fbaadaad00cf7..b44f8ad66346525e51eedff0ad6fb67a91da7436 100644 (file)
@@ -18,6 +18,7 @@
 #include <grid/tria_boundary.h>
 
 #include <algorithm>
+#include <functional>
 #include <numeric>
 
 
index 3150679d4a8d623ec622dbcc1e5d0598fa241964..aada3a51403101517362ce560e803e1699309c9d 100644 (file)
@@ -1706,6 +1706,12 @@ void Triangulation<dim>::refine_global (const unsigned int times) {
 };
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 template <int dim>
 void Triangulation<dim>::save_refine_flags (std::vector<bool> &v) const {
   v.resize (n_active_cells(), false);
index 78e66076bb1751e5ecde8aaad66bd347d4593357..05cc141127e2c41586b893108d66b0fd30cf5c71 100644 (file)
@@ -1591,7 +1591,7 @@ bool CellAccessor<2>::at_boundary () const
 template <>
 unsigned char CellAccessor<2>::material_id () const
 {
-  Assert (used(), ExcCellNotUsed());
+  Assert (used(), TriaAccessor<2>::ExcCellNotUsed());
   return tria->levels[present_level]->quads.material_id[present_index];
 };
 
@@ -1600,7 +1600,7 @@ unsigned char CellAccessor<2>::material_id () const
 template <>
 void CellAccessor<2>::set_material_id (const unsigned char mat_id) const
 {
-  Assert (used(), ExcCellNotUsed());
+  Assert (used(), TriaAccessor<2>::ExcCellNotUsed());
   tria->levels[present_level]->quads.material_id[present_index]
     = mat_id;                                           
 };
index 634acfc8a521a9cf3218417eb9e25a90c48d9d91..7ed8fde11bfedae7bc402411c55b5b3530ede104 100644 (file)
 #include <lac/sparse_matrix.h>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 /* ------------------------ MGDoFLineAccessor --------------------------- */
 
 template <int dim>
index de7420b2f480f59f2563bd28ba953e3250b4a0ac..137bac1ffb53d89ed915037a47a19585af9b4055 100644 (file)
@@ -1417,7 +1417,8 @@ void MGDoFHandler<1>::renumber_dofs (const unsigned int level,
 template <>
 void MGDoFHandler<2>::renumber_dofs (const unsigned int  level,
                                     const std::vector<unsigned int>  &new_numbers) {
-  Assert (new_numbers.size() == n_dofs(level), ExcRenumberingIncomplete());
+  Assert (new_numbers.size() == n_dofs(level), 
+         DoFHandler<2>::ExcRenumberingIncomplete());
   
   for (std::vector<MGVertexDoFs>::iterator i=mg_vertex_dofs.begin();
        i!=mg_vertex_dofs.end(); ++i)
@@ -1582,8 +1583,8 @@ template <>
 void MGDoFHandler<2>::reserve_space () {
   const unsigned int dim = 2;
   
-  Assert (selected_fe != 0, ExcNoFESelected());
-  Assert (tria->n_levels() > 0, ExcInvalidTriangulation());
+  Assert (selected_fe != 0, DoFHandler<dim>::ExcNoFESelected());
+  Assert (tria->n_levels() > 0, DoFHandler<2>::ExcInvalidTriangulation());
   
                                   ////////////////////////////
                                   // DESTRUCTION
index fdc9f3fe19df4fe7296764698a6829cacdcb87f5..ce12e5069a0cb1dd8f3618406a635b174f9dacb8 100644 (file)
@@ -13,6 +13,7 @@
 
 
 #include <grid/tria.h>
+#include <dofs/dof_constraints.h>
 #include <multigrid/mg_dof_handler.h>
 #include <multigrid/mg_dof_accessor.h>
 #include <grid/tria_iterator.h>
index 140e4e0cafc051408fbe701a58af87aa7d3af499..d72e776c1dffbbc7422af95b296467af50f03fcc 100644 (file)
@@ -13,6 +13,7 @@
 
 
 #include <grid/tria.h>
+#include <dofs/dof_constraints.h>
 #include <multigrid/mg_dof_handler.h>
 #include <multigrid/mg_dof_accessor.h>
 #include <grid/tria_iterator.h>
index 0ef8efff8fd538eea0d8c59e1db94626b48aecd6..a1001adde3a828a96a74e2a0ce7b48fdec4e9460 100644 (file)
 #include <lac/vector.h>
 #include <lac/sparse_matrix.h>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
 
 template <int dim>
 Assembler<dim>::AssemblerData::AssemblerData (const DoFHandler<dim>    &dof,
index 83edf66f8ef15b135d9d943a6305358e05af1db0..0c6e160f7da285b93f69579f09e8a1beae572fd0 100644 (file)
 #include <algorithm>
 #include <cmath>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
 
 template <int dim>
 ProblemBase<dim>::ProblemBase () :
index 9d8fbdb7a1bb63d32454b2afcc99db20b82ae564..aff5d97d6fcc72363ab7231d4aec7c39e8da5873 100644 (file)
 #include <strstream>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
+
 template <int dof_handler_dim, int patch_dim, int patch_space_dim>
 DataOut_DoFData<dof_handler_dim,patch_dim,patch_space_dim>::DataEntry::
 DataEntry (const Vector<double> *data,
@@ -237,7 +244,7 @@ DataOut_DoFData<dof_handler_dim,patch_dim,patch_space_dim>::get_dataset_names ()
 
 
 template <int dof_handler_dim, int patch_dim, int patch_space_dim>
-const std::vector<typename DataOutBase::Patch<patch_dim, patch_space_dim> > &
+const typename std::vector<typename DataOutBase::Patch<patch_dim, patch_space_dim> > &
 DataOut_DoFData<dof_handler_dim,patch_dim,patch_space_dim>::get_patches () const
 {
   return patches;
index a48679065afc64e1e96532bc3b50f9f2dee222fc..2709ad609b8b9432df9206dfca4a69100dc865a1 100644 (file)
 #include <strstream>
 #include <cmath>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 
 
 template <int dim>
index 84a2f22b55e936ddd1cfc62961b1967ce1acdb6f..0bfbd648755ab97dab8a0b610bd3ab3901902b02 100644 (file)
 #include <fe/fe_values.h>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 
 template <int dim>
 unsigned int
@@ -336,7 +342,7 @@ DataOutStack<dim>::memory_consumption () const
 
 
 template <int dim>
-const std::vector<DataOutBase::Patch<dim+1> > &
+const typename std::vector<typename DataOutBase::Patch<dim+1> > &
 DataOutStack<dim>::get_patches () const
 {
   return patches;
index 753fc954e9d45d62e47328616e3ccec1183d4811..d8f400fe11d1c316833b5916a27023bcdb93b3aa 100644 (file)
@@ -135,7 +135,7 @@ derivative_norm (const Derivative &d)
                                   //
                                   // if the d_11=a, d_22=b,
                                   // d_12=d_21=c
-  const double radicand = sqr(d[0][0] - d[1][1]) + 4*sqr(d[0][1]);
+  const double radicand = ::sqr(d[0][0] - d[1][1]) + 4*::sqr(d[0][1]);
   const double eigenvalues[2]
     = { 0.5*(d[0][0] + d[1][1] + sqrt(radicand)),
        0.5*(d[0][0] + d[1][1] - sqrt(radicand))  };
index 6a00f1adcd9c991def9da3984c528a7b7fd516f2..a026e12f070b8416ec86a78238220e606e339614 100644 (file)
 #include <base/timer.h>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
 
 static
 inline
@@ -808,7 +813,7 @@ integrate_over_regular_face (Data                       &data,
     for (unsigned int component=0; component<n_components; ++component)
       if (data.component_mask[component] == true)
        for (unsigned int p=0; p<n_q_points; ++p)
-         face_integral[n] += sqr(data.phi[n][p][component]) *
+         face_integral[n] += ::sqr(data.phi[n][p][component]) *
                              data.JxW_values[p];
   
   data.face_integrals[face] = face_integral;
@@ -964,7 +969,7 @@ integrate_over_irregular_face (Data                       &data,
        for (unsigned int component=0; component<n_components; ++component)
          if (data.component_mask[component] == true)
            for (unsigned int p=0; p<n_q_points; ++p)
-             face_integral[n] += sqr(data.phi[n][p][component]) *
+             face_integral[n] += ::sqr(data.phi[n][p][component]) *
                                  data.JxW_values[p];
 
       data.face_integrals[neighbor_child->face(neighbor_neighbor)] = face_integral;
index edd6d3a40745a738d3982db7bbecd435cf49d927..47a097d96cb0a2b3f87fcf80714abe80af88f217 100644 (file)
@@ -49,10 +49,10 @@ Histogram::Interval::memory_consumption () const
 
 
 template <typename number>
-void Histogram::evaluate (const std::vector<Vector<number> > &values,
-                         const std::vector<double>          &_y_values,
-                         const unsigned int             n_intervals,
-                         const IntervalSpacing          interval_spacing)
+void Histogram::evaluate (const typename std::vector<Vector<number> > &values,
+                         const std::vector<double>                   &_y_values,
+                         const unsigned int                           n_intervals,
+                         const IntervalSpacing                        interval_spacing)
 {
   Assert (values.size() > 0, ExcEmptyData());
   Assert (n_intervals > 0, ExcInvalidIntervals());
@@ -344,10 +344,10 @@ Histogram::memory_consumption () const
 
 // explicit instantiations for float
 template
-void Histogram::evaluate (const std::vector<Vector<float> >  &values,
-                         const std::vector<double>          &y_values, 
-                         const unsigned int             n_intervals,
-                         const IntervalSpacing          interval_spacing);
+void Histogram::evaluate (const std::vector<Vector<float> > &values,
+                         const std::vector<double>                  &y_values, 
+                         const unsigned int                          n_intervals,
+                         const IntervalSpacing                       interval_spacing);
 template
 void Histogram::evaluate (const Vector<float>   &values,
                          const unsigned int     n_intervals,
@@ -357,9 +357,9 @@ void Histogram::evaluate (const Vector<float>   &values,
 // explicit instantiations for double
 template
 void Histogram::evaluate (const std::vector<Vector<double> >  &values,
-                         const std::vector<double>           &y_values, 
-                         const unsigned int              n_intervals,
-                         const IntervalSpacing           interval_spacing);
+                         const std::vector<double>                    &y_values, 
+                         const unsigned int                            n_intervals,
+                         const IntervalSpacing                         interval_spacing);
 template
 void Histogram::evaluate (const Vector<double>   &values,
                          const unsigned int      n_intervals,
index 448f6bee2b5ee5f958f141498d54414838fc52c9..89092a68080d5c83c5a4ee4981363fa93be12e59 100644 (file)
 #include <set>
 #include <cmath>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
 
 template <int dim>
 void MatrixCreator<dim>::create_mass_matrix (const DoFHandler<dim>    &dof,
@@ -1102,7 +1107,7 @@ template <int dim>
 void MassMatrix<dim>::assemble (FullMatrix<double>  &cell_matrix,
                                Vector<double>      &rhs,
                                const FEValues<dim> &fe_values,
-                               const DoFHandler<dim>::cell_iterator &) const
+                               const typename DoFHandler<dim>::cell_iterator &) const
 {
   Assert (right_hand_side != 0, ExcNoRHSSelected());
 
@@ -1168,7 +1173,7 @@ void MassMatrix<dim>::assemble (FullMatrix<double>  &cell_matrix,
 template <int dim>
 void MassMatrix<dim>::assemble (Vector<double>      &rhs,
                                const FEValues<dim> &fe_values,
-                               const DoFHandler<dim>::cell_iterator &) const
+                               const typename DoFHandler<dim>::cell_iterator &) const
 {
   Assert (right_hand_side != 0, ExcNoRHSSelected());
 
@@ -1213,7 +1218,7 @@ template <int dim>
 void LaplaceMatrix<dim>::assemble (FullMatrix<double>         &cell_matrix,
                                   Vector<double>             &rhs,
                                   const FEValues<dim>        &fe_values,
-                                  const DoFHandler<dim>::cell_iterator &) const
+                                  const typename DoFHandler<dim>::cell_iterator &) const
 {
   Assert (right_hand_side != 0, ExcNoRHSSelected());
   
@@ -1282,7 +1287,7 @@ void LaplaceMatrix<dim>::assemble (FullMatrix<double>         &cell_matrix,
 template <int dim>
 void LaplaceMatrix<dim>::assemble (FullMatrix<double>  &cell_matrix,
                                   const FEValues<dim> &fe_values,
-                                  const DoFHandler<dim>::cell_iterator &) const
+                                  const typename DoFHandler<dim>::cell_iterator &) const
 {
   const unsigned int dofs_per_cell = fe_values.dofs_per_cell,
                     n_q_points    = fe_values.n_quadrature_points;
@@ -1338,7 +1343,7 @@ void LaplaceMatrix<dim>::assemble (FullMatrix<double>  &cell_matrix,
 template <int dim>
 void LaplaceMatrix<dim>::assemble (Vector<double>      &rhs,
                                   const FEValues<dim> &fe_values,
-                                  const DoFHandler<dim>::cell_iterator &) const
+                                  const typename DoFHandler<dim>::cell_iterator &) const
 {
   Assert (right_hand_side != 0, ExcNoRHSSelected());
 
index d2ece8e5a886e58ef0f0679476c5edfa68b38e2a..7e217776bb1e99c0fd638a08e2215cfe88be8e7f 100644 (file)
 #include <lac/vector.h>
 #include <numerics/solution_transfer.h>
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
 
 template<int dim, typename number>
 SolutionTransfer<dim, number>::SolutionTransfer(const DoFHandler<dim> &dof):
@@ -146,7 +151,7 @@ void SolutionTransfer<dim, number>::refine_interpolate (Vector<number> &vec) con
 template<int dim, typename number>
 void
 SolutionTransfer<dim, number>::
-prepare_for_coarsening_and_refinement(const std::vector<Vector<number> > &all_in)
+prepare_for_coarsening_and_refinement(const typename std::vector<Vector<number> > &all_in)
 {
   Assert(prepared_for!=pure_refinement, ExcAlreadyPrepForRef());
   Assert(!prepared_for!=coarsening_and_refinement, 
@@ -271,8 +276,8 @@ SolutionTransfer<dim, number>::prepare_for_coarsening_and_refinement(const Vecto
 
 template<int dim, typename number>
 void SolutionTransfer<dim, number>::
-interpolate (const std::vector<Vector<number> > &all_in,
-            std::vector<Vector<number> >       &all_out) const
+interpolate (const typename std::vector<Vector<number> > &all_in,
+            typename std::vector<Vector<number> >       &all_out) const
 {
   Assert(prepared_for==coarsening_and_refinement, ExcNotPrepared());
   for (unsigned int i=0; i<all_in.size(); ++i)
index 40f98aedacf07572092a4dde30d1ec109b779080..9b984df7d58744a41d8830ac7be1846b37af848b 100644 (file)
@@ -542,8 +542,8 @@ void TimeStepBase_Tria<dim>::restore_grid ()
 
 template <int dim>
 static void
-mirror_refinement_flags (const Triangulation<dim>::cell_iterator &new_cell,
-                        const Triangulation<dim>::cell_iterator &old_cell)
+mirror_refinement_flags (const typename Triangulation<dim>::cell_iterator &new_cell,
+                        const typename Triangulation<dim>::cell_iterator &old_cell)
 {
                                   // mirror the refinement
                                   // flags from the present time level to
@@ -589,8 +589,8 @@ mirror_refinement_flags (const Triangulation<dim>::cell_iterator &new_cell,
 
 template <int dim>
 static bool
-adapt_grids (const Triangulation<dim>::cell_iterator &cell1,
-            const Triangulation<dim>::cell_iterator &cell2)
+adapt_grids (const typename Triangulation<dim>::cell_iterator &cell1,
+            const typename Triangulation<dim>::cell_iterator &cell2)
 {
 
   if (cell2->has_children() && cell1->has_children()) 
index ded806891a9f6f0fab44d247919e2b9632fddbcb..e4eafb87f2b0f9acf518f812d6b9933a43c2f178 100644 (file)
 #include <cmath>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+using namespace std;
+#endif
+
+
 static inline double sqr (const double x)
 {
   return x*x;
@@ -711,7 +717,7 @@ VectorTools::interpolate_boundary_values (const DoFHandler<dim>    &dof,
 template <int dim>
 void
 VectorTools::project_boundary_values (const DoFHandler<dim>    &dof,
-                                     const std::map<unsigned char,const Function<dim>*> &boundary_functions,
+                                     const typename std::map<unsigned char,const Function<dim>*> &boundary_functions,
                                      const Quadrature<dim-1>  &q,
                                      std::map<unsigned int,double> &boundary_values)
 {
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5b811bfc29986675c85d6e177ca1d20b2dce5f3 100644 (file)
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
+   "http://www.w3.org/TR/REC-html40/strict.dtd">
+<html>
+  <head>
+    <link href="../screen.css" rel="StyleSheet" title="deal.II Homepage" media="screen">
+    <link href="../print.css" rel="StyleSheet" title="deal.II Homepage" media="print">
+    <title>The deal.II Readme -- Installation Instructions</title>
+    <meta name="author" content="Wolfgang Bangerth <deal@iwr.uni-heidelberg.de>">
+    <meta name="keywords" content="deal.II">
+  </head>
+
+  <body>
+
+
+    <h1>Installation instructions for IBM AIX using the xlC compiler</h1>
+
+    <p>
+    First note that <acronym>deal.II</acronym> does not yet work with
+    IBM xlC compiler version 5.0, i.e. the compiler from the Visual
+    Age for C++ package. We have tried to make it run and have fixed
+    as many places as possible in order to reduce the number of
+    errors, but have not been able to work around some problems.
+    </p>
+
+    <p>
+    xlC 5.0 has large problems mainly in the following areas:
+    <ul>
+    <li> <p> 
+         Templatized member functions of classes. We have not been
+         able to explicitely instantiate them, nor to take the address
+         of such functions. For example, the following program fails:
+        </p>
+
+        <p>
+        <code>
+        <pre>
+        aixterm7:/u/sfb359/q71> cat t.cc
+            class X {
+              template <int dim> void f() {};
+              template <int dim> void g();
+            };
+
+            template <int dim> 
+            void X::g () {
+              void (X::*p) () = &X::template f<dim>;
+            };
+
+            // explicit instantiation
+            template void X::g<1> ();
+        aixterm7:/u/sfb359/q71> /usr/vacpp/bin/xlC -c t.cc -o /dev/null
+            "t.cc", line 8.22: 1540-0130 (S) "X::f" is not declared.
+            "t.cc", line 7.6: 1540-0700 (I) The previous message was produced while processing "X::g<1>()".
+        </pre>
+        </code>
+        </p>
+
+    <li> <p>
+         A compiler bug prevented us from compiling this snippet:
+        <code>
+        <pre>
+        aixterm7:/u/sfb359/q71> cat t.cc
+             namespace std {
+               template <class _Ty>                             class allocator {};
+               template<class _Ty, class _Ax = allocator<_Ty> > class vector{};
+             }
+
+             struct X {};
+             template <int dim> void g (const std::vector<X> &x);
+
+             void f ()  {
+               std::vector<X> x;
+               g<1> (x);
+             };
+         aixterm7:/u/sfb359/q71> /usr/vacpp/bin/xlC -c t.cc -o /dev/null
+             "t.cc", line 11.9: 1540-0130 (S) "allocator" is not declared.
+             "t.cc", line 11.9: 1540-0700 (I) The previous message was produced while processing "g".
+        </pre>
+        </code>
+        This also happens when the first four lines declaring the
+        namespace <code>std::</code> are replaced by 
+        <code>#include &lt;vector&gt;</code>.
+        </p>
+
+    <li> <p>
+         There's another nasty bug that does not allow such code:
+        <code>
+        <pre>
+        aixterm7:/u/sfb359/q71> cat t.cc
+             #include <vector>
+             class X{};
+
+             void f() {
+               std::vector<X> v;
+               std::vector<X>::iterator       i1=v.begin();
+               std::vector<X>::const_iterator i2=v.begin();
+               bool x = (i1 != i2);
+             };
+         aixterm7:/u/sfb359/q71> /usr/vacpp/bin/xlC -c t.cc -o /dev/null
+             "t.cc", line 8.16: 1540-0218 (S) The call does not match any parameter list for "operator!=".
+             "/usr/vacpp/include/xutility", line 247.14: 1540-1283 (I) "std::_Ptrit<X,int,X *,X &,X *,X &>::operator!=(const _Myt &) const" is not a viable candidate.
+             "t.cc", line 8.19: 1540-0256 (I) A parameter of type "const std::_Ptrit<X,int,X *,X &,X *,X &> &" cannot be initialized with an expression of type "std::vector<X,std::allocator<X> >::const_iterator".
+             "/usr/vacpp/include/utility", line 59.14: 1540-1283 (I) "template <class _T1, class _T2> std::operator!=(const pair<_T1,_T2> &, const pair<_T1,_T2> &)" is not a viable candidate.
+             "/usr/vacpp/include/xutility", line 362.14: 1540-1283 (I) "template <class _RI> std::operator!=(const reverse_iterator<_RI> &, const reverse_iterator<_RI> &)" is not a viable candidate.
+             "/usr/vacpp/include/xutility", line 477.14: 1540-1283 (I) "template <class _E, class _Tr> std::operator!=(const istreambuf_iterator<_E,_Tr> &, const istreambuf_iterator<_E,_Tr> &)" is not a viable candidate.
+             "/usr/vacpp/include/iterator", line 167.14: 1540-1283 (I) "template <class _Ty, class _E, class _Tr, class _Dist> std::operator!=(const istream_iterator<_Ty,_E,_Tr,_Dist> &, const istream_iterator<_Ty,_E,_Tr,_Dist> &)" is not a viable candidate.
+             "/usr/vacpp/include/xmemory", line 127.14: 1540-1283 (I) "template <class _Ty, class _U> std::operator!=(const allocator<_Ty> &, const allocator<_U> &)" is not a viable candidate.
+             "/usr/vacpp/include/vector", line 293.14: 1540-1283 (I) "template <class _Ty, class _A> std::operator!=(const vector<_Ty,_A> &, const vector<_Ty,_A> &)" is not a viable candidate.
+        </pre>
+        </code>
+        </p>
+
+    <li> <p>
+         Finally, there was a bug (sorry, I can't reproduce it
+         presently in a small code snippet) which yielded this funny
+         error message:
+        <pre>
+        <code>
+             "source/dofs/dof_accessor.cc", line 720.80: 1540-0216 (S) An
+             expression of type "const Vector<double>" cannot be converted to
+             "const Vector<double>". 
+        </pre>
+        </code>
+        </p>
+    </ul>
+    </p>
+
+    <p>
+    At this point, I gave up. In summary, there may have only be half
+    a dozen bugs in the compiler that were triggered several hundred
+    times, but as long as these are not fixed in the compiler itself,
+    I see no way to use xlC for deal.II. Nevertheless, as gcc also
+    runs on this platform, there is an alternative which you can fall
+    back on.
+    </p>
+
+  </body>
+</html>
index 7c22ae9516e95fa6363c413e94b514d0fa0791c3..6d26bb8667060d6b5512b2ba450a7bb5c49fa47d 100644 (file)
@@ -49,6 +49,9 @@
            to Linux on DEC Alpha) and using DEC's cxx compiler version
            6.0;
 
+      <li> <a href="platforms/ibm_aix_xlc.html" target="body">IBM AIX
+           with IBM'x xlC 5.0 compiler</a>.
+
       <li> <a href="platforms/windows.html" target="body">Microsoft
            Windows 95/98/2000/NT</a>.
     </ul>
index c18e070be7af907d5fac844e5af1f30ce95c4933..96de3ac9c286206c981e51a7359e0fb067527e72 100644 (file)
@@ -511,7 +511,7 @@ class BlockSparseMatrix : public Subscriptor
                                     /**
                                      * Array of sub-matrices.
                                      */
-    std::vector<std::vector<SmartPointer<SparseMatrix<number> > > > sub_objects;
+    typename std::vector<std::vector<SmartPointer<SparseMatrix<number> > > > sub_objects;
 };
 
 
index 728e992844084205e8a54b3eaa62d88934487ceb..2c0daefb76afdc8f10645785a1579eb678178b53 100644 (file)
@@ -163,7 +163,6 @@ BlockSparseMatrix<number>::get_sparsity_pattern () const
 };
 
 
-
 template <typename number>
 unsigned int
 BlockSparseMatrix<number>::memory_consumption () const
index 962c99b34a3d55df1ef84ff1fd7fdc94ebea10bd..91019eea36d859ecbe96a6b8e0d87360faad38c6 100644 (file)
@@ -495,7 +495,7 @@ class BlockVector
                                     /**
                                      * Pointer to the array of components.
                                      */
-    std::vector<Vector<Number> > components;
+    typename std::vector<Vector<Number> > components;
 
                                     /**
                                      * Object managing the
index 53addc50c7f3539de63a07b65786d21a592afcc4..1c6b6144c7127fa17ef2907c0d1bdc668dd13646 100644 (file)
@@ -29,6 +29,11 @@ BlockVector<Number>::BlockVector (unsigned int n_blocks,
 
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+  using namespace std;
+#endif
+
 template <typename Number>
 BlockVector<Number>::BlockVector (const std::vector<unsigned int> &n)
 {
index a82a4b4a32ec6f5522944d2c72184905d2841bb1..27a6b05c47ae798cf488cb86edec0632f3345264 100644 (file)
@@ -267,7 +267,7 @@ class PreconditionBlock
                                      * memory in comparison with
                                      * @p{inverse_type=double}.
                                      */
-    std::vector<FullMatrix<inverse_type> > var_inverse;
+    typename std::vector<FullMatrix<inverse_type> > var_inverse;
 
                                     /**
                                      * Storage of the original diagonal blocks.
@@ -276,7 +276,7 @@ class PreconditionBlock
                                      *
                                      * Used by the blocked SSOR method.
                                      */
-    std::vector<FullMatrix<inverse_type> > var_diagonal;
+    typename std::vector<FullMatrix<inverse_type> > var_diagonal;
                                      
                                     /**
                                      * Flag for diagonal compression.
index 0a48074bad35a5a5b93cf231d33284bd6a5b79a7..f00ae974897032add80621272a79062c8ae284dd 100644 (file)
@@ -130,7 +130,7 @@ class SolverControl;
  *
  * @author Wolfgang Bangerth, Guido Kanschat, Ralf Hartmann, 1997, 1998, 1999
  */
-template <class Vector = Vector<double> >
+template <class Vector = ::Vector<double> >
 class Solver
 {
   public:
index d26274897441850d87bfaf71fd44748451093eac..5f7e58e54d1b241e1c95c3f86a4155269c5a35af 100644 (file)
 #include <map>
 
 
+// if necessary try to work around a bug in the IBM xlC compiler
+#ifdef XLC_WORK_AROUND_STD_BUG
+  using namespace std;
+#endif
+
+
 template<typename number>
 SparseVanka<number>::SparseVanka(const SparseMatrix<number> &M,
                                 const std::vector<bool>    &selected,
index b168a51b40c3331c6846119a8513cb82b66db036..10e2decd66fd733d1f1c0b008ead43d8ffbfd1ad 100644 (file)
@@ -504,28 +504,36 @@ unsigned int Vector<Number>::size () const
 
 template <typename Number>
 inline
-Vector<Number>::iterator Vector<Number>::begin () {
+typename Vector<Number>::iterator 
+Vector<Number>::begin () 
+{
   return &val[0];
 };
 
 
 template <typename Number>
 inline
-Vector<Number>::const_iterator Vector<Number>::begin () const {
+typename Vector<Number>::const_iterator 
+Vector<Number>::begin () const 
+{
   return &val[0];
 };
 
 
 template <typename Number>
 inline
-Vector<Number>::iterator Vector<Number>::end () {
+typename Vector<Number>::iterator
+Vector<Number>::end () 
+{
   return &val[dim];
 };
 
 
 template <typename Number>
 inline
-Vector<Number>::const_iterator Vector<Number>::end () const {
+typename Vector<Number>::const_iterator
+Vector<Number>::end () const 
+{
   return &val[dim];
 };
 
index 86ea6db1bf9f268f29e311fbe0d96b680ea2ab34..bc3d4d368e9a4bced3a3927380fab75de047b655 100644 (file)
@@ -203,14 +203,14 @@ Number Vector<Number>::norm_sqr () const
                 eptr = ptr + (dim/4)*4;
   while (ptr!=eptr)
     {
-      sum0 += sqr(*ptr++);
-      sum1 += sqr(*ptr++);
-      sum2 += sqr(*ptr++);
-      sum3 += sqr(*ptr++);
+      sum0 += ::sqr(*ptr++);
+      sum1 += ::sqr(*ptr++);
+      sum2 += ::sqr(*ptr++);
+      sum3 += ::sqr(*ptr++);
     };
                                   // add up remaining elements
   while (ptr != end())
-    sum0 += sqr(*ptr++);
+    sum0 += ::sqr(*ptr++);
   
   return sum0+sum1+sum2+sum3;
 };
index 896ea377135a5fc37977130a470d12b16c8ac0c0..aa7c21f77d42f1cdb994272f3a183e58f2b8c7c1 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <base/subscriptor.h>
 #include <base/logstream.h>
+#include <lac/vector.h>
 
 #include <vector>
 
@@ -32,7 +33,7 @@
  * sophisticated management of vectors. One of these has to be
  * applied by the user according to his needs.
  */
-template<class Vector = Vector<double> >
+template<class Vector = ::Vector<double> >
 class VectorMemory : public Subscriptor
 {
   public:
@@ -72,7 +73,7 @@ class VectorMemory : public Subscriptor
  * vectors as needed from the global heap, i.e. performs no
  * specially adapted actions to the purpose of this class.
  */
-template<class Vector = Vector<double> >
+template<class Vector = ::Vector<double> >
 class PrimitiveVectorMemory : public VectorMemory<Vector>
 {
   public:
@@ -108,7 +109,7 @@ class PrimitiveVectorMemory : public VectorMemory<Vector>
  * 
  * @author Guido Kanschat, 1999
  */
-template<class Vector = Vector<double> >
+template<class Vector = ::Vector<double> >
 class GrowingVectorMemory : public VectorMemory<Vector>
 {
   public:
@@ -151,12 +152,12 @@ class GrowingVectorMemory : public VectorMemory<Vector>
                                      * vector is used, second the
                                      * vector itself.
                                      */
-    typedef std::pair<bool, Vector* > entry_type;
+    typedef typename std::pair<bool, Vector* > entry_type;
 
                                     /**
                                      * Array of allocated vectors.
                                      */
-    std::vector<entry_type> pool;
+    typename std::vector<entry_type> pool;
     
                                     /**
                                      * Overall number of allocations.
@@ -168,7 +169,7 @@ class GrowingVectorMemory : public VectorMemory<Vector>
 /* --------------------- inline functions ---------------------- */
 
 
-template<typename Vector>
+template <typename Vector>
 GrowingVectorMemory<Vector>::GrowingVectorMemory(const unsigned int initial_size)
                : pool(initial_size)
 {
index 199a68311a0dfdcdb94c73b8a7ef58d64701b74c..af01bed87e3ddb8c9b6561ac82bea19439f672e4 100644 (file)
@@ -107,7 +107,7 @@ FullMatrix<double>::invert (const FullMatrix<double> &M)
   double* s = new double[dim_range];
   
   double* matrix = new double[dim_range*dim_range];
-  copy (&M.val[0], &M.val[dim_image*dim_range], matrix);
+  std::copy (&M.val[0], &M.val[dim_image*dim_range], matrix);
   
 
   int erg = dgelss_ (&dim_range, &dim_range, &dim_range,
@@ -125,9 +125,9 @@ FullMatrix<double>::invert (const FullMatrix<double> &M)
 //  double condition = s[0]/s[dim_range-1];
   
   if (info!=0)
-    deallog << "inverting error " << info << ' ' << erg << std::endl;
+    deallog << "inverting error " << info << ' ' << erg << endl;
   if (rank<(int)dim_range)
-    deallog << "rank deficiency " << rank << std::endl;
+    deallog << "rank deficiency " << rank << endl;
   delete[] work;
   delete[] s;
   delete[] matrix;
index cb90d282645531ff473f7f0171b3841a441dc069..1d41dfa12f8fc29a303cb85e12300fd32fe983f1 100644 (file)
@@ -19,7 +19,7 @@
 #include <algorithm>
 #include <cmath>
 #include <numeric>
-
+#include <functional>
 
 
 const unsigned int SparsityPattern::invalid_entry;

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.