1
Fork 0

Diff between multiple olaflow results

This commit is contained in:
Edgar P. Burkhart 2022-05-03 11:53:58 +02:00
parent 2fea19158f
commit c7e9efe9ac
Signed by: edpibu
GPG Key ID: 9833D3C5A25BD227
1 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,59 @@
import argparse
import gzip
from itertools import starmap
import logging
from multiprocessing import pool
import pathlib
import pickle
from cycler import cycler
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np
from scipy import interpolate
from .olaflow import OFModel
parser = argparse.ArgumentParser(description="Post-process olaflow results")
parser.add_argument("-v", "--verbose", action="count", default=0)
parser.add_argument(
"-o",
"--output",
action="append",
type=pathlib.Path,
help="Post-processing directory",
required=True,
)
args = parser.parse_args()
logging.basicConfig(level=max((10, 20 - 10 * args.verbose)))
log = logging.getLogger("ola_post")
log.info("Plotting comparison of model output")
def get_pickle(out):
with (
path.open("rb")
if (path := out.joinpath("pickle")).exists()
else gzip.open(path.with_suffix(".gz"), "rb")
) as f:
return pickle.load(f)
models = list(map(get_pickle, args.output))
fig, ax = plt.subplots(len(models), constrained_layout=True)
for i, (_ax, _model) in enumerate(zip(ax, models)):
_ax.contour(
_model.t,
_model.post_fields["graphUniform"]["x_alpha.water"],
_model.post_fields["graphUniform"]["alpha.water"].T,
(0.5,),
colors="k",
)
_ax.set(xlabel="t (s)", ylabel="z (m)", title=f"Case {i}")
_ax.grid()
fig.savefig(args.output[0].joinpath(f"diff_{'_'.join([o.name for o in args.output])}.pdf"))