def write(self): """ Write the staged vtkPolyData to a file.""" self.poly_data.SetPoints(self.pnts) self.poly_data.Allocate(len(self.cell_ids)) for cell_id in self.cell_ids.values(): self.poly_data.InsertNextCell(vtk.VTK_LINE, cell_id) writer = WRITER[vtk.VTK_POLY_DATA]() writer.SetFileName(self.filename) if Parallel.is_parallel(): writer.SetNumberOfPieces(Parallel.get_size()) writer.SetStartPiece(Parallel.get_rank()) writer.SetEndPiece(Parallel.get_rank()) if vtk.vtkVersion.GetVTKMajorVersion() <= 6: writer.SetWriteSummaryFile(Parallel.get_rank() == 0) else: controller = vtk.vtkMPIController() controller.SetCommunicator( vtk.vtkMPICommunicator.GetWorldCommunicator()) writer.SetController(controller) if vtk.vtkVersion.GetVTKMajorVersion() < 6: writer.SetInput(self.poly_data) else: writer.SetInputData(self.poly_data) writer.Write() if Parallel.is_parallel(): make_subdirectory(self.filename)
def write_to_file(vtk_data, outfile): """ Wrapper around the various VTK writer routines""" writer = WRITER[vtk_data.GetDataObjectType()]() writer.SetFileName(outfile) if Parallel.is_parallel(): writer.SetNumberOfPieces(Parallel.get_size()) writer.SetStartPiece(Parallel.get_rank()) writer.SetEndPiece(Parallel.get_rank()) writer.SetWriteSummaryFile(Parallel.get_rank()==0) if vtk.vtkVersion.GetVTKMajorVersion()<6: writer.SetInput(vtk_data) else: writer.SetInputData(vtk_data) writer.Write()
def get_mesh_filename(self): """Return the mesh file name""" if Parallel.is_parallel(): return libspud.get_option( '/geometry/mesh::CoordinateMesh/from_file/file_name' ) + '_%d.msh' % Parallel.get_rank() # otherwise return libspud.get_option( '/geometry/mesh::CoordinateMesh/from_file/file_name') + '.msh'
def make_subdirectory(fname): """Create directory to store parallel data.""" Parallel.barrier() if Parallel.get_rank() == 0: base_name, file_type = fname.rsplit('.', 1) if not os.path.isdir(base_name): os.mkdir(base_name) for _ in glob.glob(base_name + '_*.%s' % file_type[1:]): os.rename(_, base_name + '/' + _) with open(fname) as summary_file: new_text = summary_file.read().replace(_, base_name + '/' + _) with open(fname, 'w') as summary_file: summary_file.write(new_text)
def write_to_file(vtk_data, outfile): """ Wrapper around the various VTK writer routines""" writer = WRITER[vtk_data.GetDataObjectType()]() writer.SetFileName(outfile) if Parallel.is_parallel(): writer.SetNumberOfPieces(Parallel.get_size()) writer.SetStartPiece(Parallel.get_rank()) writer.SetEndPiece(Parallel.get_rank()) if vtk.vtkVersion.GetVTKMajorVersion() <= 6: writer.SetWriteSummaryFile(Parallel.get_rank() == 0) else: controller = vtk.vtkMPIController() controller.SetCommunicator( vtk.vtkMPICommunicator.GetWorldCommunicator()) writer.SetController(controller) if vtk.vtkVersion.GetVTKMajorVersion() < 6: writer.SetInput(vtk_data) else: writer.SetInputData(vtk_data) writer.Write() if Parallel.is_parallel(): make_subdirectory(outfile)
def get_time_from_vtk(self, filename): """ Get the time from a vtk XML formatted file.""" parallel_files = ('pvtu', 'pvtp', 'pvtm', 'vtm', 'pvts', 'pvtr') parallel = filename.split('.')[-1] in parallel_files etree = element_tree(file=filename).getroot() assert etree.tag == 'VTKFile' if parallel: parallel_name = etree[0].findall('Piece')[Parallel.get_rank()].get( 'Source') return self.get_time_from_vtk(parallel_name) else: for piece in etree[0]: for data in piece[0]: if data.get('Name') != self.field_names["Time"]: continue return float(data.get('RangeMin'))
def get_time_from_vtk(self, filename): """ Get the time from a vtk XML formatted file.""" PARALLEL_FILES = ('pvtu', 'pvtp', 'pvtm', 'vtm') parallel = filename.split('.')[-1] in PARALLEL_FILES ftext = open (filename, 'r') e = etree.ElementTree(file=filename, parser=etree.XMLParser(recover=True)).getroot() assert e.tag == 'VTKFile' if parallel: return self.get_time_from_vtk(e[0].findall('Piece')[Parallel.get_rank()].get('Source')) else: for piece in e[0]: for data in piece[0]: if data.get('Name') != 'Time': continue return float(data.get('RangeMin'))
def get_piece_filename_from_vtk(self, filename, piece=Parallel.get_rank()): e = etree.ElementTree(file=filename, parser=etree.XMLParser(recover=True)).getroot() return e[0].findall('Piece')[Parallel.get_rank()].get('Source')
def get_piece_filename_from_vtk(filename, piece=Parallel.get_rank()): """Get the filename of individual VTK file piece.""" etree = element_tree(file=filename).getroot() return etree[0].findall('Piece')[piece].get('Source')