Greetings,<br><br>So, I have unstructured grid simulation data (produced by MFix) saved in a .vtk file. I have had success using the vtk unstructured grid reader to read the vtk files and see all the arrays which contain the simulation variables.<br>
<br>I would like to reduce the data by volume averaging which means I need the cell volumes, cell bounds, etc.<br><br>Any help in extracting this information would be much appreciated. I am currently using the latest python wrapped vtk library.<br>
<br>I have been piecing together a python class to provide some tools for processing vtk files in python. Currently it can read unstructured grids, return the available variables, cell centers, etc.<br><br>Thanks!<br>Justin<br>
<br>import vtk<br>import numpy as np<br>import glob<br>import vtk.util.numpy_support as vtkNP<br><br>class vtkFileRead:<br>    def __init__(self):<br>        self.filename=&#39;F:/vtk/RISER_5838.vtk&#39;<br>        self.directory=&#39;F:/vtk/&#39;<br>
    def setFile(self,Fname):<br>        self.filename=Fname<br>    def readFile(self):<br>        self.reader=vtk.vtkUnstructuredGridReader()<br>        try:<br>            self.reader.SetFileName(self.filename)<br>        except:<br>
            if len(self.filename)&lt;=0:<br>                print &#39;Filename not set&#39;<br>                return<br>            else:<br>                print &#39;Could not find file: &#39;,self.filename<br>                return<br>
        self.reader.ReadAllFieldsOn()<br>        self.reader.ReadAllScalarsOn()<br>        self.reader.ReadAllTensorsOn()<br>        self.reader.ReadAllVectorsOn()<br>        self.reader.ReadAllNormalsOn()<br>        self.reader.ReadAllColorScalarsOn()<br>
        self.reader.ReadAllTCoordsOn()<br>        self.reader.Update()<br>        return self.reader<br>    def getReaderOutput(self):<br>        self.readerOutput=self.reader.GetOutput()<br>        return self.readerOutput<br>
    def getCellData(self):<br>        self.output=self.reader.GetOutput()<br>        self.cellData=self.output.GetCellData()<br>        return self.cellData<br>    def getVariableNames(self):<br>        VarNames=[]<br>        for i in range(0,self.cellData.GetNumberOfArrays()-1):<br>
            VarNames.append(self.cellData.GetArrayName(i))<br>        return VarNames<br>    def GetValue(self,cell,var):<br>        for i in range(0,self.cellData.GetNumberOfArrays()-1):<br>            if var==self.cellData.GetArrayName(i):<br>
                array=self.cellData.GetArray(i)<br>                return array.GetTuple(cell)<br>        return &#39;Could not Find&#39;<br>    def GetArray(self,var):<br>        for i in range(0,self.cellData.GetNumberOfArrays()-1):<br>
            if var==self.cellData.GetArrayName(i):<br>                return self.cellData.GetArray(i)<br>    def vtkArrayToNumpy(self,vtkArray):<br>        return vtkNP.vtk_to_numpy(vtkArray)<br>    def CalcCenters(self):<br>
        centers=vtk.vtkCellCenters()<br>        centers.AddInput(self.output)<br>        centers.Update()<br>        self.centersOutput=centers.GetOutput()<br>        return self.centersOutput<br>    def GetCenter(self,cell):<br>
        return self.centersOutput.GetPoint(cell)<br>    def setDirectory(self,directory):<br>        self.directory=directory<br>    def findFiles(self):<br>        self.files=glob.glob(self.directory+&#39;*.vtk&#39;)<br>
        print &#39;Found&#39;,len(self.files),&#39;Files&#39;<br>        return self.files<br>