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;
|