[Paraview] Temporal shift with Python Programmable Filter
Moreland, Kenneth
kmorel at sandia.gov
Tue Feb 5 13:09:04 EST 2008
The data object's time is stored in an information object maintained by the data object with the key vtkDataObject::DATA_TIME_STEPS(). In C++, you can get this with something like
data->GetInformation()->Get(vtkDataObject::DATA_TIME_STEPS()).
You might try applying the following patch to vtkTemporalShiftScale.cxx. It adjusts the time stamp on the internal data objects so that they match the time requested. I never checked this in because I do not know if it will adversely affect anything else. If it fixes your problem, we should consider it.
-Ken
kmorel1 1> cvs diff -u vtkTemporalShiftScale.cxx
Index: vtkTemporalShiftScale.cxx
===================================================================
RCS file: /cvsroot/ParaView3/ParaView3/VTK/Hybrid/vtkTemporalShiftScale.cxx,v
retrieving revision 1.4
diff -u -r1.4 vtkTemporalShiftScale.cxx
--- vtkTemporalShiftScale.cxx 7 Sep 2006 18:01:31 -0000 1.4
+++ vtkTemporalShiftScale.cxx 5 Feb 2008 18:07:06 -0000
@@ -121,7 +121,18 @@
outData->GetInformation()->Set(vtkDataObject::DATA_TIME_STEPS(),
outTimes, inLength);
delete [] outTimes;
-
+
+ // adjust the time steps of the internal data
+ for (i = 0; i < (int)outData->GetNumberOfTimeSteps(); i++)
+ {
+ vtkInformation *dataInfo = outData->GetDataSet(i, 0)->GetInformation();
+ int numtimes = dataInfo->Length(vtkDataObject::DATA_TIME_STEPS());
+ double *times = dataInfo->Get(vtkDataObject::DATA_TIME_STEPS());
+ for (int j = 0; j < numtimes; j++)
+ {
+ times[j] = times[j]*this->Scale + this->Shift;
+ }
+ }
return 1;
}
> -----Original Message-----
> From: Eric Monson [mailto:emonson at cs.duke.edu]
> Sent: Tuesday, February 05, 2008 10:39 AM
> To: Moreland, Kenneth
> Cc: ParaView List
> Subject: Re: [Paraview] Temporal shift with Python Programmable Filter
>
> Hey Ken,
>
> That sounds like a reasonable guess. If that's the problem, do you
> know if there's a way to force the update to the correct time? I also
> can't seem to find any way of getting at the data object's time value...
>
> It's just tough for me to figure out how to debug this one, unless
> someone can see something I've obviously left out.
>
> Thanks,
> -Eric
>
>
> On Feb 5, 2008, at 12:03 PM, Moreland, Kenneth wrote:
>
> > This is a total guess, but maybe it has something to do with the
> > time value placed in the data set. Data objects often hold the time
> > value on which they are supposed to be defined. Maybe when you copy
> > the shifted data, its time value is also shifted. When you then
> > step the time, the new time now matches the shifted time from the
> > last time update. Perhaps the pipeline sees the time match and does
> > not update the pipeline.
> >
> > -Ken
> >
> >> -----Original Message-----
> >> From: paraview-bounces+kmorel=sandia.gov at paraview.org [mailto:paraview-
> >> bounces+kmorel=sandia.gov at paraview.org] On Behalf Of Eric Monson
> >> Sent: Monday, February 04, 2008 10:11 AM
> >> To: ParaView List
> >> Subject: [Paraview] Temporal shift with Python Programmable Filter
> >>
> >> Hey All,
> >>
> >> This may seem like an odd question, but I think the answer may help
> >> clarify a larger problem I'm having...
> >>
> >> I'm trying to calculate the velocity vectors for diffusing particles,
> >> and the way I'm doing it right now is to feed two copies of my
> >> Unstructured Grid data into the Python Programmable Filter (PPF). The
> >> first copy has a time shift of 0, and the second one has Shift = 1.
> >> These are both Temporal Data Sets, and so I've been accessing the
> >> underlying Unstructured Grids by doing this:
> >>
> >> in0 = self.GetInputDataObject(0,0).GetDataSet(0,0)
> >> in1 = self.GetInputDataObject(0,1).GetDataSet(0,0)
> >>
> >> I force the PPF output to vtkUnstructuredGrid, and I have been making
> >> the output equivalent to one of the input points like so:
> >>
> >> out1 = self.GetOutput()
> >> out1.DeepCopy(in1)
> >>
> >> (In the complete calculation I later add a vtkFloatArray to "out1"
> >> containing the calculated velocity vectors.)
> >>
> >> The odd thing I see is that if the output is a copy of the Shift = 0
> >> point, I can increment time forward and backwards (arrow click on
> >> Time
> >> control) and everything looks fine. If the output is a copy of the
> >> Shift = 1 point, then on every other click it increments, and on the
> >> other clicks it doesn't move or change its scalar values. (If Shift =
> >> -1, then it increments properly backwards, but not forwards.)
> >>
> >> Is there some sort of update forcing I should be doing that I'm not?
> >> Is this an unreliable way of accessing the data from within the
> >> Temporal Data Sets?
> >>
> >> (I seemingly randomly get cases where my calculated velocity vector
> >> goes to zero and won't snap out of it unless I rebuild the whole
> >> pipeline from scratch, so I'm hoping I'm just doing something wrong
> >> here...)
> >>
> >> Thanks for the help,
> >> -Eric
> >>
> >> -----------------------------------------------------
> >> Eric E. Monson
> >> Duke Visualization Technology Group
> >>
> >>
> >> _______________________________________________
> >> ParaView mailing list
> >> ParaView at paraview.org
> >> http://www.paraview.org/mailman/listinfo/paraview
> >
>
More information about the ParaView
mailing list