mesh_communication.h
Go to the documentation of this file.00001 // The libMesh Finite Element Library. 00002 // Copyright (C) 2002-2012 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner 00003 00004 // This library is free software; you can redistribute it and/or 00005 // modify it under the terms of the GNU Lesser General Public 00006 // License as published by the Free Software Foundation; either 00007 // version 2.1 of the License, or (at your option) any later version. 00008 00009 // This library is distributed in the hope that it will be useful, 00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 // Lesser General Public License for more details. 00013 00014 // You should have received a copy of the GNU Lesser General Public 00015 // License along with this library; if not, write to the Free Software 00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00017 00018 00019 00020 #ifndef LIBMESH_MESH_COMMUNICATION_H 00021 #define LIBMESH_MESH_COMMUNICATION_H 00022 00023 00024 00025 // Local Includes ----------------------------------- 00026 #include "libmesh/libmesh_common.h" 00027 #include "libmesh/mesh_tools.h" 00028 00029 // C++ Includes ----------------------------------- 00030 00031 namespace libMesh 00032 { 00033 00034 // Forward declarations 00035 class MeshBase; 00036 class ParallelMesh; 00037 class BoundaryInfo; 00038 template <typename T> class LocationMap; 00039 00040 00041 00051 // ------------------------------------------------------------ 00052 // MeshCommunication class definition 00053 class MeshCommunication 00054 { 00055 public: 00056 00060 MeshCommunication () {} 00061 00065 ~MeshCommunication () {} 00066 00070 void clear (); 00071 00072 // /** 00073 // * Finds all the processors that may contain 00074 // * elements that neighbor my elements. This list 00075 // * is guaranteed to include all processors that border 00076 // * any of my elements, but may include additional ones as 00077 // * well. This method computes bounding boxes for the 00078 // * elements on each processor and checks for overlaps. 00079 // */ 00080 // void find_neighboring_processors(const MeshBase &); 00081 00088 void broadcast (MeshBase &) const; 00089 00101 void redistribute (ParallelMesh &) const; 00102 00106 void gather_neighboring_elements (ParallelMesh &) const; 00107 00116 void allgather (ParallelMesh &) const; 00117 00132 void delete_remote_elements (ParallelMesh &, const std::set<Elem *> &) const; 00133 00144 void assign_global_indices (MeshBase &) const; 00145 00146 00151 template <typename ForwardIterator> 00152 void find_global_indices (const MeshTools::BoundingBox &, 00153 const ForwardIterator &, 00154 const ForwardIterator &, 00155 std::vector<dof_id_type> &) const; 00156 00160 void make_elems_parallel_consistent (MeshBase &); 00161 00167 void make_node_ids_parallel_consistent (MeshBase &, 00168 LocationMap<Node> &); 00169 00175 void make_node_proc_ids_parallel_consistent (MeshBase &, 00176 LocationMap<Node> &); 00177 00184 void make_nodes_parallel_consistent (MeshBase &, 00185 LocationMap<Node> &); 00186 }; 00187 00188 00189 00190 //-------------------------------------------------------------- 00191 // MeshCommunication inline members 00192 00193 00194 } // namespace libMesh 00195 00196 #endif // LIBMESH_MESH_COMMUNICATION_H
Site Created By: libMesh Developers
Last modified: February 05 2013 19:54:47 UTC
Hosted By: