def plot(self, filename=None): data = self._data from fipy.tools import numerix for var in self.vars: name, rank, value = self._nameRankValue(var) if not (numerix.array(value.shape) == 0).any(): data.get_array(name).to_array()[:] = value try: from tvtk.misc import write_data except ImportError as e: from enthought.tvtk.misc import write_data write_data(self.dataset, filename)
def visualize(tetrahedrons, save=False, file_name='tetrahedron_mesh.vtu', just_surface=True, octmps_output_file='ClassI_ScattFilt.out'): if just_surface: data = get_surface_structure(tetrahedrons) else: data = get_complete_structure(tetrahedrons) # Saving as VTU file if save: write_data(data, file_name=file_name) mlab.figure(figure='OCTMPS', fgcolor=(1, 1, 1), bgcolor=(0.5, 0.5, 0.5)) src = VTKDataSource(data=data) surf = mlab.pipeline.surface(src, opacity=0.01) mlab.axes() mlab.pipeline.surface(mlab.pipeline.extract_edges(surf), color=(1, 1, 1), line_width=0.0) if octmps_output_file: # Make the data and add it to the pipeline. data, x_positions, z_positions = make_data( octmps_output_file=octmps_output_file) data = np.array([data]).swapaxes(1, 0) src = ArraySource(transpose_input_array=True) src.scalar_data = data src.spacing = (x_positions[1] - x_positions[0], 0., z_positions[1] - z_positions[0]) src.origin = (x_positions[0], 0.0, z_positions[0]) mlab.pipeline.surface(src, colormap='jet') mlab.colorbar(orientation='vertical', title='Reflectance') mlab.show()
class VTKViewer(AbstractViewer): """Renders `_MeshVariable` data in VTK format """ def __init__(self, vars, title=None, limits={}, **kwlimits): """Creates a VTKViewer :Parameters: vars a `_MeshVariable` or a tuple of them title displayed at the top of the `Viewer` window limits : dict a (deprecated) alternative to limit keyword arguments xmin, xmax, ymin, ymax, zmin, zmax, datamin, datamax displayed range of data. Any limit set to a (default) value of `None` will autoscale. """ kwlimits.update(limits) AbstractViewer.__init__(self, vars=vars, title=title, **kwlimits) mesh = self.vars[0].mesh self.dataset = self._makeDataSet(mesh) data = self._data for var in self.vars: name, rank, value = self._nameRankValue(var) i = data.add_array(value) data.get_array(i).name = name if rank == 0: data.set_active_scalars(name) elif rank == 1: data.set_active_vectors(name) else: data.set_active_tensors(name) def _makeDataSet(self, mesh): pass @staticmethod def _nameRankValue(var): name = var.name or "%s #%d" % (var.__class__.__name__, id(var)) rank = var.rank value = var.mesh._toVTK3D(var.value, rank=rank) return (name, rank, value) def plot(self, filename=None): data = self._data from fipy.tools import numerix for var in self.vars: name, rank, value = self._nameRankValue(var) if not (numerix.array(value.shape) == 0).any(): data.get_array(name).to_array()[:] = value try: from tvtk.misc import write_data except ImportError, e: from enthought.tvtk.misc import write_data write_data(self.dataset, filename)