Example #1
2
def Create_Topo(Slope,Plane):
	ugrid = vtk.vtkUnstructuredGrid()
	gridreader=vtk.vtkUnstructuredGridReader()
	gridreader.SetFileName(Slope)
	gridreader.Update()
	ugrid = gridreader.GetOutput()
	GeomFilt1 = vtk.vtkGeometryFilter()
	GeomFilt1.SetInput(ugrid)
	GeomFilt1.Update()
	x = GeomFilt1.GetOutput()

	u = vtk.vtkUnstructuredGrid()
	bgridreader=vtk.vtkXMLUnstructuredGridReader()
	bgridreader.SetFileName(Plane)
	bgridreader.Update()
	u = bgridreader.GetOutput() 
	GeomFilt2 = vtk.vtkGeometryFilter()
	GeomFilt2.SetInput(u)
	GeomFilt2.Update()
	y = GeomFilt2.GetOutput()

	append = vtk.vtkAppendPolyData()
	append.AddInput(x)
	append.AddInput(y)
	data = append.GetOutput()

	d = vtk.vtkDelaunay3D()
	d.SetInput(data)
	d.Update
	d.BoundingTriangulationOff()  
	d.SetTolerance(0.00001)
	d.SetAlpha(0)
	d.Update()
	z = d.GetOutput()
	return z
def Creating_z(Plane,Slope,Sediment,Start_time,End_time,Time_step):

	vtuObject = vtktools.vtu(Plane)
	vtuObject.GetFieldNames()
	gradient = vtuObject.GetScalarField('u')
	ugrid = vtk.vtkUnstructuredGrid()
	gridreader=vtk.vtkXMLUnstructuredGridReader()
	gridreader.SetFileName(Plane)
	gridreader.Update()
	ugrid = gridreader.GetOutput()
	points = ugrid.GetPoints()

	nPoints = ugrid.GetNumberOfPoints()
	for p in range(0,nPoints):
		x = (points.GetPoint(p)[:2] + (gradient[p],))
		points.SetPoint(p,x)
    
	ugrid.Update()
###################################################################################################################
	t = Start_time
	dt = Time_step
	et = End_time
	while t <= et:

		Import = Sediment + str(t) +'000000.vtu'
		NewSave = Sediment + str(t) + '_sed_slope.pvd'
		vtuObjectSed = vtktools.vtu(Import)
		vtuObjectSed.GetFieldNames()
		gradientSed = vtuObjectSed.GetScalarField('u')
		sedgrid = vtk.vtkUnstructuredGrid()
		sedgridreader=vtk.vtkXMLUnstructuredGridReader()
		sedgridreader.SetFileName(Import)
		sedgridreader.Update()
		sedgrid = sedgridreader.GetOutput()
		s = sedgrid.GetPoints()
	
		for p in range(0,nPoints):
			x = ((s.GetPoint(p)[0],) + (s.GetPoint(p)[1],) + ((gradientSed[p]+gradient[p]),))
			s.SetPoint(p,x)

		writer = vtk.vtkUnstructuredGridWriter()
		writer.SetFileName(NewSave)
		writer.SetInput(sedgrid)
		writer.Update()
		writer.Write()
		t += dt
	writer = vtk.vtkUnstructuredGridWriter()
	writer.SetFileName(Slope)
	writer.SetInput(ugrid)
	writer.Update()
	writer.Write()
Example #3
0
def compare_files_vtu(first_file, second_file, file_type, tolerance=1e-12):
    import vtk

    # read files:
    if file_type == "vtu":
        reader1 = vtk.vtkXMLUnstructuredGridReader()
        reader2 = vtk.vtkXMLUnstructuredGridReader()
    else:
        reader1 = vtk.vtkXMLPUnstructuredGridReader()
        reader2 = vtk.vtkXMLPUnstructuredGridReader()

    reader1.SetFileName(first_file)
    reader1.Update()
    output1 = reader1.GetOutput()

    reader2.SetFileName(second_file)
    reader2.Update()
    output2 = reader2.GetOutput()

    # check fidelity
    point_data1 = output1.GetPointData()
    point_data2 = output2.GetPointData()

    # verify same number of PointData arrays in both files
    if point_data1.GetNumberOfArrays() != point_data2.GetNumberOfArrays():
        print("File 1:", point_data1.GetNumberOfArrays(), "\n", "File 2:",
              point_data2.GetNumberOfArrays())
        raise ValueError("Fidelity test failed: Mismatched data array count")

    for i in range(point_data1.GetNumberOfArrays()):
        arr1 = point_data1.GetArray(i)
        arr2 = point_data2.GetArray(i)

        # verify both files contain same arrays
        if point_data1.GetArrayName(i) != point_data2.GetArrayName(i):
            print("File 1:", point_data1.GetArrayName(i), "\n", "File 2:",
                  point_data2.GetArrayName(i))
            raise ValueError(
                "Fidelity test failed: Mismatched data array names")

        # verify arrays are same sizes in both files
        if arr1.GetSize() != arr2.GetSize():
            print("File 1, DataArray", i, ":", arr1.GetSize(), "\n",
                  "File 2, DataArray", i, ":", arr2.GetSize())
            raise ValueError(
                "Fidelity test failed: Mismatched data array sizes")

        # verify individual values w/in given tolerance
        for j in range(arr1.GetSize()):
            if abs(arr1.GetValue(j) - arr2.GetValue(j)) > tolerance:
                print("Tolerance:", tolerance)
                raise ValueError(
                    "Fidelity test failed: Mismatched data array values with given tolerance"
                )

    print("VTU Fidelity test completed successfully with tolerance", tolerance)
Example #4
0
def read_vtk_file(filename, vtuFile=True):
    ### 1.1 Read data
    if vtuFile:  # read vtu file
        reader = vtk.vtkXMLUnstructuredGridReader()
    else:  # read vtk file
        reader = vtk.vtkUnstructuredGridReader()

    gridreader = vtk.vtkXMLUnstructuredGridReader()
    gridreader.SetFileName(filename)
    gridreader.Update()
    vtkOut = gridreader.GetOutput()  # get an vtkUnstructuredGridReader
    return vtkOut
Example #5
0
def Slice_VTK_data_to_VTK(inputFileName,
                             outputFileName,
                                 point, normal,
                                 resolution
                                           ):
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(inputFileName)
    reader.Update()
    
    plane = vtk.vtkPlane()
    plane.SetOrigin(point)
    plane.SetNormal(normal)

    cutter = vtk.vtkFiltersCorePython.vtkCutter()
    cutter.SetCutFunction(plane)
    cutter.SetInputConnection(reader.GetOutputPort())
    cutter.Update()

    #Convert tht polydata structure générated by cutter into unstructured grid by triangulation
    triFilter = vtk.vtkDataSetTriangleFilter()
    triFilter.SetInputConnection(cutter.GetOutputPort())
    triFilter.Update()
    
    writer = vtk.vtkXMLUnstructuredGridWriter()
    writer.SetInputData(triFilter.GetOutput())
    writer.SetFileName(outputFileName)
    writer.Write()
Example #6
0
    def __init__(self,offset,get=1,file='data',type='vtu',mirrorPlane=None,silent=0):
        self.offset=offset
        self.filenameout = file
        self.type = type
        self.isLoaded = False
        self.mirrorPlane=mirrorPlane
        self.silent = silent

        if type == 'vtu':
            self.filename=''.join([self.filenameout,repr(offset).zfill(4),'.vtu'])
            self.datareader = v.vtkXMLUnstructuredGridReader()
        elif type == 'pvtu':
            self.filename=''.join([self.filenameout,repr(offset).zfill(4),'.pvtu'])
            self.datareader = v.vtkXMLPUnstructuredGridReader()
        elif type == 'vti':
            self.filename=''.join([self.filenameout,repr(offset).zfill(4),'.vti'])
            self.datareader = v.vtkXMLImageDataReader()
        else:
            print 'Unknown filetype'
            
        if (self.silent == 0): print '========================================'
        if (self.silent == 0): print  'loading file %s' % (self.filename)

        if get != None:
            self.getAll()
Example #7
0
def read_vtu(name):
    """ Opens a vtp and returns the vtkUnstructuredGrid class """
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(name)
    reader.Update()
    ug = reader.GetOutput()
    return ug
Example #8
0
    def load_vtk_structured(self, file_name):
        self.fname = file_name
        #reader = vtk.vtkUnstructuredGridReader()
        reader = vtk.vtkXMLUnstructuredGridReader()

        reader.SetFileName(file_name)
        reader.Update()

        #reader = vtk.vtkOpenFOAMReader()
        #numberOfCellArrays = reader.GetNumberOfCellArrays();
        #for i in range(numberOfCellArrays):
        #  print reader.GetCellArrayName(i)

        self.output = reader.GetOutput()
        self.vtk_pts = self.output.GetPointData()

        self.vtk_n_pts = self.output.GetNumberOfPoints()
        self.vtk_n_cells = self.output.GetNumberOfCells()
        self.vtk_n_props = self.vtk_pts.GetNumberOfArrays()

        self.reader = reader
        #get_range = self.output.GetScalarRange()
        #print get_range

        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\'" % (self.vtk_pts.GetArrayName(i)),
        print
Example #9
0
def create_probe(filename):
    if (verbose):
        print "Creating probe from ", filename

    pd = vtk.vtkStructuredPoints()

    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(filename)
    ugrid = reader.GetOutput()
    ugrid.Update()

    b = ugrid.GetBounds()
    pd.SetOrigin(b[0], b[2], b[4])
    l = [b[1] - b[0], b[3] - b[2], b[5] - b[4]]
    tot_len = float(l[0] + l[1] + l[2])
    dims = intervals
    pd.SetExtent(0, dims[0] - 1, 0, dims[1] - 1, 0, dims[2] - 1)
    pd.SetUpdateExtent(0, dims[0] - 1, 0, dims[1] - 1, 0, dims[2] - 1)
    pd.SetWholeExtent(0, dims[0] - 1, 0, dims[1] - 1, 0, dims[2] - 1)
    pd.SetDimensions(dims)
    dims = [max(1, x - 1) for x in dims]
    l = [max(1e-3, x) for x in l]
    sp = [l[0] / dims[0], l[1] / dims[1], l[2] / dims[2]]
    pd.SetSpacing(sp)

    return pd
def vtu_readvf3d(name):
        
    #generate reader and read file
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(name)
    reader.Update()
    vtkdata = reader.GetOutput()
    
    #Obtain vectors and points from data in file
    nPoints = vtkdata.GetNumberOfPoints()
    pointData = vtkdata.GetPointData()
    vectorData = pointData.GetVectors()
    scalarData = pointData.GetScalars()    
    try:
        vect_list = vtk2np(vectorData)
    except AttributeError:
        print 'there is no vector data'
        vect_list = None
    try:
        scal_list = vtk2np(scalarData)
    except AttributeError:
        #print 'there is no scalar data'
        scal_list = None
    pnts_list = N.array([vtkdata.GetPoint(i) for i in range(nPoints)])

    #rearange data to 3d matices    
    bounds = vtkdata.GetBounds()#(Xmin,Xmax,Ymin,Ymax,Zmin,Zmax) 
    [X,Y,Z,U,V,W] = ijk(pnts_list,bounds,vect_list) 
    
    return [X,Y,Z,U,V,W]
 def __init__(self, module_manager):
     SimpleVTKClassModuleBase.__init__(
         self, module_manager,
         vtk.vtkXMLUnstructuredGridReader(), 'Reading vtkXMLUnstructuredGrid.',
         (), ('vtkXMLUnstructuredGrid',),
         replaceDoc=True,
         inputFunctions=None, outputFunctions=None)
Example #12
0
    def __init__(self, comm, particle_vtu_file):
        self.comm = comm
        self.rank = comm.Get_rank()
        self.numberOfProcessors = self.comm.Get_size()
        '''
        ***************** PARTICLES INJECTION PREPARATION ********************
        '''
        self.domain_particles = vtk.vtkXMLUnstructuredGridReader()
        self.domain_particles.SetFileName(particle_vtu_file)
        self.domain_particles.Update()
        '''
        We push the domain_particles through an append_filter (as the only
        input) This will become useful later when we start reinjecting
        particles - the new particles will be added as inputs to the
        vtkAppendFilter.
        '''
        original_particle_mesh_data = self.domain_particles.GetOutput()
        self.append_filter = vtk.vtkAppendFilter()
        if vtk.VTK_MAJOR_VERSION <= 5:
            self.append_filter.AddInput(original_particle_mesh_data)
        else:
            self.append_filter.AddInputData(original_particle_mesh_data)
        self.append_filter.Update()

        self.alive_particles_coordinates = np.copy(
            numpy_support.vtk_to_numpy(
                self.append_filter.GetOutput().GetPoints().GetData()))
        # self.particles_vtk_pts = vtk.vtkPoints().SetData(
        # numpy_support.numpy_to_vtk(self.alive_particles_coordinates))
        self.nparticles = self.append_filter.GetOutput().GetNumberOfPoints()

        # initially particles are 'tidy'
        self.particles_indices = np.arange(self.nparticles, dtype=np.int64)
        self.particles_offsets = np.zeros((self.numberOfProcessors + 1, ),
                                          dtype=np.int64)
Example #13
0
def get_particle_data(filename):
    # load a vtk file as input
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(filename)
    reader.Update()

    # Get the coordinates of nodes in the mesh
    nodes_vtk_array = reader.GetOutput().GetPoints().GetData()
    #The "Temperature" field is the third scalar in my vtk file
    angle_vtk_array = reader.GetOutput().GetPointData().GetArray("angle")
    angle_numpy_array = vtk_to_numpy(angle_vtk_array)
    count_vtk_array = reader.GetOutput().GetPointData().GetArray("count")
    count_numpy_array = vtk_to_numpy(count_vtk_array)
    stokes_vtk_array = reader.GetOutput().GetPointData().GetArray(
        "stokes_velocity")
    stokes_numpy_array = vtk_to_numpy(stokes_vtk_array)
    electro_vtk_array = reader.GetOutput().GetPointData().GetArray(
        "electro_velocity")
    electro_numpy_array = vtk_to_numpy(electro_vtk_array)
    charge_vtk_array = reader.GetOutput().GetPointData().GetArray("charge")
    charge_numpy_array = vtk_to_numpy(charge_vtk_array)

    #Get the coordinates of the nodes and their temperatures
    nodes_nummpy_array = vtk_to_numpy(nodes_vtk_array)
    x, y, z = nodes_nummpy_array[:,
                                 0], nodes_nummpy_array[:,
                                                        1], nodes_nummpy_array[:,
                                                                               2]

    return ParticlesData(x, y, angle_numpy_array, count_numpy_array,
                         stokes_numpy_array[:, 0], stokes_numpy_array[:, 1],
                         electro_numpy_array[:, 0], electro_numpy_array[:, 1],
                         charge_numpy_array)
def readUGrid(
        filename,
        verbose=1):

    myVTK.myPrint(verbose, "*** readUGrid: " + filename + " ***")

    if ('vtk' in filename):
        ugrid_reader = vtk.vtkUnstructuredGridReader()
    elif ('vtu' in filename):
        ugrid_reader = vtk.vtkXMLUnstructuredGridReader()
    else:
        assert 0, "File must be .vtk or .vtu. Aborting."

    assert (os.path.isfile(filename)), "Wrong filename. Aborting."

    ugrid_reader.SetFileName(filename)
    ugrid_reader.Update()
    ugrid = ugrid_reader.GetOutput()

    if (verbose):
        n_points = ugrid.GetNumberOfPoints()
        print 'n_points =', n_points

        n_cells = ugrid.GetNumberOfCells()
        print 'n_cells =', n_cells

    return ugrid
Example #15
0
def load_VTU(filename):
    """Loads VTK file format in the new XML format (vtu file extension for unstructured meshes).
    
    It relies on the reader from the VTK library.

    Parameters
    ----------
    filename: str
        name of the meh file on disk

    Returns
    -------
    vertices: ndarray
        numpy array of the coordinates of the mesh's nodes
    faces: ndarray
        numpy array of the faces' nodes connectivities

    Note
    ----
    VTU files have a 0-indexing
    """

    _check_file(filename)

    from vtk import vtkXMLUnstructuredGridReader
    reader = vtkXMLUnstructuredGridReader()
    reader.SetFileName(filename)
    reader.Update()
    vtk_mesh = reader.GetOutput()

    vertices, faces = _dump_vtk(vtk_mesh)
    return vertices, faces
Example #16
0
def load_vtk_mesh(fileName):
    """
    Loads surface/volume mesh to VTK
    """
    if (fileName == ''):
        return 0
    fn_dir, fn_ext = os.path.splitext(fileName)
    if (fn_ext == '.vtk'):
        print('Reading vtk with name: ', fileName)
        reader = vtk.vtkPolyDataReader()
    elif (fn_ext == '.vtp'):
        print('Reading vtp with name: ', fileName)
        reader = vtk.vtkXMLPolyDataReader()
    elif (fn_ext == '.stl'):
        print('Reading stl with name: ', fileName)
        reader = vtk.vtkSTLReader()
    elif (fn_ext == '.obj'):
        print('Reading obj with name: ', fileName)
        reader = vtk.vtkOBJReader()
    elif (fn_ext == '.vtu'):
        print('Reading vtu with name: ', fileName)
        reader = vtk.vtkXMLUnstructuredGridReader()
    elif (fn_ext == '.pvtu'):
        print('Reading pvtu with name: ', fileName)
        reader = vtk.vtkXMLPUnstructuredGridReader()
    else:
        print(fn_ext)
        raise ValueError('File extension not supported')

    reader.SetFileName(fileName)
    reader.Update()
    return reader.GetOutput()
Example #17
0
def read(filetype, filename):
    if filetype == 'vtk':
        reader = vtk.vtkUnstructuredGridReader()
        reader.SetFileName(filename)
        reader.Update()
        vtk_mesh = reader.GetOutput()
    elif filetype == 'vtu':
        reader = vtk.vtkXMLUnstructuredGridReader()
        reader.SetFileName(filename)
        reader.Update()
        vtk_mesh = reader.GetOutput()
    elif filetype == 'exodus':
        reader = vtk.vtkExodusIIReader()
        reader.SetFileName(filename)
        vtk_mesh = _read_exodusii_mesh(reader)
    else:
        raise RuntimeError('Unknown file type \'%s\'.' % filename)

    # Explicitly extract points, cells, point data, field data
    points = vtk.util.numpy_support.vtk_to_numpy(
        vtk_mesh.GetPoints().GetData())
    cells = _read_cells(vtk_mesh)
    point_data = _read_data(vtk_mesh.GetPointData())
    cell_data = _read_data(vtk_mesh.GetCellData())
    field_data = _read_data(vtk_mesh.GetFieldData())

    return points, cells, point_data, cell_data, field_data
Example #18
0
def load_VTU(filename, name=None):
    """Loads VTK file format in the new XML format (vtu file extension for unstructured meshes).

    It relies on the reader from the VTK library.

    Parameters
    ----------
    filename: str
        name of the meh file on disk

    Returns
    -------
    Mesh
        the loaded mesh

    Note
    ----
    VTU files have a 0-indexing
    """

    _check_file(filename)

    from vtk import vtkXMLUnstructuredGridReader
    reader = vtkXMLUnstructuredGridReader()
    reader.SetFileName(filename)
    reader.Update()
    vtk_mesh = reader.GetOutput()

    vertices, faces = _dump_vtk(vtk_mesh)
    return Mesh(vertices, faces, name)
Example #19
0
def readVTK(a_FileName, a_Legacy='none'):

    if a_FileName.endswith('.vtu'):
        reader = vtk.vtkXMLUnstructuredGridReader()
    elif a_FileName.endswith('.vtp'):
        reader = vtk.vtkXMLPolyDataReader()
    elif a_FileName.endswith('.vtk'):
        if a_Legacy == 'none':
            print("Need To Specify Data Type For Legacy Files")
            sys.exit()
        elif a_Legacy == 'vtu':
            reader = vtk.vtkUnstructuredGridReader()
        elif a_Legacy == 'vtp':
            reader = vtk.vtkPolyDataReader()
    else:
        print("Unsupported File Extension")
        sys.exit()
        
    #print("Reading From File", a_FileName)

    reader.SetFileName(a_FileName)
    reader.Update()

    data = reader.GetOutput()

    return data
 def read_mesh(self, file_name):
     print("[Volume.read_mesh] file_name: " + file_name)
     file_base_name, ext = os.path.splitext(file_name)
     reader = vtk.vtkXMLUnstructuredGridReader()
     reader.SetFileName(file_name)
     reader.Update()
     return reader.GetOutput()
Example #21
0
def load_points_from_file(filename):
    """ Extract vtk mesh from input file.
    :returns: Vtk mesh. """
    if not os.path.exists(filename):
        raise ValueError(f'File {filename} does not exist')

    fileType = filename[-4:].lower()

    if fileType == ".stl":
        reader = vtk.vtkSTLReader()
    elif fileType == ".obj":
        reader = vtk.vtkOBJReader()
    elif fileType == ".vtk":
        reader = vtk.vtkPolyDataReader()
    elif fileType == ".vtu":
        reader = vtk.vtkXMLUnstructuredGridReader()
    elif fileType == ".vtp":
        reader = vtk.vtkXMLPolyDataReader()

    else:
        raise IOError(
            "Mesh should be .vtk, .vtu, .vtp, .obj, .stl file!")
    reader.SetFileName(filename)
    reader.Update()
    mesh = reader.GetOutput()
    return mesh
Example #22
0
    def _test(self, fname):
        reader = vtk.vtkXMLUnstructuredGridReader()
        reader.SetFileName(VTK_DATA_ROOT + fname)

        elev = vtk.vtkElevationFilter()
        elev.SetInputConnection(reader.GetOutputPort())
        elev.SetLowPoint(-0.05, 0.05, 0)
        elev.SetHighPoint(0.05, 0.05, 0)

        grad = vtk.vtkGradientFilter()
        grad.SetInputConnection(elev.GetOutputPort())
        grad.SetInputArrayToProcess(0, 0, 0, vtk.vtkDataObject.FIELD_ASSOCIATION_POINTS, "Elevation")

        grad.Update()

        vals = (10, 0, 0)

        for i in range(3):
            r = grad.GetOutput().GetPointData().GetArray("Gradients").GetRange(i)

            self.assertTrue(abs(r[0] - vals[i]) < 1E-4)
            self.assertTrue(abs(r[1] - vals[i]) < 1E-4)

        elev.SetLowPoint(0.05, -0.05, 0)
        elev.SetHighPoint(0.05, 0.05, 0)
        grad.Update()

        vals = (0, 10, 0)

        for i in range(3):
            r = grad.GetOutput().GetPointData().GetArray("Gradients").GetRange(i)

            self.assertTrue(abs(r[0] - vals[i]) < 1E-4)
            self.assertTrue(abs(r[1] - vals[i]) < 1E-4)
Example #23
0
def ReadMesh(filename):

    reader = vtk.vtkXMLPolyDataReader() if filename.endswith(
        'vtp') else vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(filename)
    reader.Update()

    polyDataModel = reader.GetOutput()

    # Set the nodes and coordinates.
    nNodes = polyDataModel.GetNumberOfPoints()  # _nNodes
    nodes = np.copy(vtk_to_numpy(
        polyDataModel.GetPoints().GetData()))  # _nodes
    nodes = nodes.astype(float)

    # Set the element groups, will be updated to sub-group after partition.
    nElements = polyDataModel.GetNumberOfCells()
    elementNodeIds = np.empty((nElements, 4),
                              dtype=int)  # 4 nodes for tetrohedron
    for iElm in range(nElements):
        vtkCell = polyDataModel.GetCell(iElm)
        for iNode in range(4):
            elementNodeIds[iElm, iNode] = vtkCell.GetPointId(iNode)

    return nodes, elementNodeIds
Example #24
0
    def __init__(self, fluidFile, vName, pName):

        reader = vtk.vtkXMLUnstructuredGridReader()
        reader.SetFileName(fluidFile)
        reader.Update()

        polyDataModel = reader.GetOutput()

        self.nNodes = polyDataModel.GetNumberOfPoints()  # _nNodes
        self.nodes = np.copy(vtk_to_numpy(
            polyDataModel.GetPoints().GetData()))  # _nodes
        self.nodes = self.nodes.astype(float)
        self.glbNodeIds = vtk_to_numpy(
            polyDataModel.GetPointData().GetArray('GlobalNodeID'))
        self.glbElementIds = vtk_to_numpy(
            polyDataModel.GetCellData().GetArray('GlobalElementID'))

        # Set the element groups, will be updated to sub-group after partition.
        self.nElements = polyDataModel.GetNumberOfCells()
        elements = np.empty((self.nElements, 4), dtype=np.int64)
        for iElm in range(self.nElements):
            vtkCell = polyDataModel.GetCell(iElm)
            elements[iElm] = np.array(
                [vtkCell.GetPointId(ipt) for ipt in range(4)])

        # Pullout the nodes of each element to construct element's nodes matrix.
        self.elementNodeIds = elements

        # Read the velocity and pressure result.
        self.du = vtk_to_numpy(polyDataModel.GetPointData().GetArray(vName))
        self.p = vtk_to_numpy(polyDataModel.GetPointData().GetArray(pName))
Example #25
0
 def __init__(self, outDir):
     self.outDir = outDir
     self.fileList, self.parentFile = self.getfileList()
     self.part_vars = ['coords']
     self.vtkReader = vtk.vtkXMLUnstructuredGridReader()
     self.nvars = self.getNumberOfVars()
     self.availableVtuVars = self.getAvailableVars()
Example #26
0
    def create_from_vtk_file(cls, file_name='tests.vtk', in_xml_format=True):
        """
        Factory method: create checker from a given VTK mesh file

        :param file_name:
        :param in_xml_format:
        :return:
        """
        print('--> Reading file \'{}\'...'.format(file_name))

        reader = vtk.vtkXMLUnstructuredGridReader(
        ) if in_xml_format else vtk.vtkUnstructuredGridReader()
        reader.SetFileName(file_name)
        reader.Update()

        op = reader.GetOutput()

        vtk_mesh = vtk.vtkUnstructuredGrid()

        vtk_mesh.SetPoints(op.GetPoints())

        # add the elements
        for ele_idx in range(op.GetNumberOfCells()):
            vtk_ele = op.GetCell(ele_idx)
            vtk_mesh.InsertNextCell(vtk_ele.GetCellType(),
                                    vtk_ele.GetPointIds())

        return VTKMeshChecker(vtk_mesh)
Example #27
0
def get_pointdata(offset,filenameout='data',type='pvtu',attribute_mode='cell'):

    if type == 'vtu':
        filename=''.join([filenameout,repr(offset).zfill(4),'.vtu'])
        datareader = v.vtkXMLUnstructuredGridReader()
    elif type == 'pvtu':
        filename=''.join([filenameout,repr(offset).zfill(4),'.pvtu'])
        datareader = v.vtkXMLPUnstructuredGridReader()
        
    print '=== Reading ',filename,' ==='
        
    datareader.SetFileName(filename)
    datareader.Update()
    data = datareader.GetOutput()

    if attribute_mode == 'cell':
        c2p = v.vtkCellDataToPointData()
        c2p.SetInput(data)
        pointdata=c2p.GetOutput()
        pointdata.Update()
    else:
        pointdata = data 


    vtk_points=data.GetPoints().GetData()
    points=ah.vtk2array(vtk_points)
 
    print '=== Done with reading data! ==='
    return {'pointdata': pointdata, 'points': points}
Example #28
0
def load_vtk(filepath):
    file_extension = osp.splitext(filepath)[1]
    if file_extension == '.vtu':
        reader = vtk.vtkXMLUnstructuredGridReader()
        reader.SetFileName(filepath)
        reader.Update()
        grid = reader.GetOutput()

        return grid
    elif file_extension == '.vtk':
        reader = vtk.vtkDataSetReader()
        reader.SetFileName(filepath)
        reader.Update()

        if reader.GetUnstructuredGridOutput() is not None:
            return reader.GetUnstructuredGridOutput()

        elif reader.GetPolyDataOutput() is not None:
            return reader.GetPolyDataOutput()

        elif reader.GetStructuredPointsOutput() is not None:
            raise RuntimeError('StructuredPoints not supported (yet?)')

        elif reader.GetStructuredGridOutput() is not None:
            filtered = append_filter(reader.GetStructuredGridOutput())
            return filtered

        elif reader.GetRectilinearGridOutput() is not None:
            raise RuntimeError('RectilinearGrid not supported (yet?)')

        else:
            raise RuntimeError('Unrecognized data type')
    else:
        raise RuntimeError('Unknown file type {}'.format(file_extension))
def save_lesion(output_file, input_file, field, limits):
    reader = v.vtkXMLUnstructuredGridReader()
    reader.SetFileName(input_file)
    reader.Update()

    threshold = v.vtkThreshold()
    threshold.SetInput(reader.GetOutput())

    if limits[0] is None:
        threshold.ThresholdByLower(limits[1])
    elif limits[1] is None:
        threshold.ThresholdByUpper(limits[0])
    else:
        threshold.ThresholdBetween(*limits)

    threshold.SetInputArrayToProcess(0, 0, 0, v.vtkDataObject.FIELD_ASSOCIATION_CELLS, field)
    threshold.Update()

    extract_surface = v.vtkDataSetSurfaceFilter()
    extract_surface.SetInput(threshold.GetOutput())
    extract_surface.Update()

    writer = v.vtkXMLPolyDataWriter()
    writer.SetFileName(output_file)
    writer.SetInput(extract_surface.GetOutput())
    writer.Write()
def DoLineSampling(file_path, domain, pc):

    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(file_path)
    reader.Update()

    sample_spacing = 60.0
    height = pc.get_parameter("PelletHeight").value
    height = height.Convert(1.0e-6 * metres)
    radius = pc.get_parameter("CorneaRadius").value
    radius = radius.Convert(1.0e-6 * metres)
    width = 2.0 * np.pi * radius

    num_samples = int(height / sample_spacing)
    points = vtk.vtkPoints()
    for idx in range(num_samples):
        points.InsertNextPoint(width / 2.0, float(idx * sample_spacing), 0.0)
    poly = vtk.vtkPolyData()
    poly.SetPoints(points)

    probe = vtk.vtkProbeFilter()
    probe.SetSourceData(reader.GetOutput())
    probe.SetInputData(poly)
    probe.Update()

    results = probe.GetOutput().GetPointData().GetArray("Line Density")
    for idx in range(results.GetNumberOfTuples()):
        print "y", points.GetPoint(idx)[1], " rho ", results.GetTuple1(idx)
Example #31
0
def check_min_max_radii():
  # Loop over vtu's and check that each core does not extend from inner radius to outer radius:
  filelist = glob.glob("Stokes_sphere_0/Stokes_sphere_0_*.vtu")
  filelist.sort()

  smallest_radius_max = constants.outer_radius
  largest_radius_min = constants.inner_radius

  for filename in filelist:
    print('Working on file:', filename)

    # Set up reader (note that vtktools does this automatically, but vtktools isn't being used here):
    if filename[-4:] == ".vtu":
      reader=vtk.vtkXMLUnstructuredGridReader()
    else:
      raise Exception("ERROR: don't recognise file extension" + filename)
    reader.SetFileName(filename)
    reader.Update()

    # Extract and store all field data:
    data = reader.GetOutput()

    # Extract radius information:
    radius_data = data.GetPointData().GetScalars("Radius")

    # Convert radii into a nice numpy array:
    radius = numpy.array([radius_data.GetValue(p) for p in xrange(radius_data.GetNumberOfTuples())])
    
    # Check for smallest maximum radius and largest minimum radius on each core:
    smallest_radius_max = min(smallest_radius_max, numpy.max(radius))
    largest_radius_min = max(largest_radius_min, numpy.min(radius))

  return smallest_radius_max, largest_radius_min
def GetDensityMetrics(file_path, domain, pc):

    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(file_path)
    reader.Update()

    grid = reader.GetOutput()
    line_density = grid.GetCellData().GetArray("Line Density")

    line_density_volume = 0.0
    total_volume = 0.0
    offset = pc.get_parameter("LimbalOffset").value
    offset = offset.Convert(1.0e-6 * metres)
    height = pc.get_parameter("PelletHeight").value
    height = height.Convert(1.0e-6 * metres)

    for idx in range(grid.GetNumberOfCells()):
        points = grid.GetCell(idx).GetPoints()
        loc = np.zeros(3)
        for jdx in range(points.GetNumberOfPoints()):
            if jdx == 0:
                loc = np.array(points.GetPoint(jdx))
            else:
                loc += np.array(points.GetPoint(jdx))
        loc /= float(points.GetNumberOfPoints())
        cell_volume = abs(vtk.vtkMeshQuality.HexVolume(grid.GetCell(idx)))
        total_volume += cell_volume
        cell_line_density = line_density.GetTuple1(idx)
        if cell_line_density >= 1.e-9:
            line_density_volume += cell_volume
    line_fraction = line_density_volume / total_volume
    return [line_fraction, 1.0]
Example #33
0
    def _load_file(self, filename):
        """Load an unstructured grid from a file.

        The file extension will select the type of reader to use.  A .vtk
        extension will use the legacy reader, while .vtu will select the VTK
        XML reader.

        Parameters
        ----------
        filename : str
            Filename of grid to be loaded.

        """
        filename = os.path.abspath(os.path.expanduser(filename))
        # check file exists
        if not os.path.isfile(filename):
            raise Exception('%s does not exist' % filename)

        # Check file extension
        if '.vtu' in filename:
            reader = vtk.vtkXMLUnstructuredGridReader()
        elif '.vtk' in filename:
            reader = vtk.vtkUnstructuredGridReader()
        else:
            raise Exception('Extension should be either ".vtu" or ".vtk"')

        # load file to self
        reader.SetFileName(filename)
        reader.Update()
        grid = reader.GetOutput()
        self.shallow_copy(grid)
Example #34
0
def convert_vtk_file(vtk_file, plt_file, strand=None, solution_time=None):
    reader = None
    if vtk_file.endswith(".vtu"):
        reader = vtk.vtkXMLUnstructuredGridReader()
    elif vtk_file.endswith(".vtp"):
        reader = vtk.vtkXMLPolyDataReader()
    elif vtk_file.endswith(".vts"):
        reader = vtk.vtkXMLStructuredGridReader()
    elif vtk_file.endswith(".vti"):
        reader = vtk.vtkXMLImageDataReader()
    reader.SetFileName(vtk_file)
    reader.Update()
    vtk_dataset = reader.GetOutput()
    tp.new_layout()
    tecplot_dataset = tp.active_frame().dataset
    add_vtk_dataset(vtk_dataset, tecplot_dataset)
    if tecplot_dataset.num_zones == 0:
        print("No zones created.")
        return
    for z in tecplot_dataset.zones():
        z.name = os.path.basename(vtk_file)
        if strand and solution_time:
            z.strand = strand
            z.solution_time = solution_time
    tp.data.save_tecplot_plt(plt_file, dataset=tecplot_dataset)
Example #35
0
def createCellLocator(a_FileName, a_LocatorType=None, a_Legacy='vtp'):
    if a_FileName.endswith('vtu'):
        reader = vtk.vtkXMLUnstructuredGridReader()
    elif a_FileName.endswith('vtp'):
        reader = vtk.vtkXMLPolyDataReader()
    elif a_FileName.endswith('.vtk'):
        if a_Legacy == 'none':
            print("Need To Specify Data Type For Legacy Files")
            sys.exit()
        elif a_Legacy == 'vtu':
            reader = vtk.vtkUnstructuredGridReader()
        elif a_Legacy == 'vtp':
            reader = vtk.vtkPolyDataReader()
    else:
        print("Unsupported File Extension")
        sys.exit()

    reader.SetFileName(a_FileName)
    reader.Update()

    if a_LocatorType is None:
        locator = vtk.vtkCellTreeLocator()
    else:
        if a_LocatorType == 'oct':
            locator = vtk.vtkCellLocator()
        elif a_LocatorType == 'tre':
            locator = vtk.vtkCellTreeLocator()
        elif a_LocatorType == 'bsp':
            locator = vtk.vtkModifiedBSPTree()

    locator.SetDataSet(reader.GetOutput())
    locator.BuildLocator()

    return locator
Example #36
0
 def __init__(self, filename=None):
     """Creates a vtu object by reading the specified file."""
     if filename is None:
         self.ugrid = vtk.vtkUnstructuredGrid()
     else:
         self.gridreader = None
         if filename[-4:] == ".vtu":
             self.gridreader = vtk.vtkXMLUnstructuredGridReader()
         elif filename[-5:] == ".pvtu":
             self.gridreader = vtk.vtkXMLPUnstructuredGridReader()
         else:
             raise Exception("ERROR: don't recognise file extension" +
                             filename)
         self.gridreader.SetFileName(filename)
         self.gridreader.Update()
         self.ugrid = self.gridreader.GetOutput()
         self.points = self.ugrid.GetPoints()
         self.pointdata = self.ugrid.GetPointData()
         self.cells = self.ugrid.GetCells()
         self.celldata = self.ugrid.GetCellData()
         if self.ugrid.GetNumberOfPoints() + self.ugrid.GetNumberOfCells(
         ) == 0:
             raise Exception(
                 "ERROR: No points or cells found after loading vtu " +
                 filename)
     self._coords = None
     self.filename = filename
     self._data_dict = {}
     self._rawdata_dict = {}
     self._rawcelldata_dict = {}
     self._raw_coords = None
Example #37
0
def read_from_xml(file_path, fidelity):
    """Read VTU file"""

    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(file_path)
    reader.Update()  # Needed because of GetScalarRange
    output = reader.GetOutput()
    # Saving into Numpy arrays
    # print(output.GetPointData())
    displacement = Mesh(
        MeshType.DISPLACEMENT,
        vtk_to_numpy(output.GetPointData().GetArray("displacement")))
    try:
        strain = Mesh(
            MeshType.STRAIN,
            vtk_to_numpy(
                output.GetPointData().GetArray("nodal_EA_strains_xyz")))
    except:
        strain_a = vtk_to_numpy(
            output.GetPointData().GetArray("nodal_EA_strains_eigenval1"))
        strain_b = vtk_to_numpy(
            output.GetPointData().GetArray("nodal_EA_strains_eigenval2"))
        strain_c = vtk_to_numpy(
            output.GetPointData().GetArray("nodal_EA_strains_eigenval3"))
        strain_a = np.reshape(strain_a, (np.shape(strain_a)[0], 1))
        strain_b = np.reshape(strain_b, (np.shape(strain_b)[0], 1))
        strain_c = np.reshape(strain_c, (np.shape(strain_c)[0], 1))
        strain = np.concatenate((strain_a, strain_b, strain_c), axis=1)
        strain = Mesh(MeshType.STRAIN, strain)
    van_mises = Mesh(
        MeshType.VAN_MISES,
        vtk_to_numpy(
            output.GetPointData().GetArray("nodal_cauchy_stresses_xyz")))
    return Xml(fidelity, van_mises, displacement, strain)
Example #38
0
def main():
    #    try:
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "invtkfile",
        help="filename of input vtk mesh (VTK XML unstructured grid")
    parser.add_argument("varname", help="name of cell data variable")
    parser.add_argument(
        "outvtkfile",
        help="filename of output vtk mesh (VTK XML unstructured grid")
    args = parser.parse_args()

    # deserialize raw bytes into VarDataAdd
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(args.invtkfile)
    reader.Update()
    mesh = reader.GetOutput()
    assert isinstance(mesh, vtk.vtkUnstructuredGrid)
    numcells = mesh.GetCells().GetSize()

    # write 0..N-1 into data
    npdata = np.arange(0, numcells, 0.1)

    writeDataArrayToNewVtkFile(args.invtkfile, args.varname, npdata,
                               args.outvtkfile)
    print("done")
Example #39
0
    def setUp(self):
        reader = vtk.vtkXMLUnstructuredGridReader()
        reader.SetFileName('gradient_coarse.vtu')
        reader.Update()

        self.nodes = np.empty((reader.GetOutput().GetNumberOfPoints(), 3))
        for n in range(reader.GetOutput().GetNumberOfPoints()):
            x = reader.GetOutput().GetPoint(n)
            self.nodes[n, 0] = x[0]
            self.nodes[n, 1] = x[1]
            self.nodes[n, 2] = x[2]

        self.tet = np.empty((reader.GetOutput().GetNumberOfCells(), 4),
                            dtype=int)
        ind = vtk.vtkIdList()
        for n in range(reader.GetOutput().GetNumberOfCells()):
            reader.GetOutput().GetCellPoints(n, ind)
            self.tet[n, 0] = ind.GetId(0)
            self.tet[n, 1] = ind.GetId(1)
            self.tet[n, 2] = ind.GetId(2)
            self.tet[n, 3] = ind.GetId(3)

        data = reader.GetOutput()
        self.slowness = vtk_to_numpy(data.GetPointData().GetArray('Slowness'))

        self.src = np.loadtxt('src.dat', skiprows=1)
        self.src = self.src.reshape((1, 4))
        self.rcv = np.loadtxt('rcv.dat', skiprows=1)
Example #40
0
def create_probe(filename):
    if(verbose):
        print "Creating probe from ", filename

    pd = vtk.vtkStructuredPoints()

    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(filename)
    ugrid = reader.GetOutput()
    ugrid.Update()

    b = ugrid.GetBounds()
    pd.SetOrigin(b[0], b[2], b[4])
    l = [b[1] - b[0], b[3] - b[2], b[5] - b[4]]
    tot_len = float(l[0] + l[1] + l[2])
    dims = intervals
    pd.SetExtent(0, dims[0]-1, 0, dims[1] -1, 0, dims[2] -1)
    pd.SetUpdateExtent(0, dims[0]-1, 0, dims[1] -1, 0, dims[2] -1)
    pd.SetWholeExtent(0, dims[0]-1, 0, dims[1] -1, 0, dims[2] -1)
    pd.SetDimensions(dims)
    dims = [max(1, x-1) for x in dims]
    l = [max(1e-3, x) for x in l]
    sp = [l[0]/dims[0], l[1]/dims[1], l[2]/dims[2]]
    pd.SetSpacing(sp)

    return pd
Example #41
0
    def setCondition(self, value, fieldname, n=None, dof=None, valueDof=None):
        """ Setting the initial conditions of the mesh based on the configuration,
            if it's presetting uniform value then set it to the whole geometry
            otherwise read it from geometry (vtp) files.
        """
        if isinstance(value, str):

            reader = vtk.vtkXMLPolyDataReader() if value.endswith(
                'vtp') else vtk.vtkXMLUnstructuredGridReader()
            reader.SetFileName(value)
            reader.Update()

            polyDataModel = reader.GetOutput()

            # TODO:: check the compatibility between initial condition file and the mesh's geometry

            prop = vtk_to_numpy(
                polyDataModel.GetPointData().GetArray(fieldname))

        else:

            if n is None:
                n = self.nNodes
            if dof is None:
                dof = self.dof

            prop = np.zeros((n, dof))
            if valueDof is None:
                prop[:, :] = value
            else:
                prop[:, valueDof] = value

        prop = prop.ravel()
        return prop
Example #42
0
 def __init__(self,
              filename,
              nneighbors=20,
              dim=3,
              one_d_axis=0,
              two_d_planenormal=2,
              interpolation_backend="scipy"):
     self.filename = filename
     self.reader = vtk.vtkXMLUnstructuredGridReader()
     self.reader.SetFileName(self.filename)
     self.reader.Update()
     self.output = self.reader.GetOutput()
     self.pdata = self.output.GetPointData()
     self.cdata = self.output.GetCellData()
     self.points = vtk_to_numpy(self.output.GetPoints().GetData())
     self._cell_center_points = None
     self.dim = dim
     self.nneighbors = nneighbors
     self.one_d_axis = one_d_axis
     self.two_d_planenormal = two_d_planenormal
     if self.dim == 1:
         self.one_d_axis = one_d_axis
         self.points = self.points[:, one_d_axis]
     if self.dim == 2:
         self.plane = [0, 1, 2]
         self.plane.pop(two_d_planenormal)
         self.points = np.delete(self.points, two_d_planenormal, 1)
     self.interpolation_backend = interpolation_backend
Example #43
0
def read(filenames, timestep=None):
    '''Reads an unstructured mesh with added data.

    :param filenames: The files to read from.
    :type filenames: str
    :param timestep: Time step to read from, in case of an Exodus input mesh.
    :type timestep: int, optional
    :returns mesh{2,3}d: The mesh data.
    :returns point_data: Point data read from file.
    :type point_data: dict
    :returns field_data: Field data read from file.
    :type field_data: dict
    '''
    if isinstance(filenames, (list, tuple)) and len(filenames)==1:
        filenames = filenames[0]

    if isinstance(filenames, basestring):
        filename = filenames
        # serial files
        extension = os.path.splitext(filename)[1]

        import re
        # setup the reader
        # TODO Most readers have CanReadFile() -- use that.
        if extension == '.vtu':
            from vtk import vtkXMLUnstructuredGridReader
            reader = vtkXMLUnstructuredGridReader()
            vtk_mesh = _read_vtk_mesh(reader, filename)
        elif extension == '.vtk':
            from vtk import vtkUnstructuredGridReader
            reader = vtkUnstructuredGridReader()
            vtk_mesh = _read_vtk_mesh(reader, filename)
        elif extension == '.xmf':
            from vtk import vtkXdmfReader
            reader = vtkXdmfReader()
            vtk_mesh = _read_vtk_mesh(reader, filename)
        elif extension in [ '.ex2', '.exo', '.e' ]:
            from vtk import vtkExodusIIReader
            reader = vtkExodusIIReader()
            reader.SetFileName( filename )
            vtk_mesh = _read_exodusii_mesh(reader, timestep=timestep)
        elif re.match('[^\.]*\.e\.\d+\.\d+', filename):
            # Parallel Exodus files.
            # TODO handle with vtkPExodusIIReader
            from vtk import vtkExodusIIReader
            reader = vtkExodusIIReader()
            reader.SetFileName( filenames[0] )
            vtk_mesh = _read_exodusii_mesh(reader, timestep=timestep)
        else:
            raise RuntimeError( 'Unknown file type \'%s\'.' % filename )
    else:
        # Parallel files.
        # Assume Exodus format as we don't know anything else yet.
        from vtk import vtkPExodusIIReader
        # TODO Guess the file pattern or whatever.
        reader = vtkPExodusIIReader()
        reader.SetFileNames( filenames )
        vtk_mesh = _read_exodusii_mesh(reader, filename, timestep=timestep)

    return vtk_mesh
Example #44
0
 def ReadVTKXMLMeshFile(self):
     if (self.InputFileName == ''):
         self.PrintError('Error: no InputFileName.')
     self.PrintLog('Reading VTK XML mesh file.')
     reader = vtk.vtkXMLUnstructuredGridReader()
     reader.SetFileName(self.InputFileName)
     reader.Update()
     self.Mesh = reader.GetOutput()
Example #45
0
def test_clean_unstructured_grid():
    """ Test the clean_unstructured_grid routine"""
    reader = vtk.vtkXMLUnstructuredGridReader()
    del reader
    ugrid = vtk.vtkUnstructuredGrid()
    clean_grid = IO.clean_unstructured_grid(ugrid)

    assert clean_grid
Example #46
0
def parseDump (filename):
    reader=vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(filename)
    reader.Update()
    output=reader.GetOutput()
    celldata=output.GetCellData()
    cells=output.GetCells()
    points=output.GetPoints()
    return cells,celldata,points
Example #47
0
    def __init__(self, filename, mesh=None, deepcopy=False):
        """
        Initialize a the reader with a pvd or a vtu filename
        """
        if not os.path.isfile(filename):
            raise IOError("File '%s' does not excist"%filename)
        filetype = filename.split(".")[-1]
        self._name = ".".join(filename.split(".")[0:-1])
        if filetype not in ["pvd", "vtu"]:
            raise TypeError("Expected a 'pvd' or a 'vtu' file")

        # Get dirname
        dirname = os.path.dirname(filename)
        
        # Check mesh argument
        if mesh is not None and not isinstance(mesh, Mesh):
            raise TypeError, "Expected a 'Mesh' for the mesh arguments"

        # Store deepcopy argument
        self._deepcopy = deepcopy
        
        # Store mesh
        self._mesh = mesh
        
        # Initialize the filename cache
        self._filenames = []
        if filetype == "vtu":
            self._filenames.append(filename)
            self._times = np.array([])
        else:
            # Parse pvd file
            tree = ElementTree(file=filename)
            times = []
            for item in tree.iter():
                if item.tag == "DataSet":
                    self._filenames.append(os.path.join(\
                        dirname,item.attrib["file"]))
                    times.append(float(item.attrib["timestep"]))
            
            times = np.array(times, dtype='d')

            # If there are no time data stored in the file use an empty array
            if np.all(np.diff(times)==1):
                times = np.array([])

            # Store time data
            self._times = times

        # Construct file reader
        self.reader = vtk.vtkXMLUnstructuredGridReader()
        
        # Read in data from file
        self._update_vtk_data()

        # Init dolfin structures (Function, FunctionSpace)
        self._init_dolfin_data()
Example #48
0
def vtu_points(offset,filenameout='data',):

    filename=''.join([filenameout,repr(offset).zfill(4),'.vtu'])

    datareader = v.vtkXMLUnstructuredGridReader()
    datareader.SetFileName(filename)
    datareader.Update()
    data = datareader.GetOutput()
    
    vtk_points=data.GetPoints().GetData()
    points=ah.vtk2array(vtk_points)
    return points
Example #49
0
    def open(self, k):
        """ Open a file for reading."""
        rdr = vtk.vtkXMLUnstructuredGridReader()

        print 'loading %s'%self.data[k][1]
        rdr.SetFileName(self.data[k][1])
        rdr.Update()

        self.data[k][2] = rdr.GetOutput()
        cloc = vtk.vtkCellLocator()
        cloc.SetDataSet(self.data[k][2])
        cloc.BuildLocator()
        self.data[k][3] = cloc
Example #50
0
def vtu_values(offset,varname,filenameout='data',attribute_mode='cell',type='vtu'):

    if type == 'vtu':
        filename=''.join([filenameout,repr(offset).zfill(4),'.vtu'])
        datareader = v.vtkXMLUnstructuredGridReader()
    elif type == 'pvtu':
        filename=''.join([filenameout,repr(offset).zfill(4),'.pvtu'])
        datareader = v.vtkXMLPUnstructuredGridReader()
        
    datareader.SetFileName(filename)
    datareader.Update()
    data = datareader.GetOutput()
    
    return read.extract(data,varname,attribute_mode=attribute_mode)
Example #51
0
    def read_ugrid(filename):
        if filename.endswith(".pvtu"):
            reader = vtk.vtkXMLPUnstructuredGridReader()
        elif filename.endswith(".vtk"):
            reader = vtk.vtkUnstructuredGridReader()
        elif filename.endswith(".vtu"):
            reader = vtk.vtkXMLUnstructuredGridReader()
        else:
            raise BaseException("Illegal filename suffix %s" % filename)

        reader.SetFileName(filename)
        reader.Update()

        return reader.GetOutput()
Example #52
0
    def fun(time):
        """Factory function to mock a temporal cache."""
        del time
        reader = vtk.vtkXMLUnstructuredGridReader()
        reader.SetFileName(ldir+'/'+fname)
        reader.Update()

        locator = vtk.vtkCellLocator()
        locator.SetDataSet(reader.GetOutput())
        locator.BuildLocator()

        return ([[0.0, fname, reader.GetOutput(), locator],
                 [1.0, fname, reader.GetOutput(), locator]], 0.0,
                [['Velocity', 'Pressure'], ['Velocity', 'Pressure']])
    def extract_data(self):
        """
        Extract the data from the VTK file using the python-vtk library
        The data is passed to numpy arrays for better manipulation
        """

        # Check the type of file to load it according to its grid structure
        # which was specified when calling the class These dictionary entries
        # return the corresponding VTK Reader functions, so they can be easily
        # called according to the class argument
        reader_type = {
            'XMLUnstructuredGrid': lambda: vtk.vtkXMLUnstructuredGridReader(),
            'XMLStructuredGrid': lambda: vtk.vtkXMLStructuredGridReader(),
            'UnstructuredGrid': lambda: vtk.vtkUnstructuredGridReader(),
            'StructuredGrid': lambda: vtk.vtkStructuredGridReader(),
            }

        if self.vtkfiletype.startswith('XML'):
            # Load the vtk file from the input file
            self.reader = reader_type[self.vtkfiletype]()
            self.reader.SetFileName(self.vtk_file)
        else:
            # Load the vtk file from the input file
            self.reader = reader_type[self.vtkfiletype]()
            self.reader.SetFileName(self.vtk_file)
            # For Non XML vtk files:
            self.reader.ReadAllVectorsOn()
            self.reader.ReadAllScalarsOn()

        self.reader.Update()

        # Get the coordinates of the nodes in the mesh
        nodes_vtk_array = self.reader.GetOutput().GetPoints().GetData()

        # Get The vector field (data of every node)
        vf_vtk_array = self.reader.GetOutput().GetPointData().GetArray(0)

        # Transform the coordinates of the nodes to a Numpy array and
        # save them to the corresponding class objects
        nodes_numpy_array = vtk_to_numpy(nodes_vtk_array)
        self.x, self.y, self.z = (nodes_numpy_array[:, 0],
                                  nodes_numpy_array[:, 1],
                                  nodes_numpy_array[:, 2]
                                  )

        # Transform the magnetisation data to a Numpy array and save
        vf_numpy_array = vtk_to_numpy(vf_vtk_array)
        self.vf = vf_numpy_array
Example #54
0
    def readData(self):
      
        if self.type == 'vtu':
            filename=''.join([self.filenameout,repr(self.offset).zfill(4),'.vtu'])
            datareader = v.vtkXMLUnstructuredGridReader()
        elif self.type == 'pvtu':
            filename=''.join([self.filenameout,repr(self.offset).zfill(4),'.pvtu'])
            datareader = v.vtkXMLPUnstructuredGridReader()

        print '=== Reading ',filename,' ==='

        datareader.SetFileName(filename)
        datareader.Update()
        self.data = datareader.GetOutput()
        vtk_points=self.data.GetPoints().GetData()
        self.points=ah.vtk2array(vtk_points)
def Test2(datadir):
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(datadir + "/Data/elements.vtu")
    reader.UpdateInformation();
    reader.GetPointDataArraySelection().EnableAllArrays()
    reader.GetCellDataArraySelection().EnableAllArrays()

    f = vtk.vtkIntegrateAttributes()
    f.SetInputConnection(reader.GetOutputPort())
    f.Update()

    result = f.GetOutputDataObject(0)
    val = result.GetPointData().GetArray("pointScalars").GetValue(0)
    assert (val > 83.1 and val < 83.2)

    val = result.GetCellData().GetArray("Volume").GetValue(0)
    assert (val > 1.999 and val < 2.01)
def Test1(datadir):
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(datadir + "/Data/quadraticTetra01.vtu")
    reader.UpdateInformation();
    reader.GetPointDataArraySelection().EnableAllArrays()
    reader.GetCellDataArraySelection().EnableAllArrays()

    f = vtk.vtkIntegrateAttributes()
    f.SetInputConnection(reader.GetOutputPort())
    f.Update()

    result = f.GetOutputDataObject(0)
    val = result.GetPointData().GetArray("scalars").GetValue(0)
    assert (val > 0.0162 and val < 0.01621)

    val = result.GetCellData().GetArray("Volume").GetValue(0)
    assert (val > 0.128 and val < 0.1284)
Example #57
0
def Save_VTK_data_to_picture_file(inputFileName, field_name,
                             node_or_cell, outputFileName
                             ):
    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(inputFileName)
    reader.Update()
    
    if node_or_cell== 'CELLS':
        reader.CellArrayStatus = [field_name]
        reader.GetOutput().GetCellData().SetActiveScalars(field_name)
    elif node_or_cell== 'NODES':
        reader.PointArrayStatus = [field_name]
        reader.GetOutput().GetPointData().SetActiveScalars(field_name)
    else:
        raise ValueError("unknown type : should be CELLS or NODES")

#-------------------------------------------------------------------------------    
    mapper = vtk.vtkDataSetMapper()
    mapper.SetInputConnection(reader.GetOutputPort())
    actor = vtk.vtkActor()
    actor.SetMapper(mapper)

    scalarBar=vtk.vtkScalarBarActor()
    scalarBar.SetLookupTable(mapper.GetLookupTable())
    scalarBar.SetTitle(field_name)
    
    mapper.SetScalarRange(reader.GetOutput().GetScalarRange())

    ren = vtk.vtkRenderer()
    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(ren)
    
    ren.AddViewProp(actor)
    ren.AddActor2D(scalarBar);
        
    renWin.Render()
    
    image = vtk.vtkWindowToImageFilter()
    image.SetInput(renWin)
    image.ReadFrontBufferOff()
    image.Update()
    writer = vtk.vtkPNGWriter()
    writer.SetFileName(outputFileName+".png")
    writer.SetInputConnection(image.GetOutputPort())
    writer.Write()
Example #58
0
def probe(pd, filename):
    if(verbose):
        print "Opening ", filename

    reader = vtk.vtkXMLUnstructuredGridReader()
    reader.SetFileName(filename)
    ugrid = reader.GetOutput()
    ugrid.Update()
    
    if(verbose):
        print "Probing"

    probe = vtk.vtkProbeFilter()
    probe.SetSource(ugrid)
    probe.SetInput(pd)
    probe.Update()

    return probe.GetOutput()
Example #59
0
 def __init__(self, filename = None):
   """Creates a vtu object by reading the specified file."""
   if filename is None:
     self.ugrid = vtk.vtkUnstructuredGrid()
   else:
     self.gridreader = None
     if filename[-4:] == ".vtu":
       self.gridreader=vtk.vtkXMLUnstructuredGridReader()
     elif filename[-5:] == ".pvtu":
       self.gridreader=vtk.vtkXMLPUnstructuredGridReader()
     else:
       raise Exception("ERROR: don't recognise file extension" + filename)
     self.gridreader.SetFileName(filename)
     self.gridreader.Update()
     self.ugrid=self.gridreader.GetOutput()
     if self.ugrid.GetNumberOfPoints() + self.ugrid.GetNumberOfCells() == 0:
       raise Exception("ERROR: No points or cells found after loading vtu " + filename)
   self.filename=filename