|
VTK
9.7.1
|
Base class for temporal algorithms. More...
#include <vtkTemporalAlgorithm.h>
Inherits AlgorithmT.
Public Member Functions | |
| vtkTemplateTypeMacro (vtkTemporalAlgorithm, AlgorithmT) | |
| Standard methods for instantiation, type information, and printing. More... | |
Static Public Member Functions | |
| static const char * | TimeStepsArrayName () |
When vtkStreamingDemandDrivenPipeline::NO_PRIOR_TEMPORAL_ACCESS() is set, an array with this name is populated in the output's field data listing all the time steps executed so far. More... | |
Protected Member Functions | |
| vtkTemporalAlgorithm () | |
| int | RequestInformation (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override |
| int | RequestUpdateTime (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override |
| int | RequestUpdateExtent (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override |
| int | RequestData (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override |
| virtual int | Initialize (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)=0 |
| Method called at first temporal iteration. More... | |
| virtual int | Execute (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)=0 |
| Method called at each time step. More... | |
| virtual int | Finalize (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)=0 |
| Method that converts the temporal cache into the outputs. More... | |
| int | GetCurrentTimeIndex () const |
| Returns the current time index being executed (or finalized). More... | |
| double | GetCurrentTimeStep () const |
| Returns the current time step being executed (or finalized). More... | |
| bool | MustReset () const |
| Returns true if the cache must be reinitialized before executing the current time step. More... | |
| bool | MustContinue () const |
| Returns true if there are time steps missing that must be requested upstream. More... | |
Protected Attributes | |
| bool | IntegrateFullTimeSeries = false |
| To be set in the constructor. More... | |
| bool | NoPriorTimeStepAccess = false |
| When true, the algorithm calls Finalize at each iteration. More... | |
| vtkNew< vtkDoubleArray > | ProcessedTimeSteps |
Array only used when the information key NO_PRIOR_TEMPORAL_ACCESS() is set. More... | |
| std::vector< double > | InputTimeSteps |
When the information key NO_PRIOR_TEMPORAL_ACCESS() is not set on the input port, this is used to keep track of which iteration we are currently executing, and when to terminate. More... | |
| int | TerminationTimeIndex = 0 |
When the information key NO_PRIOR_TEMPORAL_ACCESS() is not set on the input port, this is used to keep track of which iteration we are currently executing, and when to terminate. More... | |
| int | CurrentTimeIndex = 0 |
When the information key NO_PRIOR_TEMPORAL_ACCESS() is not set on the input port, this is used to keep track of which iteration we are currently executing, and when to terminate. More... | |
Base class for temporal algorithms.
vtkTemporalAlgorithm is a class to template over a subclass of vtkAlgorithm. It effectively implements RequestData, which, depending on the request, will call Initialize, `Execute' and / or Finalize. Algorithms subclassing vtkTemporalAlgorithm should provide a temporal cache that on which to accumulate data in order to provide a complete output upon calling Finalize. This algorithm class assumes temporal integration over input port 0, connection 0. Time steps are gathered from its input information, and UPDATE_TIME_STEP() requests are propagated to this input connection only. Filters taking multiple time series as inputs should probably not inherit from this class.
This class of algorithm handles 2 types of temporal integration, controlled by the member IntegrateFullTimeSeries:
UPDATE_TIME_STEP().In any case, this algorithm will request all necessary time steps upstream in order to generate the output, in chronological order, setting the information key CONTINUE_EXECUTING(). The executive of this filter will iterate over all time requests until the output is generating. Initialize will be called if the requested time step is more ancient than the last generated time step. Then, at each iteration, Execute is called. Finally, when the last needed iteration has completed, Finalize is called.
There are cases where the user does not have access to the entire time series at once. This compromises filters that have IntegrateFullTimeSeries ON, and which rely on knowledge provided by the information key TIME_STEPS(). The implementation of this algorithm provides a special mode for such circumstances. All the user needs to do is set the information key NO_PRIOR_TEMPORAL_ACCESS() in the sources. If the information key NO_PRIOR_TEMPORAL_ACCESS() is set on the first input on port 0, then this class will assume that the user is requesting time steps in chronological order using UpdateTimeStep(double) and will provide a complete output at each temporal iteration. Effectively, at each iteration, Execute and Finalize are called. Initialize is called at the first iteration, or when NO_PRIOR_TEMPORAL_ACCESS() is set to vtkStreamingDemandDrivenPipeline::NO_PRIOR_TEMPORAL_ACCESS_RESET. Processed time steps are gathered in an array added to the field data of the outputs. The name of this array is time_steps and can be retrieved through the method TimeStepsArrayName().
vtkPassInputTypeAlgorithm:``` #include <vtkPassInputTypeAlgorithm.h> #include <vtkTemporalAlgorithm.h>
#ifndef VTK_WRAP #define vtkPassInputTypeAlgorithm vtkTemporalAlgorithm<vtkPassInputTypeAlgorithm> #endif
// We make the wrapper think that we inherit from vtkPassInputTypeAlgorithm class MyTemporalFilter : vtkPassInputTypeAlgorithm { public: vtkTypeMacro(MyTemporalFilter, vtkPassInputTypeAlgorithm);
// We do not need to trick the wrapper with the superclass name anymore #ifndef VTK_WRAP #undef vtkPassInputTypeAlgorithm #endif
// We didn't wrap the non-overridden API of vtkTemporalAlgorithm. We define // the missing API using this macro if defined(VTK_WRAP) || defined(__WRAP_GCCXML) vtkCreateWrappedTemporalAlgorithmInterface(); #endif
// ... };
```
Definition at line 96 of file vtkTemporalAlgorithm.h.
|
protected |
| vtkTemporalAlgorithm< AlgorithmT >::vtkTemplateTypeMacro | ( | vtkTemporalAlgorithm< AlgorithmT > | , |
| AlgorithmT | |||
| ) |
Standard methods for instantiation, type information, and printing.
|
inlinestatic |
When vtkStreamingDemandDrivenPipeline::NO_PRIOR_TEMPORAL_ACCESS() is set, an array with this name is populated in the output's field data listing all the time steps executed so far.
Definition at line 110 of file vtkTemporalAlgorithm.h.
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
protectedpure virtual |
Method called at first temporal iteration.
This method wipes any temporal cache that could be maintained and sets up all the internals needed to run Execute properly. The parameters are passed as is by RequestData.
GetCurrentTimeIndex and GetCurrentTimeStep should not be called. One can assume the current index is 0.
|
protectedpure virtual |
Method called at each time step.
The temporal cache is updated to represent the data available in the input. The parameters are passed as is by RequestData.
|
protectedpure virtual |
Method that converts the temporal cache into the outputs.
The parameters are passed as is by RequestData.
|
protected |
Returns the current time index being executed (or finalized).
First iteration is indexed at 0.
|
protected |
Returns the current time step being executed (or finalized).
|
protected |
Returns true if the cache must be reinitialized before executing the current time step.
|
protected |
Returns true if there are time steps missing that must be requested upstream.
|
protected |
To be set in the constructor.
If true, all time steps are requested upstream for any requested time step dowstream. Downstream effectively lose temporality. Otherwise, the algorithm integrates inputs up to the requested time step.
Definition at line 168 of file vtkTemporalAlgorithm.h.
|
protected |
When the information key NO_PRIOR_TEMPORAL_ACCESS() is not set on the input port, this is used to keep track of which iteration we are currently executing, and when to terminate.
Definition at line 175 of file vtkTemporalAlgorithm.h.
|
protected |
When the information key NO_PRIOR_TEMPORAL_ACCESS() is not set on the input port, this is used to keep track of which iteration we are currently executing, and when to terminate.
Definition at line 176 of file vtkTemporalAlgorithm.h.
|
protected |
When the information key NO_PRIOR_TEMPORAL_ACCESS() is not set on the input port, this is used to keep track of which iteration we are currently executing, and when to terminate.
Definition at line 177 of file vtkTemporalAlgorithm.h.
|
protected |
When true, the algorithm calls Finalize at each iteration.
It is set to true if the first input on port 0 has set the information key NO_PRIOR_TEMPORAL_ACCESS(). It is typically set for in situ visualization.
Definition at line 195 of file vtkTemporalAlgorithm.h.
|
protected |
Array only used when the information key NO_PRIOR_TEMPORAL_ACCESS() is set.
It is put in the output's field data.
Definition at line 201 of file vtkTemporalAlgorithm.h.
1.8.10