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
234 lines
9.6 KiB
Markdown
234 lines
9.6 KiB
Markdown
# enok
|
||
|
||
Årlig energiberegning og energirapport for bygninger etter **NS 3031:2025**, med
|
||
timesoppløsning gjennom hele året og energikarakter etter Enovas skala som gjelder fra
|
||
1. januar 2026.
|
||
|
||
Programmet tar en beskrivelse av bygningen — geometri, konstruksjoner, vinduer, ventilasjon,
|
||
varmekilder og drift — og et typisk klimaår, og gir 8760 timesverdier, et fullt energibudsjett
|
||
fra netto energibehov til vektet levert energi, en energikarakter og en ferdig rapport i PDF.
|
||
|
||
```
|
||
enok beregn bygninger/nordhusstykket-5.toml
|
||
```
|
||
|
||
```
|
||
Nordhusstykket 5 (Småhus, 140 m², byggeår 1948)
|
||
Klimadata: Indre Østfold
|
||
|
||
Varmetapstall 3,00 W/(m²K)
|
||
Netto energibehov 351,2 kWh/(m²·år)
|
||
Levert energi 327,6 kWh/(m²·år)
|
||
Vektet levert energi 327,6 kWh/(m²·år)
|
||
Energikarakter F
|
||
|
||
Tiltak:
|
||
Isolerte varmerør og kjellervegger 310,9 kWh/(m²·år) F
|
||
Nye vinduer 304,9 kWh/(m²·år) E
|
||
Etterisolert klimaskjerm 205,6 kWh/(m²·år) D
|
||
Væske-vann-varmepumpe 162,3 kWh/(m²·år) C
|
||
Full pakke 67,9 kWh/(m²·år) A
|
||
```
|
||
|
||
## Hva programmet gjør
|
||
|
||
**Beregningsmetode.** Dynamisk timesberegning etter NS-EN ISO 52016-1, slik NS 3031:2025
|
||
krever. Hver opake bygningsdel modelleres med fem noder der varmekapasiteten fordeles etter
|
||
masseplassering, vinduer med to noder, og sonen har en luftnode og en strålingsnode som
|
||
fordeler langbølget utveksling mellom innvendige overflater. Systemet løses implisitt for hver
|
||
time. Varme- og kjølebehovet bestemmes ved å løse uten tilført effekt og med en prøveeffekt;
|
||
siden systemet er lineært treffer interpolasjonen settpunktet nøyaktig.
|
||
|
||
**Beregningspunkter.** Budsjettet følger NS 3031:2025 fra A til E: netto energibehov,
|
||
brutto etter distribusjons- og akkumuleringstap, tilført energi etter systemvirkningsgrad og
|
||
årsvarmefaktor for hver varmekilde, levert energi per energibærer med fradrag for
|
||
egenprodusert solstrøm, og til slutt vektet levert energi.
|
||
|
||
**Energikarakter.** Vektet levert energi per kvadratmeter oppvarmet BRA slås opp i Enovas
|
||
skala, med arealkorreksjonen som gjelder for småhus og boligblokk. Vektingsfaktorene er
|
||
elektrisitet 1,0, fjernvarme og biobrensel 0,45, eksportert energi 0. Vedovn regnes å dekke
|
||
inntil 10 prosent av romoppvarmingen.
|
||
|
||
**Klimadata.** Timesverdier for alle norske kommuner fra datasettet som ble laget til
|
||
NS 3031:2025 (CERRA 1991–2020, CC-BY-4.0). Beregnes bygningen i lokalt klima, korrigeres de
|
||
klimaavhengige energipostene til referanseklima Oslo med klimakorrigeringsfaktorene fra
|
||
standardens tillegg, slik energimerkeforskriften krever. Arkivet lastes ned én gang og
|
||
hurtiglagres.
|
||
|
||
**Tiltak.** Scenarier i samme fil gir før-og-etter-tall og karakterer i én tabell.
|
||
|
||
## Installasjon
|
||
|
||
```sh
|
||
cargo install --path .
|
||
```
|
||
|
||
Typst må være installert for PDF-rapporten. Uten Typst kjører du med `--ingen-pdf`; da skrives
|
||
`rapport.typ` som du kan kompilere senere.
|
||
|
||
## Bruk
|
||
|
||
| Kommando | Hva den gjør |
|
||
| --- | --- |
|
||
| `enok beregn FIL.toml` | Beregner og skriver rapport, CSV og JSON til `ut/<navn>/` |
|
||
| `enok import FIL` | Leser IFC, gbXML eller regneark og skriver `bygning.toml` |
|
||
| `enok klima --liste` | Lister alle kommuner med klimadata |
|
||
| `enok klima --kommune Oslo` | Viser nøkkeltall for ett klimasted |
|
||
| `enok skala smaahus --areal 140` | Viser karakterskalaen med arealkorreksjon |
|
||
|
||
Nyttige valg til `beregn`: `--ingen-pdf`, `--ingen-timeserie`, `--enova-xml`,
|
||
`--uten-scenarier`, `--ut KATALOG`.
|
||
|
||
### Utdata
|
||
|
||
| Fil | Innhold |
|
||
| --- | --- |
|
||
| `rapport.pdf` | Energirapport med karakter, varmetapsbudsjett, energibudsjett og figurer |
|
||
| `rapport.typ`, `stil.typ` | Typst-kilde, slik at rapporten kan tilpasses |
|
||
| `resultat.json` | Hele resultatet, inkludert forutsetninger og månedsverdier |
|
||
| `timeserie.csv` | 8760 rader med temperaturer, laster, sol og energistrømmer |
|
||
| `maaned.csv` | Månedssummer |
|
||
| `enova-2014.xml` | XML for energimerkesystemet, med `--enova-xml` |
|
||
|
||
## Bygningsbeskrivelsen
|
||
|
||
En bygning beskrives i TOML. Alt som utelates fylles med normerte verdier for
|
||
bygningskategorien, eller med typiske verdier for byggeåret, og rapporten viser hva som er
|
||
antatt og hvor det kommer fra.
|
||
|
||
```toml
|
||
[bygning]
|
||
navn = "Nordhusstykket 5"
|
||
kategori = "smaahus"
|
||
byggeaar = 1948
|
||
oppvarmet_bra = 140.0
|
||
|
||
[klima]
|
||
kommune = "Indre Østfold"
|
||
|
||
[[flate]]
|
||
navn = "Yttervegg sør"
|
||
type = "vegg"
|
||
areal = 26.0
|
||
orientering = 180 # grader fra nord med klokka
|
||
u_verdi = 1.0 # eller `lag = [{ materiale = "tre", tykkelse = 0.02 }, …]`
|
||
masseklasse = "lett"
|
||
mot = "ute" # ute | grunn | uoppvarmet
|
||
|
||
[[vindu]]
|
||
navn = "Vinduer sør"
|
||
areal = 6.0
|
||
orientering = 180
|
||
u_verdi = 2.80
|
||
g_verdi = 0.76
|
||
|
||
[infiltrasjon]
|
||
n50 = 8.0
|
||
|
||
[ventilasjon]
|
||
type = "naturlig" # naturlig | avtrekk | balansert
|
||
|
||
[[oppvarming.kilde]]
|
||
type = "el_kjel" # direkte_el, luft_luft_vp, vaeske_vann_vp, vedovn, fjernvarme, …
|
||
andel_rom = 0.75
|
||
andel_tappevann = 1.0
|
||
|
||
[[scenario]]
|
||
navn = "Nye vinduer"
|
||
endringer.vindu = [{ navn = "Vinduer sør", u_verdi = 0.80, g_verdi = 0.50 }]
|
||
```
|
||
|
||
Scenarier flettes inn i bygningsbeskrivelsen: tabeller flettes rekursivt, elementer i lister
|
||
matches på `navn` eller `type`, nye elementer legges til, og `slett = true` fjerner et element.
|
||
|
||
Ferdige eksempler ligger i `eksempler/`.
|
||
|
||
## Import fra Vectorworks og andre BIM-verktøy
|
||
|
||
| Format | Slik henter du det | Hva som kommer med |
|
||
| --- | --- | --- |
|
||
| IFC | *Fil → Eksporter → Export IFC Project* | Flater, areal, U-verdier fra egenskapssett, himmelretning fra plassering, vinduer og dører koblet til vegg |
|
||
| gbXML | Verktøy som eksporterer gbXML | Rom, flater, åpninger, konstruksjoner med lag |
|
||
| Regneark | *Fil → Eksporter → Export Worksheet* | Enkel CSV med én rad per bygningsdel |
|
||
|
||
Himmelretningene i IFC utledes av elementenes plassering: veggens lokale akse gir planet, og
|
||
ytre normal velges som den som peker bort fra bygningens tyngdepunkt, korrigert for prosjektets
|
||
sanne nord. Kontroller dem mot tegningen etter import.
|
||
|
||
Ingen av formatene beskriver ventilasjon, lekkasjetall eller varmekilder. Importen skriver
|
||
merknader øverst i TOML-filen om hva som må fylles ut.
|
||
|
||
Regnearkformatet er bevisst enkelt, slik at det kan settes opp som en rapport i BIM-verktøyet:
|
||
|
||
```csv
|
||
type,navn,areal,u_verdi,orientering,helning,mot,g_verdi,antall
|
||
bygning,Nordhusstykket 5,140,,,,smaahus,1948,
|
||
vegg,Yttervegg sør,26,1.0,180,90,ute,,
|
||
gulv,Mot kjeller,98,0.8,,180,uoppvarmet,,
|
||
vindu,Stue sør,3.0,2.8,180,90,,0.76,2
|
||
```
|
||
|
||
## Rapporter fra byggeserveren
|
||
|
||
`.gitea/workflows/rapport.yml` bygger rapporter for alle bygningene i `bygninger/` og legger
|
||
PDF, JSON og CSV ved utgivelsen når du setter en tagg som begynner med `v` eller `rapport-`.
|
||
IFC-, gbXML- og CSV-filer importeres automatisk til TOML dersom det ikke allerede finnes en
|
||
TOML-fil med samme navn. Se `bygninger/LES-MEG.md`.
|
||
|
||
## Kontroll av beregningen
|
||
|
||
Motoren er kontrollert mot uavhengige referanser:
|
||
|
||
| Kontroll | Resultat |
|
||
| --- | --- |
|
||
| Solinnstråling på skrå og orienterte flater, mot pvlib (Hay–Davies) | avvik under 1 % for alle himmelretninger i Oslo-klima |
|
||
| Stasjonært varmetap mot U·A·ΔT | innenfor 2 % |
|
||
| Årlig energibalanse | går opp innenfor 2 % |
|
||
| Varmebehov som funksjon av temperaturdifferanse | eksakt lineært |
|
||
| Varmetapsbudsjett for TEK17-referansebygget | identisk med publisert tabell, 0,69 W/(m²K) |
|
||
| Normerte energiposter for småhus | varmtvann 25,1, belysning 11,4, teknisk utstyr 17,5 kWh/(m²·år) |
|
||
|
||
### Kjent avvik
|
||
|
||
Standard Norges lanseringseksempel for NS 3031:2025 oppgir 46,2 kWh/(m²·år) romoppvarming og
|
||
106,4 kWh/(m²·år) netto energibehov for TEK17-referansebygget beregnet med Simien 8. enok
|
||
beregner 24,7 og 84,1 for den samme bygningen.
|
||
|
||
Varmetapsbudsjettet, de normerte energipostene, solinnstrålingen og energibalansen stemmer
|
||
hver for seg, så avviket ligger i hvor stor del av solvarmen som nyttiggjøres. NS 3031:2025
|
||
Tillegg A er ikke offentlig tilgjengelig, så de normerte solfaktorene, skjermingsforutsetningene
|
||
og timesprofilene Simien bruker, lar seg ikke etterprøve her. `tests/referansebygg.rs` låser
|
||
dagens verdier slik at endringer i motoren blir synlige, og oppdateres når standardens
|
||
forutsetninger er tilgjengelige.
|
||
|
||
Bruk derfor tallene til å sammenligne tiltak mot hverandre og til å se hvor varmen forsvinner.
|
||
Til en energiattest som skal leveres til Enova må resultatet kontrolleres mot et validert
|
||
beregningsprogram.
|
||
|
||
## Datagrunnlag
|
||
|
||
Alle normerte verdier ligger i `data/` og kan overstyres med `--data KATALOG`.
|
||
|
||
| Fil | Innhold og kilde |
|
||
| --- | --- |
|
||
| `skala.toml` | Energikarakterskalaen fra 1.1.2026, Enova SF via Multiconsult-notatet «Grunnlag for ny energikarakterskala», 19.12.2025 |
|
||
| `vekting.toml` | Vektingsfaktorer etter energimerkeforskriften § 10a med NVEs veileder |
|
||
| `normerte/*.toml` | Normerte laster, driftstider og settpunkt. Utgangspunktet er NS 3031:2014 Tillegg A; varmtvann er oppdatert til NS 3031:2025-verdien for småhus. Timesprofiler fra NS 3031:2025 kan legges inn i `profil_*`-feltene |
|
||
| `varmepumpe_spf.toml` | Veiledende årsvarmefaktorer, NS 3031:2014 tabell B.9-3 |
|
||
| `materialer.toml` | Materialdata og typiske U-verdier per byggeperiode |
|
||
| `klimakorreksjon.csv` | Klimakorrigeringsfaktorer, Standard Norge SN/K 34, doi 10.5281/zenodo.15041587 |
|
||
|
||
Klimadata: «TMY files for Norway based on CERRA data from 1991-2020», doi
|
||
10.5281/zenodo.14779899, CC-BY-4.0.
|
||
|
||
## Regelverk
|
||
|
||
- Forskrift om energimerking av bygninger og energivurdering av varme- og klimaanlegg,
|
||
§§ 10a og 10b, med NVEs veileder
|
||
- NS 3031:2025 *Bygningers energiytelse — Beregning av energi- og effektbehov*
|
||
- NS-EN ISO 52016-1:2017 og NS-EN ISO 52010-1:2017
|
||
|
||
## Lisens
|
||
|
||
MIT.
|