summaryrefslogtreecommitdiff
path: root/scripts/python/graph.py
blob: ab42154ebb21e66a45ed34344b40cb7dc75d4f86 (plain)
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
#!/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()