From 735d8be7709b02f8a19d3678a73116a93f615122 Mon Sep 17 00:00:00 2001 From: wolf Date: Wed, 20 Apr 2005 22:19:35 +0000 Subject: [PATCH] Implement DataOutReader::merge git-svn-id: https://svn.dealii.org/trunk@10551 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/base/source/data_out_base.cc | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/deal.II/base/source/data_out_base.cc b/deal.II/base/source/data_out_base.cc index ef9d553b63..d7666f4e39 100644 --- a/deal.II/base/source/data_out_base.cc +++ b/deal.II/base/source/data_out_base.cc @@ -4640,6 +4640,50 @@ DataOutReader::read (std::istream &in) +template +void +DataOutReader:: +merge (const DataOutReader &source) +{ + typedef typename ::DataOutBase::Patch Patch; + + const std::vector source_patches = source.get_patches (); + Assert (patches.size () != 0, ExcNoPatches ()); + Assert (source_patches.size () != 0, ExcNoPatches ()); + // check equality of component + // names + Assert (get_dataset_names() == source.get_dataset_names(), + ExcIncompatibleDatasetNames()); + // make sure patches are compatible + Assert (patches[0].n_subdivisions == source_patches[0].n_subdivisions, + ExcIncompatiblePatchLists()); + Assert (patches[0].data.n_rows() == source_patches[0].data.n_rows(), + ExcIncompatiblePatchLists()); + Assert (patches[0].data.n_cols() == source_patches[0].data.n_cols(), + ExcIncompatiblePatchLists()); + + // merge patches. store old number + // of elements, since we need to + // adjust patch numbers, etc + // afterwards + const unsigned int old_n_patches = patches.size(); + patches.insert (patches.end(), + source_patches.begin(), + source_patches.end()); + + // adjust patch numbers + for (unsigned int i=old_n_patches; i::faces_per_cell; ++n) + if (patches[i].neighbors[n] != Patch::no_neighbor) + patches[i].neighbors[n] += old_n_patches; +} + + + template const std::vector > & DataOutReader::get_patches () const -- 2.39.5