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
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__(self, module_manager, vtk.vtkPExodusIIReader(), 'Reading vtkPExodusII.', (), ('vtkPExodusII', ), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__( self, module_manager, vtk.vtkPExodusIIReader(), "Reading vtkPExodusII.", (), ("vtkPExodusII",), replaceDoc=True, inputFunctions=None, outputFunctions=None, )