Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
MBTagConventions.hpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines