def gradient(narray, dataset=None): "Returns the gradient of an array of scalars/vectors." if not dataset: dataset = narray.DataSet if not dataset: raise RuntimeError('Need a dataset to compute gradient') try: ncomp = narray.shape[1] except IndexError: ncomp = 1 if ncomp != 1 and ncomp != 3: raise RuntimeError('Gradient only works with scalars (1 component) and vectors (3 component)' + ' Input shape ' + str(narray.shape)) cd = vtkCellDerivatives() if ncomp == 1 : attribute_type = 'scalars' else : attribute_type = 'vectors' res = _cell_derivatives(narray, dataset, attribute_type, cd) if ncomp == 1 : retVal = res.GetVectors() else : retVal = res.GetTensors() try: if narray.GetName() : retVal.SetName("gradient of " + narray.GetName()) else : retVal.SetName("gradient") except AttributeError : retVal.SetName("gradient") ans = dsa.vtkDataArrayToVTKArray(retVal, dataset) # The association information has been lost over the vtk filter # we must reconstruct it otherwise lower pipeline will be broken. ans.Association = narray.Association return ans
def strain (narray, dataset=None) : "Returns the strain of an array of 3D vectors." if not dataset : dataset = narray.DataSet if not dataset : raise RuntimeError('Need a dataset to compute strain') if 2 != narray.ndim or 3 != narray.shape[1] : raise RuntimeError('strain only works with an array of 3D vectors' + 'Input shape ' + str(narray.shape)) cd = vtkCellDerivatives() cd.SetTensorModeToComputeStrain() res = _cell_derivatives(narray, dataset, 'vectors', cd) retVal = res.GetTensors() retVal.SetName("strain") ans = dsa.vtkDataArrayToVTKArray(retVal, dataset) # The association information has been lost over the vtk filter # we must reconstruct it otherwise lower pipeline will be broken. ans.Association = narray.Association return ans
def curl (narray, dataset=None): "Returns the curl of an array of 3D vectors." if not dataset : dataset = narray.DataSet if not dataset : raise RuntimeError('Need a dataset to compute curl.') if narray.ndim != 2 or narray.shape[1] != 3 : raise RuntimeError('Curl only works with an array of 3D vectors.' + 'Input shape ' + str(narray.shape)) cd = vtkCellDerivatives() cd.SetVectorModeToComputeVorticity() res = _cell_derivatives(narray, dataset, 'vectors', cd) retVal = res.GetVectors() retVal.SetName("vorticity") ans = dsa.vtkDataArrayToVTKArray(retVal, dataset) # The association information has been lost over the vtk filter # we must reconstruct it otherwise lower pipeline will be broken. ans.Association = narray.Association return ans