![]() |
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