File size: 1,596 Bytes
ff0fadf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import sys
from pathlib import Path

import numpy as np
import yaml


PROJECT_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(PROJECT_ROOT / "model"))


def load_config():
    with open(PROJECT_ROOT / "config" / "config.yaml", "r", encoding="utf-8") as f:
        return yaml.safe_load(f)


def main():
    os.chdir(PROJECT_ROOT)
    cfg = load_config()
    data_dir = PROJECT_ROOT / cfg["paths"]["data_dir"]
    data_dir.mkdir(parents=True, exist_ok=True)

    n_total = cfg["data"]["ntrain"] + cfg["data"]["ntest"] + 1
    height, width = 221, 51
    rng = np.random.default_rng(42)

    y_axis = np.linspace(-1.0, 1.0, height, dtype=np.float32)
    x_axis = np.linspace(0.0, 1.0, width, dtype=np.float32)
    grid_y, grid_x = np.meshgrid(y_axis, x_axis, indexing="ij")

    input_x = np.broadcast_to(grid_x, (n_total, height, width)).copy()
    input_y = np.broadcast_to(grid_y, (n_total, height, width)).copy()
    q = np.zeros((n_total, 5, height, width), dtype=np.float32)

    for i in range(n_total):
        phase = 0.15 * i
        field = np.sin(np.pi * (grid_x + phase)) * np.cos(np.pi * grid_y)
        q[i, 4] = field + 0.01 * rng.standard_normal((height, width))

    np.save(data_dir / "NACA_Cylinder_X.npy", input_x.astype(np.float32))
    np.save(data_dir / "NACA_Cylinder_Y.npy", input_y.astype(np.float32))
    np.save(data_dir / "NACA_Cylinder_Q.npy", q.astype(np.float32))

    print(f"Fake airfoil data written to {data_dir}")
    print(f"Samples={n_total}, X/Y shape={input_x.shape}, Q shape={q.shape}")


if __name__ == "__main__":
    main()