Inherits AlgorithmT.
|
| 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.
|
|
virtual int | Execute (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)=0 |
| Method called at each time step.
|
|
virtual int | Finalize (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)=0 |
| Method that converts the temporal cache into the outputs.
|
|
int | GetCurrentTimeIndex () const |
| Returns the current time index being executed (or finalized).
|
|
double | GetCurrentTimeStep () const |
| Returns the current time step being executed (or finalized).
|
|
bool | MustReset () const |
| Returns true if the cache must be reinitialized before executing the current time step.
|
|
bool | MustContinue () const |
| Returns true if there are time steps missing that must be requested upstream.
|
|
|
bool | IntegrateFullTimeSeries = false |
| To be set in the constructon.
|
|
bool | RunBackward = false |
| When turned on, time steps will be requested backward upstream.
|
|
bool | NoPriorTimeStepAccess = false |
| When true, the algorithm calls Finalize at each iteration.
|
|
vtkNew< vtkDoubleArray > | ProcessedTimeSteps |
| Array only used when the information key NO_PRIOR_TEMPORAL_ACCESS() is set.
|
|
|
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.
|
|
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.
|
|
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.
|
|
template<class AlgorithmT>
class vtkTemporalAlgorithm< AlgorithmT >
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
:
- When turned ON, integration is performed over the entire input time series for any requested, time step. effectively removing the temporalness of the outputs.
- When turned OFF, the output remains temporal. It is the result of integrating all time steps up to the time step requested downstream by
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 specal mode for such circumstences. 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 requesing 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()
.
- Warning
- Python wrapping of subclasses require special handling. Here is an example ensuring wrapping works as expected, implementing a temporal algorithm as a
vtkPassInputTypeAlgorithm
:
#ifndef __VTK_WRAP__
#define vtkPassInputTypeAlgorithm vtkTemporalAlgorithm<vtkPassInputTypeAlgorithm>
#endif
{
public:
#ifndef __VTK_WRAP__
#undef vtkPassInputTypeAlgorithm
#endif
#if defined(__VTK_WRAP__) || defined(__WRAP_GCCXML)
#endif
};
#define vtkCreateWrappedTemporalAlgorithmInterface()
Definition at line 93 of file vtkTemporalAlgorithm.h.