From 5e3b53f42b7faefb09d8cbd519b1229d38edc14e Mon Sep 17 00:00:00 2001 From: wolf Date: Tue, 10 Aug 1999 13:10:39 +0000 Subject: [PATCH] Fix a long-standing bug with user flags being not stored in the right way. Some of the data was lost. git-svn-id: https://svn.dealii.org/trunk@1658 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/grid/tria.h | 8 ++++ deal.II/deal.II/source/grid/tria.cc | 74 +++++++++++++---------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/deal.II/deal.II/include/grid/tria.h b/deal.II/deal.II/include/grid/tria.h index 5da8eb673a..0e3b28771d 100644 --- a/deal.II/deal.II/include/grid/tria.h +++ b/deal.II/deal.II/include/grid/tria.h @@ -2066,6 +2066,8 @@ class Triangulation /** * Same as above, but store the flags to * a bitvector rather than to a file. + * The output vector is resized if + * necessary. */ void save_user_flags (vector &v) const; @@ -2089,6 +2091,8 @@ class Triangulation /** * Same as above, but store the flags to * a bitvector rather than to a file. + * The output vector is resized if + * necessary. */ void save_user_flags_line (vector &v) const; @@ -2110,6 +2114,8 @@ class Triangulation /** * Same as above, but store the flags to * a bitvector rather than to a file. + * The output vector is resized if + * necessary. */ void save_user_flags_quad (vector &v) const; @@ -2131,6 +2137,8 @@ class Triangulation /** * Same as above, but store the flags to * a bitvector rather than to a file. + * The output vector is resized if + * necessary. */ void save_user_flags_hex (vector &v) const; diff --git a/deal.II/deal.II/source/grid/tria.cc b/deal.II/deal.II/source/grid/tria.cc index 98e3785f8a..7d1fb653c5 100644 --- a/deal.II/deal.II/source/grid/tria.cc +++ b/deal.II/deal.II/source/grid/tria.cc @@ -1414,20 +1414,6 @@ void Triangulation<1>::clear_user_flags () { cell->clear_user_flag (); }; - - -template <> -void Triangulation<1>::save_user_flags (ostream &out) const { - save_user_flags_line (out); -}; - - - -template <> -void Triangulation<1>::save_user_flags (vector &v) const { - save_user_flags_line (v); -}; - #endif @@ -1462,22 +1448,6 @@ void Triangulation<2>::clear_user_flags () { }; - -template <> -void Triangulation<2>::save_user_flags (ostream &out) const { - save_user_flags_line (out); - save_user_flags_quad (out); -}; - - - -template <> -void Triangulation<2>::save_user_flags (vector &v) const { - save_user_flags_line (v); - save_user_flags_quad (v); -}; - - #endif @@ -1524,25 +1494,47 @@ void Triangulation<3>::clear_user_flags () { }; +#endif + -template <> -void Triangulation<3>::save_user_flags (ostream &out) const { + + +template +void Triangulation::save_user_flags (ostream &out) const { save_user_flags_line (out); - save_user_flags_quad (out); - save_user_flags_hex (out); + + if (dim>=2) + save_user_flags_quad (out); + + if (dim>=3) + save_user_flags_hex (out); }; -template <> -void Triangulation<3>::save_user_flags (vector &v) const { - save_user_flags_line (v); - save_user_flags_quad (v); - save_user_flags_hex (v); -}; +template +void Triangulation::save_user_flags (vector &v) const { + // clear vector and append + // all the stuff later on + v.clear (); + vector tmp; -#endif + save_user_flags_line (tmp); + v.insert (v.end(), tmp.begin(), tmp.end()); + + if (dim >= 2) + { + save_user_flags_quad (tmp); + v.insert (v.end(), tmp.begin(), tmp.end()); + }; + + if (dim >= 3) + { + save_user_flags_hex (tmp); + v.insert (v.end(), tmp.begin(), tmp.end()); + }; +}; -- 2.39.5