+ static const double PHILLIPS_CONSTANT;
+ static const double GRAVITATIONAL_CONSTANT;
+
+ WaterSurfacePtr m_surface;
+ double m_windDirection[2];
+ double m_windSpeed;
+ std::random_device m_randomDevice;
+ std::mt19937 m_randomGenerator;
+ std::normal_distribution<> m_normalDistribution;
+ 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;
+ std::complex<double>& fourierAmplitudeAt(int n, int m);
+ void generateFourierAmplitudes();
+ double spatialFrequencyForIndex(int n) const;
+ double getRuntime() const;