@@ -237,6 +237,7 @@ IrregularWaves::IrregularWaves(const IrregularWaveParams& params)
237237 wave_height_(params.wave_height_),
238238 wave_period_(params.wave_period_),
239239 peak_enhancement_factor_(params.peak_enhancement_factor_),
240+ is_normalized_(params.is_normalized_),
240241 simulation_dt_(params.simulation_dt_),
241242 simulation_duration_(params.simulation_duration_),
242243 ramp_duration_(params.ramp_duration_),
@@ -413,7 +414,7 @@ void IrregularWaves::CreateSpectrum() {
413414
414415 // Calculate the Pierson-Moskowitz Spectrum
415416 spectral_densities_ =
416- JONSWAPSpectrumHz (spectrum_frequencies_, wave_height_, wave_period_, peak_enhancement_factor_);
417+ JONSWAPSpectrumHz (spectrum_frequencies_, wave_height_, wave_period_, peak_enhancement_factor_, is_normalized_ );
417418
418419 // Open a file stream for writing
419420 std::ofstream outputFile (" spectral_densities.txt" );
@@ -449,9 +450,12 @@ Eigen::VectorXd PiersonMoskowitzSpectrumHz(Eigen::VectorXd& f, double Hs, double
449450 return spectral_densities;
450451}
451452
452- Eigen::VectorXd JONSWAPSpectrumHz (Eigen::VectorXd& f, double Hs, double Tp, double gamma) {
453+ Eigen::VectorXd JONSWAPSpectrumHz (Eigen::VectorXd& f, double Hs, double Tp, double gamma, bool is_normalized ) {
453454 auto spectral_densities = PiersonMoskowitzSpectrumHz (f, Hs, Tp);
454455
456+ // only used if is_normalized is true
457+ double normalization_factor = (1 - 0.287 * log (gamma));
458+
455459 // Scale spectral densities from PM to JONSWAP with gamma factor
456460 for (size_t i = 0 ; i < spectral_densities.size (); ++i) {
457461 double sigma;
@@ -461,8 +465,10 @@ Eigen::VectorXd JONSWAPSpectrumHz(Eigen::VectorXd& f, double Hs, double Tp, doub
461465 sigma = 0.09 ;
462466 }
463467 spectral_densities[i] *= pow (gamma, exp (-(1.0 / (2.0 * pow (sigma, 2 ))) * pow (f[i] * Tp - 1.0 , 2 )));
468+ if (is_normalized) {
469+ spectral_densities[i] *= normalization_factor;
470+ }
464471 }
465-
466472 return spectral_densities;
467473}
468474
0 commit comments