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' ncomp = narray.shape[1] if ncomp != 1 and ncomp != 3: raise RuntimeError, 'Gradient only works with scalars (1 component) and vectors (3 component)'\ 'Input shape ' + narray.shape cd = vtkCellDerivatives() if ncomp == 1 : attribute_type = 'scalars' else : attribute_type = 'vectors' dsa = _cell_derivatives(narray, dataset, attribute_type, cd) if ncomp == 1 : retVal = dsa.GetVectors() else : retVal = dsa.GetTensors() try: if narray.GetName() : retVal.SetName("gradient of " + narray.GetName()) else : retVal.SetName("gradient") except AttributeError : retVal.SetName("gradient") ans = dataset_adapter.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 ' + narray.shape cd = vtkCellDerivatives() cd.SetTensorModeToComputeStrain() dsa = _cell_derivatives(narray, dataset, 'vectors', cd) retVal = dsa.GetTensors() retVal.SetName("strain") ans = dataset_adapter.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