Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
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