From 97b7aa0d727200a3cc52801e967740af2be36586 Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Wed, 7 Mar 2012 11:49:07 +0000
Subject: [PATCH] BUG: vtkUnstructuredReader: support for lines and vtkIdType

---
 src/fileFormats/vtk/vtkUnstructuredReader.C | 10 ++++++----
 src/fileFormats/vtk/vtkUnstructuredReader.H | 16 +++++++++++++---
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/fileFormats/vtk/vtkUnstructuredReader.C b/src/fileFormats/vtk/vtkUnstructuredReader.C
index 2fbe4352426..26ecf9a0ade 100644
--- a/src/fileFormats/vtk/vtkUnstructuredReader.C
+++ b/src/fileFormats/vtk/vtkUnstructuredReader.C
@@ -36,13 +36,14 @@ defineTypeNameAndDebug(Foam::vtkUnstructuredReader, 0);
 
 template<>
 const char*
-Foam::NamedEnum<Foam::vtkUnstructuredReader::vtkDataType, 3>::names[] =
+Foam::NamedEnum<Foam::vtkUnstructuredReader::vtkDataType, 4>::names[] =
 {
     "int",
     "float",
-    "string"
+    "string",
+    "vtkIdType"
 };
-const Foam::NamedEnum<Foam::vtkUnstructuredReader::vtkDataType, 3>
+const Foam::NamedEnum<Foam::vtkUnstructuredReader::vtkDataType, 4>
 Foam::vtkUnstructuredReader::vtkDataTypeNames;
 
 
@@ -384,6 +385,7 @@ void Foam::vtkUnstructuredReader::readField
     switch (vtkDataTypeNames[dataType])
     {
         case VTK_INT:
+        case VTK_ID:
         {
             autoPtr<labelIOField> fieldVals
             (
@@ -724,7 +726,7 @@ void Foam::vtkUnstructuredReader::read(ISstream& inFile)
         else if (tag == "CELL_DATA")
         {
             readMode = CELL_DATA;
-            wantedSize = cells_.size()+faces_.size();
+            wantedSize = cells_.size()+faces_.size()+lines_.size();
 
             label nCells(readLabel(inFile));
             if (nCells != wantedSize)
diff --git a/src/fileFormats/vtk/vtkUnstructuredReader.H b/src/fileFormats/vtk/vtkUnstructuredReader.H
index d33fb01d017..201012eaec1 100644
--- a/src/fileFormats/vtk/vtkUnstructuredReader.H
+++ b/src/fileFormats/vtk/vtkUnstructuredReader.H
@@ -25,9 +25,18 @@ Class
     Foam::vtkUnstructuredReader
 
 Description
-    Reader for vtk unstructured legacy files. Supports single CELLS, POINTS
+    Reader for vtk unstructured_grid legacy files. Supports single CELLS, POINTS
     etc. entry only.
 
+    - POINTS becomes OpenFOAM points
+    - CELLS gets split into OpenFOAM
+        - cells
+        - faces
+        - lines
+    - CELL_DATA or POINT_DATA gets stored on the corresponding objectRegistry
+      in original vtk numbering order so use e.g. faceMap() to go from entry
+      in faces() back to vtk numbering.
+
 SourceFiles
     vtkUnstructuredReader.C
 
@@ -61,10 +70,11 @@ public:
         {
             VTK_INT,
             VTK_FLOAT,
-            VTK_STRING
+            VTK_STRING,
+            VTK_ID
         };
 
-        static const NamedEnum<vtkDataType, 3> vtkDataTypeNames;
+        static const NamedEnum<vtkDataType, 4> vtkDataTypeNames;
 
 
         //- Enumeration defining the vtk dataset types
-- 
GitLab