Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
00001 /** 00002 * MOAB, a Mesh-Oriented datABase, is a software component for creating, 00003 * storing and accessing finite element mesh data. 00004 * 00005 * Copyright 2004 Sandia Corporation. Under the terms of Contract 00006 * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government 00007 * retains certain rights in this software. 00008 * 00009 * This library is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU Lesser General Public 00011 * License as published by the Free Software Foundation; either 00012 * version 2.1 of the License, or (at your option) any later version. 00013 * 00014 */ 00015 00016 #ifndef MB_TAG_CONVENTIONS_HPP 00017 #define MB_TAG_CONVENTIONS_HPP 00018 00019 //! Conventional tag names used for some often-used sets 00020 00021 /* MATERIAL_SET_TAG_NAME tag: 00022 * Represents sets of elements having a common material (corresponds to 00023 * element blocks in ExodusII) 00024 * size = sizeof(int) 00025 * type = int 00026 * value = integer id for this set (block id from ExodusII) 00027 * default value = -1 00028 */ 00029 #define MATERIAL_SET_TAG_NAME "MATERIAL_SET" 00030 00031 /* DIRICHLET_SET_TAG_NAME tag: 00032 * Represents dirichlet-type boundary condition, usually contains only mesh vertices 00033 * (corresponds to nodesets in ExodusII) 00034 * size = sizeof(int) 00035 * type = int 00036 * value = integer id for this set (nodeset id from ExodusII) 00037 * default value = -1 00038 */ 00039 #define DIRICHLET_SET_TAG_NAME "DIRICHLET_SET" 00040 00041 /* NEUMANN_SET_TAG_NAME tag: 00042 * Represents neumann-type boundary condition, usually contains elements with dimension 00043 * one lower than those found in material sets (i.e. edges in FE quad/tri models, quads/tris 00044 * in FE hex/tet models) (corresponds to sidesets in ExodusII) 00045 * size = sizeof(int) 00046 * type = int 00047 * value = integer id for this set (sideset id from ExodusII) 00048 * default value = -1 00049 */ 00050 #define NEUMANN_SET_TAG_NAME "NEUMANN_SET" 00051 00052 /* HAS_MID_NODES_TAG_NAM tag: 00053 * Flags telling whether elements in a given set have mid-(edge, face, region) vertices/nodes; 00054 * index 0 is a place holder, so this datum can be indexed by dimension, e.g. has_mid_nodes[dim] 00055 * indicates whether mesh entities of dimension dim have mid nodes 00056 * size = 4*sizeof(int) 00057 * type = int[4] 00058 * value = 1 (has mid nodes), 0 (does not have mid nodes) 00059 * default value = [-1, -1, -1, -1] 00060 */ 00061 #define HAS_MID_NODES_TAG_NAME "HAS_MID_NODES" 00062 00063 /* GEOM_DIMENSION tag: 00064 * Represents entities "owned" by a given topological entity in a geometric model 00065 * size = sizeof(int) 00066 * type = int 00067 * value = dimension of geom entity 00068 * default value = -1 00069 */ 00070 #define GEOM_DIMENSION_TAG_NAME "GEOM_DIMENSION" 00071 00072 /* MESH_TRANSFORM tag: 00073 * Represents homogeneous transform to be applied to mesh; used in ExodusII writer to apply 00074 * transform before writing nodal coordinates 00075 * size = 16*sizeof(double) 00076 * type = double[16] 00077 * value = 4x4 homogenous transform matrix 00078 */ 00079 #define MESH_TRANSFORM_TAG_NAME "MESH_TRANSFORM" 00080 00081 /* GLOBAL_ID tag: 00082 * Represents global id of entities (sets or mesh entities); this id is different than the id 00083 * embedded in the entity handle 00084 * size = sizeof(int) 00085 * type = int 00086 * value = global id 00087 * default value = 0 // not -1 to allow gids stored in unsigned data types 00088 */ 00089 #define GLOBAL_ID_TAG_NAME "GLOBAL_ID" 00090 00091 /* CATEGORY tag: 00092 * String name indicating generic "category" if the entity to which it is assigned (usually 00093 * sets); used e.g. to indicate a set represents geometric vertex/edge/face/region, 00094 * dual surface/curve, etc. 00095 * size = CATEGORY_TAG_NAME_LENGTH (defined below) 00096 * type = char[CATEGORY_TAG_NAME_LENGTH] 00097 * value = NULL-terminated string denoting category name 00098 */ 00099 #define CATEGORY_TAG_NAME "CATEGORY" 00100 #define CATEGORY_TAG_SIZE 32 00101 00102 /* NAME tag: 00103 * A fixed length NULL-padded string containing a name. 00104 * All values should be assumed to be of type char[NAME_TAG_SIZE]. 00105 * The string need not be null terminated. All values used for 00106 * storing or searching for a value must be padded with '\0' chars. 00107 */ 00108 #define NAME_TAG_NAME "NAME" 00109 #define NAME_TAG_SIZE 32 00110 00111 /* BLOCK_HEADER: tag 00112 * A fixex lenght tag containg block header data 00113 * BlockColor, MaterialId and BlockDimension 00114 */ 00115 #define BLOCK_HEADER "BLOCK_HEADER" 00116 00117 /* BLOCK_ATTRIBUTES: tag 00118 * A varible lenght tag of doubles 00119 * Tag contains attributes set to BlockSet in cubit file 00120 */ 00121 #define BLOCK_ATTRIBUTES "BLOCK_ATTRIBUTES" 00122 00123 #ifndef MB_PARALLEL_CONVENTIONS_H 00124 #define MB_PARALLEL_CONVENTIONS_H 00125 00126 /** Tag conventions for naming parallel things. Note this header 00127 * file belongs in the main MOAB directory because even serial 00128 * applications (e.g. partitioners) may write tags for use in 00129 * parallel applications. 00130 */ 00131 00132 /** \brief Global identifier for interface mesh 00133 * 00134 * An integer identifier common to the corresponding mesh entity 00135 * instances on each processor for a mesh entity on the interface. 00136 */ 00137 #define PARALLEL_GID_TAG_NAME "GLOBAL_ID" 00138 00139 /** \brief Tag on a meshset representing a parallel partition. 00140 * 00141 * When the mesh is partitioned for use in a parallel environment, 00142 * the each CPUs partiiton of the mesh is stored in a meshset with 00143 * this tag. The value of the tag is an integer "part identifier". 00144 */ 00145 #define PARALLEL_PARTITION_TAG_NAME "PARALLEL_PARTITION" 00146 #define PARALLEL_PART_TAG_NAME PARALLEL_PARTITION_TAG_NAME 00147 00148 /** \brief Tag that groups the set of parts/partitions that are 00149 * a covering of the mesh. 00150 * 00151 * This tag labels an entity set for which the child sets are part(ition)s 00152 * that together are a single partitioning of the mesh. I.e. There should 00153 * be no mesh entity that is contained in more than one child part(ition) 00154 * set, and typically every mesh entity of the dimenion used to partition 00155 * the mesh is contained in exactly one of the child sets. 00156 * 00157 * The data for this tag is a single integer value. The value of 00158 * the tag is undefined. 00159 */ 00160 #define PARALLEL_PARITIONING_TAG_NAME "PARALLEL_MESH_PARITIONING" 00161 00162 /** \brief Tag storing which other processor a given entity is shared with 00163 * 00164 * This single-valued tag implies an entity is shared with one other proc 00165 */ 00166 #define PARALLEL_SHARED_PROC_TAG_NAME "__PARALLEL_SHARED_PROC" 00167 00168 /** \brief Tag storing which other processorS a given entity is shared with 00169 * 00170 * This multiple-valued tag implies an entity is shared with multiple 00171 * other processors. Length of tag is application-dependent, and depends on 00172 * what the maximum number of processors is which share an entity 00173 */ 00174 #define PARALLEL_SHARED_PROCS_TAG_NAME "__PARALLEL_SHARED_PROCS" 00175 00176 /** \brief Tag storing the handle of a shared entity on the other proc 00177 * 00178 * This single-valued tag implies an entity is shared with one other proc 00179 */ 00180 #define PARALLEL_SHARED_HANDLE_TAG_NAME "__PARALLEL_SHARED_HANDLE" 00181 00182 /** \brief Tag storing handles of a shared entity on other processors 00183 * 00184 * This multiple-valued tag implies an entity is shared with multiple 00185 * other processors. Length of tag is application-dependent, and depends on 00186 * what the maximum number of processors is which share an entity 00187 */ 00188 #define PARALLEL_SHARED_HANDLES_TAG_NAME "__PARALLEL_SHARED_HANDLES" 00189 00190 /** \brief Tag storing parallel status (as bits in this tag) 00191 * 00192 * This tag stores various aspects of parallel status in bits; see also 00193 * #define's following, to be used in bit mask operations. If an entity is 00194 * not shared with any other processors, the pstatus is 0, otherwise it's > 0 00195 * 00196 * bit 0: !owned (0=owned, 1=not owned) 00197 * bit 1: shared (0=not shared, 1=shared) 00198 * bit 2: multishared (shared by > 2 procs; 0=not shared, 1=shared) 00199 * bit 3: interface (0=not interface, 1=interface) 00200 * bit 4: ghost (0=not ghost, 1=ghost) 00201 * default value = 0 00202 */ 00203 #define PARALLEL_STATUS_TAG_NAME "__PARALLEL_STATUS" 00204 00205 #define PSTATUS_NOT_OWNED 0x1 00206 #define PSTATUS_SHARED 0x2 00207 #define PSTATUS_MULTISHARED 0x4 00208 #define PSTATUS_INTERFACE 0x8 00209 // note, these numbers are in hex, so 0x10 is the 4th bit, or 2^4. 00210 #define PSTATUS_GHOST 0x10 00211 00212 #define PSTATUS_AND 0x1 00213 #define PSTATUS_OR 0x2 00214 #define PSTATUS_NOT 0x3 00215 #endif 00216 00217 #endif