[Paraview] Changing time step values

Moreland, Kenneth kmorel at sandia.gov
Wed Oct 7 12:03:41 EDT 2015


Ug. What an annoying problem to have.

First of all, I think the easiest solution to your problem is to simply change the animation mode from "Snap to TimeSteps" to either "Sequence" or "Real Time". The default "Snap to TimeSteps" is going to visit all unique time steps, and ParaView incorrectly thinks your two data sets have different values in equivalent time steps. But the other two modes ignore the independent time steps, and your two readers will both interpret them correctly.

I wish I thought of that solution before figuring out how to filter the time in your data, but I didn't and instead came up with a solution to use the programable filter. Anyway, if you still want to go through the trouble of changing the time values, here is the solution.

By default, the programmable filter copies the input data to the output, which is good since that is what you want. You can just leave the main script (which is really the RequestData script) blank. Instead you need to change the RequestInformation script and the RequestUpdateExtent script (both part of the "advanced" properties).

First, the RequestInformation script needs to redefine the time step values. Here is a version of the script that resets the time to be integer values (which should not have precision problems).

executive = self.GetExecutive()

outInfo = executive.GetOutputInformation(0)


numTimeSteps = outInfo.Length(executive.TIME_STEPS())

outInfo.Remove(executive.TIME_STEPS())


for time in xrange(0, numTimeSteps):

    outInfo.Append(executive.TIME_STEPS(), time)

Next, you need to have the RequestUpdateExtent script translate the time step requested by ParaView to the time step that the reader is really expecting. Here is a script that will do that.


executive = self.GetExecutive()

inInfo = executive.GetInputInformation(0).GetInformationObject(0)

outInfo = executive.GetOutputInformation().GetInformationObject(0)


inTimeSteps = inInfo.Get(executive.TIME_STEPS())

outTimeSteps = outInfo.Get(executive.TIME_STEPS())


requestedTimeStep = outInfo.Get(executive.UPDATE_TIME_STEP())


requestedTimeIndex = 0

while requestedTimeIndex < len(outTimeSteps)-1:

    if requestedTimeStep < outTimeSteps[requestedTimeIndex+1]:

        break

    requestedTimeIndex += 1


inInfo.Set(executive.UPDATE_TIME_STEP(), inTimeSteps[requestedTimeIndex])

That should be it. You can try to change the RequestInformation script to so set time values of one reader to the ones used by the other, or you can just apply this filter to both. As long as the time indices match up, it should work.

-Ken

From: ParaView <paraview-bounces at paraview.org<mailto:paraview-bounces at paraview.org>> on behalf of Eric Lynch <eric.lynch at gmail.com<mailto:eric.lynch at gmail.com>>
Date: Tuesday, October 6, 2015 at 9:44 PM
To: "paraview at paraview.org<mailto:paraview at paraview.org>" <paraview at paraview.org<mailto:paraview at paraview.org>>
Subject: [EXTERNAL] [Paraview] Changing time step values

After reading a dataset into ParaView, is it possible to change the time step values?  I'm reading in data in two different formats.  I've got the same time steps in both readers (they correspond to the same iteration of the same simulation), but due to differences in precision, ParaView thinks they're different times.  For example, one reader parses time as a float and has a time step of 0.10000000149011 while the other parses time as a double and shows 0.100000000000000.  Is there a way for me to change one of these after reading so ParaView thinks they're the same?

Thanks,
Eric
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20151007/7bb7f690/attachment.html>


More information about the ParaView mailing list