def test_reflection(self): dataW = readProbeFile('column_gauges.csv') time = dataW[2] L = nlw.opts.wave_wavelength Nwaves = (nlw.opts.tank_dim[0] + nlw.opts.tank_sponge[0] + nlw.opts.tank_sponge[1]) / L T = nlw.opts.wave_period Tend = time[-1] Tstart = Tend - Nwaves * T i_mid = len(dataW[3][0]) / 2 - 1 time_int = np.linspace(time[0], Tend, len(time)) data1 = np.zeros((len(time), len(dataW[3][0])), "d") bf = 1.2 minf = 1. / bf / T maxf = bf / T dx_array = nlw.opts.gauge_dx Narray = int(round(L / 6 / dx_array)) data = np.zeros((len(data1), 3)) zc = [] for ii in range(0, 3): data1[:, i_mid + ii * Narray] = np.interp( time_int, time, dataW[3][:, i_mid + ii * Narray]) data[:, ii] = signalFilter(time, data1[:, i_mid + ii * Narray], minf, maxf, 1.1 * maxf, 0.9 * minf) zc.append(zeroCrossing(time, data[:, ii])) H1 = zc[0][1] H2 = zc[1][1] H3 = zc[2][1] HH = reflStat(H1, H2, H3, Narray * dx_array, L)[0] RR = reflStat(H1, H2, H3, Narray * dx_array, L)[2] assert (RR < 0.3)
def test_validate(self): file_vof = 'line_integral_gauges_1.csv' def readProbeFile(filename): with open(filename, 'rb') as csvfile: data = np.loadtxt(csvfile, delimiter=",", skiprows=1) time = data[:, 0] data = data[:, 1:] csvfile.seek(0) header = csvfile.readline() header = header.replace("time", "") header = header.replace("[", "") header = header.replace("]", "") header = header.replace(",", " ") header = header.split() probeType = [] probex = [] probey = [] probez = [] for ii in range(0, len(header), 4): probeType.append(header[ii]) probex.append(float(header[ii + 1])) probey.append(float(header[ii + 2])) probez.append(float(header[ii + 3])) probeCoord = zip(np.array(probex), np.array(probey), np.array(probez)) datalist = [probeType, probeCoord, time, data] return datalist # Exctracting probes data_vof = readProbeFile(file_vof) time = data_vof[2] vof = data_vof[3] ETA = [] tank_dim = sbw.tank_dim #[13.7815, 0.75] waterLevel = sbw.waterLevel #0.315 for j in range(len(data_vof[1]) / 2): eta = [] for i in range(len(vof)): eta.append(tank_dim[1] - vof[:, j][i] - waterLevel) ETA.append(eta) ETA = np.array(ETA) zc = [] for i in range(len(ETA)): zc.append(zeroCrossing(time, ETA[i])) zc = np.array(zc) K = np.mean(zc[2:][:, 1]) / sbw.opts.wave_height Kref = 0.5 err = 100 * abs(K - Kref) / Kref assert (err < 16.)
# Reflection dataW = readProbeFile('column_gauges.csv') time = dataW[2] L = wavelength[ifo] Nwaves = 10. T = period[ifo] Tend = time[-1] Tstart = Tend - Nwaves * T i_mid = len(dataW[3][0]) / 2 - 1 time_int = np.linspace(time[0], Tend, len(time)) data1 = np.zeros((len(time), len(dataW[3][0])), "d") dx_array = 0.25 Narray = int(round(L / 6. / dx_array)) data = np.zeros((len(data1), 3)) zc = [] minf = 0.8 / period[ifo] maxf = 1.2 / period[ifo] for ii in range(0, 3): data1[:, i_mid + ii * Narray] = np.interp( time_int, time, dataW[3][:, i_mid + ii * Narray]) data[:, ii] = signalFilter(time, data1[:, i_mid + ii * Narray], minf, maxf, 1.1 * maxf, 0.9 * minf) zc.append(zeroCrossing(time, data[:, ii])) H1 = zc[0][1] H2 = zc[1][1] H3 = zc[2][1] HH = reflStat(H1, H2, H3, Narray * dx_array, L)[0] RR = reflStat(H1, H2, H3, Narray * dx_array, L)[2] print "RR = ", RR os.chdir("../")
ETA.append(eta) ETA = np.array(ETA) ##################################################################################### # Plotting the probes fig = plt.figure(figsize=(25, 15)) ax = ['' for x in range(len(data_vof[1]) / 2)] for i in range(len(data_vof[1]) / 2): ax[i] = fig.add_subplot(6, 4, i + 1) ax[i].plot(time, ETA[i], 'r') ax[i].set_ylim([-0.06, 0.08]) ax[i].tick_params(labelsize=10) ax[i].set_title('Eta [m] against time [sec] at x=' + str(gauge_x[i]), color='b', fontsize=12) ax[i].grid() plt.tight_layout() plt.savefig('eta.png') #plt.show() ##################################################################################### # Transmission coefficient zc = [] for i in range(len(ETA)): zc.append(zeroCrossing(time, ETA[i])) zc = np.array(zc) K = np.mean(zc[2:][:, 1]) / sbw.opts.wave_height print 'Transmission coefficient' + '\t' + '=' + '\t' + str(K)