1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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()
|