diff options
| author | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-06-24 22:11:24 +0200 |
|---|---|---|
| committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-06-24 22:11:24 +0200 |
| commit | 70fda0ecf925fb5010b2e23cbdbc4e2076715958 (patch) | |
| tree | 6e737d801a58d9b2fe108957962e945e993d0647 | |
| parent | 90f242af3036e0863a067c3f55457566d1f1e4ce (diff) | |
| download | libs-lbm-70fda0ecf925fb5010b2e23cbdbc4e2076715958.tar.gz | |
Adding python script for the graph generation
| -rw-r--r-- | lib/core/c++/hlbm.hpp | 2 | ||||
| -rwxr-xr-x | scripts/python/graph.py | 65 |
2 files changed, 66 insertions, 1 deletions
diff --git a/lib/core/c++/hlbm.hpp b/lib/core/c++/hlbm.hpp index c15bfc4..726f2d8 100644 --- a/lib/core/c++/hlbm.hpp +++ b/lib/core/c++/hlbm.hpp @@ -129,7 +129,7 @@ public: auto& mvel = macros.template get<"velocity">(); { auto& parts = part_spheroid_group.template get<"particles">(); - auto parts_size = parts.size(); + auto parts_size = parts.meta().at({0u}); auto& pi = parts.at(index); auto& pirb = pi.template get<"rigid_body">(); diff --git a/scripts/python/graph.py b/scripts/python/graph.py new file mode 100755 index 0000000..ab42154 --- /dev/null +++ b/scripts/python/graph.py @@ -0,0 +1,65 @@ +#!/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 + + + +# Plot +plt.figure(figsize=(8, 6)) + +plt.plot(x, y_linear, label="y = x", linewidth=2) +plt.step(x, y_step, where="post", label="PSM subgrid of 8", 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.xlim(0, 1) +plt.ylim(0, 1) +plt.grid(True) +plt.legend() + +plt.xlabel("x") +plt.ylabel("y") +plt.title("Linear + Step + Smooth Cos² Ramp") + +plt.show() |
