]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Changes and conditional compilations to make the library work with gcc2.95.1
authorcvs <cvs@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 19 Oct 1999 12:28:01 +0000 (12:28 +0000)
committercvs <cvs@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 19 Oct 1999 12:28:01 +0000 (12:28 +0000)
git-svn-id: https://svn.dealii.org/trunk@1781 0785d39b-7218-0410-832d-ea1e28bc413d

14 files changed:
deal.II/base/include/base/data_out_base.h
deal.II/base/include/base/tensor_base.h
deal.II/deal.II/include/dofs/dof_handler.h
deal.II/deal.II/include/dofs/mg_dof_handler.h
deal.II/deal.II/include/fe/fe.h
deal.II/deal.II/include/grid/grid_out.h
deal.II/deal.II/include/grid/intergrid_map.h
deal.II/deal.II/include/grid/tria.h
deal.II/deal.II/include/multigrid/mg_dof_handler.h
deal.II/deal.II/source/dofs/mg_dof_accessor.cc
deal.II/deal.II/source/grid/grid_out.cc
deal.II/deal.II/source/grid/intergrid_map.cc
deal.II/deal.II/source/multigrid/mg_dof_accessor.cc
deal.II/deal.II/source/numerics/histogram.cc

index 9a3c39b4c3bb550318ba0cbc3eb2f238be8709dc..f459eb677fec886ca0e32b64c196e4246a4a1ac8 100644 (file)
@@ -250,7 +250,11 @@ class DataOutBase
                                          * is the same as for cells
                                          * in the triangulation.
                                          */
+#if ! ((__GNUC__==2) && (__GNUC_MINOR__==95))  
        Point<dim> vertices[GeometryInfo<dim>::vertices_per_cell];
+#else
+       Point<dim> vertices[1<<dim];
+#endif
        
                                         /**
                                          * Number of subdivisions with
index ef005b9ab39a2ce5e2f936f2ace98ffcc732d40a..885df4763205e4c592cd9276fda0f244fc521863 100644 (file)
@@ -59,6 +59,7 @@ class Tensor<1,dim> {
                                      */
     static const unsigned int rank      = 1;
 
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)  
                                     /**
                                      * Unnecessary variable, only used in
                                      * the declaration of #array_type#.
@@ -67,7 +68,7 @@ class Tensor<1,dim> {
                                      * we need it presently.
                                      */
     static const unsigned int array_size = ((dim!=0) ? (dim) : 1);
-    
+
                                     /**
                                      * Declare an array type which can
                                      * be used to initialize statically
@@ -77,7 +78,19 @@ class Tensor<1,dim> {
                                      * as in the #TensorBase<1,dim># class.
                                      */
     typedef double array_type[array_size];
+#else
 
+                                    /**
+                                     * Declare an array type which can
+                                     * be used to initialize statically
+                                     * an object of this type.
+                                     *
+                                     * Use the same condition for #dim==0#
+                                     * as in the #TensorBase<1,dim># class.
+                                     */
+    typedef double array_type[(dim!=0) ? dim : 1];
+#endif
+    
                                     /**
                                      * Constructor. Initialize all entries
                                      * to zero if #initialize==true#; this
index d0c85d98252b85805e1c29baa4214ef72eaf886e..95d9bfd3bb534fd3d9cfe1c0df984faed4b59e79 100644 (file)
@@ -1435,9 +1435,19 @@ class DoFHandler  :  public Subscriptor,
     vector<int>               vertex_dofs;
     
     
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)
+                                    // this seems to be disallowed
+                                    // by the standard, so gcc2.95
+                                    // does not accept it
     friend class DoFObjectAccessor<1, dim>;
     friend class DoFObjectAccessor<2, dim>;
     friend class DoFObjectAccessor<3, dim>;
+#else
+                                    // this, however, may grant
+                                    // access to too many classes,
+                                    // but ...
+    template <int dim1, int dim2> friend class DoFObjectAccessor;
+#endif
 };
 
 
index db852371c7052a419961e55254a3070b702a8f72..22705878e54c43b4131de65e6318f7a1f5f76af7 100644 (file)
@@ -958,9 +958,19 @@ class MGDoFHandler
                                      */
     vector<unsigned int>      mg_used_dofs;
 
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)  
+                                    // this seems to be disallowed
+                                    // by the standard, so gcc2.95
+                                    // does not accept it
     friend class MGDoFObjectAccessor<1, dim>;
     friend class MGDoFObjectAccessor<2, dim>;
     friend class MGDoFObjectAccessor<3, dim>;
+#else
+                                    // this, however, may grant
+                                    // access to too many classes,
+                                    // but ...
+    template <int dim1, int dim2> friend class MGDoFObjectAccessor;
+#endif
 };
 
     
index c1161292d00effd00847dce107d9e9fe87cac435..e609614da3309532ed5ad456e36d30f282ce5f33 100644 (file)
@@ -420,7 +420,11 @@ class FiniteElementBase : public Subscriptor,
                                      * matrix are discarded and will not fill
                                      * up the transfer matrix.
                                      */
+#if !((__GNUC__==2) && (__GNUC_MINOR__==95))
     FullMatrix<double> restriction[GeometryInfo<dim>::children_per_cell];
+#else
+    FullMatrix<double> restriction[1 << dim];
+#endif
 
                                     /**
                                      * Have #N=2^dim# matrices keeping the
@@ -458,7 +462,11 @@ class FiniteElementBase : public Subscriptor,
                                      * matrix are discarded and will not fill
                                      * up the transfer matrix.
                                      */
+#if ! ((__GNUC__==2) && (__GNUC_MINOR__==95))
     FullMatrix<double> prolongation[GeometryInfo<dim>::children_per_cell];
+#else
+    FullMatrix<double> prolongation[1 << dim];
+#endif
 
                                     /**
                                      * Specify the constraints which the
index 8bcbf341b25c4847bc04b7ab92b8f04d0146c8b9..4e688c6cc12f127a4d2032dc274129c714117a37 100644 (file)
@@ -316,12 +316,14 @@ class GridOut
     struct EpsFlags : public EpsFlagsBase 
     {};
 
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)
+
                                     /**
                                      * Flags specific to the output of
                                      * grids in three space dimensions.
                                      */
     template <>
-    struct EpsFlags<3> : public EpsFlagsBase 
+    struct EpsFlags<3> : public EpsFlagsBase
     {
                                         /**
                                          * Angle of the line origin-viewer
@@ -355,6 +357,9 @@ class GridOut
                        azimut_angle (azimut_angle),
                        turn_angle (turn_angle)      {};
     };
+#else
+#   warning Not implemented for gcc2.95
+#endif
     
        
     
index 6233332d0b1e38912027a7591d8a301c9e1f3e17..95bd7cd45ba18f7d9e4dbbc2ea60e6276b372bfe 100644 (file)
@@ -99,12 +99,32 @@ template <template <int> class GridClass, int dim>
 class InterGridMap 
 {
   public:
+
+#if (__GNUC__==2) && (__GNUC_MINOR__==95)
+                                    // helper class
+    struct GridClass_dim : public GridClass<dim> {
+                                        // constructor. will
+                                        // not be implemented,
+                                        // but suppresses compiler
+                                        // warning about non-default
+                                        // constructor of GridClass
+       GridClass_dim ();
+    };
+    
                                     /**
                                      * Typedef to the iterator type of
                                      * the grid class under consideration.
                                      */
-    typedef typename GridClass<dim>::cell_iterator cell_iterator;
+    typedef typename GridClass_dim::cell_iterator cell_iterator;
 
+#else
+
+                                    /**
+                                     * Typedef to the iterator type of
+                                     * the grid class under consideration.
+                                     */
+    typedef typename GridClass<dim>::cell_iterator cell_iterator;
+#endif
                                     /**
                                      * Create the mapping between the two
                                      * grids.
index 92bd59d28cb04eceac7dddc1fc9eba11d37c7c22..3d4484f8766d06ce37207860dc924071d3538806 100644 (file)
@@ -54,7 +54,11 @@ enum MeshSmoothing {
  */
 template <int dim>
 struct CellData {
+#if !((__GNUC__==2) && (__GNUC_MINOR__==95))
     int           vertices[GeometryInfo<dim>::vertices_per_cell];
+#else
+    int           vertices[1 << dim];
+#endif
     unsigned char material_id;
 };
 
@@ -3202,11 +3206,24 @@ class Triangulation
     TriaNumberCache<dim>             number_cache;
     
                                     // Friendship includes local classes.
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)
+                                    // this seems to be disallowed
+                                    // by the standard, so gcc2.95
+                                    // does not accept it
     friend class TriaAccessor<dim>;
     friend class TriaObjectAccessor<1, dim>;
     friend class TriaObjectAccessor<2, dim>;
     friend class TriaObjectAccessor<3, dim>;
-
+#else
+                                    // this, however, may grant
+                                    // access to too many classes,
+                                    // but ...
+    template <int dim1> friend class TriaAccessor;
+
+    template <int dim1, int dim2>
+    friend class TriaObjectAccessor;
+#endif
+    
     friend class CellAccessor<dim>;
     
     friend class TriaRawIterator<1,TriaObjectAccessor<1, 1> >;
index db852371c7052a419961e55254a3070b702a8f72..22705878e54c43b4131de65e6318f7a1f5f76af7 100644 (file)
@@ -958,9 +958,19 @@ class MGDoFHandler
                                      */
     vector<unsigned int>      mg_used_dofs;
 
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)  
+                                    // this seems to be disallowed
+                                    // by the standard, so gcc2.95
+                                    // does not accept it
     friend class MGDoFObjectAccessor<1, dim>;
     friend class MGDoFObjectAccessor<2, dim>;
     friend class MGDoFObjectAccessor<3, dim>;
+#else
+                                    // this, however, may grant
+                                    // access to too many classes,
+                                    // but ...
+    template <int dim1, int dim2> friend class MGDoFObjectAccessor;
+#endif
 };
 
     
index fe308761e7858e4253bf9aa454502a8c2f31a0d2..8a6445e5febfd87cc2155767cae2b49660e952c5 100644 (file)
@@ -33,11 +33,11 @@ MGDoFObjectAccessor<1, dim>::MGDoFObjectAccessor (Triangulation<dim> *tria,
 
 template <int dim>
 int MGDoFObjectAccessor<1, dim>::mg_dof_index (const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_line,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_line));
 
@@ -52,11 +52,11 @@ int MGDoFObjectAccessor<1, dim>::mg_dof_index (const unsigned int i) const {
 template <int dim>
 void MGDoFObjectAccessor<1, dim>::set_mg_dof_index (const unsigned int i,
                                                         const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_line,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_line));
 
@@ -70,9 +70,9 @@ void MGDoFObjectAccessor<1, dim>::set_mg_dof_index (const unsigned int i,
 template <int dim>
 int MGDoFObjectAccessor<1, dim>::mg_vertex_dof_index (const unsigned int vertex,
                                                           const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<2, ExcIndexRange (i,0,2));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -87,9 +87,9 @@ template <int dim>
 void MGDoFObjectAccessor<1, dim>::set_mg_vertex_dof_index (const unsigned int vertex,
                                                                const unsigned int i,
                                                                const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<2, ExcIndexRange (i,0,2));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -103,9 +103,9 @@ void MGDoFObjectAccessor<1, dim>::set_mg_vertex_dof_index (const unsigned int ve
 template <int dim>
 void
 MGDoFObjectAccessor<1, dim>::get_mg_dof_indices (vector<int> &dof_indices) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (dof_indices.size() == (2*dof_handler->get_fe().dofs_per_vertex +
                                 dof_handler->get_fe().dofs_per_line),
          DoFAccessor<dim>::ExcVectorDoesNotMatch());
@@ -166,11 +166,11 @@ MGDoFObjectAccessor<2, dim>::MGDoFObjectAccessor (Triangulation<dim> *tria,
 template <int dim>
 inline
 int MGDoFObjectAccessor<2, dim>::mg_dof_index (const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_quad,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_quad));
 
@@ -183,11 +183,11 @@ int MGDoFObjectAccessor<2, dim>::mg_dof_index (const unsigned int i) const {
 template <int dim>
 void MGDoFObjectAccessor<2, dim>::set_mg_dof_index (const unsigned int i,
                                                         const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_quad,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_quad));
 
@@ -201,9 +201,9 @@ template <int dim>
 inline
 int MGDoFObjectAccessor<2, dim>::mg_vertex_dof_index (const unsigned int vertex,
                                                           const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<4, ExcIndexRange (i,0,4));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -218,9 +218,9 @@ template <int dim>
 void MGDoFObjectAccessor<2, dim>::set_mg_vertex_dof_index (const unsigned int vertex,
                                                                const unsigned int i,
                                                                const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<4, ExcIndexRange (i,0,4));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -234,9 +234,9 @@ void MGDoFObjectAccessor<2, dim>::set_mg_vertex_dof_index (const unsigned int ve
 template <int dim>
 void
 MGDoFObjectAccessor<2, dim>::get_mg_dof_indices (vector<int> &dof_indices) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (dof_indices.size() == (4*dof_handler->get_fe().dofs_per_vertex +
                                 4*dof_handler->get_fe().dofs_per_line +
                                 dof_handler->get_fe().dofs_per_quad),
@@ -316,11 +316,11 @@ MGDoFObjectAccessor<3, dim>::MGDoFObjectAccessor (Triangulation<dim> *tria,
 template <int dim>
 inline
 int MGDoFObjectAccessor<3, dim>::mg_dof_index (const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_hex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_hex));
 
@@ -333,11 +333,11 @@ int MGDoFObjectAccessor<3, dim>::mg_dof_index (const unsigned int i) const {
 template <int dim>
 void MGDoFObjectAccessor<3, dim>::set_mg_dof_index (const unsigned int i,
                                                        const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_hex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_hex));
 
@@ -351,9 +351,9 @@ template <int dim>
 inline
 int MGDoFObjectAccessor<3, dim>::mg_vertex_dof_index (const unsigned int vertex,
                                                          const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<8, ExcIndexRange (i,0,8));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -368,9 +368,9 @@ template <int dim>
 void MGDoFObjectAccessor<3, dim>::set_mg_vertex_dof_index (const unsigned int vertex,
                                                               const unsigned int i,
                                                               const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<4, ExcIndexRange (i,0,4));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -384,9 +384,9 @@ void MGDoFObjectAccessor<3, dim>::set_mg_vertex_dof_index (const unsigned int ve
 template <int dim>
 void
 MGDoFObjectAccessor<3, dim>::get_mg_dof_indices (vector<int> &dof_indices) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (dof_indices.size() == (8*dof_handler->get_fe().dofs_per_vertex +
                                 12*dof_handler->get_fe().dofs_per_line +
                                 6*dof_handler->get_fe().dofs_per_quad +
@@ -525,9 +525,9 @@ template <>
 void
 MGDoFCellAccessor<1>::get_mg_dof_values (const Vector<double> &values,
                                         Vector<double>       &dof_values) const {
-  Assert (dof_handler != 0, DoFAccessor<1>::ExcInvalidObject());
-  Assert (mg_dof_handler != 0, DoFAccessor<1>::ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, DoFAccessor<1>::ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<1>::DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<1>::DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<1>::DoFAccessor<dim>::ExcInvalidObject());
   Assert (dof_values.size() == dof_handler->get_fe().total_dofs,
          ExcVectorDoesNotMatch());
   Assert (values.size() == dof_handler->n_dofs(),
index a2773d65d4df9f9f79289df393bdceee7dbb1f93..475ea2788213326d9664a940d988032cd3dea123 100644 (file)
@@ -366,8 +366,14 @@ void GridOut::write_eps (const Triangulation<dim> &tria,
                                         // is in direction of the viewer, but
                                         // I am too tired at present to fix
                                         // this
+#if !((__GNUC__==2) && (__GNUC_MINOR__==95))
        const double z_angle    = eps_flags_3.azimut_angle;
        const double turn_angle = eps_flags_3.turn_angle;
+#else
+#   warning Not implemented for gcc2.95
+       const double z_angle    = 60;
+       const double turn_angle = 30;
+#endif
        const double pi = 3.1415926536;
        const Point<dim> view_direction(-sin(z_angle * 2.*pi / 360.) * sin(turn_angle * 2.*pi / 360.),
                                        +sin(z_angle * 2.*pi / 360.) * cos(turn_angle * 2.*pi / 360.),
index a0af3fd4ff30c8834ebf5d0cc201a1b311c407b5..9884daa8a8be9c5db66971c9a04ef1286447ac36 100644 (file)
@@ -11,7 +11,6 @@
 
 
 
-
 // helper function to aquire the number of levels within a grid
 template <class GridClass>
 unsigned int
index fe308761e7858e4253bf9aa454502a8c2f31a0d2..8a6445e5febfd87cc2155767cae2b49660e952c5 100644 (file)
@@ -33,11 +33,11 @@ MGDoFObjectAccessor<1, dim>::MGDoFObjectAccessor (Triangulation<dim> *tria,
 
 template <int dim>
 int MGDoFObjectAccessor<1, dim>::mg_dof_index (const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_line,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_line));
 
@@ -52,11 +52,11 @@ int MGDoFObjectAccessor<1, dim>::mg_dof_index (const unsigned int i) const {
 template <int dim>
 void MGDoFObjectAccessor<1, dim>::set_mg_dof_index (const unsigned int i,
                                                         const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_line,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_line));
 
@@ -70,9 +70,9 @@ void MGDoFObjectAccessor<1, dim>::set_mg_dof_index (const unsigned int i,
 template <int dim>
 int MGDoFObjectAccessor<1, dim>::mg_vertex_dof_index (const unsigned int vertex,
                                                           const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<2, ExcIndexRange (i,0,2));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -87,9 +87,9 @@ template <int dim>
 void MGDoFObjectAccessor<1, dim>::set_mg_vertex_dof_index (const unsigned int vertex,
                                                                const unsigned int i,
                                                                const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<2, ExcIndexRange (i,0,2));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -103,9 +103,9 @@ void MGDoFObjectAccessor<1, dim>::set_mg_vertex_dof_index (const unsigned int ve
 template <int dim>
 void
 MGDoFObjectAccessor<1, dim>::get_mg_dof_indices (vector<int> &dof_indices) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (dof_indices.size() == (2*dof_handler->get_fe().dofs_per_vertex +
                                 dof_handler->get_fe().dofs_per_line),
          DoFAccessor<dim>::ExcVectorDoesNotMatch());
@@ -166,11 +166,11 @@ MGDoFObjectAccessor<2, dim>::MGDoFObjectAccessor (Triangulation<dim> *tria,
 template <int dim>
 inline
 int MGDoFObjectAccessor<2, dim>::mg_dof_index (const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_quad,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_quad));
 
@@ -183,11 +183,11 @@ int MGDoFObjectAccessor<2, dim>::mg_dof_index (const unsigned int i) const {
 template <int dim>
 void MGDoFObjectAccessor<2, dim>::set_mg_dof_index (const unsigned int i,
                                                         const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_quad,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_quad));
 
@@ -201,9 +201,9 @@ template <int dim>
 inline
 int MGDoFObjectAccessor<2, dim>::mg_vertex_dof_index (const unsigned int vertex,
                                                           const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<4, ExcIndexRange (i,0,4));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -218,9 +218,9 @@ template <int dim>
 void MGDoFObjectAccessor<2, dim>::set_mg_vertex_dof_index (const unsigned int vertex,
                                                                const unsigned int i,
                                                                const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<4, ExcIndexRange (i,0,4));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -234,9 +234,9 @@ void MGDoFObjectAccessor<2, dim>::set_mg_vertex_dof_index (const unsigned int ve
 template <int dim>
 void
 MGDoFObjectAccessor<2, dim>::get_mg_dof_indices (vector<int> &dof_indices) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (dof_indices.size() == (4*dof_handler->get_fe().dofs_per_vertex +
                                 4*dof_handler->get_fe().dofs_per_line +
                                 dof_handler->get_fe().dofs_per_quad),
@@ -316,11 +316,11 @@ MGDoFObjectAccessor<3, dim>::MGDoFObjectAccessor (Triangulation<dim> *tria,
 template <int dim>
 inline
 int MGDoFObjectAccessor<3, dim>::mg_dof_index (const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_hex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_hex));
 
@@ -333,11 +333,11 @@ int MGDoFObjectAccessor<3, dim>::mg_dof_index (const unsigned int i) const {
 template <int dim>
 void MGDoFObjectAccessor<3, dim>::set_mg_dof_index (const unsigned int i,
                                                        const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
                                   // make sure a FE has been selected
                                   // and enough room was reserved
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (i<dof_handler->get_fe().dofs_per_hex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_hex));
 
@@ -351,9 +351,9 @@ template <int dim>
 inline
 int MGDoFObjectAccessor<3, dim>::mg_vertex_dof_index (const unsigned int vertex,
                                                          const unsigned int i) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<8, ExcIndexRange (i,0,8));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -368,9 +368,9 @@ template <int dim>
 void MGDoFObjectAccessor<3, dim>::set_mg_vertex_dof_index (const unsigned int vertex,
                                                               const unsigned int i,
                                                               const int index) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (vertex<4, ExcIndexRange (i,0,4));
   Assert (i<dof_handler->get_fe().dofs_per_vertex,
          ExcIndexRange (i, 0, dof_handler->get_fe().dofs_per_vertex));
@@ -384,9 +384,9 @@ void MGDoFObjectAccessor<3, dim>::set_mg_vertex_dof_index (const unsigned int ve
 template <int dim>
 void
 MGDoFObjectAccessor<3, dim>::get_mg_dof_indices (vector<int> &dof_indices) const {
-  Assert (dof_handler != 0, ExcInvalidObject());
-  Assert (mg_dof_handler != 0, ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<dim>::ExcInvalidObject());
   Assert (dof_indices.size() == (8*dof_handler->get_fe().dofs_per_vertex +
                                 12*dof_handler->get_fe().dofs_per_line +
                                 6*dof_handler->get_fe().dofs_per_quad +
@@ -525,9 +525,9 @@ template <>
 void
 MGDoFCellAccessor<1>::get_mg_dof_values (const Vector<double> &values,
                                         Vector<double>       &dof_values) const {
-  Assert (dof_handler != 0, DoFAccessor<1>::ExcInvalidObject());
-  Assert (mg_dof_handler != 0, DoFAccessor<1>::ExcInvalidObject());
-  Assert (&dof_handler->get_fe() != 0, DoFAccessor<1>::ExcInvalidObject());
+  Assert (dof_handler != 0, DoFAccessor<1>::DoFAccessor<dim>::ExcInvalidObject());
+  Assert (mg_dof_handler != 0, DoFAccessor<1>::DoFAccessor<dim>::ExcInvalidObject());
+  Assert (&dof_handler->get_fe() != 0, DoFAccessor<1>::DoFAccessor<dim>::ExcInvalidObject());
   Assert (dof_values.size() == dof_handler->get_fe().total_dofs,
          ExcVectorDoesNotMatch());
   Assert (values.size() == dof_handler->n_dofs(),
index 09a46ebdc0181fdeecbd224313fa07ac6809b4c1..71c9d9aefa9d12b8e30d407cb9d9f9899d19926d 100644 (file)
@@ -72,41 +72,58 @@ void Histogram::evaluate (const vector<Vector<number> > &values,
       case logarithmic:
            min_value = *min_element(values[0].begin(),
                                     values[0].end(),
-                                                                     // for gcc2.95
-//                                  &Histogram::template logarithmic_less<number>);
-                                                                     // for egcs1.1.2
-                                    &logarithmic_less<number>);
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)
+                                    &logarithmic_less<number>
+#else
+                                    &Histogram::template logarithmic_less<number>
+#endif
+           );
+           
            max_value = *max_element(values[0].begin(),
                                     values[0].end(),
-                                                                     // for gcc2.95
-//                                  &Histogram::template logarithmic_less<number>);
-                                                                     // for egcs1.1.2
-                                    &logarithmic_less<number>);
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)
+                                    &logarithmic_less<number>
+#else
+                                    &Histogram::template logarithmic_less<number>
+#endif
+           );
+           
 
            for (unsigned int i=1; i<values.size(); ++i)
              {
                min_value = min (min_value,
                                 *min_element(values[i].begin(),
                                              values[i].end(),
-                                                                     // for gcc2.95
-//                                           &Histogram::template logarithmic_less<number>);
-                                                                     // for egcs1.1.2
-                                             &logarithmic_less<number>),
-                                                                     // for gcc2.95
-//                                  &Histogram::template logarithmic_less<number>);
-                                                                     // for egcs1.1.2
-                                &logarithmic_less<number>);
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)
+                                             &logarithmic_less<number>
+#else
+                                             &Histogram::template logarithmic_less<number>
+#endif
+                                ),
+
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)
+                                &logarithmic_less<number>
+#else
+                                &Histogram::template logarithmic_less<number>
+#endif
+               );
+
                max_value = max (max_value,
                                 *max_element(values[i].begin(),
                                              values[i].end(),
-                                                                     // for gcc2.95
-//                                           &Histogram::template logarithmic_less<number>);
-                                                                     // for egcs1.1.2
-                                             &logarithmic_less<number>),
-                                                                     // for gcc2.95
-//                              &Histogram::template logarithmic_less<number>);
-                                                                     // for egcs1.1.2
-                                &logarithmic_less<number>);
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)
+                                             &logarithmic_less<number>
+#else
+                                             &Histogram::template logarithmic_less<number>
+#endif
+                                ),
+
+#if (__GNUC__==2) && (__GNUC_MINOR__ < 95)
+                                &logarithmic_less<number>
+#else
+                                &Histogram::template logarithmic_less<number>
+#endif
+               );
              };
            
            break;

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.