![]() |
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