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_EXOII_INTERFACE_HPP 00017 #define MOAB_EXOII_INTERFACE_HPP 00018 00019 #include "moab/Types.hpp" 00020 #include "moab/Compiler.hpp" 00021 00022 namespace moab 00023 { 00024 00025 enum ExoIIElementType 00026 { 00027 EXOII_SPHERE = 0, 00028 EXOII_SPRING, 00029 EXOII_BAR, 00030 EXOII_BAR2, 00031 EXOII_BAR3, 00032 EXOII_BEAM, 00033 EXOII_BEAM2, 00034 EXOII_BEAM3, 00035 EXOII_TRUSS, 00036 EXOII_TRUSS2, 00037 EXOII_TRUSS3, 00038 EXOII_TRI, 00039 EXOII_TRI3, 00040 EXO_SHELL3, 00041 EXOII_TRI6, 00042 EXOII_TRI7, 00043 EXOII_QUAD, 00044 EXOII_QUAD4, 00045 EXOII_QUAD5, 00046 EXOII_QUAD8, 00047 EXOII_QUAD9, 00048 EXOII_SHELL, 00049 EXOII_SHELL4, 00050 EXOII_SHELL5, 00051 EXOII_SHELL8, 00052 EXOII_SHELL9, 00053 EXOII_TETRA, 00054 EXOII_TETRA4, 00055 EXOII_TET4, 00056 EXOII_TETRA8, 00057 EXOII_TETRA10, 00058 EXOII_TETRA14, 00059 EXOII_PYRAMID, 00060 EXOII_PYRAMID5, 00061 EXOII_PYRAMID10, 00062 EXOII_PYRAMID13, 00063 EXOII_PYRAMID18, 00064 EXOII_WEDGE, 00065 EXOII_KNIFE, 00066 EXOII_HEX, 00067 EXOII_HEX8, 00068 EXOII_HEX9, 00069 EXOII_HEX20, 00070 EXOII_HEX27, 00071 EXOII_HEXSHELL, 00072 EXOII_POLYGON, 00073 EXOII_POLYHEDRON, 00074 EXOII_MAX_ELEM_TYPE 00075 }; 00076 00077 class ExoIIInterface 00078 { 00079 public: 00080 enum 00081 { 00082 MAX_STR_LENGTH = 33, 00083 MAX_LINE_LENGTH = 80 00084 }; 00085 00086 ExoIIInterface() {} 00087 virtual ~ExoIIInterface() {} 00088 00089 //! given the element name, return the type 00090 virtual ExoIIElementType element_name_to_type( const char* name ) = 0; 00091 00092 //! get the element type of the entity; this entity can either be a meshset, 00093 //! in which case it will be assumed to be a material set meshset, or an 00094 //! individual entity. 00095 virtual ExoIIElementType get_element_type( EntityHandle entity, 00096 Tag mid_nodes_tag, 00097 Tag geom_dimension_tag, 00098 EntityType indiv_entity_type = MBMAXTYPE ) = 0; 00099 00100 virtual int has_mid_nodes( ExoIIElementType elem_type, int dimension ) = 0; 00101 virtual void has_mid_nodes( ExoIIElementType elem_type, int* array ) = 0; 00102 00103 virtual const char* element_type_name( ExoIIElementType type ) = 0; 00104 00105 //! return the geometric dimension of the specified element type 00106 virtual int geometric_dimension( const ExoIIElementType elem_type ) = 0; 00107 }; 00108 00109 } // namespace moab 00110 00111 #endif