VTK  9.7.1
vtkTemporalAlgorithm.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
82 #ifndef vtkTemporalAlgorithm_h
83 #define vtkTemporalAlgorithm_h
84 
85 #include "vtkAlgorithm.h"
86 #include "vtkCommonExecutionModelModule.h" // For export macro
87 #include "vtkNew.h" // For TimeSteps
88 
89 VTK_ABI_NAMESPACE_BEGIN
90 
91 class vtkDoubleArray;
92 class vtkInformation;
94 
95 template <class AlgorithmT>
96 class vtkTemporalAlgorithm : public AlgorithmT
97 {
98 public:
100 
105 
110  static const char* TimeStepsArrayName() { return "time_steps"; }
111 
113  "Template argument must inherit vtkAlgorithm");
114 
115 protected:
117 
118  int RequestInformation(vtkInformation* request, vtkInformationVector** inputVector,
119  vtkInformationVector* outputVector) override;
120  int RequestUpdateTime(vtkInformation* request, vtkInformationVector** inputVector,
121  vtkInformationVector* outputVector) override;
122  int RequestUpdateExtent(vtkInformation* request, vtkInformationVector** inputVector,
123  vtkInformationVector* outputVector) override;
124  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
125  vtkInformationVector* outputVector) override;
126 
135  virtual int Initialize(vtkInformation* request, vtkInformationVector** inputVector,
136  vtkInformationVector* outputVector) = 0;
137 
143  virtual int Execute(vtkInformation* request, vtkInformationVector** inputVector,
144  vtkInformationVector* outputVector) = 0;
145 
150  virtual int Finalize(vtkInformation* request, vtkInformationVector** inputVector,
151  vtkInformationVector* outputVector) = 0;
152 
156  int GetCurrentTimeIndex() const;
157 
161  double GetCurrentTimeStep() const;
162 
169 
171 
175  std::vector<double> InputTimeSteps;
179 
183  bool MustReset() const;
184 
188  bool MustContinue() const;
189 
195  bool NoPriorTimeStepAccess = false;
196 
202 
203 private:
205  void operator=(const vtkTemporalAlgorithm&) = delete;
206 };
207 
208 VTK_ABI_NAMESPACE_END
209 
210 #define vtkCreateWrappedTemporalAlgorithmInterface() \
211  static const char* TimeStepsArrayName(); \
212  \
213 protected: \
214  int GetCurrentTimeIndex() const; \
215  double GetCurrentTimeStep() const; \
216  bool IntegrateFullTimeSeries; \
217  \
218 public:
219 
220 #include "vtkTemporalAlgorithm.txx"
221 #endif
virtual int Initialize(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)=0
Method called at first temporal iteration.
int RequestUpdateExtent(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Store vtkAlgorithm input/output information.
int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
bool MustContinue() const
Returns true if there are time steps missing that must be requested upstream.
int RequestUpdateTime(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
int GetCurrentTimeIndex() const
Returns the current time index being executed (or finalized).
dynamic, self-adjusting array of double
bool MustReset() const
Returns true if the cache must be reinitialized before executing the current time step...
vtkTemplateTypeMacro(vtkTemporalAlgorithm, AlgorithmT)
Standard methods for instantiation, type information, and printing.
int TerminationTimeIndex
When the information key NO_PRIOR_TEMPORAL_ACCESS() is not set on the input port, this is used to kee...
double GetCurrentTimeStep() const
Returns the current time step being executed (or finalized).
int CurrentTimeIndex
When the information key NO_PRIOR_TEMPORAL_ACCESS() is not set on the input port, this is used to kee...
bool IntegrateFullTimeSeries
To be set in the constructor.
int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
virtual int Finalize(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)=0
Method that converts the temporal cache into the outputs.
virtual int Execute(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)=0
Method called at each time step.
std::vector< double > InputTimeSteps
When the information key NO_PRIOR_TEMPORAL_ACCESS() is not set on the input port, this is used to kee...
static const char * TimeStepsArrayName()
When vtkStreamingDemandDrivenPipeline::NO_PRIOR_TEMPORAL_ACCESS() is set, an array with this name is ...
Base class for temporal algorithms.
vtkNew< vtkDoubleArray > ProcessedTimeSteps
Array only used when the information key NO_PRIOR_TEMPORAL_ACCESS() is set.
bool NoPriorTimeStepAccess
When true, the algorithm calls Finalize at each iteration.
Store zero or more vtkInformation instances.