I’d like my python code to access data arrays from a multiblock dataset I read into Paraview (Ensight) via paraview.simple
I want to run some math on these arrays using my python code and save the output back into the dataset. At this point am not sure if I need raw data or not but one of the math operation is an eigenvalue solving so I guess it needs the data on my client to work on…
I could use the programmable filter but would like to switch to scripting to automate. Besides it is far easier to import paraview.simple into my python code and do what I need to do rather than bring the whole code into a programmable filter.
servermanager.Fetch will return you the VTK object.
You can wrap this with the NumPy dataset adapter to get NumPy-friendly arrays:
from paraview import servermanager as sm
from paraview.vtk.numpy_interface import dataset_adapter as dsa
...
vtk_data = sm.Fetch(pv_object)
vtk_data = dsa.WrapDataObject(vtk_data)
data = vtk_data.PointData[0]
Thank you very much Mathieu and Phillip! I was able to follow your directions.
I had gotten as far as the servermanager’s Fetch before I posted but didn’t know how to convert the result to a numpy array.
Following Phillip’s post, I still ended up with an object that didn’t display the numeric data in the array. I experimented a little and the numpy array becomes possible after issuing a ‘MergeBlocks’ right after reading the dataset in. I guess it is a multiblock thing…so for larger datasets it might be best to only do the Fetch on a slice or something.