diff options
| author | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-06-28 19:41:33 +0200 |
|---|---|---|
| committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-06-28 19:41:33 +0200 |
| commit | 78e8a621beff8ccd410f2e2c0b6df7f3931b52eb (patch) | |
| tree | 080672eb1e183fff0ef628dfc3ae6628cb8d10f5 /scripts | |
| parent | 3a27bca74e7645874e52f101d467aff8ff7d78f4 (diff) | |
| parent | 283ff837896c805bddf4962caaa54c26aa8bab1f (diff) | |
| download | libs-lbm-78e8a621beff8ccd410f2e2c0b6df7f3931b52eb.tar.gz | |
Merge branch 'dev'
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/python/graph.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/scripts/python/graph.py b/scripts/python/graph.py new file mode 100755 index 0000000..cb3802d --- /dev/null +++ b/scripts/python/graph.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 + +import numpy as np +import matplotlib.pyplot as plt + +x = np.linspace(0, 1, 1000) + +# Linear function +y_linear = x + +# Step function +y_step = np.piecewise( + x, + [ + x < 0.125, + (x >= 0.125) & (x < 0.375), + (x >= 0.375) & (x < 0.625), + (x >= 0.625) & (x < 0.875), + x >= 0.875 + ], + [0.0, 1/4, 2/4, 3/4, 1.0] +) + +y_step2 = np.piecewise( + x, + [ + x < 0.0625, + (x >= 0.0625) & (x < 0.1875), + (x >= 0.1875) & (x < 0.3125), + (x >= 0.3125) & (x < 0.4375), + (x >= 0.4375) & (x < 0.5625), + (x >= 0.5625) & (x < 0.6875), + (x >= 0.6875) & (x < 0.8125), + (x >= 0.8125) & (x < 0.9375), + x >= 0.9375 + ], + [0/8, 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8, 1.0] +) + +# Smooth cos²-like ramp from 0 → 1 over full domain +y_cos2 = np.sin((np.pi / 2.0) * x) ** 2 + +y_cos2_shift = np.sin((np.pi / 2.0) * (x+0.125)/1.25) ** 2 + +y_cos2_shift_15 = np.sin((np.pi / 2.0) * (x+0.25)/1.5) ** 2 + + +# Plot +plt.figure(figsize=(8, 6)) + +plt.plot(x, y_linear, label="Real fill", linewidth=2) +plt.step(x, y_step, where="post", label="PSM subgrid of 4", linewidth=2) +plt.step(x, y_step2, where="post", label="PSM subgrid of 8", linewidth=2) +plt.plot(x, y_cos2, label=r'HLBM e_h:cell size 1:1', linewidth=2) +plt.plot(x, y_cos2_shift, label=r'HLBM e_h:cell size 1.25:1', linewidth=2) +plt.plot(x, y_cos2_shift_15, label=r'HLBM e_h:cell size 1.5:1', linewidth=2) + +plt.xlim(0, 1) +plt.ylim(0, 1) +plt.grid(True) +plt.legend() + +plt.xlabel("x") +plt.ylabel("y") +plt.title("Fill level depending on used method") + +plt.show() |
