Пример #1
0
    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)
Пример #2
0
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()
Пример #3
0
 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'
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
    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'))
Пример #7
0
    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'))
Пример #8
0
 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')
Пример #9
0
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')