//! Klimakorrigering av beregnet energiytelse til referanseklima (Oslo). //! //! NS 3031:2025 fjernet normert Oslo-klima fra selve beregningen og innførte i stedet //! klimakorrigeringsfaktorer: `EP_NORM = EP_LOK / KF`, der korrigeringen gjelder de //! klimaavhengige energipostene (romoppvarming, ventilasjonsvarme, romkjøling, //! ventilasjonskjøling). Øvrige poster er uendret. use crate::data::Klimakorreksjon; use crate::modell::Kategori; /// Resultat av klimakorrigering for én bygning. #[derive(serde::Serialize, Clone, Debug)] pub struct Korrigering { pub sted: String, pub faktor: f64, /// Klimaavhengige poster før korrigering, kWh/m². pub klimaavhengig_lokalt: f64, /// Klimaavhengige poster etter korrigering, kWh/m². pub klimaavhengig_normert: f64, } impl Korrigering { /// Korrigerer en total energiytelse: trekker ut de klimaavhengige postene, deler på KF, /// og legger dem tilbake. pub fn korriger_total(&self, total_lokalt: f64) -> f64 { total_lokalt - self.klimaavhengig_lokalt + self.klimaavhengig_normert } } pub fn korriger( tabell: &Klimakorreksjon, sted: &str, kategori: Kategori, klimaavhengig_lokalt: f64, ) -> Option { let faktor = tabell.faktor(sted, kategori)?; Some(Korrigering { sted: sted.to_string(), faktor, klimaavhengig_lokalt, klimaavhengig_normert: klimaavhengig_lokalt / faktor, }) }