CH NEO-ZÜRICH AUSGABE
WETTER · GRAU 7°C
BLEND DES TAGES · 07/ROGUE
EST. 2027
DIE AEC CYBER MORGENZEITUNG

PAZ Kaffi

DESIGN · ABBRUCH · KOFFEIN · DEPESCHE
AUSGABE 1029 · 29 October 2026
SENDUNG 04:42 MEZ
2'400 BOGEN GEDRUCKT
LESEZEIT · 47 MIN
Gleiche Wand, Dämmung, eine Umkehrung: Glaser-Tauwasserprüfung in 80 Zeilen Python
Akademie
FRAME · 06:50
29-10-2026

Gleiche Wand, Dämmung, eine Umkehrung: Glaser-Tauwasserprüfung in 80 Zeilen Python

U-Wert und Glaser-Tauwassercheck in Python: Gleiche Wand, eine Umkehrung, 0 oder 4,44 kg/m² Winterfeuchte. Code eingebunden.

Eine Wand sind zwei Steigungen auf einer Achse. Wärme fliesst bergab von 20 °C innen zu −5 °C aussen. Wasserdampf fliesst auch bergab, vom feuchten Raum zur trockenen Winterluft. Zeichnet man beide gegen den aufsummierten sd auf, erscheint Wasser überall dort, wo die Dampfdrucklinie über die Sättigungskurve hinaus müsste. Die Schnittzeichnung hat da kein Mitspracherecht.

Dieser Text ist zeitlos. Der einzige Anlass ist die Heizperiode. Ende Oktober ist der Zeitpunkt, an dem die Innendämmungs-Sanierungen spezifiziert werden, und hinter geschützten Strassenfassaden in Zürich, Basel und Bern muss die Dämmung oft innen rein. Der Bogen ist U-Wert, dann Temperatur an jeder Fläche, dann Sättigungsdruck, dann die Glaser-«Schnur straff gezogen», dann drei Durchläufe mit denselben vier Materialien. Alle drei Wände haben denselben U-Wert, 0,206 gegen 0,205 W/m²K. Ihre Feuchte-Ergebnisse sind 0, 4,44 und 0,05 kg/m².

Das Werkzeug: reines Python 3 und das Standard-Modul math. Guido van Rossum hat Python an der CWI in Amsterdam angefangen. Heute wird es von der Python Software Foundation und Tausenden von Betreuerinnen und Betreuern gesteuert, von denen man kaum etwas hört. Nichts zum Klonen, nichts zu Installieren, und das Programm lässt sich unverändert in den Rhino-8-ScriptEditor, McNeel’s nativen CPython-3-Host, einfügen. Es ist die Hand-Kontrolle unter jedem kommerziellen Bauphysik-Werkzeug. Baue es einmal auf und du weisst, was diese Werkzeuge tun.

Setup:

# Python 3.10 oder neuer (der untenstehende Lauf hat 3.10.11 verwendet). Keine Pakete nötig.
python --version
mkdir wall-check
cd wall-check
# Kopieren Sie das Programm aus «Der Code erklärt» in wall_check.py, dann:
python wall_check.py
# Die ersten zwei gedruckten Zeilen müssen lauten: 1'168 Pa und 321 Pa.

Erste Schritte:

  1. Speichern Sie das Programm als wall_check.py und führen Sie es aus. Die ersten zwei Zeilen sind eine Selbstprüfung: 1’168 Pa und 321 Pa. Beide stimmen mit Baunetzwissens Grenzwerten auf das Pascal überein. Falls Ihre Werte abweichen, wurde eine Konstante falsch getippt.
  2. Lesen Sie Lauf A, Dämmung aussen. Die letzte Zeile sagt, dass die Wand trocken bleibt.
  3. Lesen Sie Lauf B. Dieselbe Wolle ist auf die warme Seite gewandert, und das Programm meldet 4,44 kg/m² Wasser an ihrer kalten Fläche.
  4. Lesen Sie Lauf C. Eine Dampfbremse wird eingebaut, und das Ergebnis sinkt auf 0,05 kg/m².

←HEUTE: Zwei Wände mit U = 0,206 und 0,205 W/m²K unterscheiden sich um 4,44 kg/m² Winterfeuchte, und allein die Schichtfolge hat sich geändert.
→3012: Die Gebäude, die Bestand haben, sind jene, deren Feuchtelogik noch in eine Textdatei passt, die jeder öffnen kann.
Angelpunkt: Der U-Wert sagt dir, wie viel Wärme entweicht. Allein die Schichtfolge sagt dir, wo das Wasser bleibt.

Der Code erklärt: dies ist das ganze Programm, genau wie es der Editor am 27. Oktober 2026 ausgeführt hat. Die Materialwerte sind Beispieleingaben, keine Norm- oder Produktwerte. Tauschen Sie λ und μ aus Ihren eigenen Produktdatenblättern ein.

# wall_check.py - U-Wert und Glaser-Tauwasserprüfung für einen Wandaufbau
# Nur Standard-Bibliothek. Schichten sind von INNEN nach AUSSEN aufgelistet.
import math

RSI, RSE = 0.13, 0.04                 # Oberflächenwiderstände, m2K/W (horizontaler Wärmefluss)
TI, PHI_I = 20.0, 0.50                # innen: 20 °C, 50 % rel. Feuchte
TE, PHI_E = -5.0, 0.80                # aussen: -5 °C, 80 % rel. Feuchte (Heizperiode)
HOURS = 90 * 24                       # Dezember bis Februar
DELTA0 = 2.0e-10                      # Wasserdampf-Diffusionsleitkoeffizient von ruhender Luft, kg/(m s Pa)

def psat(t):
    """Sättigungsdampfdruck in Pa (Magnus-Näherung, Wasser / Eis)."""
    if t >= 0:
        return 610.5 * math.exp(17.269 * t / (237.3 + t))
    return 610.5 * math.exp(21.875 * t / (265.5 + t))

def lower_hull(pts):
    """Untere konvexe Hülle von nach x sortierten (x, y)-Punkten – die Glaser-«Schnur»."""
    hull = []
    for p in pts:
        while len(hull) >= 2:
            (x1, y1), (x2, y2) = hull[-2], hull[-1]
            if (x2 - x1) * (p[1] - y1) - (y2 - y1) * (p[0] - x1) <= 0:
                hull.pop()
            else:
                break
        hull.append(p)
    return hull

def check(name, layers):
    # layers: (label, thickness m, lambda W/mK, mu)  oder  (label, 0, 0, sd_m) für eine Folie
    r_total = RSI + RSE + sum(d / lam for _, d, lam, _ in layers if d > 0)
    u = 1 / r_total
    q = u * (TI - TE)                                  # Wärmestrom, W/m2
    pi, pe = PHI_I * psat(TI), PHI_E * psat(TE)
    print(f"
=== {name} ===")
    print(f"U = {u:.3f} W/m2K   Wärmestrom = {q:.1f} W/m2")
    t, sd, r = TI - q * RSI, 0.0, RSI
    pts = [(0.0, pi)]
    labels = ["inside air"]
    print(f"  {'interface':<30}{'T [C]':>7}{'sd [m]':>8}{'psat [Pa]':>11}")
    print(f"  {'inside surface':<30}{t:7.1f}{sd:8.2f}{psat(t):11.0f}")
    for label, d, lam, mu in layers:
        if d > 0:
            t -= q * d / lam
            sd += mu * d
        else:
            sd += mu                                   # Folie: mu-Spalte enthält sd
        pts.append((sd, psat(t)))
        labels.append("nach " + label)
        print(f"  {'nach ' + label:<30}{t:7.1f}{sd:8.2f}{psat(t):11.0f}")
    pts.append((sd, pe))
    labels.append("outside air")
    hull = lower_hull(pts)
    planes = hull[1:-1]
    if not planes:
        print("  Kein Tauwasser im Wandinnern: die Dampfdrucklinie bleibt unter psat.")
        return
    for k in range(1, len(hull) - 1):
        (x0, y0), (x1, y1), (x2, y2) = hull[k - 1], hull[k], hull[k + 1]
        g = DELTA0 * ((y0 - y1) / (x1 - x0) - (y1 - y2) / (x2 - x1))   # kg/(m2 s)
        where = labels[pts.index(hull[k])]
        mc = g * HOURS * 3600
        verdict = "OK" if mc <= 0.5 else ("kapillaraktive Schichten nur" if mc <= 1.0 else "ZU VIEL")
        print(f"  Tauwasser bei '{where}': {g * 3600 * 1000:.2f} g/m2 pro Stunde,"
              f" {mc:.2f} kg/m2 über 90 Tage -> {verdict}")

print(f"Check: innen Wasserdampfdruck  {PHI_I * psat(TI):.0f} Pa")
print(f"Check: aussen Wasserdampfdruck {PHI_E * psat(TE):.0f} Pa")

putz = ("Gipsputz 15 mm", 0.015, 0.70, 10)
beton = ("Beton 180 mm", 0.180, 2.30, 80)
wolle = ("Mineralwolle 160 mm", 0.160, 0.035, 1)
render = ("Aussenputz 10 mm", 0.010, 0.87, 15)
platte = ("Gipsplatte 12,5 mm", 0.0125, 0.25, 8)
folie = ("Dampfbremse sd 20 m", 0, 0, 20.0)

check("A  Dämmung aussen (WDVS)", [putz, beton, wolle, render])
check("B  Dämmung, innen", [platte, wolle, beton, render])
check("C  B plus Dampfbremse", [platte, folie, wolle, beton, render])

Zeilen 1–9: die Randbedingungen. Dies sind Baunetzwissens Winterbedingungen für die normative Methode: 90 Tage von Dezember bis Februar, −5 °C und 80 % aussen, 20 °C und 50 % innen. Rsi = 0,13 und Rse = 0,04 m²K/W sind die Oberflächenwiderstände bei horizontalem Wärmestrom durch eine Wand. DELTA0 ist ein Standardwert für ruhende Luft. Grossbuchstaben oben signalisieren: ändere das mit Bedacht.

Zeilen 11–15: die Kurve, unter der das Wasser bleiben muss. psat(t) gibt den Sättigungsdampfdruck aus, die maximale Menge Wasserdampf, die Luft bei Temperatur t halten kann, bevor sie flüssig wird. Sie verwendet die übliche Magnus-Näherung mit einem Ast über Wasser und einem über Eis. Eine Funktion ist ein benanntes Rezept: eine Temperatur geht rein, ein Druck kommt raus, und die Formel wird nur einmal geschrieben.

Zeilen 17–28: die Schnur straff gezogen. Der Kern der Glaser-Methode ist reine Geometrie. Plot jeden Schichtenrand als Punkt (sd, psat), mit dem Wasserdampfdruck des Raumes am linken Ende und dem Aussendruck am rechten. Dann ziehe eine Schnur unter allen Punkten straff. Diese Schnur ist die untere konvexe Hülle, der niedrigste Pfad, der sich nie nach oben biegt. Die if-Zeile ist ein Kreuzprodukt, das fragt, ob der letzte Punkt nach links oder rechts dreht, und jeder Punkt, der die Schnur durchhängen lässt, wird entfernt. Wenn die Hülle nur ihre zwei Enden berührt, ist die Wand trocken. Jede Ecke dazwischen ist eine Tauwasserebene, nach Baunetzwissen «eine Ebene, zwei Ebenen oder eine Zone».

Zeilen 30–42: U-Wert und erste Fläche. Rtotal = Rsi + Σ d/λ + Rse, und U = 1/Rtotal. Multipliziere U mit 25 K und du bekommst den Wärmestrom q, etwa 5,2 W/m². Dieser Strom ist durch jede Schicht gleich, also fällt jede Schicht um q × d/λ. Das if d > 0-Filter hält eine Folie (Dicke 0) von der Division durch Null ab.

Zeilen 43–58: die Wand durchlaufen. Die Schleife läuft von innen nach aussen. Für jede Schicht subtrahiert sie den Temperaturfal, addiert μ × d zu sd, speichert den Punkt und druckt eine Zeile. Eine Folie trägt sich mit Dicke 0 und ihrem sd in der μ-Spalte ein. Der Anfängerfehler ist, die Schichten von aussen nach innen zu listen. Das Programm läuft immer noch, aber es flippt deine Dämmung still zur anderen Seite. Kontrolliere, dass die erste Zeile nach «inside surface» das Material ist, das der Verputzer anfasst.

Zeilen 59–66: wie viel Wasser. An jeder Ecke der Hülle kommt Wasserdampf die linke Steigung hinunter und geht die rechte Steigung hinunter. Die Differenz, mal δ0, ist die Tauwasser-Rate. Du kannst Lauf B per Hand prüfen. (1’168 − 425)/0,26 = 2’858 Pa/m fliesst rein und (425 − 321)/14,55 = 7 Pa/m fliesst raus. Die Differenz mal 2.0e-10 ist 5,7e-7 kg/m²s, das ist die gedruckte 2,05 g/m² pro Stunde, oder 4,44 kg/m² über 90 Tage. Das Urteil verwendet Baunetzwissens Grenzen: 1,0 kg/m² allgemein und 0,5 kg/m², wo Schichten kein Wasser kapillar aufnehmen können. Die gleiche Seite empfiehlt 0,25 kg/m² für Holz.

=== A  Dämmung aussen (WDVS) ===
U = 0.206 W/m2K   Wärmestrom = 5.2 W/m2
  Kein Tauwasser im Wandinnern: die Dampfdrucklinie bleibt unter psat.
=== B  Dämmung, innen ===
U = 0.205 W/m2K   Wärmestrom = 5.1 W/m2
  nach Mineralwolle 160 mm        -4.3    0.26        425
  Tauwasser bei 'nach Mineralwolle 160 mm': 2.05 g/m2 pro Stunde, 4.44 kg/m2 über 90 Tage -> ZU VIEL
=== C  B plus Dampfbremse ===
U = 0.205 W/m2K   Wärmestrom = 5.1 W/m2
  Tauwasser bei 'nach Mineralwolle 160 mm': 0.02 g/m2 pro Stunde, 0.05 kg/m2 über 90 Tage -> OK

In Lauf B sitzt die kalte Fläche der Wolle bei −4,3 °C, wo der Sättigungsdruck nur 425 Pa beträgt. Nur 0,26 m sd trennen sie vom Raum mit 1’168 Pa, während Betons sd von 14,4 m den Wasserdampf zurückhält. Beton ist geduldig. Schimmel ist geduldiger. In Lauf C addiert die Dampfbremse 20 m sd, und der Zustrom bricht auf etwa 37 Pa/m zusammen.

Die Grenzen stammen von Fachleuten, die die Methode gut kennen. Baunetzwissen vermerkt, dass sie stationäre Bedingungen verwendet und «die Realität nicht abbildet». H. Künzel (DBMC 2020) vermerkt, dass «Berechnungen nach Glaser in vielen Ländern das einzige Mittel zur Beurteilung der Feuchteregulierung sind». Er fügt hinzu, dass hygrothermische Simulation Planenden erlaubt, «innovativere nachwachsende und recycelte Materialien zu nutzen, die mit der Glaser-Methode nicht ausreichend beurteilt werden können». Tom Carruthers, Technical Manager bei Mike Wye, vermerkt, dass ISO 13788 «feuchteabhängige Materialeigenschaften, kapillare Saugung und Flüssigkeitstransport nicht berücksichtigt». Der Kompromiss ist offensichtlich. Dieses Skript ist schnell und transparent, aber es kann die kapillaraktiven Bio-Baustoffe, die in Innendämmungs-Sanierungen zunehmend zum Einsatz kommen, nicht erfassen. Behandeln Sie es als Auslegungsprüfung, nie als Compliance-Nachweis. Wenn Kalk, Ton oder Holzfaser im Aufbau sind, übergeben Sie den Aufbau einer hygrothermischen Simulation.

Atelier: Ein kleines Büro, das Innendämmung hinter einer Altstadtfassade detailliert, trifft die Entscheidung meist auf einer Schnittzeichnung und einem Produktdatenblatt. Ein Büro, das anfängt, KI-generierte Details zu nutzen, nimmt noch ein zusätzliches Risiko auf: einen plausiblen Aufbau mit den Schichten in der falschen Reihenfolge. Ein Skript, das das Feuchte-Ergebnis ausgibt, fängt das ab, bevor das Detail in die Ausschreibung geht. Montag-Schritt: Speichern Sie wall_check.py mit Ihren drei Standard-Aufbauten im Büro-Vorlagen-Ordner, und machen Sie «führe es aus» zu einer Zeile auf der Sanierungs-Detail-Checkliste.

Hack: Finden Sie heraus, wie viel Dampfbremse diese Wand wirklich braucht, und sagen Sie das Ergebnis vorher. Der Zustrom zur kalten Fläche der Wolle ist (1’168 − 425)/(sd + 0,26), und der Abstrom bleibt bei etwa 7 Pa/m. Mit sd = 5 m bleiben etwa 134 Pa/m, was über den Winter etwa 0,2 kg/m² ausmacht. Das ist noch OK, aber nicht mehr 0,05. Fügen Sie diese Zeilen am Ende hinzu und überprüfen Sie Ihre Vorhersage:

print((1168 - 425) / 5.26 - (425 - 321) / 14.55)    # vorhergesagtes Pa/m, das in der Ebene bleibt
folie5 = ("Dampfbremse sd 5 m", 0, 0, 5.0)
check("D  B mit leichterer Dampfbremse", [platte, folie5, wolle, beton, render])

Versuchen Sie dann sd = 2 m und beobachten Sie, wie das Ergebnis die 0,5-kg/m²-Grenze erreicht.

Aus meiner heutigen Perspektive, nach Jahrzehnten, waren es die reparierbaren Wände, die überdauerten. Das Gleiche galt für die Dateien, die sie beschrieben. Eine .py-Datei ist Klartext: wenn alle Hersteller verschwunden sind, kann ein Mensch sie in 25 Jahren immer noch öffnen und sehen, warum die Folie dort ist. Die nächsten Schritte sind die Sommerausdünstungsperiode (1’200 Pa auf beiden Seiten und 1’700 Pa Sättigung an der Ebene, nach Baunetzwissen) und das Unterteilen dicker Schichten in Unterschichten, um Zonen zu finden. Danach folgt eine Grasshopper-Python-Komponente, die die Schichten aus Rhino-Schichtnamen liest – genau diese Art Brücke unterrichtet PAZ Academy in ihren Rhino- und Grasshopper-Kursen.

Lesestoff:

Führen Sie alle drei Durchläufe durch, dann speichern Sie Ihren Büro-Standard-Aufbau als Lauf D, bevor das nächste Sanierungsdetail die Planung verlässt.

GEMELDET AUS
MIT-UNTERZEICHNER
PAZ Academy
VERTRAUEN
HIGH
NACHDRUCKE
© PAZ - PARAMETRIC ACADEMY ZURICH · ALLE RECHTE VORBEHALTEN

PAZ Kaffi · interdisziplinäre Redaktionsarbeit, geleitet von der PAZ Academy

⚑ FEHLER MELDEN · KORREKTUR EINSENDEN
◂ ZURÜCK ZUR TITELSEITE · PAZ KAFFI

© 2026 PAZ Academy.