[cig-commits] r11477 - cs/benchmark/cigma/trunk/src

luis at geodynamics.org luis at geodynamics.org
Wed Mar 19 12:00:10 PDT 2008


Author: luis
Date: 2008-03-19 12:00:10 -0700 (Wed, 19 Mar 2008)
New Revision: 11477

Modified:
   cs/benchmark/cigma/trunk/src/ListCmd.cpp
   cs/benchmark/cigma/trunk/src/VtkList.cpp
   cs/benchmark/cigma/trunk/src/VtkList.h
Log:
Make sure the list command supports the VTK XML format as well


Modified: cs/benchmark/cigma/trunk/src/ListCmd.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/ListCmd.cpp	2008-03-19 19:00:09 UTC (rev 11476)
+++ cs/benchmark/cigma/trunk/src/ListCmd.cpp	2008-03-19 19:00:10 UTC (rev 11477)
@@ -76,21 +76,25 @@
 
     path_splitext(filename, fileroot, extension);
     
-    if (extension == ".vtk")
+    if (extension == ".h5")
     {
-        vtkls(filename.c_str());
-    }
-    else if (extension == ".h5")
-    {
         int ret;
         string cmd = "h5ls -r ";
         cmd += filename;
         ret = system(cmd.c_str());
         return ret;
     }
+    else if (extension == ".vtk")
+    {
+        list_vtk(filename.c_str());
+    }
+    else if (extension == ".vts")
+    {
+        list_vts(filename.c_str());
+    }
     else
     {
-        cerr << "list: File extension must be .h5 or .vtk"
+        cerr << "list: File extensions must be HDF5(.h5) or VTK(.vtk, .vts)"
              << " (found '" << extension << "')" << endl;
         return 2;
     }

Modified: cs/benchmark/cigma/trunk/src/VtkList.cpp
===================================================================
--- cs/benchmark/cigma/trunk/src/VtkList.cpp	2008-03-19 19:00:09 UTC (rev 11476)
+++ cs/benchmark/cigma/trunk/src/VtkList.cpp	2008-03-19 19:00:10 UTC (rev 11477)
@@ -1,13 +1,23 @@
+#include <cassert>
 #include "VtkList.h"
+
+#include "vtkDataSetReader.h"
+#include "vtkXMLStructuredGridReader.h"
+
 #include "vtkDataSet.h"
+#include "vtkStructuredGrid.h"
+
 #include "vtkPointData.h"
 #include "vtkCellData.h"
 #include "vtkDataArray.h"
 
+
 using namespace std;
 
+
 // ---------------------------------------------------------------------------
 
+/*
 VtkFileType getFileType(vtkDataSetReader *reader)
 {
     // XXX: are these mutually exclusive?
@@ -23,8 +33,9 @@
         return VTK_FILE_RECTILINEAR_GRID;
     return VTK_FILE_NONE;
 
-}
+} // */
 
+
 const char *getFileTypeName(VtkFileType fileType)
 {
     if (fileType == VTK_FILE_POLYDATA)
@@ -40,39 +51,13 @@
     return "none";
 }
 
+
 // ---------------------------------------------------------------------------
 
-void vtkls(const char *filename)
+void vtkls(vtkDataSet *dataset)
 {
-    vtkDataSetReader *reader = vtkDataSetReader::New();
-    reader->SetFileName(filename);
-    cout << "Reading " << filename << endl;
+    assert(dataset != 0);
 
-    int ierr = -1;
-
-    ierr = reader->OpenVTKFile();   // does file exist?
-    if (ierr == 0)
-    {
-        cerr << "Could not open " << filename << endl;
-        exit(1);
-    }
-
-    ierr = reader->ReadHeader();    // is the vtk header present?
-    if (ierr == 0)
-    {
-        cerr << "Unrecognized file " << filename << endl;
-        exit(1);
-    }
-
-
-    // ---------------------------------------------------
-
-    reader->Update();
-    //reader->PrintSelf(cout, 0);
-
-    vtkDataSet *dataset = reader->GetOutput();
-    //dataset->PrintSelf(cout, 0);
-
     vtkPointData *pointData = dataset->GetPointData();
     //pointData->PrintSelf(cout, 0);
 
@@ -103,47 +88,95 @@
     int numArrays;
     int numTuples, numComponents;
 
-    const bool group_by_arrays = true;
-    const bool group_by_class = false;
-
-
-    if (group_by_arrays)
+    numArrays = pointData->GetNumberOfArrays();
+    if (numArrays > 0)
     {
-        numArrays = pointData->GetNumberOfArrays();
-        if (numArrays > 0)
+        for (i = 0; i < numArrays; i++)
         {
-            for (i = 0; i < numArrays; i++)
-            {
-                vtkDataArray *dataArray = pointData->GetArray(i);
-                const char *name = pointData->GetArrayName(i);
-                numTuples = dataArray->GetNumberOfTuples();
-                numComponents = dataArray->GetNumberOfComponents();
-                cout << "PointDataArray[" << i << "] = " << name << " ";
-                //cout << dataArray->GetClassName() << " ";
-                cout << "(" << numTuples << " x " << numComponents << ")";
-                cout << endl;
-            }
+            vtkDataArray *dataArray = pointData->GetArray(i);
+            const char *name = pointData->GetArrayName(i);
+            numTuples = dataArray->GetNumberOfTuples();
+            numComponents = dataArray->GetNumberOfComponents();
+            cout << "PointDataArray[" << i << "] = " << name << " ";
+            //cout << dataArray->GetClassName() << " ";
+            cout << "(" << numTuples << " x " << numComponents << ")";
+            cout << endl;
         }
+    }
 
-        numArrays = cellData->GetNumberOfArrays();
-        if (numArrays > 0)
+    numArrays = cellData->GetNumberOfArrays();
+    if (numArrays > 0)
+    {
+        for (i = 0; i < numArrays; i++)
         {
-            for (i = 0; i < numArrays; i++)
-            {
-                vtkDataArray *dataArray = cellData->GetArray(i);
-                const char *name = cellData->GetArrayName(i);
-                numTuples = dataArray->GetNumberOfTuples();
-                numComponents = dataArray->GetNumberOfComponents();
-                cout << "CellDataArray[" << i << "] = " << name << " ";
-                //cout << dataArray->GetClassName() << " ";
-                cout << "(" << numTuples << " x " << numComponents << ")";
-                cout << endl;
-            }
+            vtkDataArray *dataArray = cellData->GetArray(i);
+            const char *name = cellData->GetArrayName(i);
+            numTuples = dataArray->GetNumberOfTuples();
+            numComponents = dataArray->GetNumberOfComponents();
+            cout << "CellDataArray[" << i << "] = " << name << " ";
+            //cout << dataArray->GetClassName() << " ";
+            cout << "(" << numTuples << " x " << numComponents << ")";
+            cout << endl;
         }
     }
 
+    return;
+}
+
+
+// ---------------------------------------------------------------------------
+
+void list_vtk(const char *filename)
+{
+    int outputType;
+    vtkDataSetReader *reader = vtkDataSetReader::New();
+
+    reader->SetFileName(filename);
+    cout << "Reading " << filename << endl;
+
+    int ierr = -1;
+
+    ierr = reader->OpenVTKFile();   // does file exist?
+    if (ierr == 0)
+    {
+        cerr << "Could not open " << filename << endl;
+        exit(1);
+    }
+
+    ierr = reader->ReadHeader();    // is the vtk header present?
+    if (ierr == 0)
+    {
+        cerr << "Unrecognized file " << filename << endl;
+        exit(1);
+    }
+
+    outputType = reader->ReadOutputType();
+    if (outputType < 0)
+    {
+        cerr << "Invalid VTK file? " << filename << endl;
+        exit(1);
+    }
+
+
+    // ---------------------------------------------------
+    reader->Update();
+    //reader->PrintSelf(cout, 0);
+
+    vtkDataSet *dataset = reader->GetOutput();
+    //dataset->PrintSelf(cout, 0);
+
+    const bool group_by_arrays = true;
+    const bool group_by_class = false;
+
+    if (group_by_arrays)
+    {
+        vtkls(dataset);
+    }
+
     if (group_by_class)
     {
+        int n, i;
+
         n = reader->GetNumberOfFieldDataInFile();
         for (i = 0; i < n; i++)
         {
@@ -181,5 +214,37 @@
         }
     }
 
+    reader->Delete();
+
     return;
 }
+
+
+void list_vts(const char *filename)
+{
+    vtkXMLStructuredGridReader *reader = vtkXMLStructuredGridReader::New();
+
+    int canReadFile = 0;
+    canReadFile = reader->CanReadFile(filename);
+
+    if (!canReadFile)
+    {
+        cerr << "Could not read " << filename << endl;
+        exit(1);
+    }
+
+    reader->SetFileName(filename);
+    cout << "Reading " << filename << endl;
+
+    reader->Update();
+    //reader->PrintSelf(cout, 0);
+
+    vtkStructuredGrid *sgrid = reader->GetOutput();
+    vtkDataSet *dataset = static_cast<vtkDataSet*>(sgrid);
+
+    vtkls(dataset);
+    
+    reader->Delete();
+}
+
+// ---------------------------------------------------------------------------

Modified: cs/benchmark/cigma/trunk/src/VtkList.h
===================================================================
--- cs/benchmark/cigma/trunk/src/VtkList.h	2008-03-19 19:00:09 UTC (rev 11476)
+++ cs/benchmark/cigma/trunk/src/VtkList.h	2008-03-19 19:00:10 UTC (rev 11477)
@@ -1,7 +1,6 @@
 #ifndef __VTK_LIST_H__
 #define __VTK_LIST_H__
 
-#include "vtkDataSetReader.h"
 
 typedef enum {
     VTK_FILE_NONE,
@@ -12,10 +11,11 @@
     VTK_FILE_RECTILINEAR_GRID
 } VtkFileType;
 
-VtkFileType getFileType(vtkDataSetReader *reader);
+//VtkFileType getFileType(vtkDataSetReader *reader);
 const char *getFileTypeName(VtkFileType fileType);
 
+void list_vtk(const char *filename);
+void list_vts(const char *filename);
 
-void vtkls(const char *filename);
 
 #endif



More information about the cig-commits mailing list