Modellierung der Schneeschmelze

Der Prozeß der Schneeschmelze wird in CANDY nach einem Ansatz von KOITSCH beschrieben. Eine ausgebildete Schneedecke wird bei entsprechenden Lufttemperaturen (über 0.5 °C) durch Verdunsten und Schmelzen wieder abgebaut. Die Wärmezufuhr aus dem Boden bleibt hierbei unberücksichtigt. Es sind folgende Teilprozesse innerhalb des Schmelzvorganges in CANDY implementiert:

- Strahlungsbilanz der Schneeoberfläche ,
- Verdunstung und Kondensation ,
- konvektiver Wärmeübergang ,
- Bestimmung der Schmelzwassermenge ,
- Berechnung der in der Schneedecke gespeicherten Wassermenge.

Vorgänge innerhalb des Moduls:

Zur Berechnung von Verdunstung und Konvektion wird zuerst mit Hilfe von Lufttemperatur und relativer Luftfeuchte des Simulationstages der Dampfdruck berechnet. Mit der Wärmeübergangszahl alfa=0.864 und der Psychrometerkonstante gama=0.67 erfolgt dann die Bestimmung des aktuellen Wertes der Dampfdruckdifferenz Luft - Schnee, die aktuelle und die potentielle Evapotranspiration des Simulationstages werden null gesetzt. Im Fall einer negativen Dampfdruckdifferenz tritt Verdunstung auf: die aktuelle Evaporation wird als Quotient aus negativer Dampfdruckdifferenz und Summe der Schmelzwärme des Eises und Verdampfungswärme des Wassers bestimmt. Falls die Höhe der Schneedecke kleiner als der errechnete Wert der aktuellen Evaporation ist, wird dieser korrigiert. Die Höhe der aktuellen Evaporation wird von der Höhe der Schneedecke subtrahiert.
Im Fall einer positiven Dampfdruckdifferenz tritt Konvektion ein, die aktuelle Evaporation wird als Quotient aus negativer Dampfdruckdifferenz und Verdampfungswärme des Wassers bestimmt und deren negativer Wert zur infiltrierenden Wassermenge addiert.
Nach der Bestimmung der konvektiv zugeführten Wärmemenge erfolgt die eigentliche Berechnung der abschmelzenden Wassermenge (als Höhenäquivalent, damit ein Vergleich mit der Schneedecke möglich ist). Ist die Höhe der Schneedecke größer als der Wert, wird dieser von der Höhe subtrahiert und dem Boden als Infiltrat zugeführt. Anderenfalls erfolgt eine Korrektur der abschmelzenden Wassermenge auf ihr Maximum, auf die Höhe der Schneedecke. Diese schmilzt in dem Fall vollständig.
Abschließend wird der potentiellen Evapotranspiration null zugewiesen, bzw. falls die aktuelle Evaporation positiv ist, wird dieser Wert verwendet. Die Tiefe für die unbedeckte und bedeckte Entnahme und die Höhe des Interzeptionsspeichers eines eventuellen Pflanzenbestandes erhalten ebenfalls den Wert null.


CANDY-Quelltext:

Schneedynamik Modellierung Schneeschmelze

PROCEDURE bowa.schmelzen(var s:sysstat);
{Schmelzen der Schneedecke; alle Waermemengen in MJ/(m*m)}
VAR
albe, {Albedo Schneedecke}
alfa, {Waermeuebergangskennzahl bei 10 W/(m*m)/K}
verd, {Verdampfungswaerme des Wassers}
schm, {Schmelzwaerme des Eises}
c, {spez. Waerme des Wassers}
gama, {Psychrometerkonstante}
strb, {Strahlungsbilanz}
sk, {kurzw. Komponente strb}
sl, {langw. Komponente strb}
qkon, {konvektiv zugefuehrte Waermemenge}
e, {Dampfdruck}
de, {Dampfdruckdifferenz Luft - Schnee}
csno, {Speicherkapazitaet Scheed. f. fluess. Wasser}
y, b: REAL;

BEGIN
albe:=0.5;
alfa:=0.864;
verd:=2.51;
schm:=0.33;
c:=4.2E-03;
gama:=0.67;

{Strahlungsbilanz Schneeoberflaeche}
strb:=0; b:=s.wett.rf/100;

{Verdunstung und Kondensation}
e:=(6.114 + 0.42852 * s.wett.lt + 0.18885E-01 * sqr(s.wett.lt)) * b;
de:=(e - 6.114) * alfa/gama;
aet:=0;
s.wett.pet:=0;

zufuhr:=s.infilt; {Niederschlag - Interzeption}

{Verdunstung}
IF(de < 0) THEN BEGIN
ae:=-de/(verd + schm);
IF(ae>=s.ks.snow) THEN begin ae:=s.ks.snow;s.ks.snow:=0; end
ELSE s.ks.snow:=s.ks.snow- ae;
END;

{Kondensation}
IF(de > 0) THEN BEGIN
zufuhr:=zufuhr + de/verd;
ae:=-de/verd;
END;

{Konvektiver Waermeuebergang}
qkon:=alfa * s.wett.lt +de;

{Schmelzen}
b:=(strb + qkon + c * s.wett.niedk * s.wett.lt)/schm;
IF(b > 0) THEN BEGIN
IF(b < s.ks.snow) THEN BEGIN
zufuhr:=zufuhr + b;
s.ks.snow:=s.ks.snow- b;
END ELSE BEGIN
zufuhr:=zufuhr + s.ks.snow;
s.ks.snow:=0;
END;
END;

{Fluessiges Wasser in Schneedecke speichern}
csno:=0.00 * s.ks.snow; {Kapazitaet Null gesetzt; ev. aendern!!}
b:=s.ks.speisch + zufuhr;
IF(b <= csno) THEN BEGIN
s.ks.speisch:=b;
zufuhr:=0;
END ELSE BEGIN
s.ks.speisch:=csno;
zufuhr:=b - csno;
END;
s.wett.pet:=0;
IF(ae > 0) THEN s.wett.pet:=ae;
tief_:=0;
tiefu:=0;
s.ks.szep:=0;
s.infilt:=zufuhr;
END;