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