pandeydigant31's picture
Upload folder using huggingface_hub
8a169a0 verified
Raw
History Blame Contribute Delete
3.22 kB
"""Baseline validation matrix: sweep configs x pressures x speeds."""
from typing import List, Optional
import pandas as pd
from cryosim import predict
CONFIGS = ["old_icv", "new_icv"]
PRESSURES = [50.0, 100.0, 200.0, 350.0, 500.0, 700.0, 900.0]
SPEEDS = [0.65, 0.8, 1.0]
def run_validation_matrix(
configs: Optional[List[str]] = None,
pressures: Optional[List[float]] = None,
speeds: Optional[List[float]] = None,
flash_eff: float = 0.0,
) -> pd.DataFrame:
"""Run the engine across a grid of conditions.
Returns DataFrame with one row per (config, pressure, speed) combination.
"""
configs = configs or CONFIGS
pressures = pressures or PRESSURES
speeds = speeds or SPEEDS
rows = []
for cfg_name in configs:
for Pexit in pressures:
for speed in speeds:
try:
r = predict(
hardware=cfg_name,
Pexit=Pexit,
speed=speed,
flash_eff=flash_eff,
)
rows.append({
"config": cfg_name,
"Pexit": Pexit,
"speed": speed,
"mdot_kgpm": r.mdot_kgpm,
"mass_eff": r.mass_eff,
"Tc_peak_K": r.Tc_peak_K,
"pc_peak_barg": r.pc_peak_barg,
"DCV_ct_s": r.DCV_ct_s,
"ICV_open_frac": r.ICV_open_frac,
"kWh_extend": r.kWh_extend,
"cpu_s": r.cpu_s,
"steps": r.steps,
"error": None,
})
except Exception as e:
rows.append({
"config": cfg_name,
"Pexit": Pexit,
"speed": speed,
"mdot_kgpm": None,
"mass_eff": None,
"Tc_peak_K": None,
"pc_peak_barg": None,
"DCV_ct_s": None,
"ICV_open_frac": None,
"kWh_extend": None,
"cpu_s": None,
"steps": None,
"error": str(e),
})
return pd.DataFrame(rows)
def save_matrix(df: pd.DataFrame, path: str = "validation_matrix.csv"):
"""Save validation matrix results to CSV."""
df.to_csv(path, index=False)
print(f"Saved {len(df)} results to {path}")
if __name__ == "__main__":
import time
print("Running full validation matrix...")
print(f" Configs: {CONFIGS}")
print(f" Pressures: {PRESSURES}")
print(f" Speeds: {SPEEDS}")
print(f" Total cases: {len(CONFIGS) * len(PRESSURES) * len(SPEEDS)}")
print()
t0 = time.time()
df = run_validation_matrix()
elapsed = time.time() - t0
print(f"\nCompleted in {elapsed:.1f}s")
print(f"Failures: {df['error'].notna().sum()}")
print()
print(df[["config", "Pexit", "speed", "mdot_kgpm", "mass_eff", "cpu_s"]].to_string(index=False))
save_matrix(df)