44 ny = int(
arg(
"--ny", 160))
45 out =
arg(
"--out",
"tbf_profiles.npz")
46 y = (np.arange(ny) + 0.5) * LY / ny
48 c =
col(os.path.join(d,
"stats_c"), 1)[:, 0]
49 uW =
col(os.path.join(d,
"stats_u_W"), 9)
50 uL =
col(os.path.join(d,
"stats_u_L"), 9)
52 liq = np.maximum(1.0 - c, 1e-30)
55 r[
"yplus"] = y / (MU / UTAU)
57 r[
"liquid_fraction"] = 1.0 - c
58 r[
"u"], r[
"v"], r[
"w"] = uW[:, 0], uW[:, 1], uW[:, 2]
59 r[
"uu"], r[
"uv"] = uW[:, 3], uW[:, 4]
60 r[
"urms"] = np.sqrt(np.maximum(uW[:, 3] - uW[:, 0] ** 2, 0.0))
61 r[
"vrms"] = np.sqrt(np.maximum(uW[:, 6] - uW[:, 1] ** 2, 0.0))
62 r[
"wrms"] = np.sqrt(np.maximum(uW[:, 8] - uW[:, 2] ** 2, 0.0))
63 ul, vl, wl = uL[:, 0] / liq, uL[:, 1] / liq, uL[:, 2] / liq
64 r[
"u_liq"], r[
"v_liq"], r[
"w_liq"] = ul, vl, wl
65 r[
"urms_liq"] = np.sqrt(np.maximum(uL[:, 3] / liq - ul ** 2, 0.0))
66 r[
"vrms_liq"] = np.sqrt(np.maximum(uL[:, 6] / liq - vl ** 2, 0.0))
67 r[
"wrms_liq"] = np.sqrt(np.maximum(uL[:, 8] / liq - wl ** 2, 0.0))
68 r[
"uv_liq"] = uL[:, 4] / liq - ul * vl
70 r[
"utau_lo"] = float(np.sqrt(MU * abs(ul[0]) / (0.5 * dy)))
71 r[
"utau_hi"] = float(np.sqrt(MU * abs(ul[-1]) / (0.5 * dy)))
72 r[
"utau_wall"] = 0.5 * (r[
"utau_lo"] + r[
"utau_hi"])
74 r[
"utau_imposed"] = UTAU
75 tw = os.path.join(d,
"tauw")
76 if os.path.exists(tw):
77 r[
"tauw_tav"] = float(np.loadtxt(tw))
78 r[
"grid"] = np.asarray([192, ny, 96])
79 np.savez(out, **{k: np.asarray(v)
for k, v
in r.items()})
80 print(f
"wrote {out} from {d}")
81 print(f
" <alpha> centreline {c[ny//2]:.5f}, bulk {c.mean():.5f}")
82 print(f
" <u>_liq/u_tau peak {np.max(ul)/UTAU:.3f} at y/h = {y[int(np.argmax(ul))]:.3f}, "
83 f
"centreline {ul[ny//2]/UTAU:.3f}")
84 print(f
" u_tau wall gradient {r['utau_wall']:.6f} vs imposed {UTAU:.6f} "
85 f
"({100*(r['utau_wall']/UTAU-1):+.1f} %)")