| 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() |
|
|