[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