4#include "marenv/marenv.h"
5#include "marenv/calc/LcgRandom.h"
7#include <marenv/wave/WaveComponents.h>
93 [[nodiscard]]
double IntegrateSpectrum(
double omegaLow,
double omegaHigh,
double step)
const;
103 [[nodiscard]]
double BinFrequency(
double omegaLow,
double omegaHigh,
double step)
const;
141 [[nodiscard]]
double JONSWAP(
double omega)
const;
148 [[nodiscard]]
double Issc(
double omega)
const;
152 struct WaveComponentSpec
158 bool operator<(
const WaveComponentSpec& a)
160 return zetaA < a.zetaA;
163 std::shared_ptr<WaveComponents> m_waveComponents;
165 uint32_t m_randomSeed;
166 std::vector<WaveComponentSpec> m_waveComponentSpecs;
Generation of very simple pseudo-random numbers.
Definition LcgRandom.h:60
Represents a wave field.
Definition WaveEnergySpectrum.h:16
void CalcWaveFrequencies()
SpectrumParameters m_param
Wave spectrum parameters.
Definition WaveEnergySpectrum.h:149
double(WaveEnergySpectrum::*)(const double) NormalizedProbabilityDistribution
Defines the type of a normalized probability distribution function.
Definition WaveEnergySpectrum.h:77
DirectionSpectrum
Shape function for the direction spectrum.
Definition WaveEnergySpectrum.h:21
@ CosineSquared
The function is of the form cos(theta)^n.
std::vector< double > CalcBinEdges() const
double JONSWAP(double omega) const
FrequencyBinning
Methods for dividing a spectrum in discrete frequencies.
Definition WaveEnergySpectrum.h:36
@ EqualSqrtEnergy
Each wave component has the same .
@ EqualEnergy
Each wave component has the same energy.
double BinFrequency(double omegaLow, double omegaHigh, double step) const
void CalcWaveDirections(calc::LcgRandom &random)
WaveEnergySpectrum(const SpectrumParameters &spectrumParameters, int numWaves, uint32_t randomSeed)
void CalcCalmSeaFrequencies()
Calculates the frequencies of a calm sea (Hs = 0): those of Hs = 1, with zero energy and amplitude.
double Issc(double omega) const
std::shared_ptr< WaveComponents > GetWaveComponents()
double SpectralEnergy(double omega) const
double IntegrateSpectrum(double omegaLow, double omegaHigh, double step) const
double CosPower(double theta) const
DirectionBinning
Methods for realisation of direction spectrum.
Definition WaveEnergySpectrum.h:28
@ Random
Random distribution according to the direction spectrum.
@ Sequential
Higher energies in main direction.
Policy mixin: this type is movable but not copyable.
Definition marenv.h:126
The parameters defining a certain wave field.
Definition WaveEnergySpectrum.h:43
SpectrumType spectrumType
Spectrum type (JONSWAP or ISSC).
Definition WaveEnergySpectrum.h:50
double omegaNDimUppLim
Non-dimensional omega_nDim = omega*T1/(2*pi) upper limit.
Definition WaveEnergySpectrum.h:49
double T1
Mean wave period.
Definition WaveEnergySpectrum.h:45
double omegaNDimLowLim
Non-dimensional omega_nDim = omega*T1/(2*pi) lower limit.
Definition WaveEnergySpectrum.h:48
double cosinePower
directional spectrum is given as cos(theta)^cosinePower.
Definition WaveEnergySpectrum.h:47
double Theta
Mean wave propagation direction [rad]: the direction the waves go to, from North (x) towards East (y)...
Definition WaveEnergySpectrum.h:46
FrequencyBinning frequencyBinning
How the frequencies of each wave component is set.
Definition WaveEnergySpectrum.h:52
double Hs
Significant wave height.
Definition WaveEnergySpectrum.h:44
DirectionBinning directionBinning
How the directions of each wave component is set.
Definition WaveEnergySpectrum.h:51