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='F:/vtk/RISER_5838.vtk'<br> self.directory='F:/vtk/'<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)<=0:<br> print 'Filename not set'<br> return<br> else:<br> print 'Could not find file: ',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 'Could not Find'<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+'*.vtk')<br>
print 'Found',len(self.files),'Files'<br> return self.files<br>