Kernel: Python 3 (system-wide)
In [3]:
import os import numpy as np import matplotlib.pyplot as plt import matplotlib.transforms as mtransforms import scipy.integrate as integrate from scipy import signal from scipy.signal import find_peaks from matplotlib.lines import Line2D plt.style.use('../jfm.mplstyle')
In [4]:
!find ../Experimental_Dataset -type f -name "elevation.csv.gz" | xargs dirname | sort | grep "sol3rd" | tee "data_directories.txt" > /dev/null
In [5]:
with open("data_directories.txt","r") as data_directories_file: data_directories = data_directories_file.read().splitlines() amp = 'a1.5cm' loc = 'x=-02.54cm' xlim = (0,8.5) ylim = (0,0.6) dx,dt,h0,g = 0.3,1/125,50,9810 t0 = np.sqrt(h0/g) fig, axes = plt.subplots(ncols=2,nrows=1,figsize=(5.0,1.85), sharey='all',layout='constrained') data_dirs = sorted([ d for d in data_directories if (loc in d) and (amp in d) ]) for data_dir, ax in zip(data_dirs,axes): # load data time = np.loadtxt(f"{data_dir}/time.csv",delimiter=',',dtype=int) time_offset = np.loadtxt(f"{data_dir}/time_offset.csv") # in t0 space = np.loadtxt(f"{data_dir}/space.csv",delimiter=',',dtype=int) elev = np.loadtxt(f"{data_dir}/elevation.csv",delimiter=',') c_t = np.loadtxt(f"{data_dir}/crests.csv",delimiter=',',dtype=int,usecols=(0,)) c_v = np.loadtxt(f"{data_dir}/crests.csv",delimiter=',',usecols=(1,)) x = (space*0.3)/h0 t = (time/125 - time_offset)/t0 e = elev/h0 cv = c_v/h0 ct = (c_t/125 - time_offset)/t0 T,X = np.meshgrid(t,x,indexing='ij') skipt = 2 tc = sorted(np.concatenate([np.argwhere(time==tc) for tc in c_t.flat],axis=0)) tc = tc[len(tc)//2][0] start = tc - 23*skipt stop = tc + 1 for tidx in range(start,stop,skipt): ax.plot(x,e[tidx,:],color='k',linewidth=0.5) for ax in axes: ax.axvline(2.3,linewidth=0.5,linestyle='--',color='k') for ax in axes: ax.set_xlim(*xlim) ax.set_ylim(*ylim) ax.set_xlabel(r'$y$') axes[0].set_ylabel(r'$\eta$') #for label, ax in zip(['a)', 'b)'], axes): # ax.set_title(label,loc='left',fontfamily='Times New Roman',fontsize='9.0') plt.savefig('Fig_15.pdf') plt.show()
Out[5]: