# plot plt.figure() plt.plot(t, response, 'k-') plt.plot(t_peaks, peaks, 'go') plt.plot([0, t[-1]], [0, 0], 'k--') plt.xlabel('Time, $t$ [s]') plt.ylabel('Response, $x$') plt.grid(True) plt.ticklabel_format(style='sci', axis='y', scilimits=(0, 0)) # get the 1-hour extreme distribution using the Weibull tail fit method x_e = np.linspace(0, 2 * np.max(peaks), 10000) t_x = (t[-1] - t[0]) t_st = 1. * 60. * 60. stextreme_dist, peaks_dist, _, _, _ = ste.extremeDistribution_WeibullTailFit(x=peaks, x_e=x_e, t_x=t_x, t_st=t_st) # plot plt.figure() ax = plt.subplot(2, 1, 1) plt.plot(x_e, peaks_dist.pdf(x_e), 'g-', label='Peak distribution') plt.plot(x_e, stextreme_dist.pdf(x_e), 'r-', label='Extreme distribution') xlim = ax.get_xlim() ylim = ax.get_ylim() plt.ylim([0, ylim[1]]) plt.xlim([0, xlim[1]]) plt.ylabel('$PDF(x)$') plt.ylabel('Response, $x$') plt.grid(True) plt.ticklabel_format(style='sci', axis='x', scilimits=(0, 0)) plt.ticklabel_format(style='sci', axis='y', scilimits=(0, 0))
mmax = [] x = [] for ii in range(n): ss = 'ss_%03d' % ii x.append(np.array(modResFile['/x/' + ss])) peaks.append(ste.globalPeaks(t, x[ii])[1]) mmax.append(np.max(peaks[ii])) # Short-term extreme response at each sea state tPer = 1 * 60 * 60 # storm period x_t = np.linspace(0, 1.5 * np.max(mmax), 100) edist = [] ev = [] r975 = [] for ii in range(n): edist.append(ste.extremeDistribution_WeibullTailFit( x=peaks[ii], x_e=x_t, t_x=tSim, t_st=tPer)[0]) ev.append(edist[ii].getExpVal()) # Find largest response mi = np.argmax(ev) x0 = edist[mi].getRthVal(0.00001) x1 = edist[mi].getRthVal(1 - 0.00001) x = np.linspace(x0, x1, 500) r95 = edist[mi].getRthVal(0.95) print 'design state (Hs, Te): (%.1f, %.1f)' % (Hs_sample[mi], T_sample[mi]) print 'extreme value: %e' % (r95) # Plot data plt.figure() plt.plot(T, Hs, 'bo', alpha=0.1, label='NDBC data') plt.plot(T_Return, Hs_Return, 'k-', label='100 year contour')
for ii in range(n): ss = 'ss_%03d' % ii x.append(np.array(modResFile['/x/' + ss])) peaks.append(ste.globalPeaks(t, x[ii])[1]) mmax.append(np.max(peaks[ii])) # Short-term extreme response at each sea state tPer = 1 * 60 * 60 # storm period x_t = np.linspace(0, 1.5 * np.max(mmax), 100) edist = [] ev = [] r975 = [] for ii in range(n): edist.append( ste.extremeDistribution_WeibullTailFit(x=peaks[ii], x_e=x_t, t_x=tSim, t_st=tPer)[0]) ev.append(edist[ii].getExpVal()) # Find largest response mi = np.argmax(ev) x0 = edist[mi].getRthVal(0.00001) x1 = edist[mi].getRthVal(1 - 0.00001) x = np.linspace(x0, x1, 500) r95 = edist[mi].getRthVal(0.95) print 'design state (Hs, Te): (%.1f, %.1f)' % (Hs_sample[mi], T_sample[mi]) print 'extreme value: %e' % (r95) # Plot data plt.figure() plt.plot(T, Hs, 'bo', alpha=0.1, label='NDBC data')
# plot plt.figure() plt.hold(True) plt.plot(t, response, 'k-') plt.plot(t_peaks, peaks, 'go') plt.plot([0, t[-1]], [0, 0], 'k--') plt.xlabel('Time, $t$ [s]') plt.ylabel('Response, $x$') plt.grid(True) plt.ticklabel_format(style='sci', axis='y', scilimits=(0, 0)) # get the 1-hour extreme distribution using the Weibull tail fit method x_e = np.linspace(0, 2 * np.max(peaks), 10000) t_x = (t[-1] - t[0]) t_st = 1. * 60. * 60. stextreme_dist, peaks_dist, _, _, _ = ecm.extremeDistribution_WeibullTailFit(x=peaks, x_e=x_e, t_x=t_x, t_st=t_st) # plot plt.figure() ax = plt.subplot(2, 1, 1) plt.hold(True) plt.plot(x_e, peaks_dist.pdf(x_e), 'g-', label='Peak distribution') plt.plot(x_e, stextreme_dist.pdf(x_e), 'r-', label='Extreme distribution') xlim = ax.get_xlim() ylim = ax.get_ylim() plt.ylim([0, ylim[1]]) plt.xlim([0, xlim[1]]) plt.ylabel('$PDF(x)$') plt.ylabel('Response, $x$') plt.grid(True) plt.ticklabel_format(style='sci', axis='x', scilimits=(0, 0))