[Paraview] UPDATE_TIME_INDEX not part of Paraview 2.6
Mike Jackson
mike.jackson at imts.us
Wed Feb 7 12:04:09 EST 2007
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
>
>
More information about the ParaView
mailing list