Beispiel #1
0
def __ensight_reader__(filename, reader):
    filename, fileExtension = os.path.splitext(filename)
    print "[ensight_reader] <- \'%s\'" % (filename)

    cdp = vtk.vtkCompositeDataPipeline()
    eg = vtk.vtkGenericEnSightReader()  # vtk.vtkEnSightGoldReader()
    eg.SetDefaultExecutivePrototype(cdp)

    eg.SetCaseFileName(filename)
    eg.ReadAllVariablesOn()
    eg.Update()

    reader = eg
Beispiel #2
0
    def init(self, filename=""):
        self.filename, self.fileExtension = os.path.splitext(filename)
        print "[Vtk_ensight_reader] <- \'%s\'" % (filename)

        cdp = vtk.vtkCompositeDataPipeline()
        self.eg = self.reader
        self.eg.SetDefaultExecutivePrototype(cdp)

        self.eg.SetCaseFileName(filename)
        self.eg.ReadAllVariablesOn()
        self.eg.Update()

        self.Obj = self.eg.GetOutput()

        __times__(self.eg)
Beispiel #3
0
import vtk
from vtk.test import Testing
from vtk.util.misc import vtkGetDataRoot

VTK_DATA_ROOT = vtkGetDataRoot()

ren1 = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren1)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
# read data
#
reader = vtk.vtkGenericEnSightReader()
# Make sure all algorithms use the composite data pipeline
cdp = vtk.vtkCompositeDataPipeline()
reader.SetDefaultExecutivePrototype(cdp)
reader.SetCaseFileName("" + str(VTK_DATA_ROOT) +
                       "/Data/EnSight/office_bin.case")
reader.Update()
# to add coverage for vtkOnePieceExtentTranslator
translator = vtk.vtkOnePieceExtentTranslator()
#[reader GetOutput] SetExtentTranslator translator
OutInfo = reader.GetOutputInformation(0)
sddp = vtk.vtkStreamingDemandDrivenPipeline()
sddp.SetExtentTranslator(OutInfo, translator)
outline = vtk.vtkStructuredGridOutlineFilter()
#    outline SetInputConnection [reader GetOutputPort]
outline.SetInputData(reader.GetOutput().GetBlock(0))
mapOutline = vtk.vtkPolyDataMapper()
mapOutline.SetInputConnection(outline.GetOutputPort())
#!/usr/bin/env python
import vtk
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# create a rendering window and renderer
ren1 = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren1)
renWin.StereoCapableWindowOn()
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
reader = vtk.vtkGenericEnSightReader()
# Make sure all algorithms use the composite data pipeline
cdp = vtk.vtkCompositeDataPipeline()
reader.SetDefaultExecutivePrototype(cdp)
reader.SetCaseFileName("" + str(VTK_DATA_ROOT) + "/Data/EnSight/blow2_bin.case")
reader.SetTimeValue(1)
geom = vtk.vtkGeometryFilter()
geom.SetInputConnection(reader.GetOutputPort())
mapper = vtk.vtkHierarchicalPolyDataMapper()
mapper.SetInputConnection(geom.GetOutputPort())
mapper.SetColorModeToMapScalars()
mapper.SetScalarModeToUsePointFieldData()
mapper.ColorByArrayComponent("displacement",0)
mapper.SetScalarRange(0,2.08)
actor = vtk.vtkActor()
actor.SetMapper(mapper)
# assign our actor to the renderer
ren1.AddActor(actor)
# enable user interface interactor
Beispiel #5
0
    def setFileName(self, file_name, lut):

        try:
            self.currently_has_actor = True
            self.lut = lut

            self.file_name = file_name
            self.reader = vtk.vtkExodusIIReader()
            self.reader.SetFileName(self.file_name)
            self.reader.UpdateInformation()

            self.current_dim = self.reader.GetDimensionality()

            self.min_timestep = 0
            self.max_timestep = 0
            range = self.reader.GetTimeStepRange()
            self.min_timestep = range[0]
            self.max_timestep = range[1]

            self.reader.SetAllArrayStatus(vtk.vtkExodusIIReader.ELEM_BLOCK, 1)
            self.reader.SetAllArrayStatus(vtk.vtkExodusIIReader.NODAL, 1)
            self.reader.SetAllArrayStatus(vtk.vtkExodusIIReader.NODAL_TEMPORAL,
                                          1)
            self.reader.SetTimeStep(self.max_timestep)
            self.reader.Update()
            self.current_variable_point_data = {}
            self.current_nodal_variables = []
            self.current_elemental_variables = []
            self.current_nodal_components = {}
            self.current_elemental_components = {}
            self.component_index = -1

            num_blocks = self.reader.GetNumberOfElementBlockArrays()
            self.blocks = set()
            self.block_to_name = {}
            for i in xrange(num_blocks):
                block_num = self.reader.GetObjectId(
                    vtk.vtkExodusIIReader.ELEM_BLOCK, i)
                self.blocks.add(block_num)
                if 'Unnamed' not in self.reader.GetObjectName(
                        vtk.vtkExodusIIReader.ELEM_BLOCK, i).split(' '):
                    self.block_to_name[block_num] = self.reader.GetObjectName(
                        vtk.vtkExodusIIReader.ELEM_BLOCK, i).split(' ')[0]

            cdp = vtk.vtkCompositeDataPipeline()
            vtk.vtkAlgorithm.SetDefaultExecutivePrototype(cdp)

            self.output = self.reader.GetOutput()
            self.geom = vtk.vtkCompositeDataGeometryFilter()
            self.geom.SetInputConnection(0, self.reader.GetOutputPort(0))
            self.geom.Update()

            self.data = self.geom.GetOutput()

            num_nodal_variables = self.data.GetPointData().GetNumberOfArrays()
            for var_num in xrange(num_nodal_variables):
                var_name = self.data.GetPointData().GetArrayName(var_num)
                self.current_nodal_variables.append(var_name)
                components = self.data.GetPointData().GetVectors(
                    var_name).GetNumberOfComponents()
                self.current_nodal_components[var_name] = components
                # self.data.GetPointData().GetVectors(value_string).GetComponentName(0)

            num_elemental_variables = self.data.GetCellData(
            ).GetNumberOfArrays()
            for var_num in xrange(num_elemental_variables):
                var_name = self.data.GetCellData().GetArrayName(var_num)
                self.current_elemental_variables.append(var_name)
                components = self.data.GetCellData().GetVectors(
                    var_name).GetNumberOfComponents()
                self.current_elemental_components[var_name] = components

            self.application_filter = self.render_widget.application.filterResult(
                self.geom)

            self.mapper = vtk.vtkPolyDataMapper()
            #    self.mapper.SetInputConnection(self.tf.GetOutputPort())
            self.mapper.SetInputConnection(
                self.application_filter.GetOutputPort())
            self.mapper.ScalarVisibilityOn()
            self.mapper.SetLookupTable(lut)
            self.mapper.SetColorModeToMapScalars()
            self.mapper.InterpolateScalarsBeforeMappingOn()

            self.actor = vtk.vtkActor()
            self.current_actors.append(self.actor)
            self.actor.SetMapper(self.mapper)
            self.current_actor = self.actor

            self.clipper = vtk.vtkTableBasedClipDataSet()
            if vtk.VTK_MAJOR_VERSION <= 5:
                self.clipper.SetInput(self.output)
            else:
                self.clipper.SetInputData(self.output)
            self.clipper.SetClipFunction(self.plane)
            self.clipper.Update()

            self.clip_geom = vtk.vtkCompositeDataGeometryFilter()
            self.clip_geom.SetInputConnection(0, self.clipper.GetOutputPort(0))
            self.clip_geom.Update()

            self.clip_data = self.clip_geom.GetOutput()

            self.clip_application_filter = self.render_widget.application.filterResult(
                self.clip_geom)

            self.clip_mapper = vtk.vtkPolyDataMapper()
            self.clip_mapper.SetInputConnection(
                self.clip_application_filter.GetOutputPort())
            self.clip_mapper.ScalarVisibilityOn()
            self.clip_mapper.SetLookupTable(lut)

            self.clip_actor = vtk.vtkActor()
            self.clip_actor.SetMapper(self.clip_mapper)
            self.current_actors.append(self.clip_actor)

            self.scalar_bar = vtk.vtkScalarBarActor()
            self.current_actors.append(self.scalar_bar)
            self.scalar_bar.SetLookupTable(self.mapper.GetLookupTable())
            self.scalar_bar.SetNumberOfLabels(4)

            self.current_bounds = self.actor.GetBounds()
        except:
            pass

def TestTemporalCacheTemporalExecuteCallback(obj, ev):
    # count the number of timesteps requested
    info = obj.GetExecutive().GetOutputInformation(0)
    Length = {
        True: 1,
        False: 0
    }[info.Has(vtk.vtkStreamingDemandDrivenPipeline.UPDATE_TIME_STEP())]
    TestTemporalCacheTemporalExecuteCallback.Count += Length


TestTemporalCacheTemporalExecuteCallback.Count = 0

# Use a composite pipeline
prototype = vtk.vtkCompositeDataPipeline()
vtk.vtkAlgorithm.SetDefaultExecutivePrototype(prototype)

fractal = vtk.vtkTemporalFractal()
fractal.SetMaximumLevel(2)
fractal.DiscreteTimeStepsOn()
fractal.GenerateRectilinearGridsOn()
fractal.SetAdaptiveSubdivision(0)

fractal.AddObserver(vtk.vtkCommand.StartEvent,
                    TestTemporalCacheTemporalExecuteCallback)

# cache the data to prevent regenerating some of it
cache = vtk.vtkTemporalDataSetCache()
cache.SetInputConnection(fractal.GetOutputPort())
cache.SetCacheSize(2)
Beispiel #7
0
    def setFileName(self, file_name, lut):

        try:
            self.currently_has_actor = True
            self.lut = lut

            self.file_name = file_name
            self.reader = vtk.vtkExodusIIReader()
            self.reader.SetFileName(self.file_name)
            self.reader.UpdateInformation()

            self.current_dim = self.reader.GetDimensionality()

            self.min_timestep = 0
            self.max_timestep = 0
            range = self.reader.GetTimeStepRange()
            self.min_timestep = range[0]
            self.max_timestep = range[1]

            self.reader.SetAllArrayStatus(vtk.vtkExodusIIReader.ELEM_BLOCK, 1)
            self.reader.SetAllArrayStatus(vtk.vtkExodusIIReader.NODAL, 1)
            self.reader.SetAllArrayStatus(vtk.vtkExodusIIReader.NODAL_TEMPORAL, 1)
            self.reader.SetTimeStep(self.max_timestep)
            self.reader.Update()
            self.current_variable_point_data = {}
            self.current_nodal_variables = []
            self.current_elemental_variables = []
            self.current_nodal_components = {}
            self.current_elemental_components = {}
            self.component_index = -1

            num_blocks = self.reader.GetNumberOfElementBlockArrays()
            self.blocks = set()
            self.block_to_name = {}
            for i in xrange(num_blocks):
                block_num = self.reader.GetObjectId(vtk.vtkExodusIIReader.ELEM_BLOCK,i)
                self.blocks.add(block_num)
                if 'Unnamed' not in self.reader.GetObjectName(vtk.vtkExodusIIReader.ELEM_BLOCK,i).split(' '):
                    self.block_to_name[block_num] = self.reader.GetObjectName(vtk.vtkExodusIIReader.ELEM_BLOCK,i).split(' ')[0]

            cdp = vtk.vtkCompositeDataPipeline()
            vtk.vtkAlgorithm.SetDefaultExecutivePrototype(cdp)

            self.output = self.reader.GetOutput()
            self.geom = vtk.vtkCompositeDataGeometryFilter()
            self.geom.SetInputConnection(0,self.reader.GetOutputPort(0))
            self.geom.Update()

            self.data = self.geom.GetOutput()

            num_nodal_variables = self.data.GetPointData().GetNumberOfArrays()
            for var_num in xrange(num_nodal_variables):
                var_name = self.data.GetPointData().GetArrayName(var_num)
                self.current_nodal_variables.append(var_name)
                components = self.data.GetPointData().GetVectors(var_name).GetNumberOfComponents()
                self.current_nodal_components[var_name] = components
                # self.data.GetPointData().GetVectors(value_string).GetComponentName(0)

            num_elemental_variables = self.data.GetCellData().GetNumberOfArrays()
            for var_num in xrange(num_elemental_variables):
                var_name = self.data.GetCellData().GetArrayName(var_num)
                self.current_elemental_variables.append(var_name)
                components = self.data.GetCellData().GetVectors(var_name).GetNumberOfComponents()
                self.current_elemental_components[var_name] = components

            self.application_filter = self.render_widget.application.filterResult(self.geom)

            self.mapper = vtk.vtkPolyDataMapper()
    #    self.mapper.SetInputConnection(self.tf.GetOutputPort())
            self.mapper.SetInputConnection(self.application_filter.GetOutputPort())
            self.mapper.ScalarVisibilityOn()
            self.mapper.SetLookupTable(lut)
            self.mapper.SetColorModeToMapScalars()
            self.mapper.InterpolateScalarsBeforeMappingOn()

            self.actor = vtk.vtkActor()
            self.current_actors.append(self.actor)
            self.actor.SetMapper(self.mapper)
            self.current_actor = self.actor

            self.clipper = vtk.vtkTableBasedClipDataSet()
            if vtk.VTK_MAJOR_VERSION <= 5:
                self.clipper.SetInput(self.output)
            else:
                self.clipper.SetInputData(self.output)
            self.clipper.SetClipFunction(self.plane)
            self.clipper.Update()

            self.clip_geom = vtk.vtkCompositeDataGeometryFilter()
            self.clip_geom.SetInputConnection(0,self.clipper.GetOutputPort(0))
            self.clip_geom.Update()

            self.clip_data = self.clip_geom.GetOutput()

            self.clip_application_filter = self.render_widget.application.filterResult(self.clip_geom)

            self.clip_mapper = vtk.vtkPolyDataMapper()
            self.clip_mapper.SetInputConnection(self.clip_application_filter.GetOutputPort())
            self.clip_mapper.ScalarVisibilityOn()
            self.clip_mapper.SetLookupTable(lut)

            self.clip_actor = vtk.vtkActor()
            self.clip_actor.SetMapper(self.clip_mapper)
            self.current_actors.append(self.clip_actor)

            self.scalar_bar = vtk.vtkScalarBarActor()
            self.current_actors.append(self.scalar_bar)
            self.scalar_bar.SetLookupTable(self.mapper.GetLookupTable())
            self.scalar_bar.SetNumberOfLabels(4)

            self.current_bounds = self.actor.GetBounds()
        except:
            pass
Beispiel #8
0
 def __init__(self):
     cdp = vtk.vtkCompositeDataPipeline()
     #self.eg = vtk.vtkEnSightGoldReader()
     self.eg = vtk.vtkGenericEnSightReader()
     self.eg.SetDefaultExecutivePrototype(cdp)
Beispiel #9
0
def getMeshPicture(
    meshFile,
    pictureFile,
    cameraArgs={
        "camPosition": None,
        "viewAngle": 30,
        "scale": 1.0,
        "targetPosition": None,
        "viewUp": [0, 0, 1],
        "fitView": True
    },
    timeList=[0],
    startInteractive=False,
    mag=4,
    parallel="auto",
    fsArgs={
        "scale": (1, 1, 1),
        "fsRange": None
    },
    y0Args={
        "scalarField": "alpha.water",
        "scalarRange": [0, 1]
    },
    structArgs={
        "scalarField": "p_rgh",
    },
    sliceArgsList=[],
    hullPatch="ship",
):
    """
    Function to generate picture out of openFoam results

    meshFile : mesh file or case directory
    """
    from tqdm import tqdm

    #c = Chrono(start=True)
    baseFile, ext = os.path.splitext(pictureFile)[0:2]
    Writer = writerFromExt(ext)
    pathPic = os.path.abspath(os.path.dirname(pictureFile))
    if not os.path.exists(pathPic):
        os.makedirs(pathPic)

    # Add a file name to the path. "p.foam" does not need to be created
    if os.path.isdir(meshFile):
        caseDir = meshFile
        meshFile = os.path.join(caseDir, "p.foam")
    else:
        caseDir = os.path.dirname(meshFile)

    # Automatically choose "SetCaseType" ( parallel vs (serial/notRun))
    if parallel == "auto":
        if os.path.exists(os.path.join(caseDir, "processor0")):
            parallel = True
        else:
            parallel = False

    if type(timeList) == str:
        if timeList == "all":
            timeList = getAvailableTimeData(caseDir, parallel)
        elif timeList == "latest":
            timeList = [getAvailableTimeData(caseDir, parallel)[-1]]
        elif timeList == "latest-1":
            timeList = [getAvailableTimeData(caseDir, parallel)[-2]]
        else:
            raise (Exception(
                "time should be 'latest', 'all', or a float iterable"))

    print("Generating picture for : ", ["{:.2f}".format(i) for i in timeList])

    #--- Read the openFoam file
    vtk_r = vtk.vtkPOpenFOAMReader()
    vtk_r.SetFileName(meshFile)

    if parallel:
        vtk_r.SetCaseType(0)
        print("Using decomposed case")
    else:
        vtk_r.SetCaseType(1)  # 0 = decomposed case, 1 = reconstructed case
        print("Using reconstructed case")
    #vtk_r.ReadZonesOn()
    cdp = vtk.vtkCompositeDataPipeline()
    vtk_r.SetDefaultExecutivePrototype(cdp)
    vtk_r.SetDecomposePolyhedra(0)
    vtk_r.CreateCellToPointOn()
    vtk_r.DisableAllPatchArrays()

    vtk_r.SetPatchArrayStatus("internalMesh", 1)
    vtk_r.SetPatchArrayStatus(hullPatch, 1)
    vtk_r.SetPatchArrayStatus("domainY0", 1)

    vtk_r.SetTimeValue(timeList[0])

    print("Read first")
    vtk_r.Update()  # not mandatory, but just postpone the waiting time
    print("Read done")

    iter = vtk_r.GetOutput().NewIterator()
    blockDict = {}
    while not iter.IsDoneWithTraversal():
        blockDict[iter.GetCurrentMetaData().Get(
            vtk.vtkCompositeDataSet.NAME())] = iter.GetCurrentFlatIndex()
        iter.GoToNextItem()

    print(blockDict)

    #--- Renderer
    renderer = vtk.vtkRenderer()

    #--------------------------------- Free-surface (ISO alpha = 0.5)
    if fsArgs is not None:
        fsActor, scalarBar = getFreeSurfaceActor(vtk_r, **fsArgs)
        renderer.AddActor(fsActor)  # Add the mesh to the view
        renderer.AddActor(scalarBar)

    #--------------------------------- Ship surface
    if structArgs is not None:
        structureActor = getStuctureActor(vtk_r,
                                          blockIndex=blockDict[hullPatch],
                                          **structArgs)
        renderer.AddActor(structureActor)  # Add the mesh to the view

    #------------------------------ Symmetry plane
    if y0Args is not None:
        symActor = getSymPlaneVtkActor(vtk_r,
                                       blockIndex=blockDict["domainY0"],
                                       **y0Args)
        renderer.AddActor(symActor)  # Add the mesh to the view

    #------------------------------ Slices
    for cutArgs in sliceArgsList:
        sActor = getCutActor(vtk_r, **cutArgs)
        renderer.AddActor(sActor)  # Add the mesh to the view

    renderer.SetBackground(1, 1, 1)  # White background

    #--- Rendering windows
    renWin = vtk.vtkRenderWindow()

    # Avoid displaying interactive window
    if not startInteractive:
        renWin.SetOffScreenRendering(1)

    renWin.AddRenderer(renderer)
    renWin.SetSize(1650, 1050)

    # Set view point
    setCamera(renderer, **cameraArgs)

    # To get interactive windows
    if startInteractive:
        vtk_r.UpdateTimeStep(timeList[0])
        vtk_r.Modified()
        iren = vtk.vtkRenderWindowInteractor()
        iren.SetRenderWindow(renWin)
        iren.SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())
        iren.Start()

    else:
        for itime, time in tqdm(enumerate(timeList)):
            #exe.SetUpdateTimeStep( 0, time )
            #vtk_r.SetTimeValue( time )
            # vtk_r.Update()
            vtk_r.UpdateTimeStep(time)
            vtk_r.Modified()  # Require to update the time step data

            renWin.Render()
            w2if = vtk.vtkRenderLargeImage()
            w2if.SetMagnification(mag)  # => Resoulition of the picture

            w2if.SetInput(renderer)
            w2if.Update()
            pictureFile = "{:}_{:03}{:}".format(baseFile, itime, ext)

            writer = Writer()
            writer.SetFileName(pictureFile)
            writer.SetInputConnection(w2if.GetOutputPort())
            writer.Write()