Legg til barnehage, kontor-, skole-, idretts- og kulturbygg
Driftstidene har nå dager per uke og uker per år, og lastene gjelder bare på driftsdager. Normerte verdier for de nye kategoriene er hentet fra publiserte Simien-utskrifter og DiBK-utredninger og kontrollert mot energibudsjettene i de samme kildene. Boligblokk har fått egne verdier i stedet for en kopi av småhus. Balanserte anlegg kan ha kjølebatteri, og varmegjenvinneren reguleres ned når den ellers ville varmet tilluften over settpunktet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
This commit is contained in:
+22
-11
@@ -188,17 +188,20 @@ pub fn simuler(l: &Lost, v: &Vaerdata, tilskudd: Systemtilskudd) -> Result<Times
|
||||
}
|
||||
for t in timer {
|
||||
let klokke = t % 24;
|
||||
let driftsdag = l.laster.driftsdag(t);
|
||||
let t_ute = v.t_ute[t];
|
||||
let t_himmel = sol::himmeltemperatur(v, t);
|
||||
|
||||
// ── laster ──────────────────────────────────────────────
|
||||
let bel = l.laster.belysning[klokke] * l.bra;
|
||||
let utstyr_el = l.laster.utstyr_effekt[klokke] * l.bra;
|
||||
let utstyr_varme = l.laster.utstyr_varme[klokke] * l.bra;
|
||||
let personer = l.laster.personer[klokke] * l.bra;
|
||||
let vv = l.laster.varmtvann[klokke] * l.bra;
|
||||
let pumper = l.laster.pumper[klokke] * l.bra;
|
||||
let vifter = ventilasjon::vifteeffekt(l, klokke);
|
||||
// Lastprofilene gjelder driftsdager; på andre dager er bygningen ute av bruk.
|
||||
let skala = if driftsdag { l.bra } else { 0.0 };
|
||||
let bel = l.laster.belysning[klokke] * skala;
|
||||
let utstyr_el = l.laster.utstyr_effekt[klokke] * skala;
|
||||
let utstyr_varme = l.laster.utstyr_varme[klokke] * skala;
|
||||
let personer = l.laster.personer[klokke] * skala;
|
||||
let vv = l.laster.varmtvann[klokke] * skala;
|
||||
let pumper = l.laster.pumper[klokke] * skala;
|
||||
let vifter = ventilasjon::vifteeffekt(l, t);
|
||||
// Vifteeffekten ender som varme i lufta (ISO 52016-1: hele SFP-effekten).
|
||||
let internlast = bel + utstyr_varme + personer + tilskudd.tappevann + vifter;
|
||||
|
||||
@@ -211,21 +214,28 @@ pub fn simuler(l: &Lost, v: &Vaerdata, tilskudd: Systemtilskudd) -> Result<Times
|
||||
}
|
||||
|
||||
// ── ventilasjon ─────────────────────────────────────────
|
||||
let q_vent = ventilasjon::luftmengde(l, klokke);
|
||||
let q_vent = ventilasjon::luftmengde(l, t);
|
||||
let h_ve = q_vent * RHO_C_LUFT;
|
||||
let t_sup_hx = ventilasjon::tilluftstemperatur(l, t_ute, t_a_forrige);
|
||||
let (t_sup, vent_varme) =
|
||||
let kjol_tilluft = l
|
||||
.ventilasjon
|
||||
.tilluft_kjoling
|
||||
.filter(|&k| ventilasjon::i_drift(l, t) && t_sup_hx > k);
|
||||
let (t_sup, vent_varme, vent_kjol) =
|
||||
if l.ventilasjon.varmebatteri && t_sup_hx < l.ventilasjon.tilluft_settpunkt {
|
||||
(
|
||||
l.ventilasjon.tilluft_settpunkt,
|
||||
h_ve * (l.ventilasjon.tilluft_settpunkt - t_sup_hx),
|
||||
0.0,
|
||||
)
|
||||
} else if let Some(k) = kjol_tilluft {
|
||||
(k, 0.0, h_ve * (t_sup_hx - k))
|
||||
} else {
|
||||
(t_sup_hx, 0.0)
|
||||
(t_sup_hx, 0.0, 0.0)
|
||||
};
|
||||
|
||||
// ── settpunkt ───────────────────────────────────────────
|
||||
let sett_varme = if l.laster.oppvarming_driftstid.aktiv(klokke) {
|
||||
let sett_varme = if driftsdag && l.laster.driftstider.oppvarming.aktiv(klokke) {
|
||||
l.settpunkt_oppvarming
|
||||
} else {
|
||||
l.settpunkt_natt
|
||||
@@ -339,6 +349,7 @@ pub fn simuler(l: &Lost, v: &Vaerdata, tilskudd: Systemtilskudd) -> Result<Times
|
||||
ts.romoppvarming[t] = fi.max(0.0);
|
||||
ts.romkjoling[t] = (-fi).max(0.0);
|
||||
ts.ventilasjonsvarme[t] = vent_varme;
|
||||
ts.ventilasjonskjoling[t] = vent_kjol;
|
||||
ts.varmtvann[t] = vv;
|
||||
ts.vifter[t] = vifter;
|
||||
ts.pumper[t] = pumper;
|
||||
|
||||
Reference in New Issue
Block a user