diff --git a/swash/processing/post.py b/swash/processing/post.py deleted file mode 100644 index daf9010..0000000 --- a/swash/processing/post.py +++ /dev/null @@ -1,100 +0,0 @@ -import configparser -import pathlib -import argparse -import logging - -import numpy as np -import pandas as pd -import matplotlib.pyplot as plt -import scipy.signal as sgl - -from .read_swash import * - - -parser = argparse.ArgumentParser(description="Post-process swash output") -parser.add_argument("-v", "--verbose", action="count", default=0) -args = parser.parse_args() - -logging.basicConfig(level=max((10, 20 - 10 * args.verbose))) -log = logging.getLogger("post") - -log.info("Starting post-processing") -config = configparser.ConfigParser() -config.read("config.ini") - -cache = pathlib.Path(config.get("data", "out")) -root = pathlib.Path(config.get("swash", "out")) - -log.info(f"Reading bathymetry from '{cache}'") -bathy = pd.read_hdf(cache.joinpath("bathy.h5"), "bathy") -n = bathy.index.size - -log.info(f"Reading swash output from '{root}'") -botl = read_nohead_scalar(root.joinpath("botl.dat"), n) -dep = np.maximum(0, read_nohead_scalar(root.joinpath("dep.dat"), n)) -vel = read_nohead_vect(root.joinpath("vel.dat"), n) - -dt = config.getfloat("post", "dt") -n_t = botl.shape[0] -t = np.arange(0, n_t * dt, dt) - -# Cospectral calculations -x0 = config.getint("post", "x0") -t0 = config.getint("post", "t0") -f = 1 / dt -log.info(f"Computing reflection coefficient at x={x0}") - -eta = (dep - botl)[t > t0, x0] -u = vel[t > t0, 0, x0] - -phi_eta = np.abs(sgl.csd(eta, eta, f)) -phi_u = np.abs(sgl.csd(u, u, f)) -phi_eta_u = np.abs(sgl.csd(eta, u, f)) - -R = np.sqrt( - (phi_eta[1] + phi_u[1] - 2 * phi_eta_u[1]) - / (phi_eta[1] + phi_u[1] + 2 * phi_eta_u[1]) -) - -# Plotting -log.info("Plotting results") -fig, (ax_dep, ax_vel) = plt.subplots(2) - -ax_dep.plot(t, (dep - botl)[:, x0], label="dep") -ax_dep.set(xlabel="t (s)", ylabel="z (m)") -ax_dep.autoscale(axis="x", tight=True) -ax_dep.grid() -ax_dep.axvline(t0, c='k', alpha=.2) - -ax_vel.plot(t, vel[:, 0, x0], label="vel") -ax_vel.set(xlabel="t (s)", ylabel="U (m/s)") -ax_vel.autoscale(axis="x", tight=True) -ax_vel.grid() -ax_vel.axvline(t0, c='k', alpha=.2) - -fig.tight_layout() - -fig_r, ax_r = plt.subplots() - -ax_r.plot(phi_eta[0], R) -ax_r.autoscale(axis="x", tight=True) -ax_r.set(ylim=(0, 1), xlabel="f (Hz)", ylabel="R") -ax_r.grid() - -fig_x, ax_x = plt.subplots() -ax_x.plot(-botl[0, :], color='k') -ax_x.plot((dep-botl)[t == t0, :].T) -ax_x.axvline(x0, c='k', alpha=.2) -ax_x.set(xlabel="x (m)", ylabel="z (m)") -ax_x.autoscale(axis="x", tight=True) -ax_x.grid() - -out = pathlib.Path(config.get("post", "out")) -log.info(f"Saving plots in '{out}'") -out.mkdir(exist_ok=True) - -fig.savefig(out.joinpath(f"t{x0}.png")) -fig_r.savefig(out.joinpath(f"R{x0}.png")) -fig_x.savefig(out.joinpath(f"x{t0}.png")) - -log.info("Finished post-processing") diff --git a/swash/processing/sws_npz.py b/swash/processing/sws_npz.py index dc10174..467713f 100644 --- a/swash/processing/sws_npz.py +++ b/swash/processing/sws_npz.py @@ -32,4 +32,5 @@ botl = read_nohead_scalar(sws_out.joinpath("botl.dat"), n_x) dep = np.maximum(0, read_nohead_scalar(sws_out.joinpath("dep.dat"), n_x)) vel = read_nohead_vect(sws_out.joinpath("vel.dat"), n_x) +inp.mkdir(exist_ok=True) np.savez_compressed(inp.joinpath("sws"), botl=botl, dep=dep, vel=vel)