]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add Boost serialization function to CellData 8746/head
authorPeter Munch <peterrmuench@gmail.com>
Fri, 13 Sep 2019 05:55:21 +0000 (07:55 +0200)
committerPeter Munch <peterrmuench@gmail.com>
Fri, 13 Sep 2019 06:43:16 +0000 (08:43 +0200)
doc/news/changes/minor/20190913PeterMunch [new file with mode: 0644]
include/deal.II/grid/tria.h
tests/serialization/cell_data_1.cc [new file with mode: 0644]
tests/serialization/cell_data_1.output [new file with mode: 0644]

diff --git a/doc/news/changes/minor/20190913PeterMunch b/doc/news/changes/minor/20190913PeterMunch
new file mode 100644 (file)
index 0000000..3efa817
--- /dev/null
@@ -0,0 +1,3 @@
+New: Add Boost serialization function to CellData.
+<br>
+(Peter Munch, 2019/09/13)
index 7a65534303b91d24990412b2ec5bf67bbce61439..b47e65a82262bc60ee9e05ed8aa594ec04e3fc30 100644 (file)
@@ -191,6 +191,13 @@ struct CellData
    * - manifold id to numbers::flat_manifold_id
    */
   CellData();
+
+  /**
+   * Boost serialization function
+   */
+  template <class Archive>
+  void
+  serialize(Archive &ar, const unsigned int version);
 };
 
 
@@ -4123,6 +4130,17 @@ inline CellData<structdim>::CellData()
   manifold_id = numbers::flat_manifold_id;
 }
 
+template <int structdim>
+template <class Archive>
+void
+CellData<structdim>::serialize(Archive &ar, const unsigned int /*version*/)
+{
+  ar &vertices;
+  ar &material_id;
+  ar &boundary_id;
+  ar &manifold_id;
+}
+
 
 
 namespace internal
diff --git a/tests/serialization/cell_data_1.cc b/tests/serialization/cell_data_1.cc
new file mode 100644 (file)
index 0000000..472d63d
--- /dev/null
@@ -0,0 +1,105 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2019 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+
+// check serialization for CellData<structdim>
+
+#include <deal.II/grid/tria.h>
+
+#include <boost/serialization/vector.hpp>
+
+#include "serialization.h"
+
+namespace dealii
+{
+  template <int structdim>
+  bool
+  operator==(const CellData<structdim> &t1, const CellData<structdim> &t2)
+  {
+    for (unsigned int i = 0; i < GeometryInfo<structdim>::vertices_per_cell;
+         i++)
+      if (t1.vertices[i] != t2.vertices[i])
+        return false;
+
+    if (t1.material_id != t2.material_id)
+      return false;
+    if (t1.boundary_id != t2.boundary_id)
+      return false;
+    if (t1.manifold_id != t2.manifold_id)
+      return false;
+    return true;
+  }
+} // namespace dealii
+
+template <int structdim>
+void
+test()
+{
+  dealii::CellData<structdim> t1;
+
+  for (unsigned int i = 0; i < GeometryInfo<structdim>::vertices_per_cell; i++)
+    t1.vertices[i] = i;
+  t1.material_id = 0;
+  t1.boundary_id = 1;
+  t1.manifold_id = 2;
+
+  {
+    dealii::CellData<structdim> t2 = t1;
+    verify(t1, t2);
+  }
+
+  // test vertices
+  for (unsigned int i = 0; i < GeometryInfo<structdim>::vertices_per_cell; i++)
+    {
+      dealii::CellData<structdim> t2 = t1;
+      t2.vertices[i]++;
+      verify(t1, t2);
+    }
+
+  // test material_id
+  {
+    dealii::CellData<structdim> t2 = t1;
+    t2.material_id++;
+    verify(t1, t2);
+  }
+
+  // test boundary_id
+  {
+    dealii::CellData<structdim> t2 = t1;
+    t2.boundary_id++;
+    verify(t1, t2);
+  }
+
+  // test manifold_id
+  {
+    dealii::CellData<structdim> t2 = t1;
+    t2.manifold_id++;
+    verify(t1, t2);
+  }
+}
+
+
+int
+main()
+{
+  initlog();
+  deallog << std::setprecision(3);
+
+  test<1>();
+  test<2>();
+  test<3>();
+
+  deallog << "OK" << std::endl;
+}
diff --git a/tests/serialization/cell_data_1.output b/tests/serialization/cell_data_1.output
new file mode 100644 (file)
index 0000000..d290d61
--- /dev/null
@@ -0,0 +1,54 @@
+
+DEAL::0 0 2 0 1 1 1 2
+
+DEAL::0 0 2 0 1 1 1 2
+
+DEAL::0 0 2 0 1 1 1 2
+
+DEAL::0 0 2 0 1 1 1 2
+
+DEAL::0 0 2 0 1 1 1 2
+
+DEAL::0 0 2 0 1 1 1 2
+
+DEAL::0 0 4 0 1 2 3 1 1 2
+
+DEAL::0 0 4 0 1 2 3 1 1 2
+
+DEAL::0 0 4 0 1 2 3 1 1 2
+
+DEAL::0 0 4 0 1 2 3 1 1 2
+
+DEAL::0 0 4 0 1 2 3 1 1 2
+
+DEAL::0 0 4 0 1 2 3 1 1 2
+
+DEAL::0 0 4 0 1 2 3 1 1 2
+
+DEAL::0 0 4 0 1 2 3 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::0 0 8 0 1 2 3 4 5 6 7 1 1 2
+
+DEAL::OK

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.