[Paraview] UPDATE_TIME_INDEX not part of Paraview 2.6

Mike Jackson mike.jackson at imts.us
Wed Feb 7 12:29:58 EST 2007


Yep,
    In RequestInformation, I am setting the values; Is that the  
proper place to set them? If I do it in RequestData then it is  
probably too late. I have the range set from 0 to 1 in the  
constructor of my class.


That post was by me.. I have never been able to fix the problem.

-- 
Mike Jackson   Senior Research Engineer
Innovative Management & Technology Services


On Feb 7, 2007, at 12:13 PM, John Biddiscombe wrote:

> Mike
>
> make sure you also set
>
>    this->TimeStepRange[0] = 0;
>    this->TimeStepRange[1] = t>0 ? this->TimeStepValues.size()-1 : 0;
>
> as the paraview gui will query GetTimeStepRange to find how many  
> steps are there if this is missing, then the number of steps will  
> be wrong.
> Wasn't there a similar post about only seeing 100 steps recently?
> JB
>
>
>> Thanks for the code. I downloaded your OpenDX reader to get an  
>> idea of the context. I have updated my code and things seem to  
>> work now. The only problem that I am having is the "Time Step"  
>> slider is not correctly updated when I open my file, it always  
>> defaults to 0->100 timesteps, regardless of what is in the file.
>>
>>   In my client side xml I have the following:
>>
>>     <Module name="PrdsDislocationReader"
>>           root_name="PrdsDislocationReader"
>>           output="vtkUnstructuredGrid"
>>           module_type="Reader"
>>           extensions=".dat .disl"
>>           file_description="Paradis Dislocation Data">
>>
>>     <Source class="vtkPrdsDislocationReader"/>
>>
>>     <Scale property="TimeStep"
>>            label="Time step"
>>            trace_name="TimeStep"
>>            keeps_timesteps="1"
>>            help="Set the current timestep."/>
>>     </Module>
>>
>> and in my server manager file I have:
>>
>>     <SourceProxy name="PrdsDislocationReader"  
>> class="vtkPrdsDislocationReader">
>>      <StringVectorProperty
>>         name="FileName"
>>         command="SetFileName"
>>         number_of_elements="1">
>>         <StringListDomain name="files"/>
>>      </StringVectorProperty>
>>
>>      <IntVectorProperty
>>         name="TimeStep"
>>         command="SetTimeStep"
>>         number_of_elements="1"
>>         animateable="1"
>>         default_values="0"
>>         information_property="TimestepValues">
>>
>>        <IntRangeDomain name="range">
>>           <RequiredProperties>
>>              <Property name="TimeStepRangeInfo" function="Range"/>
>>           </RequiredProperties>
>>        </IntRangeDomain>
>>      </IntVectorProperty>
>>
>>      <IntVectorProperty
>>         name="TimeStepRangeInfo"
>>         command="GetTimeStepRange"
>>         information_only="1">
>>         <SimpleIntInformationHelper/>
>>      </IntVectorProperty>
>>
>>
>>
>>      <DoubleVectorProperty
>>         name="TimestepValues"
>>         information_only="1">
>>         <TimeStepsInformationHelper/>
>>      </DoubleVectorProperty>
>>    <!-- End ParadisReader -->
>>    </SourceProxy>
>>
>> I have tried to mimic the ExodusReader code where I can but  
>> nothing seems to work. Does anyone have any ideas what I need to  
>> set/over-ride or implement? Maybe something from the superclass  
>> (vtkPolyDataAlgorithm) maybe?
>>
>> Thanks for any help
>> --Mike Jackson   Senior Research Engineer
>> Innovative Management & Technology Services
>>
>>
>> On Feb 7, 2007, at 3:14 AM, John Biddiscombe wrote:
>>
>>> Mike, The time handling has changed a bit recently. TIME_INDEX is  
>>> no longer supported (partly because you may have 100 time steps  
>>> of data with step number 34 missing, if step 35 is requested, do  
>>> they want the 35th of the data you actually have, or the 35th of  
>>> the data you would have if the steps were all present). Instead,  
>>> use a time value which is real and represents the actual time. 
>>> (this also allows source which can produce a continuum of time  
>>> values to be accessed)
>>>
>>> To get things right, try this
>>>
>>> //------------------------------------------------------------------ 
>>> ----------
>>>
>>> In RequestInformation, make sure you export the steps you can  
>>> produce (often just 1.0, 2.0, 3.0.....etc)
>>>
>>>  outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(),
>>>               &this->TimeStepValues[0], this->TimeStepValues.size 
>>> ());
>>>
>>>    where you may have std::vector<double> TimeStepValues - with  
>>> the values pushed back when the file is opened
>>>
>>> //------------------------------------------------------------------ 
>>> ----------
>>>
>>> In RequestData, check to see which time step was requested, this  
>>> usually will be set in the GUI via SetTimeStep, but might be  
>>> passed into the filter from downstream, if another filter is  
>>> requesting data from a particular step
>>>
>>>  this->ActualTimeStep = this->TimeStep; // set by the gui, but we  
>>> will override this if the pipeline requested another
>>>
>>>  if (outInfo->Has 
>>> (vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS()))
>>>    {
>>>    double requestedTimeValue = outInfo->Get 
>>> (vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS())[0];
>>>    // this is overkill, I use it to ensure that if a time value  
>>> which is slightly out is requested
>>>    // then the correct one is fetched
>>>    this->ActualTimeStep = vtkstd::find_if(
>>>      this->TimeStepValues.begin(),
>>>      this->TimeStepValues.end(),
>>>      vtkstd::bind2nd( WithinTolerance( ), requestedTimeValue ))
>>>      - this->TimeStepValues.begin();
>>>    this->ActualTimeStep = this->ActualTimeStep + this- 
>>> >TimeStepRange[0];
>>>    doOutput->GetInformation()->Set(vtkDataObject::DATA_TIME_STEPS 
>>> (), &requestedTimeValue, 1);
>>>    CSCSOutputMacro(<<"Got a timestep request from downstream t= "  
>>> << requestedTimeValue << " Step : " << this->ActualTimeStep);
>>>    }
>>>  else
>>>    {
>>>    double timevalue[1];
>>>    timevalue[0] = this->TimeStepValues[this->ActualTimeStep-this- 
>>> >TimeStepRange[0]];
>>>    CSCSOutputMacro(<<"Using manually set t= " << timevalue[0] <<  
>>> " Step : " << this->ActualTimeStep);
>>>    doOutput->GetInformation()->Set(vtkDataObject::DATA_TIME_STEPS 
>>> (), &timevalue[0], 1);
>>>    }
>>>
>>> //------------------------------------------------------------------ 
>>> ----------
>>> note that
>>>
>>> class WithinTolerance: public std::binary_function<double,  
>>> double, bool>
>>> {
>>> public:
>>>    result_type operator()(first_argument_type a,  
>>> second_argument_type b) const
>>>    {
>>>      bool result = (fabs(a-b)<=(a*1E-6));
>>>      return (result_type)result;
>>>    }
>>> };
>>>
>>> if you want to see a filter that uses the above code and works  
>>> well, look here
>>> https://svn.cscs.ch/vtkContrib/trunk/vtkCSCS/vtkOpenDX/
>>> for my openDX reader which is the most simple one I've made that  
>>> uses the above code.
>>>
>>> JB
>>>> I was trying to recompile my ParaView modules and I get the error:
>>>>
>>>> /Users/mjackson/Task_4/Workspace/PVDislocation/ 
>>>> vtkPrdsDislocationReader.cpp:80: error: 'UPDATE_TIME_INDEX' is  
>>>> not a member of 'vtkStreamingDemandDrivenPipeline'
>>>>
>>>> The offending line is:
>>>>   outInfo->Set 
>>>> (vtkStreamingDemandDrivenPipeline::UPDATE_TIME_INDEX(), this- 
>>>> >GetTimeStep() );
>>>>
>>>> This used to work in ParaView 2.4.4 and I vaguely remember that  
>>>> time support was being changed in PV 2.6. Could someone explain  
>>>> what I should be using now?
>>>>
>>>> I have written a custom ParaView reader module for our file  
>>>> format. I need Time Support and I was successfully using this  
>>>> code in PV 2.4.
>>>>
>>>> Thanks
>>>> --Mike Jackson   Senior Research Engineer
>>>> Innovative Management & Technology Services
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> ParaView mailing list
>>>> ParaView at paraview.org
>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>
>>>
>>> --John Biddiscombe,                            email:biddisco @  
>>> cscs.ch
>>> http://www.cscs.ch/about/BJohn.php
>>> CSCS, Swiss National Supercomputing Centre  | Tel:  +41 (91)  
>>> 610.82.07
>>> Via Cantonale, 6928 Manno, Switzerland      | Fax:  +41 (91)  
>>> 610.82.82
>>>
>>>
>>
>>
>> _______________________________________________
>> ParaView mailing list
>> ParaView at paraview.org
>> http://www.paraview.org/mailman/listinfo/paraview
>
>
> -- 
> John Biddiscombe,                            email:biddisco @ cscs.ch
> http://www.cscs.ch/about/BJohn.php
> CSCS, Swiss National Supercomputing Centre  | Tel:  +41 (91) 610.82.07
> Via Cantonale, 6928 Manno, Switzerland      | Fax:  +41 (91) 610.82.82
>
>




More information about the ParaView mailing list