Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
ExoIIInterface.hpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines