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 : : 2022-2024 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 [ + - ]: 3772684 : 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 : 5766183 : 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 : 16804 : 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 : 5766183 : 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 : 33608 : void pup( PUP::er &p, AMR::marked_refinements_store_t< case_t >& m ) {
80 : : p | m.data();
81 : : p | m.get_state_changed();
82 : 33608 : }
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 : : inline void operator|( PUP::er& p, AMR::marked_refinements_store_t<case_t>& m )
88 : 16804 : { 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 : : inline void operator|( PUP::er& p, AMR::id_generator_t& i )
121 : 16804 : { 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 : 16804 : 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 : 16804 : 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 : 16804 : 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 : 16804 : inline void operator|( PUP::er& p, AMR::refinement_t& r ) { pup(p,r); }
172 : : //@}
173 : :
174 : : } // PUP::
175 : :
176 : : #endif // PUPAMR_h
|