@Willi
WS = Wind-Speed
WD = Wind-Direction
(Könnte man zur Unterscheidung ggf. auch noch anders kennzeichnen.)
In der Doku ist die generelle Berechnung beschrieben mit dem 1km Grid der Berechnung und dem 250m Höhenmodell:
http://contourmap.internet-box.ch/smn_c ... p_doku.htm
Berechnung der Konvergenz aus den Windrichtungen:
Es wird für alle Punkte in der Mitte des 1km Grid die Konvergenz der Windrichtungen der NW, NE, SE, SW liegenden Punkte berechnet.
Beispiel: Konvergenz am Grünen Punkt wird aus den Windrichtungen an den Roten Punkten berechnet, im Vergleich zu den Winkeln zwischen dem Grünen Punkt und dem Rotem Punkt.
Je 1x für Roten Punkt im NW, NE, SE, SW ausführen:
Code: Alles auswählen
function CalcKonvergenz(const iPosX : integer; const iPosY : integer;
const iWSWDX : integer; const iWSWDY : integer;
const fWS : double; const fWD : double) : double;
var
fDirTemp : double;
begin
// Winkel von Position zu Messwert ermitteln
fDirTemp := GetDirection(iWSWDX, iWSWDY, iPosX, iPosY);
// Winkel zwischen WD und Richtung zu Position ermitteln
fDirTemp := fDirTemp - DegToRad(fWD);
// Konvergenz ermitteln (aus Windrichtung und Windgeschwindigkeit)
Result := fWS * Cos(fDirTemp);
end;
Bei WS/WD wird die berechnete Konvergenz der Windrichtungen mit der Windgeschwindigkeit des Roten Gitterpunktes multipliziert. Die Windgeschwindigkeit nimmt mit der Höhe generell zu. Bei (grossen) Höhenunterschieden von zwei nebeneinander liegenden Gitterpunkten werden dadurch zwei unterschiedlich hohe Windgeschwindigkeiten verwendet. Liegt von der Windrichtung her eine gleich hohe Konvergenz vor, weicht sie mit dem Faktor Windgeschwindigkeit von einander ab.
Beispiel:
Konvergenz aus Windrichtungen: 2.0
Windgeschwindigkeit Lindenberg: 10 Knoten = Konvergenz
20.0
Windgeschwindigkeit 1km entfernt (Buttwil): 2 Knoten = Konvergenz
4.0
Karte dazu:
Konvergenz SFC WS/WD
Um die Effekte der deutlich höheren Windgeschwindigkeiten in den Alpen im Vergleich zum Flachland auszugleichen, habe ich die "Modified" Variante hinzugefügt. Dabei wird der berechnete Wert (20.0 bzw. 4.0) zusätzlich mit einem Faktor für die Höhe gemäss Höhenmodell multipliziert.
Code: Alles auswählen
// Convergence anhand ihrer Höhe berücksichtigen.
// Extreme Werte in den Hochalpen damit glätten.
// Grundschicht Konvergenz stärker berücksichtigen.
fH := 2000.0 / afDataHoehenmodell[i];
if fWS >= 0.0 then
begin
fWS := fWS * fH;
end
else
begin
// Divergenz weniger stark modifizieren
fWS := fWS * (fH / 2.0);
end;
Karte dazu:
Konvergenz SFC Mod. WS/WD
Bei den neuen WD Karten wird eine konstanter Faktor für die Windgeschwindigkeit verwendet: 3.0
Code: Alles auswählen
function CalcKonvergenzLine(const iPosX : integer; const iPosY : integer;
const iWSWDX : integer; const iWSWDY : integer;
const fWS : double; const fWD : double) : double;
var
fDirTemp : double;
begin
// Winkel von Position zu Messwert ermitteln
fDirTemp := GetDirection(iWSWDX, iWSWDY, iPosX, iPosY);
// Winkel zwischen WD und Richtung zu Position ermitteln
fDirTemp := fDirTemp - DegToRad(fWD);
// Konvergenz ermitteln (nur aus Windrichtung)
// Konstanter Windgeschwindigkeit Faktor verwendet im Vergleich zu CalcKonvergenz()
Result := 3.0 * Cos(fDirTemp);
end;
Karte ohne Modifikation:
Konvergenz SFC WD
Karte mit Modifikation:
Konvergenz SFC Mod. WD
Die Messwerte werden 1:1 in der Berechnung übernommen und nicht gemäss Standort modifiziert. Ich hätte da schon ein paar Ideen wie man da noch optimieren könnte, ist mir aber zu aufwendig.
Gruss
Bernhard