[Paraview] Temporal shift with Python Programmable Filter
Eric Monson
emonson at cs.duke.edu
Tue Feb 5 13:59:50 EST 2008
I'll try the patch later this afternoon when I have more time and see
if that helps.
With your tip I was able to probe the DATA_TIME_STEPS for all the data
sets, and the result seems a little strange to me -- see if this helps:
e.g.
Shift 0 TemporalDataSet: t = 4.0
Shift 0 UnstructuredGrid: t = 4.0
Shift 1 TemporalDataSet: t = 4.0 <---
Shift 1 UnstructuredGrid: t = 3.0
Output UnstructuredGrid (copy of shift 1 UG): t = 3.0
Should that Shift 1 TemporalDataSet really have t = 4.0 -- shouldn't
it be t = 3.0 in that case?
Thanks,
-Eric
On Feb 5, 2008, at 1:09 PM, Moreland, Kenneth wrote:
> 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