| from __future__ import annotations | |
| import argparse | |
| import numpy as np | |
| from common import exact_reaction_solution, load_config, project_path | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(description="Generate fake PINNsformer reaction data.") | |
| parser.add_argument("--config", default=None, help="Path to config.yaml.") | |
| args = parser.parse_args() | |
| cfg = load_config(args.config) | |
| data_cfg = cfg["data"] | |
| x = np.linspace(*data_cfg["x_range"], int(data_cfg["x_num"]), dtype=np.float32) | |
| t = np.linspace(*data_cfg["t_range"], int(data_cfg["t_num"]), dtype=np.float32) | |
| x_mesh, t_mesh = np.meshgrid(x, t) | |
| u = exact_reaction_solution(x_mesh, t_mesh, cfg).astype(np.float32) | |
| output_path = project_path(cfg["paths"]["fake_data"]) | |
| output_path.parent.mkdir(parents=True, exist_ok=True) | |
| np.savez(output_path, x=x, t=t, u=u) | |
| print(f"fake data saved to {output_path}") | |
| print(f"x={x.shape}, t={t.shape}, u={u.shape}") | |
| if __name__ == "__main__": | |
| main() | |