VTK-m  2.0
Oscillator.h
Go to the documentation of this file.
1 //============================================================================
2 // Copyright (c) Kitware, Inc.
3 // All rights reserved.
4 // See LICENSE.txt for details.
5 //
6 // This software is distributed WITHOUT ANY WARRANTY; without even
7 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8 // PURPOSE. See the above copyright notice for more information.
9 //============================================================================
10 #ifndef vtk_m_source_OscillatorSource_h
11 #define vtk_m_source_OscillatorSource_h
12 
13 #include <vtkm/source/Source.h>
14 
15 namespace vtkm
16 {
17 namespace source
18 {
19 
28 class VTKM_SOURCE_EXPORT Oscillator final : public vtkm::source::Source
29 {
30 public:
32 
35  2.0,
36  "Use SetCellDimensions or SetPointDimensions.") explicit Oscillator(vtkm::Id3 dims);
37 
38  // We can not declare default destructor here since compiler does not know how
39  // to create one for the Worklet at this point yet. However, the implementation
40  // in Oscillator.cxx does have ~Oscillator() = default;
41  VTKM_CONT ~Oscillator() override;
42 
43  VTKM_CONT void SetPointDimensions(vtkm::Id3 pointDimensions);
44  VTKM_CONT vtkm::Id3 GetPointDimensions() const;
45  VTKM_CONT void SetCellDimensions(vtkm::Id3 pointDimensions);
46  VTKM_CONT vtkm::Id3 GetCellDimensions() const;
47 
48  VTKM_CONT
49  void SetTime(vtkm::FloatDefault time);
50 
51  VTKM_CONT
52  void AddPeriodic(vtkm::FloatDefault x,
55  vtkm::FloatDefault radius,
56  vtkm::FloatDefault omega,
57  vtkm::FloatDefault zeta);
58 
59  VTKM_CONT
60  void AddDamped(vtkm::FloatDefault x,
63  vtkm::FloatDefault radius,
64  vtkm::FloatDefault omega,
65  vtkm::FloatDefault zeta);
66 
67  VTKM_CONT
68  void AddDecaying(vtkm::FloatDefault x,
71  vtkm::FloatDefault radius,
72  vtkm::FloatDefault omega,
73  vtkm::FloatDefault zeta);
74 
75 private:
76  VTKM_CONT vtkm::cont::DataSet DoExecute() const override;
77 
78  struct InternalStruct;
79  std::unique_ptr<InternalStruct> Internals;
80 };
81 }
82 }
83 
84 #endif // vtk_m_source_OscillatorSource_h
vtkm::source::Oscillator
An analytical, time-varying uniform dataset with a point based array.
Definition: Oscillator.h:28
vtkm
Groups connected points that have the same field value.
Definition: Atomic.h:19
vtkm::source::Oscillator::Internals
std::unique_ptr< InternalStruct > Internals
Definition: Oscillator.h:78
vtkm::source::Source
Definition: Source.h:23
vtkm::cont::DataSet
Definition: DataSet.h:34
Source.h
VTKM_CONT
#define VTKM_CONT
Definition: ExportMacros.h:57
vtkm::Vec< vtkm::Id, 3 >
vtkm::FloatDefault
vtkm::Float32 FloatDefault
The floating point type to use when no other precision is specified.
Definition: Types.h:198
VTKM_DEPRECATED
#define VTKM_DEPRECATED(...)
Definition: Deprecated.h:145