1*ca69d878SAdeleke O. Bankoleimport pandas 2*ca69d878SAdeleke O. Bankoleimport matplotlib.pyplot as plt 3*ca69d878SAdeleke O. Bankoleimport seaborn as sns 4*ca69d878SAdeleke O. Bankoleimport numpy as np 5*ca69d878SAdeleke O. Bankoleimport scipy.signal as sig 6*ca69d878SAdeleke O. Bankole 7*ca69d878SAdeleke O. Bankole 8*ca69d878SAdeleke O. Bankoledef coeff(force, rho=1, u=1, D=1, zspan=0.2): 9*ca69d878SAdeleke O. Bankole S = np.pi * D * zspan # surface area 10*ca69d878SAdeleke O. Bankole return 2 * force / (rho * u**2 * S) 11*ca69d878SAdeleke O. Bankole 12*ca69d878SAdeleke O. Bankole 13*ca69d878SAdeleke O. Bankoledef shedding_period(df): 14*ca69d878SAdeleke O. Bankole sample = df[df["Time"] > 70] # once the initial transient has passed 15*ca69d878SAdeleke O. Bankole peaks, _ = sig.find_peaks(sample["ForceY"]) 16*ca69d878SAdeleke O. Bankole period = np.diff(sample["Time"].iloc[peaks]) 17*ca69d878SAdeleke O. Bankole return period.mean() 18*ca69d878SAdeleke O. Bankole 19*ca69d878SAdeleke O. Bankole 20*ca69d878SAdeleke O. Bankoledf = pandas.read_csv("force.csv") 21*ca69d878SAdeleke O. Bankoledf["Drag Coefficient"] = coeff(df["ForceX"]) 22*ca69d878SAdeleke O. Bankoledf["Lift Coefficient"] = coeff(df["ForceY"]) 23*ca69d878SAdeleke O. Bankoleperiod = shedding_period(df) 24*ca69d878SAdeleke O. Bankole 25*ca69d878SAdeleke O. Bankolesns.set_theme(style="ticks") 26*ca69d878SAdeleke O. Bankolepalette = sns.color_palette() 27*ca69d878SAdeleke O. Bankolefig, ax_drag = plt.subplots() 28*ca69d878SAdeleke O. Bankoleax_lift = ax_drag.twinx() 29*ca69d878SAdeleke O. Bankole 30*ca69d878SAdeleke O. Bankolesns.lineplot(data=df, x="Time", y="Drag Coefficient", ax=ax_drag, color=palette[0]) 31*ca69d878SAdeleke O. Bankolesns.lineplot(data=df, x="Time", y="Lift Coefficient", ax=ax_lift, color=palette[1]) 32*ca69d878SAdeleke O. Bankoleax_drag.set_title(f"Shedding period {period}") 33*ca69d878SAdeleke O. Bankoleax_drag.set_ylim(0.41, 0.48) 34*ca69d878SAdeleke O. Bankoleax_drag.tick_params(axis="y", colors=palette[0]) 35*ca69d878SAdeleke O. Bankoleax_drag.yaxis.label.set_color(palette[0]) 36*ca69d878SAdeleke O. Bankoleax_lift.tick_params(axis="y", colors=palette[1]) 37*ca69d878SAdeleke O. Bankoleax_lift.yaxis.label.set_color(palette[1]) 38*ca69d878SAdeleke O. Bankole 39*ca69d878SAdeleke O. Bankole# plt.savefig("vortexshedding.svg") 40*ca69d878SAdeleke O. Bankoleplt.show() 41