ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
serialization_boost.h
Go to the documentation of this file.
1#ifndef SERIALIZATION_BOOST_H
2#define SERIALIZATION_BOOST_H
3
4#include <boost/archive/text_oarchive.hpp>
5#include <boost/archive/text_iarchive.hpp>
6#include <boost/archive/binary_oarchive.hpp>
7#include <boost/archive/binary_iarchive.hpp>
8
9#include <boost/serialization/std::vector.hpp>
10#include <boost/serialization/std::map.hpp>
11#include <boost/serialization/set.hpp>
12#include <boost/serialization/std::string.hpp>
13
14#include "../../source_base/vector3.h"
15#include "../../source_base/abfs-vector3_order.h"
16#include "../../source_base/matrix.h"
17#include "../../source_base/matrix_wrapper.h"
18
19namespace boost
20{
21 namespace serialization
22 {
23 // ModuleBase::Vector3<T> Peize Lin add 2018-07-01
24 template<typename Archive, typename T>
25 inline void serialize(Archive & ar, ModuleBase::Vector3<T> & v, const unsigned int version)
26 {
27 ar & v.x;
28 ar & v.y;
29 ar & v.z;
30 }
31
32 // Abfs::Vector3_Order<T> Peize Lin add 2018-07-01
33 template<typename Archive, typename T>
34 inline void serialize(Archive & ar, Abfs::Vector3_Order<T> & v, const unsigned int version)
35 {
36 ar & v.x;
37 ar & v.y;
38 ar & v.z;
39 }
40
41 // matrix Peize Lin add 2018-07-01
42 template<typename Archive>
43 inline void save( Archive & ar, const ModuleBase::matrix & m, const unsigned int /*file_version*/ )
44 {
45 const collection_size_type nr(m.nr), nc(m.nc);
46 ar << BOOST_SERIALIZATION_NVP(nr) << BOOST_SERIALIZATION_NVP(nc);
47 if( nr && nc )
48 ar << serialization::make_array( m.c, nr*nc );
49 }
50 template<class Archive>
51 inline void load( Archive & ar, ModuleBase::matrix &m, const unsigned int /*file_version*/ )
52 {
53 collection_size_type nr, nc;
54 ar >> BOOST_SERIALIZATION_NVP(nr) >> BOOST_SERIALIZATION_NVP(nc);
55 m.create(nr,nc,false);
56 if( nr && nc )
57 ar >> serialization::make_array( m.c, nr*nc );
58 }
59 template<class Archive>
60 inline void serialize( Archive & ar, ModuleBase::matrix & m, const unsigned int file_version )
61 {
62 boost::serialization::split_free(ar, m, file_version);
63 }
64
65 // MatrixWrapper Peize Lin add 2018-07-31
66 template<typename Archive>
67 inline void save( Archive & ar, const ModuleBase::Matrix_Wrapper & m, const unsigned int /*file_version*/ )
68 {
69 const collection_size_type nr(m.nr), nc(m.nc);
70 ar << BOOST_SERIALIZATION_NVP(nr) << BOOST_SERIALIZATION_NVP(nc);
71 if( nr && nc )
72 ar << serialization::make_array( m.c, nr*nc );
73 }
74 template<class Archive>
75 inline void load( Archive & ar, ModuleBase::Matrix_Wrapper &m, const unsigned int /*file_version*/ )
76 {
77 collection_size_type nr, nc;
78 ar >> BOOST_SERIALIZATION_NVP(nr) >> BOOST_SERIALIZATION_NVP(nc);
79 m.create(nr,nc,false);
80 if( nr && nc )
81 ar >> serialization::make_array( m.c, nr*nc );
82 }
83 template<class Archive>
84 inline void serialize( Archive & ar, ModuleBase::Matrix_Wrapper & m, const unsigned int file_version )
85 {
86 boost::serialization::split_free(ar, m, file_version);
87 }
88 }
89}
90
91
92#include <boost/serialization/collection_traits.hpp>
93
94BOOST_SERIALIZATION_COLLECTION_TRAITS(ModuleBase::Vector3)
95BOOST_SERIALIZATION_COLLECTION_TRAITS(Abfs::Vector3_Order)
96
97#endif
Definition abfs-vector3_order.h:16
Definition matrix_wrapper.h:20
int nr
Definition matrix_wrapper.h:22
double * c
Definition matrix_wrapper.h:24
void create(const int nr_in, const int nc_in, const bool flag_zero)
Definition matrix_wrapper.h:40
int nc
Definition matrix_wrapper.h:23
3 elements vector
Definition vector3.h:22
T x
Definition vector3.h:24
T y
Definition vector3.h:25
T z
Definition vector3.h:26
Definition matrix.h:19
int nr
Definition matrix.h:23
double * c
Definition matrix.h:25
int nc
Definition matrix.h:24
void create(const int nrow, const int ncol, const bool flag_zero=true)
Definition matrix.cpp:122
void serialize(Archive &ar, ModuleBase::Vector3< T > &v, const unsigned int version)
Definition serialization_boost.h:25
void load(Archive &ar, ModuleBase::matrix &m, const unsigned int)
Definition serialization_boost.h:51
void save(Archive &ar, const ModuleBase::matrix &m, const unsigned int)
Definition serialization_boost.h:43
Definition serialization_boost.h:20