https://doi.org/10.5281/zenodo.15000786
analyze_floating_diffplots.py
from netCDF4 import Dataset
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axes_grid1 import make_axes_locatable
import xarray
def get_ind(arr,val) :
return np.argmin(np.abs(arr-val))
t1 = 8
t2 = 20
times = [str(i).zfill(7) for i in range(t1,t2+1)]
winds = [i for i in range(5,24,2)]
N = len(winds)
prefixes_fixed = [ "turbulent_fixed-yaw-upstream_wind-5.000000_fixed-_" ,\
"turbulent_fixed-yaw-upstream_wind-7.000000_fixed-_" ,\
"turbulent_fixed-yaw-upstream_wind-9.000000_fixed-_" ,\
"turbulent_fixed-yaw-upstream_wind-11.000000_fixed-_" ,\
"turbulent_fixed-yaw-upstream_wind-13.000000_fixed-_" ,\
"turbulent_fixed-yaw-upstream_wind-15.000000_fixed-_" ,\
"turbulent_fixed-yaw-upstream_wind-17.000000_fixed-_" ,\
"turbulent_fixed-yaw-upstream_wind-19.000000_fixed-_" ,\
"turbulent_fixed-yaw-upstream_wind-21.000000_fixed-_" ,\
"turbulent_fixed-yaw-upstream_wind-23.000000_fixed-_" ,]
prefixes_float = [ "turbulent_fixed-yaw-upstream_wind-5.000000_floating-_" ,\
"turbulent_fixed-yaw-upstream_wind-7.000000_floating-_" ,\
"turbulent_fixed-yaw-upstream_wind-9.000000_floating-_" ,\
"turbulent_fixed-yaw-upstream_wind-11.000000_floating-_" ,\
"turbulent_fixed-yaw-upstream_wind-13.000000_floating-_" ,\
"turbulent_fixed-yaw-upstream_wind-15.000000_floating-_" ,\
"turbulent_fixed-yaw-upstream_wind-17.000000_floating-_" ,\
"turbulent_fixed-yaw-upstream_wind-19.000000_floating-_" ,\
"turbulent_fixed-yaw-upstream_wind-21.000000_floating-_" ,\
"turbulent_fixed-yaw-upstream_wind-23.000000_floating-_" ]
nctmp = Dataset(prefixes_fixed[0]+str(times[0]).zfill(8)+".nc","r")
x = np.array(nctmp["x"])
y = np.array(nctmp["y"])
z = np.array(nctmp["z"])
dx = x[1]-x[0]
dy = y[1]-y[0]
dz = z[1]-z[0]
xlen = x[-1]+dx/2
ylen = y[-1]+dy/2
zlen = z[-1]+dz/2
ihub = get_ind(x,xlen/2)
jhub = get_ind(y,ylen/2)
khub = get_ind(z,90)
X,Y = np.meshgrid(x,y)
z1 = get_ind(z,90-63)
z2 = get_ind(z,90+63)
y1 = get_ind(y,ylen/2-63)
y2 = get_ind(y,ylen/2+63)
fig,axestmp = plt.subplots(5,2,figsize=(8,10),sharex=True)
axes = np.reshape(np.array(axestmp),10)
for i in range(len(winds)):
print(winds[i])
var_fixed = np.sqrt(np.array(Dataset(prefixes_fixed[i]+str(times[0]).zfill(8)+".nc","r")["avg_up_up"][z1:z2+1,:,:]))
var_float = np.sqrt(np.array(Dataset(prefixes_float[i]+str(times[0]).zfill(8)+".nc","r")["avg_up_up"][z1:z2+1,:,:]))
for time in times[1:] :
var_fixed += np.sqrt(np.array(Dataset(prefixes_fixed[i]+str(time).zfill(8)+".nc","r")["avg_up_up"][z1:z2+1,:,:]))
var_float += np.sqrt(np.array(Dataset(prefixes_float[i]+str(time).zfill(8)+".nc","r")["avg_up_up"][z1:z2+1,:,:]))
var_fixed /= len(times)
var_float /= len(times)
var = np.mean(var_float/var_fixed,axis=0)
diff = 2*np.round(np.std(np.abs(1-var)),5)
CS = axes[i].contourf(X,Y,var,levels=np.arange(1-diff,1+diff,2*diff/100),extend="both",cmap="bwr")
axes[i].set_title(f"Winds: {winds[i]}")
axes[i].axis('scaled')
axes[i].margins(x=0)
axes[i].set_xticks([])
axes[i].set_yticks([])
divider = make_axes_locatable(axes[i])
cax = divider.append_axes("bottom", size="8%", pad=0.05)
cbar = fig.colorbar(CS,orientation="horizontal",cax=cax)
cbar.ax.tick_params(labelrotation=30)
fig.tight_layout()
plt.savefig("betti_contourxy_zhubavg_up_up_factor.png",dpi=600)
# plt.show()
plt.close()
fig,axestmp = plt.subplots(5,2,figsize=(8,10),sharex=True)
axes = np.reshape(np.array(axestmp),10)
for i in range(len(winds)):
print(winds[i])
var_fixed = np.abs(np.array(Dataset(prefixes_fixed[i]+str(times[0]).zfill(8)+".nc","r")["avg_u"][z1:z2+1,:,:]))
var_float = np.abs(np.array(Dataset(prefixes_float[i]+str(times[0]).zfill(8)+".nc","r")["avg_u"][z1:z2+1,:,:]))
for time in times[1:] :
var_fixed += np.abs(np.array(Dataset(prefixes_fixed[i]+str(time).zfill(8)+".nc","r")["avg_u"][z1:z2+1,:,:]))
var_float += np.abs(np.array(Dataset(prefixes_float[i]+str(time).zfill(8)+".nc","r")["avg_u"][z1:z2+1,:,:]))
var_fixed /= len(times)
var_float /= len(times)
var = np.mean(var_float/var_fixed,axis=0)
diff = 2*np.round(np.std(np.abs(1-var)),5)
CS = axes[i].contourf(X,Y,var,levels=np.arange(1-diff,1+diff,2*diff/100),extend="both",cmap="bwr")
axes[i].set_title(f"Winds: {winds[i]}")
axes[i].axis('scaled')
axes[i].margins(x=0)
axes[i].set_xticks([])
axes[i].set_yticks([])
divider = make_axes_locatable(axes[i])
cax = divider.append_axes("bottom", size="8%", pad=0.05)
cbar = fig.colorbar(CS,orientation="horizontal",cax=cax)
cbar.ax.tick_params(labelrotation=30)
fig.tight_layout()
plt.savefig("betti_contourxy_zhubavg_umeanfactor.png",dpi=600)
# plt.show()
plt.close()
x1 = get_ind(x,0.2*xlen)
x2 = get_ind(x,0.2*xlen+10*126)
fig,axestmp = plt.subplots(5,2,figsize=(8,10),sharex=True,sharey=True)
axes = np.reshape(np.array(axestmp),10)
for i in range(len(winds)):
print(winds[i])
var_fixed = np.sqrt(np.array(Dataset(prefixes_fixed[i]+str(times[0]).zfill(8)+".nc","r")["avg_up_up"][z1:z2+1,y1:y2+1,:]))
var_float = np.sqrt(np.array(Dataset(prefixes_float[i]+str(times[0]).zfill(8)+".nc","r")["avg_up_up"][z1:z2+1,y1:y2+1,:]))
for time in times[1:] :
var_fixed += np.sqrt(np.array(Dataset(prefixes_fixed[i]+str(time).zfill(8)+".nc","r")["avg_up_up"][z1:z2+1,y1:y2+1,:]))
var_float += np.sqrt(np.array(Dataset(prefixes_float[i]+str(time).zfill(8)+".nc","r")["avg_up_up"][z1:z2+1,y1:y2+1,:]))
var_fixed /= len(times)
var_float /= len(times)
var = np.mean(var_float/var_fixed,axis=(0,1))
axes[i].set_title(f"Winds: {winds[i]}")
axes[i].plot(x,var)
axes[i].margins(x=0)
axes[i].set_ylim(0.99,1.01)
axes[i].text(500,1.007,f"10D Wake Avg: {np.mean(var[x1:x2+1]):10.5e}")
fig.tight_layout()
plt.savefig("betti_linex_zhubavg_yhubavg_up_up_factor.png",dpi=600)
plt.close()