Energiberegning etter NS 3031:2025 med timesmetode og energirapport
enok leser en bygningsbeskrivelse i TOML, henter typisk klimaår for kommunen, simulerer 8760 timer etter NS-EN ISO 52016-1 og skriver energirapport, CSV og JSON. Motor - Femnodemodell for opake bygningsdeler, tonodemodell for vinduer, luftnode og strålingsnode per sone, implisitt løsning per time med egen tett LU-løser. - Varme- og kjølebehov ved eksakt interpolasjon mellom to løsninger, siden systemet er lineært. Vinduslufting for bygninger uten kjøleanlegg. - Solberegning etter ISO 52010-1, kontrollert mot pvlib med avvik under 1 prosent. Beregningsgang - Beregningspunktene A til E: netto, brutto, tilført, levert per energibærer og vektet levert energi, med solceller, klimakorrigering og effektbehov. - Energikarakter etter Enovas skala fra 1.1.2026, med arealkorreksjon. Inndata - TOML med scenarier for tiltak, og import fra IFC, gbXML og regneark. - Normerte verdier, karakterskala, vektingsfaktorer og klimadata i data/, som kan overstyres med --data. Kontroll - Stasjonært varmetap mot U·A·ΔT innenfor 2 prosent, energibalansen innenfor 2 prosent, varmetapsbudsjettet for TEK17-referansebygget identisk med publisert tabell. Kjent avvik i romoppvarming mot Simien 8 er dokumentert i README. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
This commit is contained in:
51 files changed
+10309
No files matched your search
@@ -0,0 +1,43 @@
|
||||
//! 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,
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user