NandradSolver: der Rechenkern von VICUS Buildings

Wie löst eine dynamische Gebäudesimulation eigentlich? Von der Energiebilanz über ydot, Abhängigkeitsgraph und CVODE bis zu Newton-Iteration und linearem Gleichungssystem — interaktiv erklärt.

Das lernen Sie in diesem Artikel:

  • Warum der Solver Energie bilanziert und nicht direkt Temperatur
  • Wie aus einer Bilanzgleichung die Änderungsrate `ydot` wird — und wie ein ganzes Gebäude daraus entsteht
  • Was die drei geschachtelten Schleifen (Zeit → Newton → LES) bedeuten
  • Warum Gebäudesimulationen implizit rechnen (Steifigkeit) und was das kostet
Inhaltsverzeichnis

Jede dynamische Gebäudesimulation steht und fällt mit ihrem Rechenkern — dem Stück Software, das aus Geometrie, Bauteilen, Wetter und Nutzung einen physikalisch belastbaren Temperatur- und Lastverlauf macht. Bei VICUS Buildings ist dieser Kern NANDRAD, ein an der TU Dresden in über 20 Jahren Forschung gereifter Simulationslöser. Dieser Artikel öffnet die Motorhaube: Er zeigt Schritt für Schritt, was der NandradSolver rechnet und wie er es tut — von der physikalischen Bilanzgleichung über die Zeitintegration bis zum linearen Gleichungssystem im Inneren.

Sie müssen dafür keine Numerik studiert haben. Die zentrale Idee lässt sich in einem Satz sagen und mit den interaktiven Demos weiter unten selbst „durchkurbeln”.

Die Grundidee in einem Satz

Der Solver beschreibt das Gebäude (und gegebenenfalls ein Rohrnetz) als ein großes System gekoppelter gewöhnlicher Differentialgleichungen und integriert dieses System Zeitschritt für Zeitschritt durch die Zeit. Das Herzstück ist immer dieselbe Frage:

„Wie schnell ändert sich die gespeicherte Energie in jedem Raum und in jeder Wandschicht?”

Kennt man diese Änderungsrate, kann man einen kleinen Schritt in die Zukunft gehen, die neuen Temperaturen berechnen und das Spiel von vorne beginnen. In Vektorschreibweise — und genau so „sieht” es der Zeitintegrator — lautet das:

dydt=ydot(t,y)\frac{d\mathbf{y}}{dt} = \texttt{ydot}(t,\,\mathbf{y})

Dabei ist y\mathbf{y} der Zustandsvektor (eine lange Liste aller Erhaltungsgrößen), ydot\texttt{ydot} deren zeitliche Änderung und tt die Zeit.

Das Schema und drei Live-Demos

Die folgende interaktive Visualisierung fasst den gesamten Ablauf zusammen — und macht ihn anfassbar. Oben das Funktionsschema mit den drei geschachtelten Schleifen (fahren Sie über die Boxen, um die zugehörigen Quelldateien zu sehen; schalten Sie zwischen implizit und explizit um). Darunter drei Live-Demos, in denen Sie selbst an Zeitschritt, Netzfeinheit und Wärmetauscher-Parametern drehen und die Stabilitätsgrenze finden können.

Wie der NandradSolver rechnet

Vom Gebäudemodell zur Lösung – drei geschachtelte Schleifen & der y→ẏ-Datenfluss
$\dfrac{d\mathbf{y}}{dt} = \texttt{ydot}(t,\,\mathbf{y})$

So liest du diese Visualisierung — vom Überblick zu immer stärker gekoppelten Gleichungssystemen: So liest du diese Visualisierung — von einer einzelnen Gleichung zu vielen, die zusammenhängen:

SchemaÜberblick: die drei geschachtelten SchleifenÜberblick, wie der Solver arbeitet
Raumeine ODE — ein Zustandeine Gleichung — ein Raum kühlt aus
Wandeine PDE → N gekoppelte ODEsviele Gleichungen — Wärme wandert durch die Wand
Wärmetauscher2N gekoppelte ODEs, zwei Strömezwei Flüssigkeiten tauschen Wärme
📖 Begriffe in einem Satz (jederzeit nachschlagen)
$\mathbf{y}$ — ZustandListe aller Erhaltungsgrößen (innere Energie jeder Zone & Wandschicht).die lange Liste aller Temperaturen/Energien, die sich über die Zeit ändern.
$\dot{\mathbf{y}}$ = ydot — Änderungsratedie Ableitung dy/dt: wie schnell sich jeder Zustand ändert.wie schnell sich gerade alles ändert (die Steigung).
Bilanzd(Energie)/dt = Σ Zuflüsse − Σ Abflüsse — woher jede Gleichung kommt.was reinkommt minus was rausgeht.
$F$ — Residuum$F=y-y_n-dt\,\texttt{ydot}(y)$; null, wenn der neue Zustand stimmt.wie weit ein Rateversuch noch danebenliegt (0 = richtig).
$J$ — Jacobi-Matrix$\partial F/\partial y$: wie F auf kleine Änderungen jedes Zustands reagiert.Empfindlichkeits-Tabelle: welche Stellschraube wirkt wie stark.
$\Delta y$ — Korrekturder Newton-Schritt, der den Rateversuch verbessert.um wie viel der Rateversuch korrigiert wird.
LESlineares Gleichungssystem $J\,\Delta y=-F$, einmal je Newton-Iteration.das Gleichungssystem, das die Korrektur ausrechnet.
NewtonIteration, die die nichtlineare implizite Gleichung $F(y)=0$ löst.schrittweises Annähern an die richtige Lösung.
BDF-Ordnung (1–5)Genauigkeitsgrad des impliziten Verfahrens; höher → größere Schritte.wie „schlau" der Solver schätzt — höher = größere Zeitschritte.
Steifigkeitsehr schnelle und sehr langsame Vorgänge zugleich (Luft vs. Wände).Schnelles und Träges gleichzeitig → explizit braucht Mini-Schritte.
$r$ (Fourier-Zahl)$r=\alpha\,dt/\Delta x^2$; explizit stabil nur für $r\le\tfrac12$.Maß für die Schrittgröße im Netz — zu groß → explizit explodiert.
NTU · C_rWärmetauscher: NTU = UA/Ċ_min (Größe), C_r = Ċ_min/Ċ_max (Stromverhältnis).Wärmetauscher: NTU = wie „groß", C_r = wie ungleich die beiden Ströme.
Programmstart
Initialisierung Modelle & Graph aufbauen, y₀ setzen
① Zeitschleife while t < t_end
wähle dt · t → t+dt
Zeitschritt rechnen
BDF, Ordnung 1–5 · adaptive Schrittweite + Fehlerkontrolle
② Newton-Iteration löse F(y)=0
② + ③ entfallen bei explizit — $y_{n+1} = y_n + dt\cdot\texttt{ydot}(t_n, y_n)$
↳ in jeder Iteration wird ydot(t, y) ausgewertet — der Gebäude-Datenfluss in 3 Stufen
Head · zuerst

Zustand → Temperatur

Energie y „auspacken“

  • Räume
  • Konstruktionen
  • Netzwerke
Mitte · Graph

Flüsse berechnen

Physik bei bekannter T

  • Wärmeleitung, Solar
  • Lüftung, int. Lasten
  • HVAC, Netzwerk
Tail · zuletzt

Σ Flüsse → ẏ

Bilanz schließen

  • Räume
  • Konstruktionen
  • Netzwerke
↳ aus ẏ baut Newton beide Bestandteile des LES:
Residuum $F = y - y_n - dt\,\dot y$  →  rechte Seite $-F$
Jacobi $J = I - dt\,\dfrac{\partial \dot y}{\partial y}$  →  Koeffizientenmatrix des GLS — das $A$ in $A\,\Delta y = b$
③ Lineares Gleichungssystem (LES)
$J \cdot \Delta y = -F$  // J numerisch via Differenzenquotient + Sparsity
Direkt · dichte Matrix
Direkt · dünnbesetzt
Iterativ · Krylov
Iterativ · Krylov (Variante)
Newton-Konvergenz · ‖F‖ pro Iteration
Jede Iteration löst einmal das LES und verkleinert das Residuum ‖F‖ — meist nach 2–3 Schritten unter der Toleranz. So oft läuft Newton innerhalb eines Zeitschritts.
Schritt abschließen & ausgeben auf Ausgabezeitpunkte interpolieren
📄 Ausgabedateien
Ergebnis · Raumtemperatur über akzeptierte Zeitschritte
Erst wenn Newton konvergiert ist, gilt der Zeitschritt als akzeptiert — und liefert einen neuen, belastbaren Temperaturwert. Hier kühlt ein Raum von 22 °C Richtung 5 °C aus.
① Zeit (CVODE) ② Newton ③ LES Head: Energie→T Mitte: Flüsse Tail: Σ→ẏ

Schritt für Schritt: ein Raum kühlt aus

Das kleinste denkbare NANDRAD-Modell: eine Zone, eine Gleichung. Ein warmer Raum (22 °C) verliert Wärme an die kalte Außenluft (5 °C): $\dfrac{dT}{dt} = -\dfrac{T - T_\text{außen}}{\tau}$. Drücke Schritt und sieh zu, wie der Integrator sich durch die Zeit hangelt — und dreh an dt, um die Stabilitätsgrenze zu finden.

💡 Was du hier lernst Explizit-Euler folgt blind der Tangente: bei großem dt schießt die Lösung über T_außen hinaus und explodiert. Implizit bleibt stabil — kostet dafür Newton + LES. Bei diesem linearen Beispiel löst sich implizit sogar direkt (ohne Newton). Macht der Solver zu große Zeitschritte, „überschießt" das einfache Verfahren und rechnet Unsinn. Das stabile Verfahren bleibt ruhig — kostet aber mehr Aufwand pro Schritt. Tipp: dt über 6 h ziehen, dann zwischen Explizit/Implizit umschalten.
MethodeExplizit Euler
Zeit t0.00 h
Schritt #0
T (Solver)22.00 °C
T (exakt)22.00 °C
Fehler |Δ|0.00 K
① Head · y → T
② Mitte · Fluss
③ Tail · ẏ & Schritt

Probier’s: Schieb dt über 6 h (= 2τ) und mach Schritte mit Explizit Euler — die Lösung beginnt zu oszillieren und explodiert, obwohl der Raum physikalisch nur sanft auskühlt. Schalte auf Implizit Euler: dieselbe große Schrittweite bleibt stabil. Genau deshalb rechnet NANDRAD steife Gebäudemodelle implizit (CVODE).

Zweites Beispiel: Wärmeleitung durch eine Wand

Jetzt eine partielle Differentialgleichung — die Wärmeleitungsgleichung $\dfrac{\partial T}{\partial t} = \alpha\,\dfrac{\partial^2 T}{\partial x^2}$. Eine Wand (innen warm, außen kalt) wird in N Zellen zerlegt; jede Zelle bilanziert nur mit ihren Nachbarn. So wird aus einer PDE ein System aus N gekoppelten ODEs — genau NANDRADs Finite-Volumen-Wand, jede Schicht ein Eintrag in y. Dreh an N und sieh, warum feine Netze das explizite Verfahren in die Knie zwingen.

💡 Was du hier lernst Eine PDE wird durch räumliche Zerlegung zu N gekoppelten ODEs — so entstehen NANDRADs tausende Zustände. Feineres Netz (großes N) macht das Problem steif: explizit braucht winzige Schritte ($r\le\tfrac12$), implizit löst pro Schritt ein tridiagonales LES und bleibt stabil. Teilt man die Wand in viele Scheiben, wird aus einer Gleichung ein ganzes Bündel. Je feiner, desto kleiner muss der Zeitschritt beim einfachen Verfahren sein — sonst flackert die Lösung. Tipp: N hochschieben und eine Zelle anklicken — der Inspektor zeigt die Zahlen Schritt für Schritt.
← innen (22 °C)Wanddicke xaußen (5 °C) →
MethodeExplizit (FTCS)
Zeit t0.0 h
Schritt #0
Zustände (N)10
Δx21.8 mm
Fourier r = α·dt/Δx²0.31
// diskretisiert pro Zelle i:
$\dfrac{dT_i}{dt} = \dfrac{\alpha}{\Delta x^2}\,\bigl(T_{i-1} - 2T_i + T_{i+1}\bigr)$
// nur die direkten Nachbarn → tridiagonal
implizit → tridiagonales System, nur 3 Diagonalen besetzt:$$J=\begin{pmatrix} 1{+}2r & -r & & \\ -r & 1{+}2r & -r & \\ & -r & 1{+}2r & \ddots \\ & & \ddots & \ddots \end{pmatrix}$$Diese tridiagonale Matrix ist die Jacobi-Matrix — die Koeffizientenmatrix des LES.
🔬 Zelle 5 x = … mm Tipp: Zelle im Diagramm anklicken, dann Schritt drücken

Der Steifigkeits-Effekt: Schieb N hoch (feineres Netz, genauer!) — bei Explizit wächst r = α·dt/Δx² quadratisch, sprengt schnell die Grenze ½, und das Profil zittert und explodiert. Um stabil zu bleiben, müsstest du dt drastisch verkleinern. Implizit löst jeden Schritt ein tridiagonales Gleichungssystem (das LES!) und bleibt für jedes N und dt stabil. Genau deshalb diskretisiert NANDRAD Wände in viele Zellen und rechnet implizit.

Drittes Beispiel: Gegenstrom-Wärmetauscher

Zwei Fluidströme tauschen Wärme über eine Wand — heiß und kalt fließen gegeneinander. Entlang der Länge in N Segmente zerlegt, hat jedes Segment eine heiße und eine kalte Fluidtemperatur → 2N gekoppelte ODEs (Strömung + Wärmeübergang). Genau so diskretisiert NANDRAD Rohre und Wärmetauscher in thermischen Netzwerken. Vergleich Gegenstrom ↔ Gleichstrom und sieh den Wirkungsgrad ε.

💡 Was du hier lernst Zwei gegenläufige Ströme = 2N gekoppelte ODEs (Advektion + Wärmeübergang) — wie in NANDRADs thermischen Netzwerken. Gegenstrom ist effektiver als Gleichstrom; bei ungleichen Enthalpieströmen ändert der Strom mit kleinerem Ċ seine Temperatur stärker. Heiß und kalt fließen gegeneinander und tauschen Wärme. Gegenstrom holt mehr heraus als Gleichstrom. Wer „weniger Masse pro Zeit" hat, ändert seine Temperatur stärker. Tipp: Anordnung umschalten und NTU sowie das Ċ-Verhältnis variieren — ε vergleicht sich mit der Theorie.
AnordnungGegenstrom
Zeit t0 s
Ċ heiß : kalt418 : 418 W/K
C_r = C_min/C_max1.00
heiß ein → aus70.0 → 70.0 °C
kalt ein → aus15.0 → 15.0 °C
Wärmestrom Q0 W
ε (simuliert)0.00
ε (analytisch, ε-NTU)0.00
// pro Segment j, mit eigenem Enthalpiestrom Ċ = ṁ·c_p:
$M_h\dfrac{dT_{h,j}}{dt} = \dot C_h\,(T_{h,\text{zu}}-T_{h,j}) \;-\; UA_\text{seg}\,(T_{h,j}-T_{c,j})$
$M_c\dfrac{dT_{c,j}}{dt} = \dot C_c\,(T_{c,\text{zu}}-T_{c,j}) \;+\; UA_\text{seg}\,(T_{h,j}-T_{c,j})$
// kalt: Zustrom von der anderen Seite; $\dot C_h \ne \dot C_c$ erlaubt

Warum Gegenstrom? Beim Gleichstrom laufen beide Temperaturen aufeinander zu und enden bei einer gemeinsamen Mischtemperatur — ε ist gedeckelt. Beim Gegenstrom bleibt entlang der Länge ein nahezu konstanter Temperaturabstand, die Kaltauslauf-Temperatur kann sich der Heißeintritts-Temperatur nähern → mit großem NTU geht ε gegen 1.
Unterschiedliche Enthalpieströme: Der Strom mit dem kleineren $\dot C$ ändert seine Temperatur stärker (steilere Kurve) und bestimmt $\dot C_\text{min}$. Für $C_r\to 0$ liefern Gegen- und Gleichstrom dasselbe $\varepsilon = 1-e^{-\text{NTU}}$. Die simulierte Effektivität deckt sich mit der analytischen $\varepsilon$-NTU-Beziehung:$$\varepsilon_\text{Gegen} = \frac{1-e^{-\text{NTU}(1-C_r)}}{1-C_r\,e^{-\text{NTU}(1-C_r)}}, \qquad \varepsilon_\text{Gleich} = \frac{1-e^{-\text{NTU}(1+C_r)}}{1+C_r}.$$

Interaktives Funktionsschema des Simulationskerns hinter VICUS Buildings · „▶ Ablauf abspielen" führt Schritt für Schritt durch Zeitschleife → Newton → LES.

Der Rest des Artikels erklärt die einzelnen Bausteine im Detail. Sie können jederzeit nach oben scrollen und das Gelernte direkt ausprobieren.

Energie statt Temperatur: die Erhaltungsgröße

Eine zentrale Designentscheidung in NANDRAD: Der Solver bilanziert Energie (genauer: die gespeicherte innere Energie), nicht direkt die Temperatur. Der Grund ist physikalisch sauber — Energie ist eine Erhaltungsgröße. Man kann alle Energieströme, die in einen Raum hinein- und hinausfließen, eindeutig aufsummieren. Die Temperatur ist dann eine abgeleitete Größe, die man aus der Energie und der Wärmekapazität zurückrechnet.

Die allgemeine Form jeder Bilanzgleichung lautet:

d(gespeicherte Energie)dt=Zuflu¨sseAbflu¨sse\frac{d(\text{gespeicherte Energie})}{dt} = \sum \text{Zuflüsse} - \sum \text{Abflüsse}

Was steckt im Zustandsvektor y?

y ist schlicht alles aneinandergehängt, was sich über die Zeit ändert und Energie speichert:

Anteil im y-VektorBedeutung
Räume / ZonenInnere Energie der Raumluft (+ ggf. Feuchte)
Konstruktionen (Wände)Innere Energie in jedem einzelnen Finite-Volumen-Element einer Wand
Thermische NetzwerkeEnergie (Masse × spez. Enthalpie) in Rohren und Komponenten

Eine einzige Wand wird also intern in viele dünne Schichten zerlegt — jede Schicht ist ein eigener Eintrag in y. Bei einem größeren Gebäude kommen so schnell mehrere tausend Unbekannte zusammen. Genau diese Zerlegung „einer Wand in viele gekoppelte Gleichungen” können Sie in der zweiten Demo (Wärmeleitung durch eine Wand) am Schieberegler N selbst erzeugen.

Woher kommt ydot? Die Bilanz, nicht geraten

Eine berechtigte Frage: dy/dt=ydot(t,y)dy/dt = \texttt{ydot}(t, y) steht da — aber wie kommt man auf die rechte Seite? Antwort: ydot rät man nicht, man leitet es aus einem Erhaltungssatz her. Das Rezept ist immer dasselbe:

  1. Wähle die Erhaltungsgröße y (Energie, Masse, …) — nicht die Temperatur.
  2. Schreibe die Bilanz: d(Gespeichertes)/dt = Σ Zuflüsse − Σ Abflüsse.
  3. Drücke jeden Fluss durch den Zustand aus (physikalische Gesetze).
  4. Löse nach dy/dt auf — das ist ydot.

Beispiel: ein Raum kühlt aus

Gespeichert wird die innere Energie U=CTU = C\,T mit der Wärmekapazität CC. Sie ändert sich nur durch den Wärmestrom QQ über die Hülle, und dieser ist proportional zur Temperaturdifferenz:

dUdt=Q,Q=TTaußenR\frac{dU}{dt} = Q, \qquad Q = -\frac{T - T_\text{außen}}{R}

Mit dUdt=CdTdt\frac{dU}{dt} = C\,\frac{dT}{dt} folgt durch Auflösen nach der Rate:

dTdt=TTaußenRC=TTaußenτ,τ=RC\frac{dT}{dt} = -\frac{T - T_\text{außen}}{R\,C} = -\frac{T - T_\text{außen}}{\tau}, \qquad \tau = R\,C

Das ydot ist damit hergeleitet, nicht erfunden — Energieerhaltung plus ein Flussgesetz. Genau diese eine Gleichung läuft in der ersten Demo („ein Raum kühlt aus”): Sie sehen, wie der Integrator sich an der Tangente entlang durch die Zeit hangelt und mit der analytischen Lösung verglichen wird.

Und bei einem echten Gebäude?

Die entscheidende Einsicht: In NANDRAD gibt es kein einziges geschlossenes ydot-Formelblatt. Bei tausenden Zuständen wäre eine Hand-Formel unmöglich. Stattdessen ist die Bilanz dieselbe für jeden Zustand, aber die Summe der Flüsse wird zur Laufzeit zusammengesetzt — jedes Teilmodell wirft seinen Beitrag in den Topf: Wärmeleitung zwischen Schichten, solare Einstrahlung durch Fenster, Lüftung und Infiltration, interne Lasten, Heiz- und Kühlleistung, Rohrströmung. ydot ist deshalb eine Funktion, die man nicht hinschreibt, sondern auswertet.

Die drei Auswertungsstufen: Head → Mitte → Tail

Der Integrator übergibt dem Modell ein y und fragt nach dem zugehörigen ydot. Intern läuft das in drei Stufen ab — genau das Bilanz-Rezept, in Code gegossen:

StufeRezept-Schrittim Raum-Beispiel
HeadZustand y → intensive GrößeT = U/C (Energie → Temperatur)
MitteFlüsse aus dem Zustand berechnenQ = −(T − T_außen)/R
TailBilanz schließen → ydotydot = Q/C

Im Schema oben ist dieser Datenfluss als dreistufige Pipeline innerhalb der Newton-Schleife dargestellt.

Reihenfolge der Modelle: der Abhängigkeitsgraph

Es gibt viele kleine Teilmodelle, und sie hängen voneinander ab: Das Fenster-Modell braucht die Außentemperatur vom Klima-Modell, die Raumbilanz die Heizleistung vom HVAC-Modell. In welcher Reihenfolge muss man rechnen?

NANDRAD löst das mit einem Abhängigkeitsgraphen. Jedes Modell meldet an, welche Größen es als Eingabe braucht und welche es als Ergebnis liefert. Daraus wird automatisch eine korrekte Auswertungsreihenfolge berechnet (topologische Sortierung). Zwei Spezialfälle sind bemerkenswert:

  • Parallelisierung: Modelle, die voneinander unabhängig sind, liegen in derselben „Ebene” des Graphen und werden parallel ausgewertet (z. B. viele Wände gleichzeitig).
  • Zyklen: Hängen Modelle gegenseitig voneinander ab (etwa ein Regler, der auf eine Größe reagiert, die er selbst beeinflusst), werden sie zu einer Gruppe zusammengefasst und iterativ gemeinsam gelöst.

Zeitintegration: einen Schritt in die Zukunft gehen

Jetzt haben wir eine Funktion, die zu jedem y das ydot liefert. Die Aufgabe der Zeitintegration ist, daraus den zeitlichen Verlauf zu rekonstruieren — aus der Steigung den Weg. In einer äußeren Schleife geht der Solver Schritt für Schritt von t nach t+dt, schreibt jeden akzeptierten Schritt fort und schreibt fällige Ergebnisse heraus.

Wichtig: Die Schrittweite dt ist nicht konstant. Der Integrator wählt sie selbst — mal große Schritte (nachts, wenn sich wenig ändert), mal sehr kleine (wenn die Heizung anspringt). Die Ausgabe (etwa stündliche Werte) wird davon entkoppelt: Zwischen den tatsächlichen Rechenschritten wird sauber auf die gewünschten Ausgabezeitpunkte interpoliert.

Welcher Integrator? CVODE als Standard

NANDRAD bringt mehrere Integratoren mit; in der Praxis wird fast immer CVODE aus dem SUNDIALS-Paket benutzt — ein implizites, adaptives Verfahren auf Basis von BDF (Backward Differentiation Formulas) der Ordnung 1 bis 5. Explizite Verfahren (Explicit Euler, Runge-Kutta 45) sind als Referenz- und Debugging-Integratoren ebenfalls vorhanden.

CVODE schätzt nach jedem Versuch den lokalen Fehler ab und vergleicht ihn mit einer vorgegebenen relativen und absoluten Fehlertoleranz. Ist der Fehler zu groß, wird der Schritt verworfen und mit kleinerem dt (oder niedrigerer Ordnung) wiederholt; ist er bequem klein, dürfen Schrittweite und Ordnung wachsen. So findet der Solver automatisch den Kompromiss aus Genauigkeit und Geschwindigkeit.

Explizit vs. implizit — und warum Gebäude implizit gerechnet werden

Ob ein Zeitschritt eine Newton-Iteration und ein lineares Gleichungssystem braucht, hängt allein davon ab, wo das unbekannte y_{n+1} in der Formel auftaucht.

Explizit — nur alte, bekannte Werte rechts. Man setzt ein und rechnet aus, eine einzige ydot-Auswertung pro Schritt, nichts aufzulösen:

yn+1=yn+dtydot(tn,yn)y_{n+1} = y_n + dt \cdot \texttt{ydot}(t_n,\, y_n)

Implizit — das Unbekannte steht auch rechts und muss aufgelöst werden:

yn+1=yn+dtydot(tn+1,yn+1)y_{n+1} = y_n + dt \cdot \texttt{ydot}(t_{n+1},\, y_{n+1})

Wenn explizit pro Schritt billiger ist — warum dann implizit? Wegen Steifigkeit. Gebäudemodelle vereinen sehr schnelle (Luft, dünne Schichten) und sehr langsame (massive Wände, Estrich) Zeitkonstanten. Explizite Verfahren müssen dann aus Stabilitätsgründen winzige Schritte machen — die Schrittweite wird nicht von der gewünschten Genauigkeit bestimmt, sondern von der schnellsten Zeitkonstante. Tausende billige Mini-Schritte sind am Ende deutlich teurer als die wenigen großen, genauigkeitsgetriebenen Schritte eines impliziten Verfahrens.

ExplizitImplizit (NANDRAD-Standard)
Newton-Iteration nötig?neinja
LES J·Δy = −F nötig?neinja (pro Newton-Iteration)
Kosten pro Schrittsehr geringhoch
Schrittweite begrenzt durchStabilität (sehr klein bei steifen Systemen)Genauigkeit (groß möglich)
Geeignet für Gebäude?nein (zu langsam)ja

Den Effekt sehen Sie unmittelbar in den ersten beiden Demos: Schieben Sie dt über die Stabilitätsgrenze, beginnt die explizite Lösung zu oszillieren und explodiert — die implizite bleibt ruhig. In der Wand-Demo macht ein feineres Netz (großes N) das Problem zusätzlich steifer, und die explizite Fourier-Zahl r=αdt/Δx2r = \alpha\,dt/\Delta x^2 sprengt schnell die Grenze r12r \le \tfrac12.

Drei geschachtelte Schleifen

Das ist die wichtigste mentale Landkarte. Der implizite Solver besteht aus drei Ebenen, die ineinanderstecken — genau die drei Schleifen aus dem interaktiven Schema oben:

  • Außen — Zeitschleife (CVODE): wählt die Schrittweite dt und geht von t nach t+dt.
  • Mitte — Newton-Iteration: löst die nichtlineare implizite Gleichung nach y_{n+1} (meist 1–3 Iterationen).
  • Innen — Lineares Gleichungssystem (LES): in jeder Newton-Iteration wird einmal JΔy=FJ \cdot \Delta y = -F gelöst.

Die Newton-Iteration

Die implizite Gleichung schreibt man als „= 0”:

F(y)=yyndtydot(y)=0F(y) = y - y_n - dt \cdot \texttt{ydot}(y) = 0

Newton verbessert eine Schätzung schrittweise, indem es lokal linearisiert:

JΔy=F(y),dann:yy+ΔyJ \cdot \Delta y = -F(y), \qquad \text{dann:}\quad y \leftarrow y + \Delta y

Dabei ist JJ die Jacobi-Matrix — die Ableitung von FF nach yy, also „wie reagiert jede Bilanz auf eine kleine Änderung jeder Zustandsgröße”. Diese Matrixgleichung ist genau das lineare Gleichungssystem — und JJ ist dessen Koeffizientenmatrix (das AA in AΔy=bA\,\Delta y = b), nicht etwa ein Hilfsmittel zur Fehlerschätzung. Die adaptive Schrittweitensteuerung schätzt den Zeitschritt-Fehler getrennt davon über die Toleranzen ab und benötigt JJ dafür nicht. Bei nn Zuständen ist JJ eine n×nn\times n-Matrix, F-F und Δy\Delta y sind Vektoren der Länge nn — ein quadratisches System aus nn Gleichungen.

Wo ydot einfließt. Beide Bestandteile dieses Systems werden aus ydot gebaut — ydot ist kein Nebenstrang. Die rechte Seite ist direkt das negative Residuum, F=(yyndty˙)-F = -\bigl(y - y_n - dt\,\dot y\bigr), also eine ydot-Auswertung am aktuellen Rateversuch. Die Matrix ist

J=Fy=Idty˙yJ = \frac{\partial F}{\partial y} = I - dt\,\frac{\partial \dot y}{\partial y}

und die Empfindlichkeit y˙/y\partial \dot y/\partial y entsteht ihrerseits aus ydot-Auswertungen: NANDRAD stört jede Zustandsgröße ein wenig, lässt die Head→Mitte→Tail-Pipeline mit dem gestörten Zustand erneut laufen und bildet den Differenzenquotienten — das ergibt eine Spalte von JJ. Jede Newton-Iteration ruft ydot also mehrfach auf: einmal für die rechte Seite und zusätzlich für die Spalten der Jacobi-Matrix (beschleunigt durch Sparsity und Graph-Coloring, siehe unten).

Das lineare Gleichungssystem (LES)

In jeder Newton-Iteration muss JΔy=FJ \cdot \Delta y = -F gelöst werden. JJ ist eine n×nn \times n-Matrix; bei tausenden Unbekannten ist das der rechenintensivste Teil der ganzen Simulation.

Woher kommt die Jacobi-Matrix?

Meist wird JJ numerisch über finite Differenzen gebildet: Man stört jede Zustandsgröße ein wenig, schaut, wie sich FF ändert, und erhält so spaltenweise die Matrix. Bei tausenden Spalten wäre das naiv sehr teuer — der Trick ist Sparsity (Dünnbesetztheit): Eine Wandschicht koppelt nur mit ihren direkten Nachbarn, ein Raum nur mit seinen angrenzenden Bauteilen. Die allermeisten Einträge von JJ sind also Null. NANDRAD kennt das Besetzungsmuster vorab und stört per Graph-Coloring viele unabhängige Spalten gleichzeitig — statt tausender braucht es oft nur eine Handvoll Auswertungen.

Die tridiagonale Struktur einer eindimensionalen Wand-Diskretisierung ist der einfachste Fall dieser Dünnbesetztheit. In der Wand-Demo wird genau dieses tridiagonale System gezeigt und Zelle für Zelle aufgeschlüsselt — die dort dargestellte Matrix mit 1+2r1+2r auf der Diagonale und r-r daneben ist die Jacobi-Matrix, also die Koeffizientenmatrix des LES.

Direkte vs. iterative Löser

Es gibt zwei grundlegend verschiedene Arten, JΔy=FJ \cdot \Delta y = -F zu lösen:

  • Direkte Löser berechnen die exakte Lösung über eine Faktorisierung (LU) — gut für kleine, volle ebenso wie für große, dünnbesetzte Systeme.
  • Iterative Löser nähern die Lösung schrittweise an (Krylov-Verfahren); sie brauchen einen Präkonditionierer, der das System vorab „glättet”.

Lässt man diese Felder im Projekt leer, wählt NANDRAD sinnvolle Voreinstellungen (in der Regel einen direkten Sparse-Löser, bei großen Netzwerken einen iterativen Löser mit Präkonditionierer). Für die meisten Anwendungen ist das die richtige Wahl — an diesen Parametern dreht man nur, wenn eine Simulation zu langsam ist oder nicht konvergiert.

Vom Zustand zur Lösung in fünf Sätzen

  1. Der Solver bilanziert Energie pro Raum und pro Wandschicht; daraus ergibt sich ein großes System gewöhnlicher Differentialgleichungen dy/dt=ydot(t,y)dy/dt = \texttt{ydot}(t, y).
  2. Die Funktion ydot wird in drei Stufen ausgewertet (Energie → Temperatur, Flüsse, Summe → ydot); die Reihenfolge bestimmt ein automatischer Abhängigkeitsgraph.
  3. Integriert wird mit CVODE (implizites BDF-Verfahren) und adaptiver Schrittweite plus Fehlerkontrolle — nötig, weil Gebäudemodelle steif sind.
  4. Jeder implizite Zeitschritt erfordert eine Newton-Iteration, und jede Newton-Iteration ein lineares Gleichungssystem JΔy=FJ \cdot \Delta y = -F (die drei geschachtelten Schleifen).
  5. Das LES wird je nach Größe und Dünnbesetztheit direkt (Dense/KLU) oder iterativ (GMRES/BiCGStab + ILU) gelöst; die Jacobi-Matrix entsteht numerisch und nutzt die Sparsity per Graph-Coloring aus.

Was das für die Praxis bedeutet

Für die tägliche Arbeit im Ingenieurbüro müssen Sie diese Maschinerie nicht im Detail bedienen — aber es hilft zu verstehen, warum eine validierte dynamische Simulation belastbare Ergebnisse liefert und an welchen Stellschrauben man im Zweifel dreht. Der NandradSolver ist der Rechenkern, auf dem VICUS Buildings aufsetzt; die zugrundeliegende Methodik ist quelloffen über das Forschungsprojekt SIM-VICUS dokumentiert und in über 20 Jahren an der TU Dresden entwickelt worden. Wer tiefer einsteigen will, findet weiterführende Grundlagen in unseren Artikeln zur dynamischen Gebäudesimulation, zum Unterschied stationär vs. dynamisch und zu den Validierungsstandards.

Häufig gestellte Fragen

Was berechnet der NandradSolver?
Der NandradSolver beschreibt ein Gebäude (und optional ein thermisches Netzwerk) als großes System gekoppelter gewöhnlicher Differentialgleichungen und integriert dieses Zeitschritt für Zeitschritt durch die Zeit — typischerweise über ein ganzes Jahr. Bilanziert wird die gespeicherte Energie pro Raum und pro Wandschicht; die Temperatur ist eine daraus abgeleitete Größe. NANDRAD ist der Rechenkern, auf dem auch VICUS Buildings aufsetzt.
Warum rechnet die Gebäudesimulation implizit und nicht explizit?
Gebäudemodelle sind steif: Es treten gleichzeitig sehr schnelle Zeitkonstanten (Raumluft, dünne Schichten) und sehr langsame (massive Wände, Estrich) auf. Explizite Verfahren müssten aus Stabilitätsgründen winzige Zeitschritte machen und wären unbrauchbar langsam. Implizite Verfahren wie CVODE (BDF) bleiben auch bei großen Schritten stabil — die Schrittweite wird dann von der gewünschten Genauigkeit bestimmt, nicht von der Stabilität.
Was ist ydot in der Gebäudesimulation?
ydot ist die rechte Seite der Differentialgleichung dy/dt = ydot(t, y): die zeitliche Änderungsrate jeder Erhaltungsgröße. Sie wird nicht als geschlossene Formel hingeschrieben, sondern zur Laufzeit in drei Stufen ausgewertet — Energie in Temperatur umrechnen (Head), Energieströme berechnen (Mitte), Flüsse pro Bilanzraum aufsummieren (Tail). Mathematisch ist das immer dieselbe Bilanz: Speicheränderung = Summe der Zuflüsse minus Abflüsse.
Was ist die Newton-Iteration und das lineare Gleichungssystem (LES)?
Bei impliziten Verfahren steht das unbekannte y_{n+1} auf beiden Seiten der Gleichung. Diese nichtlineare Gleichung F(y) = 0 wird mit der Newton-Iteration gelöst, die lokal linearisiert: J·Δy = −F. Diese Matrixgleichung ist das lineare Gleichungssystem (LES); J ist die Jacobi-Matrix. Pro Zeitschritt fallen meist 1–3 Newton-Iterationen an, und jede löst ein LES — daher die drei geschachtelten Schleifen Zeit → Newton → LES.
Wie groß werden diese Gleichungssysteme?
Jede Wand wird intern in viele dünne Finite-Volumen-Schichten zerlegt, jede Schicht ist ein eigener Eintrag im Zustandsvektor y. Bei einem größeren Gebäude kommen so schnell mehrere tausend Unbekannte zusammen. Die Jacobi-Matrix ist jedoch dünnbesetzt — jede Schicht koppelt nur mit ihren direkten Nachbarn — und NANDRAD nutzt diese Sparsity per Graph-Coloring und passende Löser (KLU, GMRES) aus.

Verwandte Artikel

Dynamische Gebäudesimulation: Grundlagen

Was ist dynamische Gebäudesimulation? Unterschied zur stationären Berechnung, Anwendungsbereiche und Vorteile für die Planung

Sommerlicher Wärmeschutz nach DIN 4108-2

Sommerlicher Wärmeschutz per Simulation: Sonneneintragskennwert vs. thermische Gebäudesimulation nach DIN 4108-2 – Verfahren, Übertemperaturgradstunden und Grenzwerte.

IFC-Import für die Gebäudesimulation

Vom BIM-Modell zur Simulation: Wie IFC-Dateien den Workflow zwischen CAD und Gebäudesimulation verbessern

Stationäre vs. dynamische Berechnung

Vergleich von stationärer Energiebedarfsberechnung und dynamischer Simulation: Methoden, Genauigkeit und Anwendungsbereiche

Hinweis: Die Inhalte dieser Seite dienen ausschließlich der allgemeinen Information und stellen keine Rechts-, Planungs- oder Ingenieurberatung dar. Alle Angaben ohne Gewähr. Trotz sorgfältiger Recherche übernimmt die VICUS Software GmbH keine Haftung für die Richtigkeit, Vollständigkeit und Aktualität der bereitgestellten Informationen. Produktnamen und Marken Dritter werden nur zu Informationszwecken genannt und sind Eigentum der jeweiligen Rechteinhaber.

VICUS Districts

Von der Theorie zur Praxis

Mit VICUS Districts setzen Sie Ihr Wissen direkt um.

Bleiben Sie auf dem Laufenden

Neue Features, Tutorials und Updates direkt in Ihr Postfach.