Branch data 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-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 : : 15 : : #include "PUPAMR.hpp" 16 : : 17 : 4003969 : 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 : 4003969 : p | s.active_element_number; 25 : 4003969 : p | s.refinement_case; 26 : 4003969 : p | s.children; 27 : 4003969 : p | s.refinement_level; 28 : 4003969 : p | s.child_number; 29 : 4003969 : p | s.parent_id; 30 : 4003969 : p | s.normal; 31 : 4003969 : } 32 : : 33 : 6022452 : 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 : 6022452 : p | e.A; 41 : 6022452 : p | e.B; 42 : 6022452 : p | e.needs_refining; 43 : 6022452 : p | e.needs_derefining; 44 : 6022452 : p | e.lock_case; 45 : 6022452 : } 46 : : 47 : 14707 : 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 : 14707 : p | e.edges; 55 : 14707 : } 56 : : 57 : 6022452 : 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 : 6022452 : p | e.get_data(); 65 : 6022452 : } 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 : 0 : 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 : 0 : p | m.data(); 85 : 0 : } 86 : : 87 : 14707 : 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 : 14707 : p | i.start_id; 95 : 14707 : p | i.next_tet_id; 96 : 14707 : } 97 : : 98 : 14707 : 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 : 14707 : p | t.center_tets; 106 : 14707 : p | t.delete_list; 107 : 14707 : p | t.active_elements.data(); 108 : 14707 : p | t.master_elements.data(); 109 : 14707 : p | t.active_tetinpoel; 110 : 14707 : p | t.active_nodes; 111 : 14707 : p | t.id_generator; 112 : 14707 : p | t.intermediate_list; 113 : 14707 : p | t.active_id_mapping; 114 : 14707 : p | t.tets; 115 : 14707 : p | t.edge_store; 116 : 14707 : p | t.marked_refinements; 117 : 14707 : p | t.marked_derefinements; 118 : 14707 : } 119 : : 120 : 14707 : 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 : 14707 : p | m.derefinement_cut_off; 128 : 14707 : p | m.refinement_cut_off; 129 : 14707 : p | m.tet_store; 130 : 14707 : p | m.node_connectivity; 131 : : #ifdef ENABLE_NODE_STORE 132 : : p | m.node_store; 133 : : #endif 134 : 14707 : p | m.refiner; 135 : 14707 : } 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 : 14707 : 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 : 14707 : p | n.data(); 160 : 14707 : p | n.inv_data(); 161 : 14707 : p | n.empty_node_count; 162 : 14707 : } 163 : : 164 : 14707 : 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 : 14707 : p | r.MAX_REFINEMENT_LEVEL; 172 : 14707 : }