summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/core/c++/hlbm.hpp2
-rwxr-xr-xscripts/python/graph.py65
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()