Ejemplo n.º 1
0
 def __init__(self, module_manager):
     SimpleVTKClassModuleBase.__init__(
         self, module_manager,
         vtk.vtkEnSightGoldBinaryReader(), 'Reading vtkEnSightGoldBinary.',
         (), ('vtkEnSightGoldBinary',),
         replaceDoc=True,
         inputFunctions=None, outputFunctions=None)
Ejemplo n.º 2
0
def readDataSet(fileName, **kwargs):
    """Read the dataset from a file. The reader type used is determined from the file extension.

	Returns:
		+------------+----------------------+
		| File ext.  | Return type          |
		+============+======================+
		| .vtp       | vtkPolyData          |
		+------------+----------------------+
		| .vtu       | vtkUnstructuredGrid  |
		+------------+----------------------+
		| .vti       | vtkImageData         |
		+------------+----------------------+
		| .stl       | vtkPolyData          |
		+------------+----------------------+
		| .case      | vtkMultiBlockDataSet |
		+------------+----------------------+

	"""
    if not os.path.isfile(fileName):
        raise RuntimeError('The file', fileName, 'did not exist')

    filePrefix, fileExtension = os.path.splitext(fileName)
    if fileExtension == '.vtp':
        reader = vtk.vtkXMLPolyDataReader()
    elif fileExtension == '.vtu':
        reader = vtk.vtkXMLUnstructuredGridReader()
    elif fileExtension == '.vti':
        reader = vtk.vtkXMLImageDataReader()
    elif fileExtension == '.vtm':
        reader = vtk.vtkXMLMultiBlockDataReader()
    elif fileExtension == '.stl':
        reader = vtk.vtkSTLReader()
    elif fileExtension == '.vtk':
        #reader = _createVTKReader(fileName)
        reader = vtk.vtkDataSetReader()
    elif fileExtension == '.case':
        reader = vtk.vtkEnSightGoldBinaryReader()
        for k, v in kwargs.items():
            if k == 'disableCellArrays':
                for arrName in v:
                    reader.GetCellDataArraySelection().DisableArray(arrName)
            elif k == 'disablePointArrays':
                for arrName in v:
                    reader.GetPointDataArraySelection().DisableArray(arrName)
            else:
                raise RuntimeError('Unknown keyword argument' + str(k))
    else:
        raise RuntimeError('Unknown file extension', fileExtension)

    if fileExtension == '.case':
        reader.SetCaseFileName(fileName)
    else:
        reader.SetFileName(fileName)

    reader.Update()
    return reader.GetOutput()
Ejemplo n.º 3
0
 def __init__(self, module_manager):
     SimpleVTKClassModuleBase.__init__(self,
                                       module_manager,
                                       vtk.vtkEnSightGoldBinaryReader(),
                                       'Reading vtkEnSightGoldBinary.', (),
                                       ('vtkEnSightGoldBinary', ),
                                       replaceDoc=True,
                                       inputFunctions=None,
                                       outputFunctions=None)
Ejemplo n.º 4
0
def compute_snapshot(filename, timestep, args):
    reader = vtk.vtkEnSightGoldBinaryReader()
    reader.SetCaseFileName(filename)
    reader.SetTimeValue(timestep)
    reader.Modified()
    reader.Update()
    dataSet = reader.GetOutput()
    merger = vtk.vtkAppendFilter()
    for arg in args:
        data = vtkio.getBlockByName(dataSet, arg)
        merger.AddInputData(data)
    merger.Update()
    ds = dsa.WrapDataObject(merger.GetOutput())
    #vorticity = algs.vorticity(ds.CellData['Velocity'], ds)
    #ds1 = dsa.WrapDataObject(vorticity
    #del ds, merger, reader
    del dataSet, merger, reader
    return np.sqrt((ds.CellData['Velocity']*ds.CellData['Velocity']).sum(axis=1))
Ejemplo n.º 5
0
def readDataSet(fileName):
    """Read the dataset from a file. The reader type used is determined from the file extension.

	Returns:
		+------------+----------------------+
		| File ext.  | Return type          |
		+============+======================+
		| .vtp       | vtkPolyData          |
		+------------+----------------------+
		| .vtu       | vtkUnstructuredGrid  |
		+------------+----------------------+
		| .vti       | vtkImageData         |
		+------------+----------------------+
		| .stl       | vtkPolyData          |
		+------------+----------------------+
		| .case      | vtkMultiBlockDataSet |
		+------------+----------------------+

	"""
    if not os.path.isfile(fileName):
        raise RuntimeError('The file', fileName, 'did not exist')

    filePrefix, fileExtension = os.path.splitext(fileName)
    if fileExtension == '.vtp':
        reader = vtk.vtkXMLPolyDataReader()
    elif fileExtension == '.vtu':
        reader = vtk.vtkXMLUnstructuredGridReader()
    elif fileExtension == '.vti':
        reader = vtk.vtkXMLImageDataReader()
    elif fileExtension == '.stl':
        reader = vtk.vtkSTLReader()
    elif fileExtension == '.case':
        reader = vtk.vtkEnSightGoldBinaryReader()
    else:
        raise RuntimeError('Unknown file extension', fileExtension)

    if fileExtension == '.case':
        reader.SetCaseFileName(fileName)
    else:
        reader.SetFileName(fileName)

    reader.Update()
    return reader.GetOutput()
Ejemplo n.º 6
0
def readDataSet(fileName):
	if not os.path.isfile(fileName):
		raise RuntimeError('The file', fileName, 'did not exist')

	filePrefix, fileExtension = os.path.splitext(fileName)
	if fileExtension == '.vtp':
		reader = vtk.vtkXMLPolyDataReader()
		reader.SetFileName(fileName)
	elif fileExtension == '.vtu':
		reader = vtk.vtkXMLUnstructuredGridReader()
		reader.SetFileName(fileName)
	elif fileExtension == '.stl':
		reader = vtk.vtkSTLReader()
		reader.SetFileName(fileName)
	elif fileExtension == '.case':
		reader = vtk.vtkEnSightGoldBinaryReader()
		reader.SetCaseFileName(fileName)
	else:
		raise RuntimeError('Unknown file extension', fileExtension)
	reader.Update()
	return reader.GetOutput()
Ejemplo n.º 7
0
import vtk
from vtk.test import Testing
from vtk.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# we need to use composite data pipeline with multiblock datasets
alg = vtk.vtkAlgorithm()
pip = vtk.vtkCompositeDataPipeline()
alg.SetDefaultExecutivePrototype(pip)
del pip
ren1 = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren1)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
reader = vtk.vtkEnSightGoldBinaryReader()
reader.SetCaseFileName("" + str(VTK_DATA_ROOT) + "/Data/EnSight/naca.bin.case")
reader.SetTimeValue(3)
lut = vtk.vtkLookupTable()
lut.SetHueRange(0.667,0.0)
lut.SetTableRange(0.636,1.34)
geom = vtk.vtkGeometryFilter()
geom.SetInputConnection(reader.GetOutputPort())
blockMapper0 = vtk.vtkHierarchicalPolyDataMapper()
blockMapper0.SetInputConnection(geom.GetOutputPort())
blockActor0 = vtk.vtkActor()
blockActor0.SetMapper(blockMapper0)
ren1.AddActor(blockActor0)
ren1.ResetCamera()
cam1 = ren1.GetActiveCamera()
cam1.SetFocalPoint(0,0,0)
Ejemplo n.º 8
0
path = f'../ensi/{problem_name}.ensi.case'
outpath = './'
varname = 'VELOC'
ndimensions = 3
starttime = 1
endtime = 2
field_id = 1



assert( os.path.isfile(path) )

os.makedirs(outpath,exist_ok=True)


rdr = vtk.vtkEnSightGoldBinaryReader()
rdr.SetCaseFileName(path)
rdr.ReadAllVariablesOn()
rdr.Update()



#figure out the timeline for the variable
timeset_id = -1

for i in range(rdr.GetTimeSets().GetNumberOfItems()):
    if varname in rdr.GetPointArrayName(i):
        timeset_id = i

if timeset_id<0:
    print('Timeset of the variable ',varname, ' not found in the case. Check the spelling of the variable name')
Ejemplo n.º 9
0
def ecrivtkbis(filename,PHI,sortie,change_domaine,nom,nom_champ):
# Pour ecrire sur le maillage de code_saturne (ou sur un maillage Ensight en general)
#Ecriture en VTK d un fichier EnsightGoldBinaries
# en entree
# filename : l adresse du fichier ( ex :   "/Calcul/eliberge/DATA/240_SNAP/CHR.case")
# PHI : variable a ecrire PHI(nombre de cellules, nombre de mode, dimension) ou PHI(nombre de cellules, dimension) (ou PHI(nombre de cellules, nombre de modes) ) ou PHI(nombre de cellules)
# sortie : repertoire de sortie
#variable : nom a donner a la variable

	import vtk
	#~ del(grid)
	#~ del(vectors)
	#~ print variable
	#~ print PHI[0,:,0]
	#~ print PHI[0,:,1]
	if change_domaine==1:
		vtkfile=vtk.vtkUnstructuredGridReader()
		vtkfile.SetFileName('%s/mask.vtk' %(sortie))
		vtkfile.Update()
		grid=vtkfile.GetOutput()

	else :
		reader=vtk.vtkEnSightGoldBinaryReader()
		reader.SetCaseFileName(filename)
		reader.Update()
		mstructure=reader.GetOutput().GetBlock(0)
		grid = vtk.vtkUnstructuredGrid()
		grid.SetPoints(mstructure.GetPoints())
		grid.SetCells(mstructure.GetCellTypesArray(),mstructure.GetCellLocationsArray(), mstructure.GetCells())
		volume=mstructure.GetCellData().GetArray('Volume_cellule')

	if len(PHI.shape) == 3 :
		nbve=PHI[:,0,0].size
		nmode=PHI[0,:,0].size
		ndim=PHI[0,0,:].size
		for i in range(nmode):
			vectors = vtk.vtkFloatArray()
			vectors.SetNumberOfComponents(3)
			vectors.SetNumberOfTuples(nbve)
			vectors.SetName("%s%d" %(nom_champ,i))
			for k in range(nbve):
				vectors.InsertTuple3(k, PHI[k,i,0],PHI[k,i,1],PHI[k,i,2])
			grid.GetCellData().AddArray(vectors)
			grid.GetCellData().SetActiveVectors("%s%d" %(nom_champ,i))
		#~ grid.GetCellData().AddArray(volume)
		#~ grid.GetCellData().SetActiveScalars("Volume_cellule")
		vtkfile=vtk.vtkUnstructuredGridWriter()
		vtkfile.SetInput(grid)
		vtkfile.SetFileName('%s/%s.vtk' %(sortie,nom))
		vtkfile.Write()
	else :

		if len(PHI.shape) == 2 :
			if PHI[0,:].size == 3 :
				nbve=PHI[:,0].size
				ndim=PHI[0,:].size
				vectors = vtk.vtkFloatArray()
				vectors.SetNumberOfComponents(3)
				vectors.SetNumberOfTuples(nbve)
				vectors.SetName("%s" %(nom_champ))
				for k in range(nbve):
					vectors.InsertTuple3(k, PHI[k,0],PHI[k,1],PHI[k,2])
				grid.GetCellData().AddArray(vectors)
				grid.GetCellData().SetActiveVectors("%s" %(nom_champ))
				#~ grid.GetCellData().AddArray(volume)
				#~ grid.GetCellData().SetActiveScalars("volume")
				vtkfile=vtk.vtkUnstructuredGridWriter()
				vtkfile.SetInput(grid)
				vtkfile.SetFileName('%s/%s.vtk' %(sortie,nom))
				vtkfile.Write()
			else :
				nbve=PHI[:,0].size
				nmode=PHI[0,:].size
				for i in range(nmode):
					vectors = vtk.vtkFloatArray()
					vectors.SetNumberOfComponents(1)
					vectors.SetNumberOfTuples(nbve)
					vectors.SetName("%s%d" %(nom_champ,i))
					for k in range(nbve):
						vectors.InsertTuple1(k, PHI[k,i])
					grid.GetCellData().AddArray(vectors)
					grid.GetCellData().SetActiveScalars("%s%d" %(nom_champ,i))
				#~ grid.GetCellData().AddArray(volume)
				#~ grid.GetCellData().SetActiveScalars("volume")
				vtkfile=vtk.vtkUnstructuredGridWriter()
				vtkfile.SetInput(grid)
				vtkfile.SetFileName('%s/%s.vtk' %(sortie,nom))
				vtkfile.Write()
		else :
			nbve=PHI[:].size
			vectors = vtk.vtkFloatArray()
			vectors.SetNumberOfComponents(1)
			vectors.SetNumberOfTuples(nbve)
			vectors.SetName("%s" %(nom_champ))
			for k in range(nbve):
				vectors.InsertTuple1(k, PHI[k])
			grid.GetCellData().AddArray(vectors)
			grid.GetCellData().SetActiveScalars("%s" %(nom_champ))
			#~ grid.GetCellData().AddArray(volume)
			#~ grid.GetCellData().SetActiveScalars("volume")
			vtkfile=vtk.vtkUnstructuredGridWriter()
			vtkfile.SetInput(grid)
			vtkfile.SetFileName('%s/%s.vtk' %(sortie,nom))
			vtkfile.Write()
def ensight2vtk(file_path, out_dir, file_name,
                vtu_out_1="wall_outfile_node.vtu",
                vtu_out_2="inlet_outfile_node.vtu", vtu_out_3="interior_outfile_node.vtu",
                wall=True, inlet=True, interior=True, interior_name="default_interior-1"):

    print(wall, inlet, interior)
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    reader = vtk.vtkEnSightGoldBinaryReader()
    reader.SetFilePath(file_path)
    reader.SetCaseFileName(file_name)
    reader.Update()

    # solution_writer = vtk.vtkXMLMultiBlockDataWriter()
    # solution_writer.SetFileName(os.path.join(out_dir, vtu_out_3))
    # solution_writer.SetInputData(reader.GetOutput())
    # solution_writer.Write()

    append = vtk.vtkAppendFilter()
    append.MergePointsOn()

    append2 = vtk.vtkAppendFilter()
    append2.MergePointsOn()

    append3 = vtk.vtkAppendFilter()
    append3.MergePointsOn()

    time_sets = reader.GetTimeSets()
    time_array = time_sets.GetItem(0)
    current_time = reader.GetTimeValue()
    print(current_time)

    if (wall):
        writer = vtk.vtkXMLUnstructuredGridWriter()
        writer.SetFileName(os.path.join(out_dir, vtu_out_1))
        writer.SetNumberOfTimeSteps(int(time_array.GetNumberOfTuples()))
        writer.SetInputConnection(append.GetOutputPort())
        writer.Start()

    if (inlet):
        writer2 = vtk.vtkXMLUnstructuredGridWriter()
        writer2.SetFileName(os.path.join(out_dir,vtu_out_2))
        writer2.SetNumberOfTimeSteps(int(time_array.GetNumberOfTuples()))
        writer2.SetInputConnection(append2.GetOutputPort())
        writer2.Start()
    if(interior):
        writer3 = vtk.vtkXMLUnstructuredGridWriter()
        writer3.SetFileName(os.path.join(out_dir,vtu_out_3))
        writer3.SetNumberOfTimeSteps(int(time_array.GetNumberOfTuples()))
        writer3.SetInputConnection(append3.GetOutputPort())
        writer3.Start()

    print("Number of Blocks: {0}".format(time_array.GetNumberOfTuples()))
    for i in range(time_array.GetNumberOfTuples()):
        next_time = time_array.GetTuple(i)[0]

        print(next_time)
        if( current_time == next_time):
            print("first time")
            pass
        else:
            # update the reader
            reader.SetTimeValue(next_time)
            current_time = next_time
            reader.Update()
            print("success")
        #N = reader.GetNumberOfCellArrays()
        N = reader.GetOutput().GetNumberOfBlocks()
        for i in range(0, N):
            name = reader.GetOutput().GetMetaData(i).Get(vtk.vtkCompositeDataSet.NAME())
            if (wall):
                if (name.split(':')[-1] == "wall"):
                    append.AddInputData(reader.GetOutput().GetBlock(i))
                    print("saving just the {0} in block {1}".format(name, i))
            if(inlet):
                if (name.split(':')[-1].split('_')[0] in ["inlet", "ica"]):
                    append2.AddInputData(reader.GetOutput().GetBlock(i))
                    print("saving just the {0} in block {1}".format(name, i))
            if(interior):
                if (name == interior_name):
                    append3.AddInputData(reader.GetOutput().GetBlock(i))
                    print("saving just the {0} in block {1}".format(name, i))

        if(wall):
            writer.WriteNextTime(current_time)
        if(inlet):
            writer2.WriteNextTime(current_time)
        if(interior):
            writer3.WriteNextTime(current_time)

        if (current_time == reader.GetMaximumTimeValue()):
            pass
        else:
            for i in range(0, N):
                name = reader.GetOutput().GetMetaData(i).Get(vtk.vtkCompositeDataSet.NAME())
                if (wall):
                    if (name.split(':')[-1] == "wall"):
                        append.RemoveInputData(reader.GetOutput().GetBlock(i))
                        #print("removing the {0} in block {1}".format(name, i))
                if(inlet):
                    if (name.split(':')[-1].split('_')[0] in ["inlet", "ica"]):
                        append2.RemoveInputData(reader.GetOutput().GetBlock(i))
                        #print("removing the {0} in block {1}".format(name, i))
                if(interior):
                    if (name == interior_name):
                        append3.RemoveInputData(reader.GetOutput().GetBlock(i))
                        #print("removing the {0} in block {1}".format(name, i))
    if(wall):
        writer.Stop()
    if(inlet):
        writer2.Stop()
    if(interior):
        writer3.Stop()