1
Fork 0

Update 'diff' with U

This commit is contained in:
Edgar P. Burkhart 2022-05-09 11:23:09 +02:00
parent 8ad6690a46
commit 402ad87091
Signed by: edpibu
GPG Key ID: 9833D3C5A25BD227
1 changed files with 64 additions and 20 deletions

View File

@ -5,6 +5,7 @@ import logging
from multiprocessing import pool from multiprocessing import pool
import pathlib import pathlib
import pickle import pickle
import sys
from cycler import cycler from cycler import cycler
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
@ -36,6 +37,15 @@ parser.add_argument(
type=str, type=str,
help="Post-process function to compare", help="Post-process function to compare",
default="graphUniform", default="graphUniform",
choices=("graphUniform", "graphUniform2"),
)
parser.add_argument(
"-y",
"--field",
type=str,
help="Field to compare",
default="alpha.water",
choices=("alpha.water", "U"),
) )
args = parser.parse_args() args = parser.parse_args()
@ -57,35 +67,69 @@ def get_pickle(out):
models = list(map(get_pickle, args.output)) models = list(map(get_pickle, args.output))
fig, ax = plt.subplots(len(models), figsize=(6, 1.5 * len(models)), dpi=100, constrained_layout=True)
if args.timestep is None:
for i, (_ax, _model) in enumerate(zip(ax, models)):
_ax.contour(
_model.t,
_model.post_fields[args.func]["x_alpha.water"],
_model.post_fields[args.func]["alpha.water"].T,
(0.5,),
colors="k",
)
fig, (ax,) = plt.subplots(
len(models),
figsize=(6, 1.5 * len(models)),
dpi=100,
constrained_layout=True,
squeeze=False,
)
if args.timestep is None:
match args.field:
case "alpha.water":
for i, (_ax, _model) in enumerate(zip(ax, models)):
_ax.contour(
_model.t,
_model.post_fields[args.func][f"x_{args.field}"],
_model.post_fields[args.func][args.field].T,
(0.5,),
colors="k",
)
case "U":
for i, (_ax, _model) in enumerate(zip(ax, models)):
_c = _ax.imshow(
np.linalg.norm(_model.post_fields[args.func][args.field], axis=2).T,
vmin=0,
cmap="inferno",
extent=(
_model.t.min(),
_model.t.max(),
_model.post_fields[args.func][f"x_{args.field}"].min(),
_model.post_fields[args.func][f"x_{args.field}"].max(),
),
)
fig.colorbar(_c, label=f"{args.field} (m/s)", ax=_ax)
case _:
log.error(f"Cannot plot field {args.field} from {args.func}")
sys.exit(1)
for i, (_ax, _model) in enumerate(zip(ax, models)):
_ax.set(xlabel="t (s)", ylabel="z (m)", title=f"Case {i}") _ax.set(xlabel="t (s)", ylabel="z (m)", title=f"Case {i}")
_ax.grid() _ax.grid(color="k", alpha=0.2)
fig.savefig( fig.savefig(
args.output[0].joinpath( args.output[0].joinpath(
f"diff_{args.func}_{'_'.join([o.name for o in args.output])}.pdf" f"diff_{args.func}_{args.field}_{'_'.join([o.name for o in args.output])}.pdf"
) )
) )
else: else:
for i, (_ax, _model) in enumerate(zip(ax, models)): match args.field:
_ax.tricontour( case "alpha.water":
_model.x, for i, (_ax, _model) in enumerate(zip(ax, models)):
_model.z, _ax.tricontour(
_model.fields["alpha.water"][np.where(_model.t == args.timestep)[0]][0], _model.x,
levels=(0.5,), _model.z,
colors="k", _model.fields[args.field][np.where(_model.t == args.timestep)[0]][0],
) levels=(0.5,),
colors="k",
)
case _:
log.error(f"Cannot plot field {args.field} from {args.func} at timestep")
sys.exit(1)
for i, (_ax, _model) in enumerate(zip(ax, models)):
_ax.set(xlabel="x (m)", ylabel="z (m)", title=f"Case {i}") _ax.set(xlabel="x (m)", ylabel="z (m)", title=f"Case {i}")
_ax.grid() _ax.grid()