]> git.treefish.org Git - seamulator.git/blobdiff - sea.h
Fixed them all
[seamulator.git] / sea.h
diff --git a/sea.h b/sea.h
index 6e24ac3bd3a5f859198ab6329015601c7bdb3d73..798b92d138eb68f7a9719f6461ad369af8616cf7 100644 (file)
--- a/sea.h
+++ b/sea.h
@@ -1,17 +1,22 @@
 #pragma once
 
+#include <chrono>
 #include <complex>
 #include <random>
 
+#include <fftw3.h>
+
 #include "seafwd.h"
 
-#include "complexpair.h"
 #include "watersurfacefwd.h"
 
 class Sea
 {
  public:
   Sea(WaterSurfacePtr surface);
+  ~Sea();
+  Sea(const Sea&) = delete;
+  Sea& operator=(const Sea&) = delete;
   void update();
 
  private:
@@ -24,11 +29,14 @@ class Sea
   std::random_device m_randomDevice;
   std::mt19937 m_randomGenerator;
   std::normal_distribution<> m_normalDistribution;
-  std::vector<ComplexPair> m_fourierAmplitudes;
+  std::vector<std::complex<double>> m_fourierAmplitudes;
+  fftw_complex *m_fftwIn, *m_fftwOut;
+  fftw_plan m_fftwPlan;
+  std::chrono::time_point<std::chrono::system_clock> m_startTime;
 
   double phillipsSpectrum(double k_x, double k_y) const;
-  ComplexPair generateFourierAmplitude(double k_x, double k_y);
-  ComplexPair& fourierAmplitudeAt(int n, int m);
+  std::complex<double>& fourierAmplitudeAt(int n, int m);
   void generateFourierAmplitudes();
   double spatialFrequencyForIndex(int n) const;
+  double getRuntime() const;
 };