//! 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(()) }