Hey David,

I think you'll have trouble using the calculator filter for this because even if you time shift your data set, the variable will still have the same name so you won't be able to distinguish the original and time shifted values to add them together.

In principle you should be able to use a Python Programmable Filter to do this, since it can take two inputs and grab the scalars from each without worrying about the names. (Note, though, that there are sometimes issues with the pipeline updating properly when multiple temporal shifts are combined into a PPF -- bug 8156: http://www.vtk.org/Bug/view.php?id=8156 )

I use this method to calculate velocity of particles "on the fly". So, my example may be a little more complicated than you need because I have to make sure particle IDs match each other before calculating the difference in their positions, but hopefully you can get the main ideas from here:

Attach a Temporal Cache to your data set (size = 2). Attach a Temporal Shift Scale to this with a Post Shift of whatever time value (actual time, not data set index) you want. Then, highlight both the Cache and the Shift Scale together and apply a Python Programmable Filter. My output data set is a vtkUnstructuredGrid, so I set the output of the PPF to that, and then put my script in the first window. (I'll place it at the end of the email.) This script adds a new array to the data set containing my calculated values.

NOTE: The catch for me to get the pipeline to update all the temporal shifts properly is that I have to "keep visible" the Temporal Shift Scale (or something directly branching off of it), or else my velocities all come out as zero! (I'll also attach a screen shot of my pipeline to make it clear.)

Good luck -- when it works, it works great.
-Eric

------------------------------------------------------
Eric E Monson
Duke Visualization Technology Group

====================
from paraview.vtk import vtkFloatArray

in1 = self.GetInputDataObject(0,1).GetTimeStep(0)

in0 = self.GetInputDataObject(0,0).GetTimeStep(0)

pti0 = in0.GetPoints()
pti1 = in1.GetPoints()
pdi0 = in0.GetPointData()
pdi1 = in1.GetPointData()
pdi0.SetActiveScalars('leuk_globalids')
pdi1.SetActiveScalars('leuk_globalids')
id0 = pdi0.GetScalars()
id1 = pdi1.GetScalars()
numPts = id1.GetSize()

vec = vtkFloatArray()
vec.SetName('velocity')
vec.SetNumberOfComponents(3)
vec.SetNumberOfTuples(numPts)

for ii in range(id1.GetSize()):
        idx1 = ii
        globalID1 = id1.GetValue(idx1)
        idx0 = -1
        for jj in range(id0.GetSize()):
                globalID0tmp = id0.GetValue(jj)
                if globalID0tmp == globalID1:
                        idx0 = jj
                        break
        if idx0 >= 0:
                # compute velocity and put in vec
                tmpPos = [0.0, 0.0, 0.0]
                pos1 = pti1.GetPoint(idx1)
                pos0 = pti0.GetPoint(idx0)
                for kk in range(len(tmpPos)):
                        tmpPos[kk] = pos1[kk] - pos0[kk]
                vec.SetTuple3(ii,tmpPos[0],tmpPos[1],tmpPos[2])
        else:
                # put zero velocity in vec
                vec.SetTuple3(ii,0.0,0.0,0.0)

out1 = self.GetOutputDataObject(0)
out1.ShallowCopy(in1)
out1.GetPointData().AddArray(vec)

====================

<<inline: TemporalDiffPipe_sm.jpg>>



On Mar 17, 2009, at 11:05 AM, David Fuentes wrote:

Hello,

Is there a way to use the Calculator on a variable at two different time instances? I have a time series of data stored in an exodus file. I'm trying to accumulate the sum of a variable over time and need to add the previous value of a variable to the variable's current value. Is there a way to use the "Temporal Cache", "Temporal Shift Scale", or a similar filter to provide the calculator access to a variable at a previous time instance?


Thank you,
David Fuentes



_______________________________________________
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

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to