Files
enok/src/rapport/csv_ut.rs
T

97 lines
2.7 KiB
Rust
Raw Normal View History

//! CSV-utskrift: timeserie for hele året og månedssummer.
use crate::kjor::Resultat;
use crate::Result;
use std::path::Path;
pub fn timeserie(r: &Resultat, sti: &Path) -> Result<()> {
let mut w = csv::Writer::from_path(sti)?;
w.write_record([
"time",
"maaned",
"t_ute_C",
"t_inne_C",
"t_operativ_C",
"sol_horisontal_W_per_m2",
"soltilskudd_W",
"internlast_W",
"romoppvarming_W",
"ventilasjonsvarme_W",
"varmtvann_W",
"romkjoling_W",
"ventilasjonskjoling_W",
"vifter_W",
"pumper_W",
"belysning_W",
"utstyr_W",
"solceller_W",
])?;
let sol = r.solceller.as_ref().map(|p| p.serie.as_slice());
let ts = &r.timeserie;
for t in 0..crate::TIMER {
let f = |v: f64| format!("{v:.1}");
w.write_record([
t.to_string(),
crate::MAANEDER[crate::maaned_for_time(t)].to_string(),
format!("{:.2}", ts.t_ute[t]),
format!("{:.2}", ts.t_inne[t]),
format!("{:.2}", ts.t_operativ[t]),
f(ts.sol_horisontal[t]),
f(ts.soltilskudd[t]),
f(ts.internlast[t]),
f(ts.romoppvarming[t]),
f(ts.ventilasjonsvarme[t]),
f(ts.varmtvann[t]),
f(ts.romkjoling[t]),
f(ts.ventilasjonskjoling[t]),
f(ts.vifter[t]),
f(ts.pumper[t]),
f(ts.belysning[t]),
f(ts.utstyr[t]),
f(sol.map(|s| s[t]).unwrap_or(0.0)),
])?;
}
w.flush()?;
Ok(())
}
pub fn maanedsverdier(r: &Resultat, sti: &Path) -> Result<()> {
let m = r.sammendrag().maanedsverdier;
let mut w = csv::Writer::from_path(sti)?;
w.write_record([
"maaned",
"utetemperatur_C",
"romoppvarming_kWh",
"ventilasjonsvarme_kWh",
"varmtvann_kWh",
"kjoling_kWh",
"vifter_pumper_kWh",
"belysning_kWh",
"utstyr_kWh",
"sum_kWh",
])?;
for i in 0..12 {
let sum = m.romoppvarming[i]
+ m.ventilasjonsvarme[i]
+ m.varmtvann[i]
+ m.kjoling[i]
+ m.vifter_pumper[i]
+ m.belysning[i]
+ m.utstyr[i];
w.write_record([
m.maaned[i].to_string(),
format!("{:.1}", m.utetemperatur[i]),
format!("{:.0}", m.romoppvarming[i]),
format!("{:.0}", m.ventilasjonsvarme[i]),
format!("{:.0}", m.varmtvann[i]),
format!("{:.0}", m.kjoling[i]),
format!("{:.0}", m.vifter_pumper[i]),
format!("{:.0}", m.belysning[i]),
format!("{:.0}", m.utstyr[i]),
format!("{sum:.0}"),
])?;
}
w.flush()?;
Ok(())
}