moab
ReadVtk.hpp
Go to the documentation of this file.
00001 
00016 #ifndef READ_VTK_HPP
00017 #define READ_VTK_HPP
00018 
00019 #include "moab/Forward.hpp"
00020 #include "moab/ReaderIface.hpp"
00021 
00022 #include <string>
00023 
00024 namespace moab {
00025 
00026 class ReadUtilIface;
00027 class FileTokenizer;
00028 
00029 class ReadVtk : public ReaderIface
00030 {
00031    
00032 public:
00033 
00034   static ReaderIface* factory( Interface* );
00035 
00037   ErrorCode load_file( const char* file_name,
00038                        const EntityHandle* file_set,
00039                        const FileOptions& opts,
00040                        const SubsetList* subset_list = 0,
00041                        const Tag* file_id_tag = 0 );
00042 
00043   ErrorCode read_tag_values( const char* file_name,
00044                              const char* tag_name,
00045                              const FileOptions& opts,
00046                              std::vector<int>& tag_values_out,
00047                              const SubsetList* subset_list = 0 );
00048   
00050   ReadVtk(Interface* impl = NULL);
00051 
00053   virtual ~ReadVtk();
00054 
00055 protected:
00056 
00057   ErrorCode allocate_vertices( long num_vtx,
00058                                  EntityHandle& start_handle_out,
00059                                  double*& x_coord_array_out,
00060                                  double*& y_coord_array_out,
00061                                  double*& z_coord_array_out );
00062 
00063   ErrorCode read_vertices( FileTokenizer& tokens,
00064                              long num_verts, 
00065                              EntityHandle& start_handle_out );
00066 
00067   ErrorCode allocate_elements( long num_elements,
00068                                  int vert_per_element,
00069                                  EntityType type,
00070                                  EntityHandle& start_handle_out,
00071                                  EntityHandle*& conn_array_out,
00072                                  std::vector<Range>& append_to_this );
00073 
00074   ErrorCode vtk_read_dataset( FileTokenizer& tokens,
00075                                 Range& vertex_list,
00076                                 std::vector<Range>& element_list );
00077 
00078   ErrorCode vtk_read_structured_points( FileTokenizer& tokens, 
00079                                           Range& vertex_list,
00080                                           std::vector<Range>& elem_list );
00081 
00082   ErrorCode vtk_read_structured_grid( FileTokenizer& tokens, 
00083                                         Range& vertex_list,
00084                                         std::vector<Range>& elem_list );
00085 
00086   ErrorCode vtk_read_rectilinear_grid( FileTokenizer& tokens, 
00087                                          Range& vertex_list,
00088                                          std::vector<Range>& elem_list );
00089                                          
00090   ErrorCode vtk_read_polydata( FileTokenizer& tokens, 
00091                                  Range& vertex_list,
00092                                  std::vector<Range>& elem_list );
00093                                  
00094   ErrorCode vtk_read_polygons( FileTokenizer& tokens,
00095                                  EntityHandle first_vtx, 
00096                                  std::vector<Range>& elem_list );
00097 
00098   ErrorCode vtk_read_unstructured_grid( FileTokenizer& tokens,
00099                                           Range& vertex_list,
00100                                           std::vector<Range>& elem_list  );
00101 
00102   ErrorCode vtk_create_structured_elems( const long* dims, 
00103                                            EntityHandle first_vtx,
00104                                            std::vector<Range>& elem_list );
00105 
00106   ErrorCode vtk_read_field( FileTokenizer& tokens );
00107 
00108   ErrorCode vtk_read_attrib_data( FileTokenizer& tokens, 
00109                                     std::vector<Range>& entities );
00110 
00111   ErrorCode vtk_read_tag_data( FileTokenizer& tokens, 
00112                                  int type, 
00113                                  size_t per_elem, 
00114                                  std::vector<Range>& entities,
00115                                  const char* name );
00116 
00117   ErrorCode vtk_read_scalar_attrib( FileTokenizer& tokens, 
00118                                       std::vector<Range>& entities,
00119                                       const char* name);
00120 
00121   ErrorCode vtk_read_color_attrib( FileTokenizer& tokens, 
00122                                      std::vector<Range>& entities,
00123                                      const char* name);
00124 
00125   ErrorCode vtk_read_vector_attrib( FileTokenizer& tokens, 
00126                                       std::vector<Range>& entities,
00127                                       const char* name);
00128 
00129   ErrorCode vtk_read_texture_attrib( FileTokenizer& tokens,
00130                                        std::vector<Range>& entities,
00131                                        const char* name);
00132 
00133   ErrorCode vtk_read_tensor_attrib( FileTokenizer& tokens,
00134                                       std::vector<Range>& entities,
00135                                       const char* name );
00136 
00137   ErrorCode vtk_read_field_attrib( FileTokenizer& tokens, 
00138                                      std::vector<Range>& entities,
00139                                      const char* name);
00140 
00141   ErrorCode store_file_ids( Tag tag,
00142                               const Range& vertices,
00143                               const std::vector<Range>& elements );
00144 
00145 private:
00146 
00147   ReadUtilIface* readMeshIface;
00148 
00149   //------------member variables ------------//
00150 
00152   Interface* mdbImpl;
00153 
00155   EntityHandle mCurrentMeshHandle;
00156 
00158   std::string mPartitionTagName;
00159 };
00160 
00161 } // namespace moab
00162 
00163 #endif
00164 
00165 
00166 
00167 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines