Line data Source code
1 : // The libMesh Finite Element Library. 2 : // Copyright (C) 2002-2025 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner 3 : 4 : // This library is free software; you can redistribute it and/or 5 : // modify it under the terms of the GNU Lesser General Public 6 : // License as published by the Free Software Foundation; either 7 : // version 2.1 of the License, or (at your option) any later version. 8 : 9 : // This library is distributed in the hope that it will be useful, 10 : // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 : // Lesser General Public License for more details. 13 : 14 : // You should have received a copy of the GNU Lesser General Public 15 : // License along with this library; if not, write to the Free Software 16 : // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 : 18 : 19 : #ifndef LIBMESH_MESH_H 20 : #define LIBMESH_MESH_H 21 : 22 : #include "libmesh/libmesh_config.h" 23 : 24 : #ifdef LIBMESH_ENABLE_PARMESH 25 : #include "libmesh/distributed_mesh.h" 26 : namespace libMesh { 27 : typedef DistributedMesh DefaultMesh; 28 : } 29 : #else 30 : #include "libmesh/replicated_mesh.h" 31 : namespace libMesh { 32 : typedef ReplicatedMesh DefaultMesh; 33 : } 34 : #endif 35 : 36 : namespace libMesh 37 : { 38 : 39 : // Forward declarations don't like typedefs... 40 : // typedef ReplicatedMesh Mesh; 41 : 42 : /** 43 : * The \p Mesh class is a thin wrapper, around the \p ReplicatedMesh 44 : * class by default. 45 : * 46 : * \author Benjamin S. Kirk 47 : * \date 2002 48 : * \brief Manages a collection of Nodes and Elems. 49 : */ 50 : class Mesh : public DefaultMesh 51 : { 52 : public: 53 : 54 : /** 55 : * Constructor. Takes \p dim, the dimension of the mesh. 56 : * The mesh dimension can be changed (and may automatically be 57 : * changed by mesh generation/loading) later. 58 : */ 59 : explicit 60 0 : Mesh (const Parallel::Communicator & comm_in, 61 : unsigned char dim=1) 62 0 : : DefaultMesh(comm_in,dim) {} 63 : 64 : /** 65 : * Copy-constructor. This should be able to take a 66 : * serial or parallel mesh. 67 : */ 68 : Mesh (const UnstructuredMesh & other_mesh) : DefaultMesh(other_mesh) {} 69 : 70 : /** 71 : * Default copy constructors and destructor. 72 : */ 73 0 : Mesh(const Mesh &) = default; 74 0 : ~Mesh() = default; 75 : 76 : /** 77 : * Move-constructor deleted in MeshBase. 78 : */ 79 : Mesh(Mesh &&) = delete; 80 : 81 : /** 82 : * Copy assignment is not allowed. 83 : */ 84 : Mesh & operator= (const Mesh &) = delete; 85 : 86 : /** 87 : * Move assignment is allowed. 88 : */ 89 : Mesh & operator= (Mesh &&) = default; 90 : 91 : }; 92 : 93 : 94 : 95 : } // namespace libMesh 96 : 97 : 98 : 99 : #endif // LIBMESH_MESH_H