Alan, Attached is a state file (using can.ex2) which indeed uses numpy.trapz() to do the work. It needs a small patch to be applied to VTK (attached) to avoid a segfault.
The Programmable Filter adds a new row-data array named "trapz" which is the result of the operation (it's repeated so we can add it to RowData rather than field data. Utkarsh On Tue, Jul 14, 2015 at 7:23 PM Scott, W Alan <[email protected]> wrote: > Question from a user: > > I would like to use paraview to do the following: > > 1) Integrate a nodal variable over a volume (IntegrateVariables > filter does this) > > 2) Then, integrate the result of the volume integral over time > (cumulative integral) > > The "IntegrateVariables" filter works just fine to integrate over the > volume, and I can plot the results of it over time by selecting "RowData" > from the "PlotSelectionOverTime" filter. I just can't figure out how to do > #2 - integrate these results over time with something like "numpy.trapz" or > "scipy.integrate.cumtrapz". > > I feel like this has probably been asked a million times, but I still seem > to have trouble with it. I think I usually fall back to other post > processing tools. Can this be done all in Paraview? > > > > Thanks, > > Alan > > > _______________________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the ParaView Wiki at: > http://paraview.org/Wiki/ParaView > > Search the list archives at: http://markmail.org/search/?q=ParaView > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/paraview >
diff --git a/Filters/Programmable/vtkProgrammableFilter.cxx b/Filters/Programmable/vtkProgrammableFilter.cxx
index 3236dfc..25ef83c 100644
--- a/Filters/Programmable/vtkProgrammableFilter.cxx
+++ b/Filters/Programmable/vtkProgrammableFilter.cxx
@@ -202,8 +202,8 @@ int vtkProgrammableFilter::RequestData(
vtkCompositeDataIterator* iter = cdsInput->NewIterator();
for(iter->InitTraversal(); !iter->IsDoneWithTraversal(); iter->GoToNextItem())
{
- vtkDataSet* iblock = vtkDataSet::SafeDownCast(iter->GetCurrentDataObject());
- vtkDataSet* oblock = iblock->NewInstance();
+ vtkDataObject* iblock = iter->GetCurrentDataObject();
+ vtkDataObject* oblock = iblock->NewInstance();
if (iblock)
{
if (this->CopyArrays)
@@ -212,7 +212,12 @@ int vtkProgrammableFilter::RequestData(
}
else
{
- oblock->CopyStructure( iblock );
+ vtkDataSet* iblockDS = vtkDataSet::SafeDownCast(iblock);
+ vtkDataSet* oblockDS = vtkDataSet::SafeDownCast(oblock);
+ if (iblockDS && oblockDS)
+ {
+ oblockDS->CopyStructure(iblockDS);
+ }
}
}
cdsOutput->SetDataSet(iter, oblock);
trapz.pvsm
Description: Binary data
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Search the list archives at: http://markmail.org/search/?q=ParaView Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/paraview
