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 MOAB_TYPES_HPP 00017 #define MOAB_TYPES_HPP 00018 00019 #ifdef __cplusplus 00020 #include "moab/EntityType.hpp" 00021 #include "moab/EntityHandle.hpp" 00022 #endif 00023 00024 #include "moab/win32_config.h" 00025 00026 /**\name Types and names 00027 * Types used in the MOAB interface 00028 */ 00029 /*@{*/ 00030 00031 #ifdef __cplusplus 00032 namespace moab 00033 { 00034 #endif 00035 00036 /** MOAB error codes */ 00037 enum MOAB_EXPORT ErrorCode 00038 { 00039 MB_SUCCESS = 0, 00040 MB_INDEX_OUT_OF_RANGE = 1, 00041 MB_TYPE_OUT_OF_RANGE = 2, 00042 MB_MEMORY_ALLOCATION_FAILED = 3, 00043 MB_ENTITY_NOT_FOUND = 4, 00044 MB_MULTIPLE_ENTITIES_FOUND = 5, 00045 MB_TAG_NOT_FOUND = 6, 00046 MB_FILE_DOES_NOT_EXIST = 7, 00047 MB_FILE_WRITE_ERROR = 8, 00048 MB_NOT_IMPLEMENTED = 9, 00049 MB_ALREADY_ALLOCATED = 10, 00050 MB_VARIABLE_DATA_LENGTH = 11, 00051 MB_INVALID_SIZE = 12, 00052 MB_UNSUPPORTED_OPERATION = 13, 00053 MB_UNHANDLED_OPTION = 14, 00054 MB_STRUCTURED_MESH = 15, 00055 MB_FAILURE = 16 00056 }; 00057 00058 #ifdef __cplusplus 00059 extern const char* const ErrorCodeStr[]; 00060 #endif 00061 00062 /** Misc. integer constants, declared in enum for portability */ 00063 enum Constants 00064 { 00065 MB_VARIABLE_LENGTH = -1 /**< Length value for variable-length tags */ 00066 }; 00067 00068 /** Specify storage type for tags. See MOAB users guide for more information. */ 00069 enum MOAB_EXPORT TagType 00070 { 00071 MB_TAG_BIT = 0, /**< Tag size specified in bits, tag value is 8 bits or less */ 00072 MB_TAG_SPARSE = 1 << 0, /**< Storage optimized for tags on a few entities */ 00073 MB_TAG_DENSE = 1 << 1, /**< Storage optimized for tags on most entities of a type */ 00074 MB_TAG_MESH = 1 << 2, /**< Storage for tags on no entities, only the root set/whole mesh. */ 00075 MB_TAG_BYTES = 1 << 3, /**< Size is in number of bytes rather than number of values of \c DataType */ 00076 MB_TAG_VARLEN = 1 << 4, /**< Create variable-length tag */ 00077 MB_TAG_CREAT = 1 << 5, /**< Create tag if it does not already exist */ 00078 MB_TAG_EXCL = 1 << 6, /**< Fail if TAG_CREATE and tag already exists */ 00079 MB_TAG_STORE = 1 << 7, /**< Fail if tag exists and has different storage type */ 00080 MB_TAG_ANY = 1 << 8, /**< Do not fail if size, type, or default value do not match. */ 00081 MB_TAG_NOOPQ = 1 << 9, /**< Do not accept MB_TYPE_OPAQUE as a match for any type. */ 00082 MB_TAG_DFTOK = 1 << 10 /**< Do not fail for mismatched default values */ 00083 /**< MB_TAG_CNVRT = 1<<11, Convert storage type if it does not match */ 00084 }; 00085 00086 /** Specify data type for tags. */ 00087 enum MOAB_EXPORT DataType 00088 { 00089 MB_TYPE_OPAQUE = 0, /**< byte array */ 00090 MB_TYPE_INTEGER = 1, /**< native 'int' type */ 00091 MB_TYPE_DOUBLE = 2, /**< native 'double' type */ 00092 MB_TYPE_BIT = 3, /**< mandatory type for tags with MB_TAG_BIT storage */ 00093 MB_TYPE_HANDLE = 4, /**< EntityHandle */ 00094 MB_MAX_DATA_TYPE = MB_TYPE_HANDLE 00095 }; 00096 00097 #ifdef __cplusplus 00098 extern const char* const DataTypeStr[]; 00099 #endif 00100 00101 /** Used to reference tags; since they're so different from entities, we 00102 * use void** instead of a uint to prevent them from being confused as 00103 * entity handles. 00104 */ 00105 #ifdef __cplusplus 00106 class TagInfo; 00107 typedef TagInfo* Tag; 00108 #else 00109 struct TagInfo; 00110 typedef struct TagInfo* Tag; 00111 #endif 00112 00113 /** Meshset options: properties for meshset creation. 00114 * Values are bit flags that may be combined with a bitwise OR (|) 00115 */ 00116 enum MOAB_EXPORT EntitySetProperty 00117 { 00118 MESHSET_TRACK_OWNER = 0x1, /**< create entity to meshset adjacencies */ 00119 MESHSET_SET = 0x2, /**< set contents are unique */ 00120 MESHSET_ORDERED = 0x4 /**< order of set contents is preserved */ 00121 }; 00122 00123 enum MOAB_EXPORT SenseType 00124 { 00125 SENSE_INVALID = -2, /**< default, invalid, not defined */ 00126 SENSE_REVERSE = -1, /**< reversed */ 00127 SENSE_BOTH = 0, /**< both senses valid */ 00128 SENSE_FORWARD = 1 /**< forward */ 00129 }; 00130 00131 #ifdef __cplusplus 00132 extern const char* const* const SenseTypeStr; 00133 #endif 00134 00135 #ifdef __cplusplus 00136 } /* namespace moab */ 00137 #endif 00138 00139 /*@}*/ 00140 00141 #endif