00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include <JonswapSpectrum.h>
00035 #include <Spectrum.h>
00036 #include <Vector.h>
00037 #include <classTags.h>
00038
00039
00040 JonswapSpectrum::JonswapSpectrum(int tag, double min, double max,
00041 double alp, double w, double gam)
00042 :Spectrum(tag,SPECTRUM_jonswap)
00043 {
00044 minFreq = min;
00045 maxFreq = max;
00046 alpha = alp;
00047 wp = w;
00048 gamma = gam;
00049 }
00050
00051 JonswapSpectrum::~JonswapSpectrum()
00052 {
00053 }
00054
00055 void
00056 JonswapSpectrum::Print(OPS_Stream &s, int flag)
00057 {
00058 }
00059
00060
00061 double
00062 JonswapSpectrum::getMinFrequency()
00063 {
00064 return minFreq;
00065 }
00066 double
00067 JonswapSpectrum::getMaxFrequency()
00068 {
00069 return maxFreq;
00070 }
00071 double
00072 JonswapSpectrum::getAmplitude(double frequency)
00073 {
00074 if (frequency < minFreq || frequency > maxFreq) {
00075 return 0.0;
00076 }
00077
00078 double sigma;
00079 if (frequency < wp) {
00080 sigma = 0.07;
00081 }
00082 else {
00083 sigma = 0.09;
00084 }
00085
00086 double power = exp(-(frequency-wp)/(2.0*sigma*sigma*wp*wp));
00087 double GAMMA = pow(gamma,power);
00088
00089 return GAMMA*alpha*pow(frequency,-5.0)*exp(-5.0/4.0*pow((frequency/wp),-4.0));
00090 }