diff --git a/SimPEG/Utils/meshutils.py b/SimPEG/Utils/meshutils.py index 85ad8f21..c971ed1c 100644 --- a/SimPEG/Utils/meshutils.py +++ b/SimPEG/Utils/meshutils.py @@ -149,7 +149,7 @@ def readUBCTensorModel(fileName, mesh): Input: :param fileName, path to the UBC GIF mesh file to read - :param mesh, TensorMesh object, mesh that coresponds to the model + :param mesh, TensorMesh object, mesh that coresponds to the model Output: :return numpy array, model with TensorMesh ordered @@ -170,7 +170,7 @@ def writeUBCTensorMesh(fileName, mesh): :param str fileName: File to write to :param simpeg.Mesh.TensorMesh mesh: The mesh - + """ assert mesh.dim == 3 s = '' @@ -205,7 +205,6 @@ def writeUBCTensorModel(fileName, mesh, model): np.savetxt(fileName, modelMatTR.ravel()) - def readVTRFile(fileName): """ Read VTK Rectilinear (vtr xml file) and return SimPEG Tensor mesh and model @@ -216,7 +215,7 @@ def readVTRFile(fileName): Output: :return SimPEG TensorMesh object :return SimPEG model dictionary - + """ # Import from vtk import vtkXMLRectilinearGridReader as vtrFileReader @@ -296,84 +295,87 @@ def writeVTRFile(fileName,mesh,model=None): vtkObj.SetZCoordinates(numpy_to_vtk(vZ,deep=1)) # Assign the model('s) to the object - for item in model.iteritems(): - # Convert numpy array - vtkDoubleArr = numpy_to_vtk(item[1],deep=1) - vtkDoubleArr.SetName(item[0]) - vtkObj.GetCellData().AddArray(vtkDoubleArr) - # Set the active scalar - vtkObj.GetCellData().SetActiveScalars(model.keys()[0]) - vtkObj.Update() + if model is not None: + for item in model.iteritems(): + # Convert numpy array + vtkDoubleArr = numpy_to_vtk(item[1],deep=1) + vtkDoubleArr.SetName(item[0]) + vtkObj.GetCellData().AddArray(vtkDoubleArr) + # Set the active scalar + vtkObj.GetCellData().SetActiveScalars(model.keys()[0]) # Check the extension of the fileName - ext = os.path.splitext(fileName)[1] - if ext is '': - fileName = fileName + '.vtr' - elif ext not in '.vtr': - raise IOError('{:s} is an incorrect extension, has to be .vtr') - # Write the file. - vtrWriteFilter = rectWriter() - vtrWriteFilter.SetInput(vtkObj) - vtrWriteFilter.SetFileName(fileName) - vtrWriteFilter.Update() + if fileName is not None: + ext = os.path.splitext(fileName)[1] + if ext is '': + fileName = fileName + '.vtr' + elif ext not in '.vtr': + raise IOError('{:s} is an incorrect extension, has to be .vtr') + # Write the file. + vtrWriteFilter = rectWriter() + vtrWriteFilter.SetInputData(vtkObj) + vtrWriteFilter.SetFileName(fileName) + vtrWriteFilter.Update() + else: + return vtkObj def ExtractCoreMesh(xyzlim, mesh, meshType='tensor'): """ Extracts Core Mesh from Global mesh xyzlim: 2D array [ndim x 2] mesh: SimPEG mesh - This function ouputs: + This function ouputs: - actind: corresponding boolean index from global to core - - meshcore: core SimPEG mesh + - meshcore: core SimPEG mesh Warning: 1D and 2D has not been tested """ from SimPEG import Mesh if mesh.dim ==1: xyzlim = xyzlim.flatten() xmin, xmax = xyzlim[0], xyzlim[1] - - xind = np.logical_and(mesh.vectorCCx>xmin, mesh.vectorCCxxmin, mesh.vectorCCxxmin) & (mesh.gridCC[:,0]ymin, mesh.vectorCCyzmin, mesh.vectorCCzzmin, mesh.vectorCCzxmin) & (mesh.gridCC[:,0]ymin) & (mesh.gridCC[:,1]xmin, mesh.vectorCCxymin, mesh.vectorCCyzmin, mesh.vectorCCzzmin, mesh.vectorCCzxmin) & (mesh.gridCC[:,0]ymin) & (mesh.gridCC[:,1]zmin) & (mesh.gridCC[:,2]