ug4
boost_serialization_routines.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016: G-CSC, Goethe University Frankfurt
3  * Author: Sebastian Reiter
4  *
5  * This file is part of UG4.
6  *
7  * UG4 is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License version 3 (as published by the
9  * Free Software Foundation) with the following additional attribution
10  * requirements (according to LGPL/GPL v3 §7):
11  *
12  * (1) The following notice must be displayed in the Appropriate Legal Notices
13  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14  *
15  * (2) The following notice must be displayed at a prominent place in the
16  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17  *
18  * (3) The following bibliography is recommended for citation and must be
19  * preserved in all covered files:
20  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21  * parallel geometric multigrid solver on hierarchically distributed grids.
22  * Computing and visualization in science 16, 4 (2013), 151-164"
23  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24  * flexible software system for simulating pde based models on high performance
25  * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  */
32 
33 /* Include this file if you want to perform serialization, since it defines
34  * basic serialization routines for common types. You won't need this include
35  * if you're just writing serialization routines for your own types. Include
36  * 'boost_serialization.h' in this case.*/
37 
38 #ifndef __H__UG_boost_serialization_routines
39 #define __H__UG_boost_serialization_routines
40 
41 #include "boost_serialization.h"
42 #include "math/ugmath_types.h"
43 
44 BOOST_CLASS_IMPLEMENTATION(ug::vector1, boost::serialization::object_serializable);
45 BOOST_CLASS_IMPLEMENTATION(ug::vector2, boost::serialization::object_serializable);
46 BOOST_CLASS_IMPLEMENTATION(ug::vector3, boost::serialization::object_serializable);
47 BOOST_CLASS_IMPLEMENTATION(ug::vector4, boost::serialization::object_serializable);
48 
49 namespace boost{
50 namespace serialization{
51 
52  template <typename Archive>
53  void serialize(Archive& ar, ug::vector1& v, const unsigned int version)
54  {
55  ar & ug::make_nvp("x", v[0]);
56  }
57 
58  template <typename Archive>
59  void serialize(Archive& ar, ug::vector2& v, const unsigned int version)
60  {
61  ar & ug::make_nvp("x", v[0]);
62  ar & ug::make_nvp("y", v[1]);
63  }
64 
65  template <typename Archive>
66  void serialize(Archive& ar, ug::vector3& v, const unsigned int version)
67  {
68  ar & ug::make_nvp("x", v[0]);
69  ar & ug::make_nvp("y", v[1]);
70  ar & ug::make_nvp("z", v[2]);
71  }
72 
73  template <typename Archive>
74  void serialize(Archive& ar, ug::vector4& v, const unsigned int version)
75  {
76  ar & ug::make_nvp("x", v[0]);
77  ar & ug::make_nvp("y", v[1]);
78  ar & ug::make_nvp("z", v[2]);
79  ar & ug::make_nvp("w", v[3]);
80  }
81 }
82 
83 }// end of namespace
84 
85 #endif //__H__UG_boost_serialization_routines
BOOST_CLASS_IMPLEMENTATION(ug::vector1, boost::serialization::object_serializable)
a mathematical Vector with N entries.
Definition: math_vector.h:97
void serialize(Archive &ar, ug::vector1 &v, const unsigned int version)
Definition: boost_serialization_routines.h:53
Definition: boost_serialization_routines.h:49
typedefs for ugmath