增加了csv输出

This commit is contained in:
lujingze committed 2026-06-04 05:39:42 +00:00
1 parent bf8542bcc4
commit f230285316
2 files changed
+24 -2

No files matched your search

+2 -1
View File
@@ -21,7 +21,7 @@ from cryo_tank.tank_model import CryoTank
from cryo_tank.heat_leak import MLIHeatLeak
from cryo_tank.solver import run
from cryo_tank.output import (
save_history, plot_temperatures, plot_liquid_level,
save_history, save_history_csv, plot_temperatures, plot_liquid_level,
plot_he_flow, plot_heat_fluxes, plot_pressure,
)
@@ -67,6 +67,7 @@ def main():
# --- Output ---
save_history(history, os.path.join(OUTPUT_DIR, "cryo_tank_history.npz"))
save_history_csv(history, os.path.join(OUTPUT_DIR, "cryo_tank_history.csv"))
plot_temperatures(history, os.path.join(OUTPUT_DIR, "cryo_tank_temperatures.png"))
plot_liquid_level(history, os.path.join(OUTPUT_DIR, "cryo_tank_level.png"))
plot_he_flow(history, os.path.join(OUTPUT_DIR, "cryo_tank_he_flow.png"))
+22 -1
View File
@@ -1,7 +1,7 @@
# src/cryo_tank/output.py
"""
Output helpers for the cryogenic tank simulation.
Generates PNG plots and NPZ data files.
Generates PNG plots, NPZ data files, and CSV tables.
"""
import os
@@ -19,6 +19,27 @@ def save_history(history, path):
np.savez_compressed(path, **history)
def save_history_csv(history, path):
"""Save all history time series to a CSV file."""
dirname = os.path.dirname(path)
if dirname:
os.makedirs(dirname, exist_ok=True)
field_names = list(history.keys())
columns = [np.asarray(history[name]) for name in field_names]
n_rows = len(columns[0]) if columns else 0
for name, values in zip(field_names, columns):
if values.ndim != 1:
raise ValueError(f"CSV history field must be 1D: {name}")
if len(values) != n_rows:
raise ValueError(f"CSV history field length mismatch: {name}")
data = np.column_stack(columns) if columns else np.empty((0, 0))
header = ",".join(field_names)
np.savetxt(path, data, delimiter=",", header=header, comments="")
def plot_temperatures(history, path):
"""Plot T_liq and T_ull vs time."""
fig, ax = plt.subplots(figsize=(10, 5))