11 #include "complexpair.h"
12 #include "watersurfacefwd.h"
17 Sea(WaterSurfacePtr surface);
19 Sea(const Sea&) = delete;
20 Sea& operator=(const Sea&) = delete;
24 static const double PHILLIPS_CONSTANT;
25 static const double GRAVITATIONAL_CONSTANT;
27 WaterSurfacePtr m_surface;
28 double m_windDirection[2];
30 std::random_device m_randomDevice;
31 std::mt19937 m_randomGenerator;
32 std::normal_distribution<> m_normalDistribution;
33 std::vector<ComplexPair> m_fourierAmplitudes;
34 fftw_complex *m_fftwIn, *m_fftwOut;
36 std::chrono::time_point<std::chrono::system_clock> m_startTime;
38 double phillipsSpectrum(double k_x, double k_y) const;
39 ComplexPair generateFourierAmplitude(double k_x, double k_y);
40 ComplexPair& fourierAmplitudeAt(int n, int m);
41 void generateFourierAmplitudes();
42 double spatialFrequencyForIndex(int n) const;
43 double getRuntime() const;