[Paraview] UPDATE_TIME_INDEX not part of Paraview 2.6

John Biddiscombe biddisco at cscs.ch
Thu Feb 8 04:16:58 EST 2007


You're missing one thing I think
  <Module name="MySuperDooperReader"
          class="vtkPVAdvancedReaderModule"
adding the class="vtkPVAdvancedReaderModule" tells paraview to display 
the information before calling read data - this is usually used to allow 
you to select scalars before loading the first time step - in our case 
it forces an extra round of ExecuteInformation which should reset your 
time scroller (fingers crossed)

JB - apologies if you already did this, I just skimmed through your XML

> 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
>
>
> _______________________________________________
> 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