Line data Source code
1 : // *****************************************************************************
2 : /*!
3 : \file src/Inciter/PUPAMR.cpp
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 :
15 : #include "PUPAMR.hpp"
16 :
17 3875884 : void PUP::pup( PUP::er &p, AMR::Refinement_State& s )
18 : // *****************************************************************************
19 : // Pack/Unpack Refinement_State
20 : //! \param[in] p Charm++'s pack/unpack object
21 : //! \param[in,out] s Refinement_State object reference
22 : // *****************************************************************************
23 : {
24 3875884 : p | s.active_element_number;
25 3875884 : p | s.refinement_case;
26 3875884 : p | s.children;
27 3875884 : p | s.refinement_level;
28 3875884 : p | s.child_number;
29 3875884 : p | s.parent_id;
30 3875884 : p | s.normal;
31 3875884 : }
32 :
33 5835543 : void PUP::pup( PUP::er &p, AMR::Edge_Refinement& e )
34 : // *****************************************************************************
35 : // Pack/Unpack Edge_Refinement
36 : //! \param[in] p Charm++'s pack/unpack object
37 : //! \param[in,out] e Edge_Refinement object reference
38 : // *****************************************************************************
39 : {
40 5835543 : p | e.A;
41 5835543 : p | e.B;
42 5835543 : p | e.needs_refining;
43 5835543 : p | e.needs_derefining;
44 5835543 : p | e.lock_case;
45 5835543 : }
46 :
47 14279 : void PUP::pup( PUP::er &p, AMR::edge_store_t& e )
48 : // *****************************************************************************
49 : // Pack/Unpack edge_store_t
50 : //! \param[in] p Charm++'s pack/unpack object
51 : //! \param[in,out] e edge_store_t object reference
52 : // *****************************************************************************
53 : {
54 14279 : p | e.edges;
55 14279 : }
56 :
57 5835543 : void PUP::pup( PUP::er &p, AMR::edge_t& e )
58 : // *****************************************************************************
59 : // Pack/Unpack edge_t
60 : //! \param[in] p Charm++'s pack/unpack object
61 : //! \param[in,out] e edge_t object reference
62 : // *****************************************************************************
63 : {
64 : p | e.get_data();
65 5835543 : }
66 :
67 0 : void PUP::pup( PUP::er &p, AMR::active_element_store_t& a )
68 : // *****************************************************************************
69 : // Pack/Unpack active_element_store_t
70 : //! \param[in] p Charm++'s pack/unpack object
71 : //! \param[in,out] a active_element_store_t object reference
72 : // *****************************************************************************
73 : {
74 : p | a.data();
75 0 : }
76 :
77 0 : void PUP::pup( PUP::er &p, AMR::master_element_store_t& m )
78 : // *****************************************************************************
79 : // Pack/Unpack master_element_store_t
80 : //! \param[in] p Charm++'s pack/unpack object
81 : //! \param[in,out] m master_element_store_t object reference
82 : // *****************************************************************************
83 : {
84 : p | m.data();
85 0 : }
86 :
87 14279 : void PUP::pup( PUP::er &p, AMR::id_generator_t& i )
88 : // *****************************************************************************
89 : // Pack/Unpack id_generator_t
90 : //! \param[in] p Charm++'s pack/unpack object
91 : //! \param[in,out] i id_generator_t object reference
92 : // *****************************************************************************
93 : {
94 14279 : p | i.start_id;
95 14279 : p | i.next_tet_id;
96 14279 : }
97 :
98 14279 : void PUP::pup( PUP::er &p, AMR::tet_store_t& t )
99 : // *****************************************************************************
100 : // Pack/Unpack tet_store_t
101 : //! \param[in] p Charm++'s pack/unpack object
102 : //! \param[in,out] t tet_store_t object reference
103 : // *****************************************************************************
104 : {
105 14279 : p | t.center_tets;
106 14279 : p | t.delete_list;
107 : p | t.active_elements.data();
108 : p | t.master_elements.data();
109 14279 : p | t.active_tetinpoel;
110 14279 : p | t.active_nodes;
111 14279 : p | t.id_generator;
112 14279 : p | t.intermediate_list;
113 14279 : p | t.active_id_mapping;
114 14279 : p | t.tets;
115 14279 : p | t.edge_store;
116 14279 : p | t.marked_refinements;
117 14279 : p | t.marked_derefinements;
118 14279 : }
119 :
120 14279 : void PUP::pup( PUP::er &p, AMR::mesh_adapter_t& m )
121 : // *****************************************************************************
122 : // Pack/Unpack mesh_adapter_t
123 : //! \param[in] p Charm++'s pack/unpack object
124 : //! \param[in,out] m mesh_adapter_t object reference
125 : // *****************************************************************************
126 : {
127 14279 : p | m.derefinement_cut_off;
128 14279 : p | m.refinement_cut_off;
129 14279 : p | m.tet_store;
130 14279 : p | m.node_connectivity;
131 : #ifdef ENABLE_NODE_STORE
132 : p | m.node_store;
133 : #endif
134 14279 : p | m.refiner;
135 14279 : }
136 :
137 : #ifdef ENABLE_NODE_STORE
138 : void PUP::pup( PUP::er &p, AMR::node_store_t& n )
139 : // *****************************************************************************
140 : // Pack/Unpack node_store_t
141 : //! \param[in] p Charm++'s pack/unpack object
142 : //! \param[in,out] n node_store_t object reference
143 : // *****************************************************************************
144 : {
145 : p | n.m_x;
146 : p | n.m_y;
147 : p | n.m_z;
148 : }
149 : #endif
150 :
151 :
152 14279 : void PUP::pup( PUP::er &p, AMR::node_connectivity_t& n )
153 : // *****************************************************************************
154 : // Pack/Unpack node_connectivity_t
155 : //! \param[in] p Charm++'s pack/unpack object
156 : //! \param[in,out] n node_connectivity_t object reference
157 : // *****************************************************************************
158 : {
159 : p | n.data();
160 : p | n.inv_data();
161 14279 : p | n.empty_node_count;
162 14279 : }
163 :
164 14279 : void PUP::pup( PUP::er &p, AMR::refinement_t& r )
165 : // *****************************************************************************
166 : // Pack/Unpack refinement_t
167 : //! \param[in] p Charm++'s pack/unpack object
168 : //! \param[in,out] r refinement_t object reference
169 : // *****************************************************************************
170 : {
171 14279 : p | r.MAX_REFINEMENT_LEVEL;
172 14279 : }
|