Branch data Line data Source code
1 : : // *****************************************************************************
2 : : /*!
3 : : \file src/Inciter/PUPAMR.hpp
4 : : \copyright 2012-2015 J. Bakosi,
5 : : 2016-2018 Los Alamos National Security, LLC.,
6 : : 2019-2021 Triad National Security, LLC.
7 : : All rights reserved. See the LICENSE file for details.
8 : : \brief Charm++ Pack/UnPack utilities for AMR
9 : : \details This file contains some extensions to Charm++'s Pack/UnPack
10 : : routines for use with AMR data structures.
11 : : */
12 : : // *****************************************************************************
13 : : #ifndef PUPAMR_h
14 : : #define PUPAMR_h
15 : :
16 : : #include "Base/PUPUtil.hpp"
17 : :
18 : : #include "AMR/edge_store.hpp"
19 : : #include "AMR/edge.hpp"
20 : : #include "AMR/marked_refinements_store.hpp"
21 : : #include "AMR/tet_store.hpp"
22 : : #include "AMR/mesh_adapter.hpp"
23 : : #include "AMR/node_store.hpp"
24 : : #include "AMR/node_connectivity.hpp"
25 : : #include "AMR/refinement.hpp"
26 : : #include "AMR/master_element_store.hpp"
27 : : #include "AMR/id_generator.hpp"
28 : :
29 : : //! Extensions to Charm++'s Pack/Unpack routines
30 : : namespace PUP {
31 : :
32 : : /** @name Charm++ pack/unpack serializer member functions for Refinement_State */
33 : : ///@{
34 : : //! Pack/Unpack Refinement_State
35 : : void pup( PUP::er &p, AMR::Refinement_State& s );
36 : : //! Pack/Unpack serialize operator|
37 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
38 : : //! \param[in,out] s Refinement_State object reference
39 : 3509274 : inline void operator|( PUP::er& p, AMR::Refinement_State& s ) { pup(p,s); }
40 : : //@}
41 : :
42 : : /** @name Charm++ pack/unpack serializer member functions for Edge_Refinement */
43 : : ///@{
44 : : //! Pack/Unpack Edge_Refinement
45 : : void pup( PUP::er &p, AMR::Edge_Refinement& e );
46 : : //! Pack/Unpack serialize operator|
47 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
48 : : //! \param[in,out] e Edge_Refinement object reference
49 : 6075840 : inline void operator|( PUP::er& p, AMR::Edge_Refinement& e ) { pup(p,e); }
50 : : //@}
51 : :
52 : : /** @name Charm++ pack/unpack serializer member functions for edge_store_t */
53 : : ///@{
54 : : //! Pack/Unpack edge_store_t
55 : : void pup( PUP::er &p, AMR::edge_store_t& e );
56 : : //! Pack/Unpack serialize operator|
57 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
58 : : //! \param[in,out] e edge_store_t object reference
59 : 24215 : inline void operator|( PUP::er& p, AMR::edge_store_t& e ) { pup(p,e); }
60 : : //@}
61 : :
62 : : /** @name Charm++ pack/unpack serializer member functions for edge_t */
63 : : ///@{
64 : : //! Pack/Unpack edge_t
65 : : void pup( PUP::er &p, AMR::edge_t& e );
66 : : //! Pack/Unpack serialize operator|
67 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
68 : : //! \param[in,out] e edge_t object reference
69 : 6075840 : inline void operator|( PUP::er& p, AMR::edge_t& e ) { pup(p,e); }
70 : : //@}
71 : :
72 : : /** @name Charm++ pack/unpack serializer member functions for marked_refinements_store_t */
73 : : ///@{
74 : : //! Pack/Unpack marked_refinements_store_t
75 : : //! \param[in] p Charm++'s pack/unpack object
76 : : //! \param[in,out] m marked_refinements_store_t object reference
77 : : template< class case_t >
78 : 48430 : void pup( PUP::er &p, AMR::marked_refinements_store_t< case_t >& m ) {
79 : 48430 : p | m.data();
80 : 48430 : p | m.get_state_changed();
81 : 48430 : }
82 : : //! Pack/Unpack serialize operator|
83 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
84 : : //! \param[in,out] m marked_refinements_store_t object reference
85 : : template< class case_t >
86 : 48430 : inline void operator|( PUP::er& p, AMR::marked_refinements_store_t<case_t>& m )
87 : 48430 : { pup(p,m); }
88 : : //@}
89 : :
90 : : /** @name Charm++ pack/unpack serializer member functions for active_element_store_t */
91 : : ///@{
92 : : //! Pack/Unpack active_element_store_t
93 : : void pup( PUP::er &p, AMR::active_element_store_t& a );
94 : : //! Pack/Unpack serialize operator|
95 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
96 : : //! \param[in,out] a active_element_store_t object reference
97 : : inline void operator|( PUP::er& p, AMR::active_element_store_t& a )
98 : : { pup(p,a); }
99 : : //@}
100 : :
101 : : /** @name Charm++ pack/unpack serializer member functions for master_element_store_t */
102 : : ///@{
103 : : //! Pack/Unpack master_element_store_t
104 : : void pup( PUP::er &p, AMR::master_element_store_t& m );
105 : : //! Pack/Unpack serialize operator|
106 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
107 : : //! \param[in,out] m master_element_store_t object reference
108 : : inline void operator|( PUP::er& p, AMR::master_element_store_t& m )
109 : : { pup(p,m); }
110 : : //@}
111 : : /** @name Charm++ pack/unpack serializer member functions for active_element_store_t */
112 : :
113 : : ///@{
114 : : //! Pack/Unpack id_generator_t
115 : : void pup( PUP::er &p, AMR::id_generator_t& i );
116 : : //! Pack/Unpack serialize operator|
117 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
118 : : //! \param[in,out] i id_generator_t object reference
119 : 24215 : inline void operator|( PUP::er& p, AMR::id_generator_t& i )
120 : 24215 : { pup(p,i); }
121 : : //@}
122 : :
123 : : /** @name Charm++ pack/unpack serializer member functions for tet_store_t */
124 : : ///@{
125 : : //! Pack/Unpack tet_store_t
126 : : void pup( PUP::er &p, AMR::tet_store_t& t );
127 : : //! Pack/Unpack serialize operator|
128 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
129 : : //! \param[in,out] t tet_store_t object reference
130 : 24215 : inline void operator|( PUP::er& p, AMR::tet_store_t& t ) { pup(p,t); }
131 : : //@}
132 : :
133 : : /** @name Charm++ pack/unpack serializer member functions for mesh_adapter_t */
134 : : ///@{
135 : : //! Pack/Unpack mesh_adapter_t
136 : : void pup( PUP::er &p, AMR::mesh_adapter_t& m );
137 : : //! Pack/Unpack serialize operator|
138 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
139 : : //! \param[in,out] m mesh_adapter_t object reference
140 : 24215 : inline void operator|( PUP::er& p, AMR::mesh_adapter_t& m ) { pup(p,m); }
141 : : //@}
142 : :
143 : : /** @name Charm++ pack/unpack serializer member functions for node_store_t */
144 : : ///@{
145 : : //! Pack/Unpack node_store_t
146 : : void pup( PUP::er &p, AMR::node_store_t& n );
147 : : //! Pack/Unpack serialize operator|
148 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
149 : : //! \param[in,out] n node_store_t object reference
150 : : inline void operator|( PUP::er& p, AMR::node_store_t& n ) { pup(p,n); }
151 : : //@}
152 : :
153 : : /** @name Charm++ pack/unpack serializer member functions for node_connectivity_t */
154 : : ///@{
155 : : //! Pack/Unpack node_connectivity_t
156 : : void pup( PUP::er &p, AMR::node_connectivity_t& n );
157 : : //! Pack/Unpack serialize operator|
158 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
159 : : //! \param[in,out] n node_connectivity_t object reference
160 : 24215 : inline void operator|( PUP::er& p, AMR::node_connectivity_t& n ) { pup(p,n); }
161 : : //@}
162 : :
163 : : /** @name Charm++ pack/unpack serializer member functions for refinement_t */
164 : : ///@{
165 : : //! Pack/Unpack refinement_t
166 : : void pup( PUP::er &p, AMR::refinement_t& r );
167 : : //! Pack/Unpack serialize operator|
168 : : //! \param[in,out] p Charm++'s PUP::er serializer object reference
169 : : //! \param[in,out] r refinement_t object reference
170 : 24215 : inline void operator|( PUP::er& p, AMR::refinement_t& r ) { pup(p,r); }
171 : : //@}
172 : :
173 : : } // PUP::
174 : :
175 : : #endif // PUPAMR_h
|