[Paraview] UPDATE_TIME_INDEX not part of Paraview 2.6

Mike Jackson mike.jackson at imts.us
Wed Feb 7 13:17:48 EST 2007


The odd part is if I click the "Play" button to animate through the  
timesteps then the slider gets updated to the proper number of  
timesteps.

So for example I have a data file with 77 timesteps. If I open the  
file in paraview, the timestep slider will be set to 0 with a max of  
100 enabling me to select timesteps that are beyond what is in the  
file. Now if I click the "play" button, then the max value of the  
Time Step slider is set to 77. Odd.

Not sure this is a bug but more of "I am just missing something" as  
the timestep thing seems to work for the Exodus reader..


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


On Feb 7, 2007, at 1:03 PM, Sean Ziegeler wrote:

> Are the time steps set to 100 at some point before they get set to  
> the correct number?  I've seen problems in the vtkCSCSNetCDF reader  
> for PV 2.4.4 (haven't tried it with other readers or versions yet)  
> such that when the timesteps are set once, they can't be changed  
> later.
>
> For example, in vtkCSCSNetCDF, if it originally detects a single  
> file with one time step and you add the wildcards to locate more  
> files with additional time steps, I can't make it change it from 1  
> time step. However, if I modify the reader to notice the other  
> files initially and set the correct number of time steps the first  
> time, that works fine.
>
> Since the above work-around has gotten me by, I haven't mentioned  
> it until now.  Also, I thought it may not be an issue in 2.6.  Am I  
> (we) doing something wrong, or is this a bug?
>
> -Sean
>
> Mike Jackson wrote:
>> 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
>>>
>>>
>> _______________________________________________
>> ParaView mailing list
>> ParaView at paraview.org
>> http://www.paraview.org/mailman/listinfo/paraview




More information about the ParaView mailing list