43 lines
1.4 KiB
Rust
43 lines
1.4 KiB
Rust
//! 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<Korrigering> {
|
||
|
|
let faktor = tabell.faktor(sted, kategori)?;
|
||
|
|
Some(Korrigering {
|
||
|
|
sted: sted.to_string(),
|
||
|
|
faktor,
|
||
|
|
klimaavhengig_lokalt,
|
||
|
|
klimaavhengig_normert: klimaavhengig_lokalt / faktor,
|
||
|
|
})
|
||
|
|
}
|