Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
MBParallelConventions.h
Go to the documentation of this file.
00001 #ifndef MB_PARALLEL_CONVENTIONS_H
00002 #define MB_PARALLEL_CONVENTIONS_H
00003 
00004 /** Tag conventions for naming parallel things.  Note this header
00005  * file belongs in the main MOAB directory because even serial
00006  * applications (e.g. partitioners) may write tags for use in
00007  * parallel applications.
00008  */
00009 
00010 /** \brief Global identifier for interface mesh
00011  *
00012  * An integer identifier common to the corresponding mesh entity
00013  * instances on each processor for a mesh entity on the interface.
00014  */
00015 #define PARALLEL_GID_TAG_NAME "GLOBAL_ID"
00016 
00017 /** \brief Tag on a meshset representing a parallel partition.
00018  *
00019  * When the mesh is partitioned for use in a parallel environment,
00020  * the each CPUs partition of the mesh is stored in a meshset with
00021  * this tag.  The value of the tag is an integer "part identifier".
00022  */
00023 #define PARALLEL_PARTITION_TAG_NAME "PARALLEL_PARTITION"
00024 #define PARALLEL_PART_TAG_NAME      PARALLEL_PARTITION_TAG_NAME
00025 
00026 /** \brief Tag that groups the set of parts/partitions that are
00027  *         a covering of the mesh.
00028  *
00029  * This tag labels an entity set for which the child sets are part(ition)s
00030  * that together are a single partitioning of the mesh.  I.e. There should
00031  * be no mesh entity that is contained in more than one child part(ition)
00032  * set, and typically every mesh entity of the dimension used to partition
00033  * the mesh is contained in exactly one of the child sets.
00034  *
00035  * The data for this tag is a single integer value.  The value of
00036  * the tag is undefined.
00037  */
00038 #define PARALLEL_PARTITIONING_TAG_NAME "PARALLEL_MESH_PARTITIONING"
00039 
00040 /** \brief Tag storing which other processor a given entity is shared with
00041  *
00042  * This single-valued tag implies an entity is shared with one other proc
00043  */
00044 #define PARALLEL_SHARED_PROC_TAG_NAME "__PARALLEL_SHARED_PROC"
00045 
00046 /** \brief Tag storing which other processorS a given entity is shared with
00047  *
00048  * This multiple-valued tag implies an entity is shared with multiple
00049  * other processors.  Length of tag is application-dependent, and depends on
00050  * what the maximum number of processors is which share an entity
00051  */
00052 #define PARALLEL_SHARED_PROCS_TAG_NAME "__PARALLEL_SHARED_PROCS"
00053 
00054 /** \brief Tag storing the handle of a shared entity on the other proc
00055  *
00056  * This single-valued tag implies an entity is shared with one other proc
00057  */
00058 #define PARALLEL_SHARED_HANDLE_TAG_NAME "__PARALLEL_SHARED_HANDLE"
00059 
00060 /** \brief Tag storing handles of a shared entity on other processors
00061  *
00062  * This multiple-valued tag implies an entity is shared with multiple
00063  * other processors.  Length of tag is application-dependent, and depends on
00064  * what the maximum number of processors is which share an entity
00065  */
00066 #define PARALLEL_SHARED_HANDLES_TAG_NAME "__PARALLEL_SHARED_HANDLES"
00067 
00068 /** \brief Tag storing parallel status (as bits in this tag)
00069  *
00070  * This tag stores various aspects of parallel status in bits; see also 
00071  * #define's following, to be used in bit mask operations.  If an entity is
00072  * not shared with any other processors, the pstatus is 0, otherwise it's > 0
00073  *
00074  * bit 0: !owned (0=owned, 1=not owned)
00075  * bit 1: shared (0=not shared, 1=shared)
00076  * bit 2: multishared (shared by > 2 procs; 0=not shared, 1=shared)
00077  * bit 3: interface (0=not interface, 1=interface)
00078  * bit 4: ghost (0=not ghost, 1=ghost)
00079  */
00080 #define PARALLEL_STATUS_TAG_NAME "__PARALLEL_STATUS"
00081 
00082 #define PSTATUS_NOT_OWNED   0x1
00083 #define PSTATUS_SHARED      0x2
00084 #define PSTATUS_MULTISHARED 0x4
00085 #define PSTATUS_INTERFACE   0x8
00086 // note, these numbers are in hex, so 0x10 is the 4th bit, or 2^4.
00087 #define PSTATUS_GHOST 0x10
00088 
00089 #define PSTATUS_AND 0x1
00090 #define PSTATUS_OR  0x2
00091 #define PSTATUS_NOT 0x3
00092 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines