From 5f8a66d68a4b5e9244791c2d4a4ad1789e90c840 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 12 Jul 2024 09:40:50 -0400 Subject: [PATCH] add plot --- .../scaling/frontier/frontier_scaling.py | 54 ++++++++++++++++++ .../scaling/frontier/frontier_wdmerger.png | Bin 0 -> 35980 bytes 2 files changed, 54 insertions(+) create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_scaling.py create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py new file mode 100644 index 0000000000..b566f43091 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py @@ -0,0 +1,54 @@ +import matplotlib.pyplot as plt +import matplotlib.ticker as mticker +import numpy as np + +plt.rcParams.update({'xtick.labelsize': 10, + 'ytick.labelsize': 10, + 'font.size': 12}) + +plt.rc("axes", linewidth=1.5) +plt.rc("lines", markeredgewidth=1.5) + +frontier_256base_data = np.loadtxt("frontier_256base_20240709.txt") +frontier_256base_nodes = frontier_256base_data[:, 0] +frontier_256base_times = frontier_256base_data[:, 4] + +frontier_512base_data = np.loadtxt("frontier_512base_20240709.txt") +frontier_512base_nodes = frontier_512base_data[:, 0] +frontier_512base_times = frontier_512base_data[:, 4] + +frontier_1024base_data = np.loadtxt("frontier_1024base_20240709.txt") +frontier_1024base_nodes = frontier_1024base_data[:, 0] +frontier_1024base_times = frontier_1024base_data[:, 4] + + +def trend_line(c, t): + cnew = np.array(sorted(list(set(c)))) + cnew = np.linspace(cnew.min(), cnew.max(), 256, endpoint=True) + trend = t[0]*c[0]/cnew[:] + return cnew, trend + + +# first by nodes + +fig, ax = plt.subplots(1) + +ax.plot(frontier_256base_nodes, frontier_256base_times, ls="None", marker="x", label="$256^3$ coarse grid") +ax.plot(frontier_512base_nodes, frontier_512base_times, ls="None", marker="x", label="$512^3$ coarse grid") +ax.plot(frontier_1024base_nodes, frontier_1024base_times, ls="None", marker="x", label="$1024^3$ coarse grid") + +c, t = trend_line(frontier_256base_nodes, frontier_256base_times) +ax.plot(c, t, alpha=0.5, linestyle=":") + +ax.set_ylabel("wallclock time / step") +ax.set_xlabel("number of nodes") + +ax.set_xscale("log") +ax.set_yscale("log") + +ax.set_title("3D wedmerger scaling (Frontier)") + +ax.legend() + +fig.tight_layout() +fig.savefig("frontier_wdmerger.png") diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png b/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png new file mode 100644 index 0000000000000000000000000000000000000000..5e98ba42f7b07ab9e6dfdad448214d1f1629dd2a GIT binary patch literal 35980 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

dgxmg()WqAp(9D) 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