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