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 VTK_UTIL_HPP 00017 #define VTK_UTIL_HPP 00018 00019 #include "moab/EntityType.hpp" 00020 00021 namespace moab 00022 { 00023 00024 //! Structure defining relation between MOAB and VTK element 00025 //! types. VTK had different types for quadratic than linear 00026 //! elements, so a tuple of the MOAB type and number of 00027 //! elements maps to a VTK type. 00028 struct VtkElemType 00029 { 00030 const char* name; //!< String name for use in error messages 00031 unsigned vtk_type; //!< VTK integer type 00032 EntityType mb_type; //!< MOAB type 00033 unsigned num_nodes; //!< Number of nodes (0 for polygon) 00034 const unsigned* node_order; //!< VTK element node ordering, indexed by 00035 //!< the VTK node position and containing 00036 //!< the corresponding MOAB node position. 00037 //!< NOTE: This field is NULL if MOAB and VTK 00038 //!< ordering is the same! 00039 }; 00040 00041 //! General data about VTK files for use by read and write code. 00042 //! \author Jason Kraftcheck 00043 class VtkUtil 00044 { 00045 00046 public: 00047 //! vtk data type names, indexed by DataType 00048 static const char* vtkTypeNames[]; 00049 00050 //! Vtk types, indexed by VTK type number. 00051 //! For unused VTK type numbers, mb_type will be MBMAXTYPE. 00052 static const VtkElemType vtkElemTypes[]; 00053 00054 //! Lenght of \ref vtkElemTypes 00055 static const unsigned numVtkElemType; 00056 00057 //! Get the VTK type corresponding to a tuple of the MOAB type and number of nodes. 00058 //! num_nodes is ignored for MBPOLYGON type. 00059 static const VtkElemType* get_vtk_type( EntityType type, unsigned num_nodes ); 00060 }; 00061 00062 } // namespace moab 00063 00064 #endif