1 // The libMesh Finite Element Library. 2 // Copyright (C) 2002-2020 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 20 #ifndef LIBMESH_ENUM_ELEM_TYPE_H 21 #define LIBMESH_ENUM_ELEM_TYPE_H 22 23 namespace libMesh { 24 25 /** 26 * Defines an \p enum for geometric element types. 27 * 28 * The fixed type, i.e. ": int", enumeration syntax used here allows 29 * this enum to be forward declared as 30 * enum ElemType : int; 31 * reducing header file dependencies. 32 */ 33 enum ElemType : int { 34 // 1D 35 EDGE2 = 0, 36 EDGE3 = 1, 37 EDGE4 = 2, 38 // 2D 39 TRI3 = 3, 40 TRI6 = 4, 41 QUAD4 = 5, 42 QUAD8 = 6, 43 QUAD9 = 7, 44 // 3D 45 TET4 = 8, 46 TET10 = 9, 47 HEX8 = 10, 48 HEX20 = 11, 49 HEX27 = 12, 50 PRISM6 = 13, 51 PRISM15 = 14, 52 PRISM18 = 15, 53 PYRAMID5 = 16, 54 PYRAMID13 = 17, 55 PYRAMID14 = 18, 56 // Infinite Elems 57 INFEDGE2 = 19, 58 INFQUAD4 = 20, 59 INFQUAD6 = 21, 60 INFHEX8 = 22, 61 INFHEX16 = 23, 62 INFHEX18 = 24, 63 INFPRISM6 = 25, 64 INFPRISM12 = 26, 65 // 0D 66 NODEELEM = 27, 67 // Miscellaneous Elems 68 REMOTEELEM = 28, 69 TRI3SUBDIVISION = 29, 70 // Shell Elems 71 TRISHELL3 = 30, 72 QUADSHELL4 = 31, 73 QUADSHELL8 = 32, 74 // Invalid 75 INVALID_ELEM}; // should always be last 76 77 /** 78 * Enumeration of possible element master->physical mapping types. 79 * We don't just directly store FEType for this because we want to 80 * be certain our options all pack into a single char in an Elem. 81 */ 82 enum ElemMappingType : unsigned char { 83 LAGRANGE_MAP = 0, 84 RATIONAL_BERNSTEIN_MAP, 85 INVALID_MAP }; 86 87 } 88 89 #endif 90