Branch data Line data Source code
1 : : /**
2 : : * MOAB, a Mesh-Oriented datABase, is a software component for creating,
3 : : * storing and accessing finite element mesh data.
4 : : *
5 : : * Copyright 2004 Sandia Corporation. Under the terms of Contract
6 : : * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
7 : : * retains certain rights in this software.
8 : : *
9 : : * This library is free software; you can redistribute it and/or
10 : : * modify it under the terms of the GNU Lesser General Public
11 : : * License as published by the Free Software Foundation; either
12 : : * version 2.1 of the License, or (at your option) any later version.
13 : : *
14 : : */
15 : :
16 : : #ifndef MOAB_EXOII_INTERFACE_HPP
17 : : #define MOAB_EXOII_INTERFACE_HPP
18 : :
19 : : #include "moab/Types.hpp"
20 : : #include "moab/Compiler.hpp"
21 : :
22 : : namespace moab
23 : : {
24 : :
25 : : enum ExoIIElementType
26 : : {
27 : : EXOII_SPHERE = 0,
28 : : EXOII_SPRING,
29 : : EXOII_BAR,
30 : : EXOII_BAR2,
31 : : EXOII_BAR3,
32 : : EXOII_BEAM,
33 : : EXOII_BEAM2,
34 : : EXOII_BEAM3,
35 : : EXOII_TRUSS,
36 : : EXOII_TRUSS2,
37 : : EXOII_TRUSS3,
38 : : EXOII_TRI,
39 : : EXOII_TRI3,
40 : : EXO_SHELL3,
41 : : EXOII_TRI6,
42 : : EXOII_TRI7,
43 : : EXOII_QUAD,
44 : : EXOII_QUAD4,
45 : : EXOII_QUAD5,
46 : : EXOII_QUAD8,
47 : : EXOII_QUAD9,
48 : : EXOII_SHELL,
49 : : EXOII_SHELL4,
50 : : EXOII_SHELL5,
51 : : EXOII_SHELL8,
52 : : EXOII_SHELL9,
53 : : EXOII_TETRA,
54 : : EXOII_TETRA4,
55 : : EXOII_TET4,
56 : : EXOII_TETRA8,
57 : : EXOII_TETRA10,
58 : : EXOII_TETRA14,
59 : : EXOII_PYRAMID,
60 : : EXOII_PYRAMID5,
61 : : EXOII_PYRAMID10,
62 : : EXOII_PYRAMID13,
63 : : EXOII_PYRAMID18,
64 : : EXOII_WEDGE,
65 : : EXOII_KNIFE,
66 : : EXOII_HEX,
67 : : EXOII_HEX8,
68 : : EXOII_HEX9,
69 : : EXOII_HEX20,
70 : : EXOII_HEX27,
71 : : EXOII_HEXSHELL,
72 : : EXOII_POLYGON,
73 : : EXOII_POLYHEDRON,
74 : : EXOII_MAX_ELEM_TYPE
75 : : };
76 : :
77 : : class ExoIIInterface
78 : : {
79 : : public:
80 : : enum
81 : : {
82 : : MAX_STR_LENGTH = 33,
83 : : MAX_LINE_LENGTH = 80
84 : : };
85 : :
86 : 0 : ExoIIInterface() {}
87 [ # # ]: 0 : virtual ~ExoIIInterface() {}
88 : :
89 : : //! given the element name, return the type
90 : : virtual ExoIIElementType element_name_to_type( const char* name ) = 0;
91 : :
92 : : //! get the element type of the entity; this entity can either be a meshset,
93 : : //! in which case it will be assumed to be a material set meshset, or an
94 : : //! individual entity.
95 : : virtual ExoIIElementType get_element_type( EntityHandle entity, Tag mid_nodes_tag, Tag geom_dimension_tag,
96 : : EntityType indiv_entity_type = MBMAXTYPE ) = 0;
97 : :
98 : : virtual int has_mid_nodes( ExoIIElementType elem_type, int dimension ) = 0;
99 : : virtual void has_mid_nodes( ExoIIElementType elem_type, int* array ) = 0;
100 : :
101 : : virtual const char* element_type_name( ExoIIElementType type ) = 0;
102 : :
103 : : //! return the geometric dimension of the specified element type
104 : : virtual int geometric_dimension( const ExoIIElementType elem_type ) = 0;
105 : : };
106 : :
107 : : } // namespace moab
108 : :
109 : : #endif
|