Har filen en terrengmodell, gir den hver kjellervegg sin egen høyde over bakken, hentet som
snittet av de nærmeste terrengpunktene der veggen står. En skrånende tomt gir dermed
forskjellig høyde på hver side av huset, og `over_terreng` trenger ikke settes for hånd.
Terrengmodellen går foran terrenghøyden på IfcBuilding, som ofte står lik gulvet i første
etasje og da ikke sier noe.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
Kolonnen «Kilde» i forutsetningstabellen fikk for liten plass, fordi de to første kolonnene
tok det de ville. Kolonnene har nå faste bredder, og tabellen leses på én linje per rad.
En ny [rapport]-tabell i bygningsbeskrivelsen setter logo, aksentfarge, avsenderlinje og
skrift for overskrifter, slik at energirapporten kan se ut som firmaets øvrige rapporter.
Logoen kopieres til utdatakatalogen; mangler filen, lages rapporten uten den.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
Noen eksporter legger de samme veggene og dekkene i flere etasjer, og gir dem feil etasje.
Kopiene telles nå én gang, og den kopien som ligger i den etasjen høyden tilsier, er den som
regnes med. Vinduer i en kopi finner fortsatt veggen sin.
Klassifiseringen bruker høyden fra geometrien i stedet for etasjetilknytningen, som kan være
feil: et dekke mot grunnen kjennes på at det ligger nederst eller heter noe med «på grunn»,
og et dekke rett over kjelleren på høyden. Importen sier også hvilke deler som ikke er regnet
med i klimaskjermen, og en terrengmodell som ligger over gulvet i første etasje, forkastes.
Rapporten viser nå enok-versjonen og datoen den er laget.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
«enok beregn modell.ifc» leser modellen, fletter inn en eventuell tilleggsfil og skriver
bygningsbeskrivelsen den kom fram til, i utdatakatalogen, slik at beregningen kan etterprøves.
Importen sier nå hvilke bygningsdeler som mangler U-verdi, ikke bare hvor mange. Vinduer og
dører uten U-verdi i modellen får en typisk verdi for byggeåret, slik flatene alltid har fått,
i stedet for faste 2,4 og 2,0 W/(m²K).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
«enok import modell.ifc --tillegg prosjekt.toml» fletter inn det modellen ikke beskriver,
som varmeanlegg og tiltak, og rettelser der den mangler noe. Tilleggsfilen kan holde rom
utenfor oppvarmet BRA, og et navn med «*» treffer alle elementer det passer på, også i
scenarioer.
Importen er nå deterministisk: entitetene leses i fast rekkefølge, helningen arealvektes
når flater slås sammen, og skrå tak får alltid normalen oppover. Vegger får himmelretningen
i navnet, slik at tilleggsfiler kan vise til dem.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
enok er et offentlig lager. Eksempelfilen, testene og README inneholdt navn og
adresse til en privat kunde, og navnet på modellen fra kundeprosjektet. Eksemplet
heter nå «Eldre enebolig med kjeller» uten adresse eller oppdragsgiver, og testene
bruker oppdiktede adresser og navn.
Opplysningene finnes fortsatt i tidligere commits i historikken.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
En ny eksport av Nordhusstykket 5 viste hva mer modellen kan bære, og avdekket feil.
Posisjon og klimasted
- IfcMapConversion med IfcProjectedCRS gjøres om til breddegrad og lengdegrad.
EUREF89 og WGS 84 UTM, NN2000-varianter og Web Mercator forstås. Omregningen er
kontrollert mot PROJ.
- Vectorworks' standardplassering i Washington, som står når ingenting er satt,
kjennes igjen og brukes ikke.
- Ny `posisjon` under [klima]. Uten kommune velger beregningen nærmeste av de 358
klimastedene i TMY-arkivet, og sier i rapporten hvor langt unna det ligger.
Opplysninger fra modellen
- Adressen hentes fra IfcBuilding eller IfcSite. Før ble den første postadressen i
filen brukt, og det var firmaets adresse i forfatteropplysningene.
- Energirådgiver fra person og organisasjon i forfatteropplysningene.
- Byggets navn fra prosjektet når bygningen heter «Default Building».
- Referansehøyde og terrenghøyde på bygningen gir hvor mye av grunnmuren som står
over bakken.
- IsLandmarked gir en merknad om at vernede bygninger er unntatt energiattestplikten.
En eksport uten bygningsdeler stopper nå med en feilmelding som peker på
lagtilknytningen i eksportdialogen, i stedet for å skrive en tom bygning.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
Modellen for Nordhusstykket 5 viste seg å inneholde langt mer enn importen brukte.
Etasjer
- IfcBuildingStorey med høyde og navn, og tilknytningen av rom og bygningsdeler, sier
hva som er hva. Etasjen «Kjeller» ligger 2,35 m under referansenivået.
- En etasje under terreng settes nå opp som en egen uoppvarmet sone med sine egne
vegger og gulv, og dekket over blir grensen mot den oppvarmede delen.
- Oppvarmet BRA er rommene i etasjene over terreng. Rom som heter kott, bod, loft
eller garasje blir flagget, siden de sjelden er oppvarmet.
- Et dekke kan bare ligge mot grunnen i nederste etasje. Før ble etasjeskillere høyere
opp regnet som gulv mot grunn.
Egenskaper
- Byggeår, bygningskategori, kommune, lekkasjetall, ventilasjonstype, varmegjenvinning,
varmekilde og oppvarmet BRA leses fra et hvilket som helst egenskapssett på bygningen,
tomta eller prosjektet, på norsk eller engelsk. Da kan et postformat i BIM-verktøyet
bære de opplysningene IFC ikke har noen fast plass til.
- Modellen viste seg allerede å ha YearOfConstruction 1950. Bare den ene verdien flytter
den automatiske beregningen fra karakter E til G, siden lekkasjetallet følger byggeåret.
- Masseklasse utledes av materialnavnene, og posisjonen leses av IfcSite.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
Importen er prøvd mot en virkelig IFC-fil fra Vectorworks Architect 2026 og
avdekket tre feil og ett hull.
IFC-import
- Lengdeenheten hentes nå gjennom prosjektets enhetsoppsett. Filen inneholder to
lengdeenheter, og oppslaget traff tilfeldig den ene.
- Arealer regnes av geometrien, siden modellen ikke har mengder for vegger og dekker.
Trekantene grupperes etter retning, og den største gruppen er delens hovedflate.
Metoden gir riktig areal også når vinduer er skåret ut av veggen.
- Materialsjikt eksporteres som hver sin geometridel. Deler som ligger i samme plan
og overlapper hverandre telles én gang, ellers ble en vegg talt sju ganger.
- Himmelretningen følger flatenormalen i stedet for et anslag ut fra tyngdepunktet.
- Flater med samme konstruksjon og himmelretning slås sammen, og rommene listes
med areal, siden IFC ikke sier hvilke som er oppvarmet.
Grunnen og kjelleren
- Flater mot grunnen regnes etter NS-EN ISO 13370. En kjellervegg deles i en del over
terreng og en nedgravd del, etter høydene `over_terreng` og `dybde`.
- Uoppvarmede soner får egen temperatur time for time etter NS-EN ISO 13789, med
varmetilskudd fra distribusjonstap og beredere som står der. Uisolerte varmerør i
en kjeller teller dermed både som tap og som varme som holder etasjeskilleren varm.
- Varmetapsbudsjettet oppgir konstruksjonens egen U-verdi, slik NS 3031 Tabell 3 og
energikravene i TEK er formulert, mens timesberegningen bruker grunnens demping.
Nordhusstykket 5 er modellert av IFC-geometrien med kjelleren som egen sone.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
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