]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
add two functions for writing and reading all flags.
authorhartmann <hartmann@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 24 Nov 1999 12:37:44 +0000 (12:37 +0000)
committerhartmann <hartmann@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 24 Nov 1999 12:37:44 +0000 (12:37 +0000)
git-svn-id: https://svn.dealii.org/trunk@1941 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/grid/persistent_tria.h
deal.II/deal.II/source/grid/persistent_tria.cc

index cfc7700e9f86731f479096140cca3e6eccd4ff15..3b824a7b0e72b214c0aeb7bb54a91d561e0b3653 100644 (file)
@@ -171,23 +171,21 @@ class PersistentTriangulation : public Triangulation<dim>
                                      * is not useful in the context of this
                                      * class.
                                      */
-    virtual void block_write (ostream &out) const;
+    virtual void create_triangulation (const vector<Point<dim> >    &vertices,
+                                      const vector<CellData<dim> > &cells,
+                                      const SubCellData            &subcelldata);
 
                                     /**
-                                     * Throw an error, since this function
-                                     * is not useful in the context of this
-                                     * class.
+                                     * Writes all refine flag to the ostream
+                                     * #out#.
                                      */
-    virtual void block_read (istream &in);
+    virtual void write_flags(ostream &out) const;
 
                                     /**
-                                     * Throw an error, since this function
-                                     * is not useful in the context of this
-                                     * class.
+                                     * Loads all refine flags that previously
+                                     * were written by #save_refine_flags(...)#.
                                      */
-    virtual void create_triangulation (const vector<Point<dim> >    &vertices,
-                                      const vector<CellData<dim> > &cells,
-                                      const SubCellData            &subcelldata);
+    virtual void read_flags(istream &in);
 
                                     /**
                                      * Exception.
index 520325c2fcb9ac26ad4a7078192cb0ac47776849..2d37deb6f8cf8dac132a0b9d1c29673902a95e39 100644 (file)
@@ -1,6 +1,8 @@
 /* $Id$ */
 
 #include <grid/persistent_tria.h>
+#include <basic/magic_numbers.h>
+#include <iostream>
 
 
 template <int dim>
@@ -82,10 +84,11 @@ PersistentTriangulation<dim>::copy_triangulation (const Triangulation<dim> &old_
 };
 
 
-
 template <int dim>
 void
-PersistentTriangulation<dim>::block_write (ostream &) const 
+PersistentTriangulation<dim>::create_triangulation (const vector<Point<dim> >    &,
+                                                   const vector<CellData<dim> > &,
+                                                   const SubCellData            &)
 {
   Assert (false, ExcFunctionNotUseful());
 };
@@ -94,23 +97,58 @@ PersistentTriangulation<dim>::block_write (ostream &) const
 
 template <int dim>
 void
-PersistentTriangulation<dim>::block_read (istream &)
+PersistentTriangulation<dim>::write_flags(ostream &out) const
 {
-  Assert (false, ExcFunctionNotUseful());
-};
+  const unsigned int n_flag_levels=refine_flags.size();
+  
+  AssertThrow (out, ExcIO());
+
+  out << mn_persistent_tria_flags_begin << ' ' << n_flag_levels << endl;
+
+  for (unsigned int i=0; i<n_flag_levels; ++i)
+    {
+      write_bool_vector (mn_tria_refine_flags_begin, refine_flags[i],
+                        mn_tria_refine_flags_end, out);
+      write_bool_vector (mn_tria_coarsen_flags_begin, coarsen_flags[i],
+                        mn_tria_coarsen_flags_end, out);
+    }
+  
+  out << mn_persistent_tria_flags_end << endl;
+
+  AssertThrow (out, ExcIO());
+}
 
 
 
 template <int dim>
 void
-PersistentTriangulation<dim>::create_triangulation (const vector<Point<dim> >    &,
-                                                   const vector<CellData<dim> > &,
-                                                   const SubCellData            &)
+PersistentTriangulation<dim>::read_flags(istream &in)
 {
-  Assert (false, ExcFunctionNotUseful());
-};
+  Assert(refine_flags.size()==0 && coarsen_flags.size()==0, ExcTriaNotEmpty());
 
+  AssertThrow (in, ExcIO());
 
+  unsigned int magic_number;
+  in >> magic_number;
+  AssertThrow(magic_number==mn_persistent_tria_flags_begin, ExcGridReadError());
+
+  unsigned int n_flag_levels;
+  in >> n_flag_levels;
+  for (unsigned int i=0; i<n_flag_levels; ++i)
+    {
+      refine_flags.push_back (vector<bool>());
+      coarsen_flags.push_back (vector<bool>());
+      read_bool_vector (mn_tria_refine_flags_begin, refine_flags.back(),
+                       mn_tria_refine_flags_end, in);
+      read_bool_vector (mn_tria_coarsen_flags_begin, coarsen_flags.back(),
+                       mn_tria_coarsen_flags_end, in);
+    }
+  
+  in >> magic_number;
+  AssertThrow(magic_number==mn_persistent_tria_flags_end, ExcGridReadError());
+
+  AssertThrow (in, ExcIO());
+}
 
 
 // explicit instantiations

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.