18 #ifndef __itkGPUFiniteDifferenceImageFilter_h
19 #define __itkGPUFiniteDifferenceImageFilter_h
35 template<
class TInputImage,
class TOutputImage,
class TParentImageFilter =
36 FiniteDifferenceImageFilter< TInputImage, TOutputImage > >
57 itkStaticConstMacro(ImageDimension,
unsigned int, OutputImageType::ImageDimension);
74 typedef typename FiniteDifferenceFunctionType::TimeStepType
TimeStepType;
75 typedef typename FiniteDifferenceFunctionType::RadiusType
RadiusType;
90 typedef enum { UNINITIALIZED = 0, INITIALIZED = 1 } FilterStateType;
94 itkSetMacro(UseImageSpacing,
bool);
95 itkBooleanMacro(UseImageSpacing);
96 itkGetConstReferenceMacro(UseImageSpacing,
bool);
101 itkSetMacro(MaximumRMSError,
double);
102 itkGetConstReferenceMacro(MaximumRMSError,
double);
107 itkSetMacro(RMSChange,
double);
108 itkGetConstReferenceMacro(RMSChange,
double);
112 void SetStateToInitialized()
114 this->SetState(INITIALIZED);
118 void SetStateToUninitialized()
120 this->SetState(UNINITIALIZED);
124 #if !defined( CABLE_CONFIGURATION )
125 itkSetMacro(State, FilterStateType);
126 itkGetConstReferenceMacro(State, FilterStateType);
132 itkSetMacro(ManualReinitialization,
bool);
133 itkGetConstReferenceMacro(ManualReinitialization,
bool);
134 itkBooleanMacro(ManualReinitialization);
137 #ifdef ITK_USE_STRICT_CONCEPT_CHECKING
146 itkGetConstReferenceMacro(InitTime,
TimeProbe);
147 itkGetConstReferenceMacro(ComputeUpdateTime,
TimeProbe);
148 itkGetConstReferenceMacro(ApplyUpdateTime,
TimeProbe);
149 itkGetConstReferenceMacro(SmoothFieldTime,
TimeProbe);
156 void PrintSelf(std::ostream & os,
Indent indent)
const;
159 virtual void AllocateUpdateBuffer() = 0;
164 virtual void GPUApplyUpdate(
const TimeStepType& dt) = 0;
171 virtual TimeStepType GPUCalculateChange() = 0;
176 virtual void CopyInputToOutput() = 0;
181 virtual void GPUGenerateData();
194 virtual void GenerateInputRequestedRegion();
227 virtual void InitializeIteration()
229 m_DifferenceFunction->InitializeIteration();
244 virtual TimeStepType ResolveTimeStep(
const std::vector<TimeStepType >& timeStepList,
245 const std::vector< bool >& valid)
const;
276 void operator=(
const Self &);
281 void InitializeFunctionCoefficients();
295 #ifndef ITK_MANUAL_INSTANTIATION
296 #include "itkGPUFiniteDifferenceImageFilter.hxx"