def read(casePath, time, debug=False):
    """Read the case from a given path to .foam file.

    Parameters
    ----------
    casePath : str
        The path to the .foam file.
    time : float
        The time step to load, default to latest time
    debug : bool
        Debug switch

    Returns
    -------
        The reader updated with the read case.

    Raises
    ------
    ValueError
        If the path is not valid.


    """
    # Check that paths are valid
    if not os.path.exists(casePath):
        raise ValueError("Provided path to .foam file invalid!")

    if debug:
        print("    Opening the case")
    # Case reader
    reader = vtk.vtkOpenFOAMReader()
    reader.SetFileName(casePath)
    reader.Update()

    if debug:
        print("    Changing reader parameters")
    reader.CreateCellToPointOff()
    reader.DisableAllPointArrays()
    reader.EnableAllPatchArrays()
    reader.DecomposePolyhedraOn()
    reader.Update()
    reader.UpdateInformation()

    info = reader.GetExecutive().GetOutputInformation(0)

    if debug:
        print("The available timesteps are", vtk_to_numpy(reader.GetTimeValues()))

    if time is None:
        print("Selecting the latest available time step")
        info.Set(vtk.vtkStreamingDemandDrivenPipeline.UPDATE_TIME_STEP(),
                 vtk_to_numpy(reader.GetTimeValues())[-1])
    else:
        print("Selecting the time step", time)
        info.Set(vtk.vtkStreamingDemandDrivenPipeline.UPDATE_TIME_STEP(), time)

    reader.Update()
    reader.UpdateInformation()

    return reader
Example #2
0
 def __init__(self, module_manager):
     SimpleVTKClassModuleBase.__init__(
         self, module_manager,
         vtk.vtkOpenFOAMReader(), 'Reading vtkOpenFOAM.',
         (), ('vtkOpenFOAM',),
         replaceDoc=True,
         inputFunctions=None, outputFunctions=None)
Example #3
0
    def openFile(self):

        #ここでファイルを開くを実行.開けるファイルは「.foam」形式に限定
        fileName = QFileDialog.getOpenFileName(
            self, 'Open file',
            os.path.expanduser('~') + '/Desktop', "OpenFOAM File (*.foam)")

        print(fileName)
        reader = vtk.vtkOpenFOAMReader()
        reader.SetFileName(
            str(fileName[0])
        )  #パス+ファイル名が格納されるのは[0]番.「1]にはファイルの形式「OpenFOAM File (*.foam)」が格納される.

        reader.CreateCellToPointOn()
        reader.DecomposePolyhedraOn()
        reader.EnableAllCellArrays()
        reader.Update()

        filter2 = vtk.vtkGeometryFilter()
        filter2.SetInputConnection(reader.GetOutputPort())

        mapper = vtk.vtkCompositePolyDataMapper2()
        mapper.SetInputConnection(filter2.GetOutputPort())
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        ren = vtk.vtkRenderer()
        ##背景色の設定
        ren.GradientBackgroundOn()  #グラデーション背景を設定
        ren.SetBackground2(0.2, 0.4, 0.6)  #上面の色
        ren.SetBackground(1, 1, 1)  #下面の色
        self.widget.GetRenderWindow().AddRenderer(ren)
        ren.AddActor(actor)
Example #4
0
 def __init__(self, module_manager):
     SimpleVTKClassModuleBase.__init__(self,
                                       module_manager,
                                       vtk.vtkOpenFOAMReader(),
                                       'Reading vtkOpenFOAM.', (),
                                       ('vtkOpenFOAM', ),
                                       replaceDoc=True,
                                       inputFunctions=None,
                                       outputFunctions=None)
Example #5
0
    def __init__(self, fileName, **kwargs):
        self.reader = vtk.vtkOpenFOAMReader()
        self.reader.SetFileName(fileName)
        self.reader.UpdateInformation()
        self.timeValues = self.reader.GetTimeValues()
        self.Nt = self.timeValues.GetNumberOfTuples()

        # Default options (read everything)
        self.reader.DecomposePolyhedraOn()
        self.reader.CacheMeshOn()
        self.reader.EnableAllCellArrays()
        self.reader.EnableAllPointArrays()
        self.reader.CreateCellToPointOff()
        self.reader.EnableAllPatchArrays()
        self.reader.EnableAllLagrangianArrays()

        # Read options
        for k, v in kwargs.items():
            print k, ' => ', v
            if k == 'cellArrays':
                self.reader.DisableAllCellArrays()
                if v:
                    for cellArray in v:
                        self.reader.SetCellArrayStatus(cellArray, 1)
            elif k == 'patchArrays':
                self.reader.DisableAllPatchArrays()
                if v:
                    for patchArray in v:
                        self.reader.SetPatchArrayStatus(patchArray, 1)
            elif k == 'pointArrays':
                self.reader.DisableAllPointArrays()
                if v:
                    for pointArray in v:
                        self.reader.SetPointArrayStatus(pointArray, 1)
            elif k == 'lagrangianArrays':
                self.reader.DisableAllLagrangianArrays()
                if v:
                    for lagrangianArray in v:
                        self.reader.SetLagrangianArrayStatus(
                            lagrangianArray, 1)
            elif k == 'decomposePolyhedra':
                if v:
                    self.reader.DecomposePolyhedraOn()
                else:
                    self.reader.DecomposePolyhedraOff()
            elif k == 'cellToPoint':
                if v:
                    self.reader.CreateCellToPointOn()
                else:
                    self.reader.CreateCellToPointOff()
            elif k == 'cacheMesh':
                if v:
                    self.reader.CacheMeshOn()
                else:
                    self.reader.CacheMeshOff()
            else:
                raise ValueError('Invalid argument ' + k)
Example #6
0
    def load_vtk_structured(self, file_name):
        self.fname = file_name
        reader = vtk.vtkOpenFOAMReader()
        reader.SetFileName(file_name)
        reader.Update()

        self.output = reader.GetOutput().GetBlock(0)  # vtkUnstructuredGrid
        self.vtk_n_pts = self.output.GetNumberOfPoints()
        self.vtk_pts = self.output.GetPointData()
        self.vtk_n_cells = self.output.GetNumberOfCells()
        self.vtk_n_props = self.vtk_pts.GetNumberOfArrays()
        self.vtk_n_props = reader.GetNumberOfCellArrays()

        self.reader = reader

        print " [Vtk_unstructured_reader]:"
        print "                           Cells: %d" % (self.vtk_n_cells)
        print "                           Point: %d" % (self.vtk_n_pts)
        print "                           Props: ",
        for i in range(self.vtk_n_props):
            print "\'%s\'" % (reader.GetCellArrayName(i)),
        print

        self.vtk_n_patch = reader.GetNumberOfPatchArrays()
        print "                           Patch: ",
        for i in range(self.vtk_n_patch):
            print "                                \'%s\'" % (
                reader.GetPatchArrayName(i))

        Vtu = self.output
        vtu = vtk.vtkAppendFilter()
        vtu.SetInput(Vtu)
        vtu.Update()

        writer = vtk.vtkXMLUnstructuredGridWriter()
        writer.SetFileName("xxx.vtu")
        writer.SetInput(vtu)
        writer.Write()
Example #7
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.reader = vtk.vtkOpenFOAMReader()
        self.filter2 = vtk.vtkGeometryFilter()
        self.mapper = vtk.vtkCompositePolyDataMapper2()
        self.actor = vtk.vtkActor()

        self.widget = QVTKRenderWindowInteractor(self)
        self.widget.Initialize()
        ##背景色の設定
        self.ren = vtk.vtkRenderer()
        self.widget.GetRenderWindow().AddRenderer(self.ren)
        self.widget.Start()
        self.widget.show()

        self.setCentralWidget(self.widget)
        #UIのインスタンスを介してアイコンと実体(関数)をつなげる
        self.ui.actionOpenFile.triggered.connect(self.openFile)
        self.ui.actionResetFile.triggered.connect(self.resetFile)
        self.setupInitView()
Example #8
0
def _load_file(filename, c, alpha, threshold, spacing, unpack):
    fl = filename.lower()

    ################################################################# other formats:
    if fl.endswith(".xml") or fl.endswith(".xml.gz") or fl.endswith(".xdmf"):
        # Fenics tetrahedral file
        actor = loadDolfin(filename)
    elif fl.endswith(".neutral") or fl.endswith(".neu"):  # neutral tetrahedral file
        actor = loadNeutral(filename)
    elif fl.endswith(".gmsh"):  # gmesh file
        actor = loadGmesh(filename)
    elif fl.endswith(".pcd"):  # PCL point-cloud format
        actor = loadPCD(filename)
        actor.GetProperty().SetPointSize(2)
    elif fl.endswith(".off"):
        actor = loadOFF(filename)
    elif fl.endswith(".3ds"):  # 3ds format
        actor = load3DS(filename)
    elif fl.endswith(".wrl"):
        importer = vtk.vtkVRMLImporter()
        importer.SetFileName(filename)
        importer.Read()
        importer.Update()
        actors = importer.GetRenderer().GetActors() #vtkActorCollection
        actors.InitTraversal()
        wacts = []
        for i in range(actors.GetNumberOfItems()):
            act = actors.GetNextActor()
            wacts.append(act)
        actor = Assembly(wacts)

        ################################################################# volumetric:
    elif fl.endswith(".tif") or fl.endswith(".slc") or fl.endswith(".vti") \
        or fl.endswith(".mhd") or fl.endswith(".nrrd") or fl.endswith(".nii") \
        or fl.endswith(".dem"):
        img = loadImageData(filename, spacing)
        if threshold is False:
            if c is None and alpha == 1:
                c = ['b','lb','lg','y','r'] # good for blackboard background
                alpha = (0.0, 0.0, 0.2, 0.4, 0.8, 1)
            actor = Volume(img, c, alpha)
        else:
            actor = Volume(img).isosurface(threshold=threshold)
            actor.color(c).alpha(alpha)

        ################################################################# 2D images:
    elif fl.endswith(".png") or fl.endswith(".jpg") or fl.endswith(".bmp") or fl.endswith(".jpeg"):
        if ".png" in fl:
            picr = vtk.vtkPNGReader()
        elif ".jpg" in fl or ".jpeg" in fl:
            picr = vtk.vtkJPEGReader()
        elif ".bmp" in fl:
            picr = vtk.vtkBMPReader()
        picr.SetFileName(filename)
        picr.Update()
        actor = Picture()  # object derived from vtk.vtkImageActor()
        actor.SetInputData(picr.GetOutput())
        if alpha is None:
            alpha = 1
        actor.SetOpacity(alpha)

        ################################################################# multiblock:
    elif fl.endswith(".vtm") or fl.endswith(".vtmb"):
        read = vtk.vtkXMLMultiBlockDataReader()
        read.SetFileName(filename)
        read.Update()
        mb = read.GetOutput()
        if unpack:
            acts = []
            for i in range(mb.GetNumberOfBlocks()):
                b =  mb.GetBlock(i)
                if isinstance(b, (vtk.vtkPolyData,
                                  vtk.vtkImageData,
                                  vtk.vtkUnstructuredGrid,
                                  vtk.vtkStructuredGrid,
                                  vtk.vtkRectilinearGrid)):
                    acts.append(b)
            return acts
        else:
            return mb

        ################################################################# numpy:
    elif fl.endswith(".npy"):
        acts = loadNumpy(filename)
        if unpack == False:
            return Assembly(acts)
        return acts

    elif fl.endswith(".geojson") or fl.endswith(".geojson.gz"):
        return loadGeoJSON(fl)

        ################################################################# polygonal mesh:
    else:
        if fl.endswith(".vtk"): # read all legacy vtk types

            #output can be:
            # PolyData, StructuredGrid, StructuredPoints, UnstructuredGrid, RectilinearGrid
            reader = vtk.vtkDataSetReader()
            reader.ReadAllScalarsOn()
            reader.ReadAllVectorsOn()
            reader.ReadAllTensorsOn()
            reader.ReadAllFieldsOn()
            reader.ReadAllNormalsOn()
            reader.ReadAllColorScalarsOn()

        elif fl.endswith(".ply"):
            reader = vtk.vtkPLYReader()
        elif fl.endswith(".obj"):
            reader = vtk.vtkOBJReader()
        elif fl.endswith(".stl"):
            reader = vtk.vtkSTLReader()
        elif fl.endswith(".byu") or fl.endswith(".g"):
            reader = vtk.vtkBYUReader()
        elif fl.endswith(".foam"):  # OpenFoam
            reader = vtk.vtkOpenFOAMReader()
        elif fl.endswith(".pvd"):
            reader = vtk.vtkXMLGenericDataObjectReader()
        elif fl.endswith(".vtp"):
            reader = vtk.vtkXMLPolyDataReader()
        elif fl.endswith(".vts"):
            reader = vtk.vtkXMLStructuredGridReader()
        elif fl.endswith(".vtu"):
            reader = vtk.vtkXMLUnstructuredGridReader()
        elif fl.endswith(".vtr"):
            reader = vtk.vtkXMLRectilinearGridReader()
        elif fl.endswith(".pvtk"):
            reader = vtk.vtkPDataSetReader()
        elif fl.endswith(".pvtr"):
            reader = vtk.vtkXMLPRectilinearGridReader()
        elif fl.endswith("pvtu"):
            reader = vtk.vtkXMLPUnstructuredGridReader()
        elif fl.endswith(".txt") or fl.endswith(".xyz"):
            reader = vtk.vtkParticleReader()  # (format is x, y, z, scalar)
        elif fl.endswith(".facet"):
            reader = vtk.vtkFacetReader()
        else:
            return None

        reader.SetFileName(filename)
        reader.Update()
        routput = reader.GetOutput()

        if not routput:
            colors.printc("~noentry Unable to load", filename, c=1)
            return None

        actor = Actor(routput, c, alpha)
        if fl.endswith(".txt") or fl.endswith(".xyz"):
            actor.GetProperty().SetPointSize(4)

    actor.filename = filename
    return actor
Example #9
0
    def __init__(self, fileName, **kwargs):
        self.reader = vtk.vtkOpenFOAMReader()
        self.reader.SetFileName(fileName)
        self.reader.UpdateInformation()
        self.timeValues = self.reader.GetTimeValues()
        self.Nt = self.timeValues.GetNumberOfTuples()
        self.caseFolder = os.path.dirname(fileName)

        # Default options (read everything)
        self.reader.DecomposePolyhedraOn()
        self.reader.CacheMeshOn()
        self.reader.EnableAllCellArrays()
        self.reader.EnableAllPointArrays()
        self.reader.CreateCellToPointOff()
        self.reader.EnableAllPatchArrays()
        self.reader.EnableAllLagrangianArrays()

        # Time dictionary for the current timestep
        self.__timeDict = None  # Lazy evaluation

        # Read options
        for k, v in list(kwargs.items()):
            #print k, ' => ', v
            if k == 'cellArrays':
                self.reader.DisableAllCellArrays()
                if v:
                    for cellArray in v:
                        self.reader.SetCellArrayStatus(cellArray, 1)
            elif k == 'patchArrays':
                patches = self.getPatchNames()
                self.reader.DisableAllPatchArrays()
                if v:
                    for patchArray in v:
                        if not patchArray in patches:
                            print('Available patches')
                            for patch in patches:
                                print(' ' + patch)
                            raise RuntimeError("Unknown patch name " +
                                               patchArray)
                        self.reader.SetPatchArrayStatus(patchArray, 1)
            elif k == 'pointArrays':
                self.reader.DisableAllPointArrays()
                if v:
                    for pointArray in v:
                        self.reader.SetPointArrayStatus(pointArray, 1)
            elif k == 'lagrangianArrays':
                self.reader.DisableAllLagrangianArrays()
                if v:
                    for lagrangianArray in v:
                        self.reader.SetLagrangianArrayStatus(
                            lagrangianArray, 1)
            elif k == 'decomposePolyhedra':
                if v:
                    self.reader.DecomposePolyhedraOn()
                else:
                    self.reader.DecomposePolyhedraOff()
            elif k == 'cellToPoint':
                if v:
                    self.reader.CreateCellToPointOn()
                else:
                    self.reader.CreateCellToPointOff()
            elif k == 'cacheMesh':
                if v:
                    self.reader.CacheMeshOn()
                else:
                    self.reader.CacheMeshOff()
            else:
                raise ValueError('Invalid argument ' + k)
Example #10
0
#!/usr/bin/env python

# -*- coding: utf-8 -*-
import os
import vtk as vtk
import numpy as np
from vtk.util.numpy_support import vtk_to_numpy

rootDir = "pitzDaily"
fileName = rootDir + "/system/controlDict"

# reader
reader = vtk.vtkOpenFOAMReader()
reader.SetFileName(fileName)
reader.CreateCellToPointOn()
reader.DecomposePolyhedraOn()
reader.EnableAllCellArrays()
reader.Update()

tArray = vtk_to_numpy(reader.GetTimeValues())  #出力ファイルの時間を格納
print(tArray)  #output-> [   0.  100.  200.  300.  400.  406.]
reader.UpdateTimeStep(tArray[-1])  #最新の時間406を出力設定
reader.Update()

filter = vtk.vtkGeometryFilter()
filter.SetInputConnection(reader.GetOutputPort())  #filterにreaderを設定

# mapper
mapper = vtk.vtkCompositePolyDataMapper2()
mapper.SetInputConnection(filter.GetOutputPort())  #mapperにfilterを設定
##スカラー値の設定