Source code for simulator.tools.tool_full_load_sweep
from __future__ import annotations
import argparse
from pathlib import Path
from ..design import sweep_speed_full_load
[docs]
def build_parser() -> argparse.ArgumentParser:
p = argparse.ArgumentParser(
prog="simulator-full-load-sweep",
description="Virtual dyno full-load speed sweep using the ICE simulator.",
)
p.add_argument("--config", required=True, help="Path to base JSON input file")
p.add_argument(
"--speeds",
nargs="+",
type=float,
required=True,
help="Engine speeds [rpm], e.g. 1500 2000 2500 3000",
)
p.add_argument(
"--out-prefix",
help="Output prefix for result JSON files (default: simulator/out/full_load)",
)
return p
[docs]
def main(argv: list[str] | None = None) -> int:
parser = build_parser()
args = parser.parse_args(argv)
base_cfg = args.config
if args.out_prefix:
out_prefix = args.out_prefix
else:
root = Path(__file__).resolve().parents[1]
out_prefix = str(root / "out" / "full_load")
results = sweep_speed_full_load(base_cfg, args.speeds, out_prefix)
print("[OK] Full-load sweep results:")
for r in results:
print(f" {r.label:>8s} -> {r.outfile}")
return 0
if __name__ == "__main__": # pragma: no cover
raise SystemExit(main())