From 3ca32c761ac36d39ba0c4c275e325feb47162e9b Mon Sep 17 00:00:00 2001 From: hartmann Date: Wed, 24 Nov 1999 12:37:44 +0000 Subject: [PATCH] add two functions for writing and reading all flags. git-svn-id: https://svn.dealii.org/trunk@1941 0785d39b-7218-0410-832d-ea1e28bc413d --- .../deal.II/include/grid/persistent_tria.h | 20 +++---- .../deal.II/source/grid/persistent_tria.cc | 58 +++++++++++++++---- 2 files changed, 57 insertions(+), 21 deletions(-) diff --git a/deal.II/deal.II/include/grid/persistent_tria.h b/deal.II/deal.II/include/grid/persistent_tria.h index cfc7700e9f..3b824a7b0e 100644 --- a/deal.II/deal.II/include/grid/persistent_tria.h +++ b/deal.II/deal.II/include/grid/persistent_tria.h @@ -171,23 +171,21 @@ class PersistentTriangulation : public Triangulation * is not useful in the context of this * class. */ - virtual void block_write (ostream &out) const; + virtual void create_triangulation (const vector > &vertices, + const vector > &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 > &vertices, - const vector > &cells, - const SubCellData &subcelldata); + virtual void read_flags(istream &in); /** * Exception. diff --git a/deal.II/deal.II/source/grid/persistent_tria.cc b/deal.II/deal.II/source/grid/persistent_tria.cc index 520325c2fc..2d37deb6f8 100644 --- a/deal.II/deal.II/source/grid/persistent_tria.cc +++ b/deal.II/deal.II/source/grid/persistent_tria.cc @@ -1,6 +1,8 @@ /* $Id$ */ #include +#include +#include template @@ -82,10 +84,11 @@ PersistentTriangulation::copy_triangulation (const Triangulation &old_ }; - template void -PersistentTriangulation::block_write (ostream &) const +PersistentTriangulation::create_triangulation (const vector > &, + const vector > &, + const SubCellData &) { Assert (false, ExcFunctionNotUseful()); }; @@ -94,23 +97,58 @@ PersistentTriangulation::block_write (ostream &) const template void -PersistentTriangulation::block_read (istream &) +PersistentTriangulation::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 void -PersistentTriangulation::create_triangulation (const vector > &, - const vector > &, - const SubCellData &) +PersistentTriangulation::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()); + coarsen_flags.push_back (vector()); + 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 -- 2.39.5