Current model version: | 3.2 |
Last change of this document: | $Id: technical_documentation.html 77 2007-03-29 04:26:56Z raasch $ |
Table of contents
2.0 How to change the model source code
3.0
Description of selected parts
of
the model source code
date | author | model
version | type | description | affected routines | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
06/07/98 | SR | 1.0 | C | Änderung von Default-Werten (initializing_actions, end_time, fcl_factor, use_prior_plot1d_parameters), zusätzliche Überprüfung von Parametern auf Zulässigkeit (prandtl_layer, psolver, nx, ny, nz, fcl_factor), Höhe der Schnittebenen der Horizontalschnitte wird auf Plots exakt ausgegeben (uv- bzw. w-Gitter). | modules, check_parameters, plot_2d | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.0 | N | Neues Modul test_variables wird in (fast) allen Programmteilen benutzt (USE). Wichtig: dieses Modul steht in der Datei module_test.f90. Diese Datei muß in der mrun- und add_library - Konfigurationsdatei bei der Variablen module_files aufgeführt werden. | (fast)
alle Neu: module_test | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16/07/98 | SR | 1.0 | N | Anpassung an die T3E-Rechner in Juelich (cpp - Direktiven) | advec_s_bc, check_open, check_parameters, cpu_zeitmessung, init_pegrid, local_getenv, local_system, local_tremain, local_tremain_ini, poisfft | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
24/07/98 | MS | 1.0 | C | Anpassung des Druckloesealgorithmusses an Vorgehensweise von Schmidt, Schumann und Volkert (DFVLR-Mitteilung 84-15, S. 20-26) | poisfft | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
27/07/98 | MS | 1.0 | C | Berechnung von l in maketri geschieht nun ausserhalb der k-Schleife, da unabhaengig von k, dadurch Rechenzeitersparnis | poisfft | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
05/08/98 | SR | 1.0 | C | Entfernung der Sonderbehandlung der Advektionsterme (Piascek-Williams) bei k=1. Terme werden nun überall gleich berechnet. Evtl. leichte Erhöhung der Varianzen in Oberflächennähe. | advec_u_pw, advec_v_pw, advec_w_pw | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.0 | C | Mischungsweganpassung (s. adjust_mixing_length) erfolgt nur noch bei k=1. Unrealistische sekundäre Maxima in den Km-Profilen oberhalb der Prandtl-Schicht werden damit vermieden. Leichte Änderungen in den oberflächennahen Turbulenzgrößen sind die Folge. | diffusivities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.0 | B | Falsche
Berechnung der benötigten CPU-Zeit pro Sekunde
simulierter
Zeit bei Fortsetzungsläufen korrigiert. Berechnung von cross_uxmin(1) und cross_uxmax(1) aus den Werten von ug und vg entfernt. Lieferte falsche Wertebereiche für Plots von Vertikalprofilen, wenn im ersten Koordinatenkreuz nicht die Windgeschwindigkeiten gezeichnet wurden. | header, check_parameters | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.0 | N | Das erlaubte Maximum und Minimum der Rif-Zahl ist nun mittels der Initialparameter rif_max und rif_min einstellbar (Werte waren bisher fest auf -2.0, +1.0 eingestellt). | check_parameters, header, init_1d_model, modules, parin, prandtl_fluxes, read_var_list, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
23/09/98 | SR | 1.0 | B | Initialisierung von Feldern im Fall von initializing_action =
"set_constant_profiles"
und "set_1d-model_profiles" korrigiert. 2D-Plotausgabe von u* und theta* korrigiert. Hier wurden bisher falsche Felder herausgeschrieben. Bei SOR-Aufrufen war bisher dp nicht initialisiert. Entsprechend geändert. | init_3d_model, plot_2d, pres | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.0 | C | Ausgabeformate
für Statistik-Ausgaben auf
Datei RUN_CONTROL
um einige Kommastellen erweitert. Lieferung von ausführlicheren Informationen bei Programmabbruch durch Unterschreitung des minimal erlaubten Zeitschritts. |
run_control, timestep | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.0 | N | Rechnungen mit geneigter Ebene zur Simulation von
Kaltluftabflüssen
sind erlaubt. Gestartet und gesteuert werden sie mit dem
Intialisierungsparameter alpha_surface.
Realisiert wird die geneigte Ebene durch entsprechende
Schrägstellung
des Schwerkraftvektors. Dadurch erhält auch die u-Komponente
der
Windgeschwindigkeit
einen Anteil der Auftriebskraft. Diese Implementierung ist noch nicht abgeschlossen. Die Simulation von Kaltluftabflüssen erfordert bisher noch Eingriffe "von Hand". | buoyancy, check_parameters, header, leap_frog, modules, parin, prandtl_fluxes, read_var_list, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
15/12/98 | SR | 1.0 | N | Vereinbarung
einer Cache-Layer zur schnelleren binären
I/O auf
T3E-Rechnern. Ermittelung wahrer I/O-Zeiten für binäre Ein-/Ausgabe auf T3E-Rechnern mit TIMEF. | check_open,
cpu_zeitmessung, init_3d_model, write_3d_model | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.0 | B | Bekanntgabe von run_description_header an alle
PE's. Diese Programmänderung erfordert auf T3E-Rechnern zwingend den Einsatz der MPI-Version mpt.1.2.0.1. In dieser neuen Version tritt auch der alte Fehler in MPI_ALLREDUCE nicht mehr auf, so daß ab jetzt mpt.1.1.0.1 nicht mehr verwendet werden muß. |
parles | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
05/02/99 | SR | 1.1 | C/N | Implementierung des Upstream-Spline- Verfahrens zur Advektion
von Impuls
und skalaren Größen (neue UP's, s. rechts).
Berechnung von
Variablen
für spezielle Advektionsverfahren in eigenständiges
UP
ausgelagert
(init_advec + eigenes Modul advection).
Reines
Euler-/Upstream-Verfahren
kann gerechnet werden. Schnelle binäre I/O (s. 15/12/98) wieder abgeschaltet, da Dateien nicht wieder einlesbar sind. Druckstörung (p) wird zu Beginn auf 0 gesetzt, damit sie keine Tendenzen im ersten Zeitschritt hervorruft. | advec_s_bc, check_open, check_parameters,
flow_statistics,
header,
init_3d_model, init_grid, leap_frog, modules, parin, plot_2d, plot_ts,
read_var_list, timestep, write_3d_binary, write_var_list Neu:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
24/02/99 | SR | 1.1a | C/N | Kleinere Ergänzungen / Änderungen
für Upstream
- Spline, Diverse Verbesserungen bei Berechnung der Diffusionskoeffizienten (exaktere Formulierung von Scherungen, Dissipation gemaess Original - Deardorff - Ansatz, Mischungswegreduktion nur, wenn Schichtung sowohl oberhalb als auch unterhalb des entsprechenden Gitterpunktes stabil ist), Wertebegrenzung bei Spline - Berechnung zur Verhinderung von "Überschwingern" |
check_parameters, diffusion_e, diffusion_pt, diffusivities, header, init_advec, long_filter, modules, production_e, spline_x, spline_y, spline_z | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.1a | N/B | Erweiterung des des Bott - Chlond - Schemas auf Advektion der TKE, Korrektur der Dichteberechnung (war falsch bei Galilei-Transformation) | advec_s_bc, leap_frog | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
01/03/99 | MS | 1.1b | N | Kleinere Ergänzungen für Upstream -
Spline:
| modules, spline_x, spline_y, spline_z | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.1b | N | Datenkompression für 3D-Plotausgaben | check_open, check_parameters, close_files, header,
modules,
parin, plot_3d Neu: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
03/03/99 | SR | 1.1c | B/C | Schnelle binäre I/O auf T3E-Rechnern funktioniert jetzt. Beim binären Einlesen dürfen Records nicht mit dem Trick "READ (..) idum" überlesen werden. Zeitmessungen auf T3E erfolgen jetzt grundsätzlich mit TIMEF. | check_open, cpu_zeitmessung, init_3d_model, modules, write_3d_binary | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
25/03/99 | SR | 1.1d | N | Einbau einer Rayleigh-Dämpfungsschicht sowie flexiblere Wahl der numerischen Begrenzer für das Upstream - Spline - Verfahren. | check_parameters, header, init_3d_model, leap_frog, modules, parin, read_var_list, spline_x, spline_y, spline_z, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.1d | B | Korrektur des Zeitschrittkriteriums bei z=zp im 1D-Modell | init_1d_model | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
25/11/99 | SR | 1.1e | N | Partikelplots mit vtk-Graphiksoftware sind auf t3eh möglich. Ausgabe erfolgt im dvr-Format. Bisher noch nicht nutzbar, da noch Einstellmöglichkeiten für die Partikelquelle(n) fehlen. Wichtig: Die Benutzung der vtk-Software erfordert die zusätzliche mrun-Option -g. Das Hauptprogramm parles wird in diesem Fall zum Unterprogramm und von einem c++-Programm aus aufgerufen. | header,
init_3d_model, init_pegrid, leap_frog, modules,
parin, parles,
read_var_list, write_var_list Neu:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
" | SR | 1.1e | B/C | TIMEF-Zeitmessungen von Subroutine- auf Function-Aufruf umgestellt. Laufindexkorrektur in spline_y. Fehler trat bei nx /= ny auf. | cpu_zeitmessung, spline_y | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
28/12/99 | SR | 1.1f | N | Plot von Isooberflächen mit vtk-Graphiksoftware sind auf t3eh möglich. Ausgabe erfolgt im dvr-Format. Bisher noch nicht allgemein nutzbar, da noch diverse manuelle Eingriffe nötig sind. | header, leap_frog, modules, parin, plot_particles,
read_var_list, write_var_list Neu:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10/01/00 | SR | 1.2 | C | Randbedingungen für w (=0) werden explizit gesetzt,
und
zwar nicht
nur bei k = nzb, nzt+1 sondern auch
bei k =
nzt,
wo bislang der vom vorigen Zeitschritt durch den Drucklöser
ermittelte
Wert stand. Auch jetzt wird der Wert bei k = nzt anschließend
durch
den Drucklöser modifiziert. Soweit bis jetzt abzusehen, hat
diese
Änderung nur minimale Auswirkungen auf den Prognoseverlauf.
Evtl.
gibt es stärkere Auswirkungen bei exzessivem Auftreten von
Schwerewellen
am oberen Rand (die dort aber eigentlich sowieso nicht
hingehören). Variablenübergabe an boundary_conds erfolgt über Modul und nicht mehr per Parameterliste. Bei Galilei-Transformation wird jetzt defaultmäßig der geostrophische Wind als Translationsgeschwindigkeit verwendet (neuer Initialisierungsparameter use_ug_for_galilei_tr). Dadurch wird das verstärkte Auftreten von Schwerewellen bei höheren geostrophischen Windgeschwindigkeiten unterdrückt. 3D-Feldvariablen (u, v, w, pt, e, km, kh) sowie einige
2D-Variablen
(usws, vsws, rif, shf) sind nun als Pointer deklariert, denen nach
jedem
Zeitschritt neue Targets zugeordnet werden (für die
benötigten
3 Zeitebenen existieren die Targets ..._1 (z.B. u_1), ..._2, ..._3).
Durch
die jeweilige Neuzuordnung der Targets entfällt das
Umspeichern
der
Zeitebenen komplett (Zeitersparung: ca. 5% der
Gesamtrechenzeit). Neue Laderoption "-D preset=nan" empfohlen (s. Beispiel-Konfigurationsdatei). Ebenso empfehlenswert für Debug-Läufe: Compileroption "-ei". Diese bewirkt einen Programmabbruch, falls mit nicht initialisierten Variablen gearbeitet wird (ist aber zeitaufwendig in der Ausführung!). | boundary_conds, check_parameters, header,
init_3d_model,
leap_frog,
modules, parin, read_var_list, timestep, write_var_list Neu:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10/01/00 | SR | 1.2 | B | Der Asselin-Filter wird vor Umordnung der Zeitebenen
aufgerufen. Dies
geschah bisher fälschlicherweise erst danach, sodass der
Zeitfilter
asymmetrisch arbeitete. Achtung: diese Änderung hat Auswirkungen auf den Prognoseverlauf. Die Testergebnis-Datei wurde entsprechend geändert. |
leap_frog | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14/02/00 | MS | 1.2 | B/C | 1D-Modell:
Der Asselin-Filter im 1D-Modell wird nun auch vor der Umordnung der Zeitebenen aufgerufen (s.o.). 3D-Modell:
Die Divergenz der Impulsflüsse an der Prandtl - Schicht - Obergrenze wird nun über eine ganze Gitterweite gebildet. Die bisherige Methode lieferte im Vergleich mit Ergebnissen anderer LES-Modelle zu große Impulsflüsse. Bei der Berechnung der Diffusion der Temperatur werden die Diffusionskoeffizienten nun wieder durch Mittelung für die entsprechenden Gitterpunkte bereitgestllt. Das Maximumkriterium, das im Zuge der Implementierung des Upstream-Spline Advektionsverfahrens eingebaut wurde, bewirkte ein zu rasches Anwachsen der Grenzschicht mit der Zeit. Achtung: diese Änderungen haben Auswirkungen auf den Prognoseverlauf. Die Testergebnis-Datei wurde entsprechend geändert. |
init_1d_model,
asselin_filter,
diffusion_u, diffusion_v, diffusion_pt | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
17/02/00 | MS | 2.0 | N | Allgemeine Beschreibung der Änderungen:
vollständige Implementierung des wolkenphysikalischen Moduls Zur Implementierung der Wolkenphysik waren
umfangreiche
Änderungen
in zahlreichen Programmteilen notwendig (Beschreibung siehe
unten ). Im einzelnen wurden folgende Unprogramme
geändert: Zusätzlich
wurden folgende Unterprogramme NEU
eingeführt: Liste der neuen
Initialisierungsparameter:
Achtung: diese Änderungen haben Auswirkungen auf den Prognoseverlauf. Die Testergebnis-Datei wurde entsprechend geändert. |
modules, parin,
read_var_list,
check_parameters,
init_3d_model, init_1d_model, header, leap_frog. buoyancy, diffusion_e,
production_e, diffusivities, prandtl_fluxes, boundary_conds,
asselin_filter,
swap_timelevels, flow_statistics, plot_2d, plot_3d, write_var_list,
write_3d_binary Neu: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
18/02/00 | MS | 2.0 | B/N | Im Zuge der
Umstellung auf Modellversion 2.0 wurden
noch kleine
Änderungen an den Unterprogrammen diffusion_e, production_e
und
diffusivities
vorgenommen. In allen genannten Unterprogrammen wurde bisher ein strengeres Kriterium zur Bestimmung der Schichtungsverhältnisse verwendet. Ein Modellvergleich zeigte jedoch, dass dadurch die Diffusion im Bereich der Inversion zu gross wird. Eine weitere Ergänzung betrifft die
Advektionsverfahren: Achtung: diese Änderungen haben Auswirkungen auf den Prognoseverlauf. Die Testergebnis-Datei wurde entsprechend geändert. |
diffusion_e, production_e, diffusivities, check_parameters | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
26/04/00 | SR | 2.0a | C | Vollständige Umstellung von vtk-Grafik-Software auf dvrp-Software. Grafik-Ausgaben im dvr-Format sind mittlerweile begrenzt nutzbar (Isooberflächen sind darstellbar, siehe neue Laufparameter dt_dvrp, threshold), es wird aber in der Anwendung in naher Zukunft noch diverse Änderungen geben. Partikelausgabe vorerst nicht mehr möglich (Verlagerung schon). | header, init_particles, init_3d_model,
leap_frog, modules,
parin, parles,
read_var_list, write_var_list Gestrichen: plot_isosurface, plot_particles Neu:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
26/04/00 | SR | 2.0a | C | Durch zusätzlichen zyklischen Rand im
Bott-Chlond-Schema
sehr
viele SENDRECV-Aufrufe eingespart. Änderung des Namens einer eingelesenen Environment-Variablen in check_open von remote_addres nach return_addres. Prozessor-Topologie kann durch Benutzer vorgegeben werden. Dazu neue Initialisierungsparameter npex und npey. Durch Änderungen am Header-Format wurde Testergebnis-Datei geändert. |
advec_s_bc, check_open, header, init_pegrid, modules, parin, read_var_list, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
26/04/00 | SR | 2.0a | N | Rechnungen mit geneigter Oberfläche erlauben jetzt die Vorgabe eines stabil geschichteten Temperaturprofils mit konstantem Gradienten. Hinzuschalten von Feuchte funktioniert für Hangrechnungen noch nicht. | advec_s_bc, buoyancy, init_3d_model,
modules,
prognostic_equations Neu: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13/06/00 | MS | 2.0a | B | Es werden nun auch die seitlichen Ränder für ql gesetzt. Ein Nichtsetzen der Randbedingungen führte zu Fehlern bei der Ausgabe von pt | calc_liquid_water_content | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
03/07/00 | SR | 2.0b | C | Für eine Reihe von
Unterprogrammen, die innerhalb
von prognostic_equation
aufgerufen werden und an die Pointer-Variablen übergeben
werden,
sind
jetzt explizite Interfaces vereinbart (neues Modul pointer_interfaces).
Auch im Vereinbarungsteil der entsprechenden Unterprogramme sind diese
Übergabeparameter jetzt aus Konsistenzgründen (und
weil es
sonst
Laufzeitfehler gibt) als Pointer-Variablen deklariert. Mit dieser
Änderung
ist der große Speicher- und CPU-Zeit-Bedarf beim
Übersetzen
von prognostic_equations wieder auf ein erträgliches
Maß
reduziert. Im Rahmen dieser Änderungen wurde auch an diffusion_e ein Hilfsfeld weniger übergeben. Aus nicht vollständig gekärten Gründen haben sich die Zahlen in der Testergebnis-Datei minimal geändert (und zwar die Spalte mit der Gesamtdivergenz nach Aufruf des Drucklösers). |
advec_s_bc, buoyancy, diffusion_e, diffusion_s, diffusion_u, diffusion_v, diffusion_w, disturb_field, modules, production_e, prognostic_equations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
04/07/00 | SR | 2.0b | B | Diriclet-Randbedingungen für Temperatur und Flüssigwassergehalt werden gesetzt. Dies wäre bereits nach Einführung der Pointer zwingend notwendig gewesen. Rechnungen mit vorgegebener Oberflächentemperatur schlugen deshalb bislang fehl. | boundary_conds | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
07/09/00 | MS | 2.0b | B | Die virtuelle potenielle Temperatur wird nun auch für k=nzb und k=nzt+1 berechnet, um die Randwerte auch für Ausgabezwecke bereichtzustellen. | compute_vpt | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
28/12/00 | SR | 2.1 | C/N | PALM erlaubt jetzt den Einsatz
optionaler Software-Pakete,
die zwar
zum Modell gehören, standardmäßig aber
nicht mit
übersetzt
werden, um so unter anderem Kompilationszeit einzusparen. Siehe neues
Kapitel
3.7 in der Modelldokumentation. Einsatz der dvrp-Software wurde vollständig überarbeitet. Sie ist nun als Software-Paket optional im Modell einsetzbar. Siehe überarbeitetes Kapitel 4.5.6 in der Modelldokumentation. Die Prognose der Partikelverlagerung ist ebenfalls in ein optionales Software-Paket ausgelagert. | advec_particles,
header, init_3d_model, init_dvrp,
init_particles,
init_pegrid, modules, parin, parles, plot_dvrp, prognostic_equations,
read_var_list,
write_var_list Neu: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
28/12/00 | SR | 2.1 | B | MPI_FINALIZE ans Ende des Hauptprogramms geschoben (stand vorher vor cpu_auswertung, wo noch ein Barrier-Aufruf steht). comm2d war zu Beginn undefiniert und wird nun erst einmal gleich MPI_COMM_WORLD gesetzt. | parles | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
02/01/01 | SR | 2.1a | C | Offene Dateien werden sobald möglich geschlossen.
Wiedereröffnung
bestimmter Dateien mit POSITION='APPEND' möglich. In diesem
Zusammenhang
wurde das Unterprogramm close_files in close_file umbenannt und hat nun
1 Argument. Anpassung der Diffusionsparametrisierung im 1D-Modell an das 3D-Modell. |
advec_particles, check_cpu_time, check_open, cpu_auswertung,
init_1d_model,
init_3d_model, init_particles, modules.f90, parin, parles, plot_2d,
write_3d_binary Neu: Eliminiert:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
02/01/01 | SR | 2.1a | B | Beseitigung kleiner Fehler. | check_cpu_time, diffusion_e, diffusivities, long_filter, production_e | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
05/01/01 | SR | 2.1b | N | Neues Software-Paket zur Berechnung von Spektren im Ortsraum | check_open, header, init_3d_model,
leap_frog, modules,
package_parin,
parles, read_var_list, write_3d_binary, write_var_list Neu:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
25/01/01 | SR | 2.1c | C/N | Drucklöser
kann jetzt die Singleton-FFT benutzen. Modul singleton
wurde deshalb von calc_spectra.f90 nach modules.f90
geschoben
(neuer Initialisierungsparameter fft_method).
Flüsse können jetzt bei k=1 unabhängig von der Verwendung einer Prandtl-Schicht vorgegeben werden (neuer Initialisierungsparameter use_surface_fluxes). Modul test_variables wurde aus allen Programmteilen entfernt. Hauptprogramm wurde von parles nach palm umbenannt. Modell kann auf DEC-Workstations eingesetzt werden (-D dec). Zusätzliche Zeitmessungen mit dvrp-Software. Schreiben von Partikel-Informationen ist optional (neuer Parameter write_particle_informations). |
advec_particles, calc_spectra, check_parameters,
cpu_zeitmessung, diffusion_s,
header, init_3d_model, init_dvrp, init_particles, leap_frog, modules,
package_parin,
parin, poisfft, read_var_list, swap_timelevel, write_var_list
Neu: Eliminiert: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
25/01/01 | SR | 2.1c | B | Fehler
beim öffnen von Unit 23 beseitigt. Modul interface
fehlte in disturb_field. Wertebereich von theta* in Prandtl-Fluxes eingeschränkt, weil sonst auf einigen Rechnern overflow droht, wenn u*=0. | check_open, disturb_field, prandtl_fluxes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30/01/01 | SR | 2.1d | N/C | Prognose
eines passiven Skalars ist möglich (anstatt
Feuchte),
dazu neuer Initialisierungsparameter passive_scalar.
Falls kein Pfad für ftpcopy existiert, werden in check_open die Dateinamen für AVS-Koordinaten- und Datendatei auf "unknown" gesetzt. | asselin_filter, boundary_conds, check_open, check_parameters, flow_statistics, header, init_1d_model, init_3d_model, modules, parin, plot_2d, plot_dvrp, prandtl_fluxes, prognostic_equations, read_var_list, swap_timelevel, write_3d_binary, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30/01/01 | SR | 2.1d | B | String-Ausgabe für use_surface_fluxes korrigiert.
Version vom
25/01/01 brach deswegen bei Fortsetzungsläufen ab. xy-Plotausgabe von q und ql korrigiert. | plot_2d, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30/03/01 | SR | 2.2 | N/C | Sämtliche 3D-Felder der Zeitebene t+dt wurden
entfernt.
Ebenso
die Arbeitsfelder work und work1. Hilfsfelder wurden soweit
möglich
eingespart und werden grundsätzlich lokal allokiert. Dadurch
konnten
eine Reihe von Übergabeparametern gestrichen werden (z.B. beim
Aufruf
von pres, advec_s_bc, poisfft, production_e, sor sowie
den
Spline-Unterprogrammen).
Der Long-Filter wurde in das Upstream-Spline-Verfahren integriert. Da
der
Zeitfilter jetzt direkt in der prognostischen Gleichung angewendet wird
(bisher geschah dies erst nach Aufruf des Drucklösers), haben
sich
die Zahlen in der Testergebnis-Datei geändert. Die mittleren
Profile
sind aber unbeeinflusst. Eine weitere kleinere Änderung der Testergebnis-Daten wird dadurch verursacht, dass jetzt der Parameter adjust_mixing_length defaultmäßig .FALSE. ist und der Mischungsweg grundsätzlich zusätzlich auf 0.7 * zu begrenzt wird. Falls adjust_mixing_length=T, wird jetzt der Mischungsweg in diffusivities analog zu diffusion_e an allen Gitterpunkten modifiziert. Achtung: Diese Änderungen können bei anderen Simulationen t.w. erhebliche Auswirkungen auf die oberflächennahen Ergebnisse haben. Kleinere
Änderungen: In init_cloud_physics
wird
der Wert der Variablen surface_pressure in hPa
belassen
(bisher
Umwandlung in Pa). Restliche deutsche Variablen-, Unterprogramm- und Modulnamen wurden ins Englische übersetzt. Davon sind fast alle Programmteile betroffen (nicht in rechter Spalte aufgeführt). | advec_particles,
advec_s_bc, advec_s_ups, advec_u_ups,
advec_v_ups,
advec_w_ups, boundary_conds, calc_spectra, check_parameters,
diffusion_e,
init_3d_model, init_cloud_physics, init_pegrid, init_rankine,
leap_frog,
modules, package_parin, palm, parin, poisfft, pres, production_e,
prognostic_equations,
read_var_list, sor, swap_timelevel, transpose_*, write_3d_binary,
write_var_list Neu: Eliminiert:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12/07/01 | SR | 2.2a | N/C | Defaultwert der unteren
Randbedingung für die TKE ist ab
sofort bc_e_b
= 'neumann'. Partikelquelle ist über Paketparameter steuerbar. Partikeleigenschaften sind mittels benutzereigener Software steuerbar. Der dvrp-Ausgabeweg ist jetzt ebenfalls über Paketparameter steuerbar. Allen Modulen (bis auf singleton) wurde eine SAVE-Anweisung hinzugefügt, damit die durch sie vereinbarten Variablen während der Rechnung in keinem Fall undefiniert werden können (diese Gefahr besteht z.B. auf SGI-Origin-Maschinen). | advec_particles, header, init_dvrp, init_particles, modules.f90, package_parin, plot_dvrp, user_interface | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12/07/01 | SR | 2.2a | B | Verschiebung der OPEN-Anweisung für Unit 33 (AVS-FLD-Datei). | check_open | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
20/07/01 | SR | 2.3 | N | Einbau des Mehrgitterverfahrens zur Lösung der Poisson-Gleichung. | check_parameters,
exchange_horiz, header, init_grid,
init_pegrid, modules,
parin, pres, run_control Neu: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
21/08/01 | SR | 2.3a | N/C | Ergänzung der dvrp-Software: Partikel
können mit
Schwänzen
versehen werden. Die Ausgabe der dvrp-Plotdaten durch einen separaten
PE
ist möglich (mrun-Option "-p dvrp_graphics+1PE").
Der
Kommunikator MPI_COMM_WORLD
wurde deshalb durch comm_palm
ersetzt. Reduzierung des Mischungsweges im Wandbereich kann wahlweise abgeschaltet werden. Für km und kh wird jetzt eine Neumann-Randbedingung am unteren Rand verwendet. Die TKE-Energieproduktionsberechnung durch Scherung des Grundstroms am unteren Rand wurde verbessert. Generelle Verwendung der bodennahen vertikalen Impulsflüsse in den Diffusionstermen von u und v, immer wenn diese als Randbedingung vorgegeben sind (gemäß use_surface_fluxes, - bisher wurde dies nur bei eingeschalteter Prandtl-Schicht gemacht). Schubspannungen können jetzt als Randbedingungen vorgegeben werden (allerdings unter zuhilfenahme benutzereigener Software). Zusätzliche Schnittstellen für benutzereigene Software in allen Tendenztermen, in flow_statistics, und für Partikel- bzw. dvrp-Programmteile (Bestimmung von Partikeleigenschaften, Festlegung von Farbtabellen). Achtung: Diese Änderungen können bei Simulationen mit mittlerem Wind durch die Änderungen im bereich des unteren Randes t.w. erhebliche Auswirkungen auf die oberflächennahen Ergebnisse haben. | advec_particles, diffusion_e, diffusion_u, diffusion_v, diffusivities, flow_statistics, header, init_dvrp, init_particles, init_pegrid, leap_frog, modules, package_parin, palm, parin, plot_dvrp, production_e, prognostic_equations, read_var_list, swap_timelevel, user_interface, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
21/08/01 | SR | 2.3a | B | Falsche Positionierung von MPI_ALLREDUCE in check_cpu_time korrigiert. | check_cpu_time | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
04/09/01 | SR | 2.3b | N | Zusätzliche Profilausgaben für Energieproduktionsterme möglich. Stördruck wird bei der FFT-Methode nicht mehr durch Aufsummieren der Werte zu den einzelnen Zeitschritten ermittelt. | check_parameters, flow_statistics, modules, pres | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
04/09/01 | SR | 2.3b | B | Austausch der Geisterränder für die
zeitgefilterten
Felder
direkt nach Durchführung der Filterung (war fehlerhaft seit
Entfernen
der Zeitebene t+dt (Version 2.2) und führte zu sehr kleinen
Störungen
an den seitlichen Rändern der Teilgebiete). Achtung: Der Inhalt der Testergebnis-Datei ändert sich durch diese Fehlerkorrektur. | prognostic_equations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
09/11/01 | SR | 2.3c | N | Farbe entlang der Partikelschwänze kann sich ändern. Einschalten der Partikeladvektion bei Fortsetzungsläufen möglich. | advec_particles, init_particles, modules, package_parin, plot_dvrp | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16/04/02 | SR | 2.3d | N | Vorgabe
von Randbedingungen für Partikeladvektion
möglich.
Partikeldaten können für spätere Analysen
auf Datei
geschrieben
werden (Unit 85). PARTICLE-Datentyp
enthält
Informationen
über Partikelgeschwindigkeitskomponenten und
Startposition. Skalartransport sowie entsprechende Datenausgaben können durch eigene Parameter gesteuert werden (nicht mehr über die Feuchteparameter). Im Fall von pdims(1)=1 (eindimensionales virtuelles Prozessornetz in y-Richtung) werden die zyklischen Randbedingungen in x-Richtung durch direktes Umspeichern anstatt durch sendrecv realisiert. Ebenso werden die Transponierungen xz, yz, zx und zy eingespart (es wird aber weiter umsortiert). Im Fall von 3D-Plotausgaben Aufruf von ftpcopy-Script durch batch_scp-Script ersetzt (dient der Ermittelung von Dateizyklusnummern als Information für die AVS-fld-Datei). Bei fehlerhafter Eröffnung einer CPU_MEASURES-Datei werden erneute Eröffnungsversuche durchgeführt. |
advec_particles, check_open, check_parameters, exchange_horiz, flow_statistics, header, init_particles, modules, package_parin, parin, plot_2d, plot_3d, prognostic_equations, read_var_list, transpose_xz, transpose_yz, transpose_zx, transpose_zy, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
02/05/02 | SR | 2.3e | B | Wiedereinführung der 3D-Felder für die
Zeitebene
t+dt, die
notwendig ist, damit in den Diffusionstermen bei Leapfrog-Zeitschritten
mit der korrekten Zeitebene t-dt gearbeitet wird. Seit Version 2.2
wurde
fälschlicherweise die Zeitebene t+dt verwendet. Asselin-Filter
ist
jetzt wieder eigenständiges Unterprogramm. Die Wiedereinführung dieser dritten Zeitebene ist auch Voraussetzung für die in der nächsten Version geplante skalare Optimierung. Fehler bei Berechnung von Ausgabezeitpunkten eliminiert (trat auf, wenn bei Fortsetzungsläufen von Ausgabeabständen 0.0 auf von Null verschiedene Werte gewechselt werden sollte). Achtung: Der Inhalt der Testergebnis-Datei ändert sich durch diese Fehlerkorrektur. | init_3d_model,
leap_frog, modules, prognostic_equations,
swap_timelevel Neu: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
02/05/02 | SR | 2.3e | N/C | Kleinere
Anpassungen an IBM-Regatta-Systeme in
check_parameters, cpu_log. Modul singleton in eigenständige Datei überführt. Global_min_max
arbeitet mit REAL*4, um Komplikationen auf
32-bit-Rechnern
zu vermeiden (Datentyp MPI_2REAL müsste dort sonst auf
MPI_2DOUBLE_PRECISION
geändert werden). | advec_particles,
check_parameters, cpu_log,
global_min_max,
modules Neu: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11/06/02 | SR | 2.4 | N/C | Optimierung und Anpassungen für einzelne Knoten der
IBM-Regatta-Systeme. Skalare (Cache) Optimierung: Tendenzterme werden innerhalb einer großen (i,j)-Schleife berechnet, die nun jeweils die gesamte prognostische Gleichung umfasst. Schleifenindices i und j werden an die Tendenzunterprogramme als Argumente übergeben. Die Tendenzunterprogramme sind als Module geschrieben, die mittels Technik der überladenen Funktionen auch ohne diese Indices i und j aufgerufen werden können, und dann wie in früheren Versionen funktionieren (d.h. in ihnen laufen die Schleifen über alle 3 Dimensionen). Solche Teile der prognostischen Gleichungen, die globale Kommunikation beinhalten, sind vor die (i,j)-Schleife gezogen. Falls ausschließlich mit Piascek-Williams-Advektion gearbeitet wird, werden alle prognostischen Gleichungen in einer einzigen (i,j)-Schleife gerechnet. Kommunikationsoptimierung: Zusätzliche Implementierung einer 1D-Gebietszerlegung in x-Richtung. Mit dem neuen direkten Drucklöser (poisfft_hybrid) werden dadurch 4 von 6 notwendigen Transpositionen eingespart. Die 1D-Zerlegung wird automatisch bei Verwendung dieses neuen Lösers aktiviert. Austausch von Geisterrändern in y-Richtung wird bei dieser 1D-Zerlegung durch einfache zyklische Randbedingungen ersetzt. Kleinere Anpassungen: String-Vergleiche
erfordern beim
IBM-Compiler
in der Regel den Einsatz der TRIM-Funktion, um
überschüssige
Blanks am Ende des Strings abzuschneiden (sonst liefert der Vergleich
.F.). Achtung: Die Übersetzung des Modells erfordert aufgrund der Vielzahl nunmehr eingesetzter Module die Verwendung des make-Mechanismus, um die korrekte Reihenfolge bei der Übersetzung der Programmteile zu gewährleisten. Die Beschreibung dieser Abhängigkeiten erfolgt in der Datei Makefile, die zusammen mit den Programmdateien abgelegt ist und ebenfalls unter RCS-Verwaltung steht. Im User-Interface ist das Unterprogramm user_actions nun ebenfalls als Modul geschrieben und bedient sich der Methode der überladenen Funktionen. Existierende benutzereigene Software muss entsprechend angepasst werden. | advec_s_pw, advec_s_up,
advec_u_pw, advec_u_up, advec_v_pw,
advec_v_up,
advec_w_pw, advec_w_up, buoyancy, calc_precipitation, calc_radiation,
calc_spectra,
check_parameters, coriolis, diffusion_e, diffusion_s, diffusion_u,
diffusion_v,
diffusion_w, diffusivities, exchange_horiz, exchange_horiz_2d,
global_min_max,
header, impact_of_latent_heat, init_pegrid, leap_frog, modules,
plot_2d,
plot_3d, plot_spectra, poisfft, pres, production_e,
prognostic_equations,
user_interface, Neu: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11/06/02 | SR | 2.4 | B | Fehlende Variablenvereinbarung in advec_particles ergänzt. | advec_particles | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12/09/02 | SR | 2.4a | N | Partikel können mit Trägheit versehen werden und einen Dichteunterschied zum umgebenden Fluid haben. Zur Steuerung dient der neue Paketparameter density_ratio. | advec_particles, header, init_particles, modules, package_parin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12/09/02 | SR | 2.4a | B | Fehler in Berechnung der Anfangsprofile
von pt
und q entfernt
(obere Feldgrenze von 10 konnte in pt_vertical_gradient_level_ind
überschritten werden). Fehler führte unter
Umständen zu
"segmentation fault" bei Verwendung sehr großer
Gitterpunktzahlen
in z-Richtung. Fehler in Berechnung der v-Komponente am unteren Rand entfernt, die für den Scherungsproduktionsterm der TKE verwendet wird (Variable v_0). Fälschlicherweise wurde zur Berechnung u(k=1) statt v(k=1) verwendet. | check_parameters, modules, production_e | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
19/12/02 | SR | 2.5 | N | Restart times can be set by user with new runtime (d3par) parameters restart_time and dt_restart. Run description header is written on file CONTINUE_RUN. Output of cpu statistics changed (PE results are now collected on PE0 in order to calculate mean cpu statistics). Output of warnings in the job protocol in case of negative measured cpu-times. Remaining cpu-time is also evaluated on IBM-Regatta. | cpu_log, cpu_statistics,
check_parameters,header, leap_frog,
local_tremain, local_tremain_ini, modules, palm, new:
deleted: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| | | C | Unit
14 (BINOUT) must be opened using a special
process
id string, because on IBM, the PE rank differs between communicators
MPI_COMM_WORLD
and comm_2d. This leads to a mismatch between filename-PE-number and
PE-number
written on file. As the consequence, these files could not be read by
restart-jobs.
Reading of array hom moved from init_3d_model
to read_var_list
(binary version number incremented to 2.2). Further
optimization for IBM-Regatta-systems: Further cache optimization by using strides and joining loops (hybrid_solver, pres and timestep). Joining of MPI_ALLREDUCE calls in timestep. In case of 1d-decomposition along x only a part of the integral divisor conditions is checked, on IBM hosts a 1d-decomposition along x is the default, a switch from Poisson-FFT-solver to the hybrid-solver is made in case of 1d-decomposition along x, the hybrid-solver does not force a 1d-decomposition any more. Array notation changed to do-loop constructs due to better performance. Cyclic boundary conditions along y used instead of sendrecv in case of a 1d-decomposition along x. SENDRECV replaced by nonblocking routines ISEND and IRECV in exchange_horiz.f90. Speed optimization by removing MINVAL/MAXVAL calls and by
handling | asselin_filter, check_open, exchange_horiz, global_min_max, init_3d_model, init_pegrid, parin, poisfft_hybrid, read_var_list, timestep, write_3d_binary, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B | Correction
of mixing length term (l(k)/ll(k)).
The condition
kh=3*km in the unstable case is now also exactly met in the wall
adjustment
region. Factor 0.7 in wall adjustment part replaced by variable wall_adjustment_factor,
which is set to 1.8 in modules.f90. The factor
0.7 was the
possible
reason for 2-delta-x-waves, which were observed since version 2.1d. Calculation of deformation tensor re-designed (production_e). STOP statements replaced by call of new subroutine local_stop, where MPI_FINALIZE is called before STOP in case of a parallel environment. ISO2D parameter dp set to true for ibm hosts. tend=p added in pres after calling sor method. | advec_s_bc, buoyancy,
check_open,
check_parameters, close_file,
coriolis, diffusion_e, diffusivities, fft_for_1d_decomp,
flow_statistics,
init_3d_model, init_dvrp, init_grid, init_particles, init_pegrid,
parin,
plot_2d, poisfft, pres, read_var_list, user_interface, new:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
03/03/03 | SR | 2.5a | N | Particle velocities are also stored in array particles in case of zero density ratio. Steering of variables by dvrp browser included. | advec_particles, init_dvrp, modules, | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | AVS
data format changed from float to xdr_float
(needed
on linux machines due to the little/big endian problem). Updates for new version of dvrp software (e.g. using module dvrp is now mandatory). | close_file, init_dvrp, leap_frog, plot_dvrp | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B | Error in particle inertia part removed
(exp_arg
must not
contain the timestep). Error in calculation of the vertical flux of resolved scale energy (profile 57) removed. Displacement for integers in mpi_particle_type reduced from 16 to 8 on ibm. | advec_particles, flow_statistics, init_particles | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12/03/03 | SR | 2.6 | N | Version optimized for NEC-SX6
parallel-vector
machines. There are two main changes. A new vectorizable routine prognostic_equations_vec is added, where cache optimizations are undone. The tendency subroutines called by prognostic_equations_vec contain the full 3d-loops (compared with the cache-optimized versions where only loops over k are carried out). Additionally, a new pressure solver poisfft_hybrid_vec is added, which requires a 1d-domain-decomposition (like poisfft_hybrid). In this solver, a very fast FFT from Clive Temperton (ECMWF) is optionally available by choosing fft_method = 'temperton-algorithm'. Additional changes in flow_statistics to allow better vectorization. Small changes in routines diffusivities and pres which caused run time errors on IBM and NEC due to compiler problems. Reading of environment variable tasks_per_node moved from routine poisfft_hybrid to routine parin. Changes in makefile: modules and user_interface now depend on the f90 files, dependency of singleton added, LDFLAGS moved to the end of PROG rule, temperton_fft added. | advec_s_pw, advec_s_up, advec_u_pw, advec_u_up,
advec_v_pw,
advec_v_up, advec_w_pw, advec_w_up, buoyancy, calc_precipitation,
calc_radiation,
check_parameters, coriolis, cpu_log, diffusion_e, diffusion_s,
diffusion_u,
diffusion_v, diffusion_w, diffusivities, fft_for_1d_decomp, header,
impact_of_latent_heat,
init_pegrid, leap_frog, local_tremain, modules, parin, poisfft,
poisfft_hybrid,
pres, production_e, prognostic_equations, user_interface new:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B | tend=p added in routine pres after calling sor method. | pres | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14/03/03 | SR | 2.6a | N | Additional
vector optimization for NEC-SX6. Optional system-specific random number generator available (for equal distributed numbers). Define strings in all relevant subroutines changed from #if defined( define_string ) to #if defined( __define_string ) Caution: The relevant subroutines are NOT listed in the right column! | asselin_filter, check_parameters, diffusion_e, diffusivities, disturb_field, global_min_max, header, local_tremain, modules, parin, poisfft_hybrid, pres, read_var_list, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B | Error in particle boundary condition removed (velocity must be inverted in case of reflection) | advec_particles | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16/04/03 | SR | 2.6b | N | Time
series output of Monin Obukhov length. Temperton fft can now be used for all hosts and every domain decomposition. Abort in case of Temperton fft, if number of gridpoints along x and/or y contain illegal factors. Index values for the extrema found in global_min_max are limited to the range 0..nx, 0..ny (on IBM machines -1 and nx+1/ny+1 occured which produced different RUN_CONTROL output compared to other machines). Output format of iteration count in routine run_control enlarged. | check_parameters, fft_for_1d_decomp, global_min_max, init_pegrid, modules, plot_ts, poisfft, run_control, temperton_fft | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B | Additional checks of variables hybrid_solver
and host
(hybrid_solver must not be used for a
2d-domain-decomposition, host
should be set by setting environment variable localhost).
Header output for mixing length limitations revised. | check_parameters, header | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
09/05/03 | SR | 2.7 | N | Version
running on Linux Clusters using MPICH
and Intel
FORTRAN compiler (ifc) So far, only absolutely neccessary changes have been done (possible optimizations will follow in a later version): New time measurements for Linux (ifc) environment added. Some parameters in MPI calls had to be modified (arrays had to be replaced by the first element of the regarding array) in order to fulfill f90 type and rank requirements, since on the MUK-cluster a FORTRAN90-version of MPI is used. This also required to replace "mpif.h" by using a special module (named mpi). I did not find out how character strings can be send with MPI. Therefore, these strings are transformed to integers, before they are send, and transformed back to characters on the receiving PE. On the MUK-cluster, only PE0 is able to read the values of environment variables. Therefore, these values are communicated via broadcast to the other PEs. 1d-decomposition is set as the default on Linux Clusters. Character strings have to be transformed to integer Smaller changes: Batch_scp paths for IBM, NEC and Linux added | check_open, cpu_log, flow_statistics, init_pegrid, local_getenv, modules, palm, poisfft_hybrid | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
B | Measurements on IBM are now using function irtc, which allows correct measurements for jobs running over the 24:00 timeline. | cpu_log, local_tremain, local_tremain_ini | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
01/08/03 | SR | 2.7a | B | Check that the number processors is also
an
integral divisor
of the number of gridpoints along y in case of a
1d-decomposition
along x. Error concerning the multinode-version of poisfft_hybrid removed. It was caused by the Linux changes of version 2.7 and led to program abort due to MPI errors in MPI_ALLTOALL. No abort on t3e-systems if system specific routines are used. Array sums is initialized in init_3d_model before the first call of pres. Call of init_cloud_physics moved before init_particles. | fft_1dd_init, init_3d_model, init_pegrid, poisfft_hybrid | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
N | Interactive steering of dvrp-graphic features by dvrp-browser plugin extended (position of slicers, threshold values of isosurfaces) . New dvrp_graphics package parameter slicer_range_limits_dvrp. | init_dvrp, modules, package_parin, plot_dvrp | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
29/10/03 | SR | 2.7b | N | In
the multigrid method, on a defined level,
data are gathered
on PE0 and further calculations are carried out only on this PE. New
d3par parameter mg_switch_to_pe0_level.
Particle groups implemented. New data type particle_groups_type and data type particle_type modified. Version numbers are output on the particle files. New particles_par parameter diameter. Parameter name uniform_psize changed to dvrp_psize. Parameters density_ratio is now an array. | advec_particles, check_open, exchange_horiz, header, init_particles, init_pegrid, modules, package_parin, parin, poismg | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | Random number generator from numerical recipes
is now rewritten
as a module. In restart runs the seed of this generator is set to the
last
values of the previous run in order to keep the sequence of the random
numbers. New binary version 2.2. Buffer is flushed for file RUN_CONTROL immediately after every output on IBM and Linux cluster. | advec_particles, disturb_field, init_3d_model, init_particles, random_function, random_gauss, run_control, write_3d_binary | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | In routine buoyance, horizontal mean
temperature
is now
taken from array hom instead of array sums (otherwise inconsistence in
case of using more than one statistical region). Information about the time of the last timestep change added to the restart file. System call of batch_scp on IBM corrected. | buoyancy, check_open, read_var_list, write_var_list | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
28/01/04 | SR | 2.8 | N | Runge-Kutta schemes (2nd and
3rd
order)
for time integration implemented. The third order scheme is the new
default.
It allows the timestep to be 0.9*CFL, which is much larger than for the
former default leapfrog scheme. The intermediate steps, which
are
part of these schemes, are realized by an additional loop within routine
time_integration (currently
leap_frog, but this routine will be renamed soon).
Steering
variables
at and
bt have
been replaced by array
sct.
, which is particularly used in the prognostic equations. Values of
this
steering array are calculated within the new routine
timestep_scheme_steering. When using Runge-Kutta schemes, the timestep increment is freely allowed to adjust after each timestep (the older schemes are using some restrictions, see routine timestep). Also, routine run_control is not automatically called in case of timestep changes, when Runge-Kutta schemes are switched on. The old leapfrog scheme is still implemented and should produce the same results as in the previous version(s)! Depending on the user experience, further adjustments to the Runge-Kutta schemes may be necessary within the next minor versions. Attention:
| check_parameters, header,
init_3d_model,
init_rankine, leap_frog, modules, prognostic_equations, read_var_list,
swap_timelevel, timestep, write_var_list new: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | Output of particle infos in
subroutine
allocate_prt_memory on demand only. Type log (used for cpu time measurements) changed to logpoint due to name conflict with FORTRAN intrinsic log. | advec_particles, cpu_log, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | In case of opening unit 80, a barrier is set only for the first call of check_open (from routine init_particles), in order to avoid the possibility of hanging jobs, which may occur if unit 80 is opened within routine allocate_prt_memory. | check_open | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30/01/04 | SR | 2.8a | N | In order to prepare the code
for
the simulation
of flow around buildings (to be realized in one of the next major
versions),
the lower k index
nzb has been replaced by a two-dimensional array
nzb_2d in many of the three-dimensional loops. So
far, all
elements of this array are set to
nzb. This change should not effect simulation results and cpu time in any way. | advec_s_pw, advec_s_up, advec_u_pw, advec_u_up, advec_v_pw, advec_v_up, advec_w_pw, advec_w_up, asselin_filter, buoyancy, calc_liquid_water_content, calc_precipitation, calc_radiation, coriolis, diffusion_e, diffusion_s, diffusion_u, diffusion_v, diffusion_w, diffusivities, impact_of_latent_heat, init_3d_model, modules, production_e, prognostic_equations, | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | Euler step informations are
removed in
the run control output in case of Runge-Kutta schemes. Also, the
timestep
increment limitation is removed for the Runge-Kutta schemes. Attention: | run_control, timestep | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Velocity gradients at the surface calculated in routine production_e are now limited. In case of inhomogeneous surface heating small diffusivities (km) sometimes caused very small timesteps due to this problem. | production_e | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30/04/04 | SR | 2.8b | N |
The number of processors
along
the respective directions of the virtual processor grid must not be
integral divisors of the number of gridpoints along x, y or z any more.
In case that they are not integral divisors, the subdomains on the
processors at the upper borders of the virtual grid will contain less
gridpoints than the other subdomains (which are all of equal size).
Although this causes a load imbalance, only runs with very small
numbers of processors will feel a significant decrease of performance.
In order to be able to carry out the transpositions, array d (and also
working array tend)
have the same size on
all processors. This new feature is switched on by setting the
inipar-parameter
grid_matching = 'match',
which is the
default now. Routine poisfft is now the default for solving the Poisson-equation for the case of 2d- as well as 1d-domain-decompositions and has been changed from a subroutine to a module. This routine now includes most of the optimization from the (Ketelsen) routine poisfft_hybrid and additionally allows 1d-decompositions along y. ATTENTION: Routine poisfft_hybrid might still be faster when running PALM on more than one node of the IBM-Regatta, although the difference is not very big. The poisfft-code for a decomposition along y has still a poor performance and needs further optimization. The spectra-package is now able to use all the available FFT-methods (selected by inipar-parameter fft_method ). Performance of the transpositions needed for calculating the spectra has been improved by using new direct transpositions from z to y and from y to x instead of two subsequent transpositions. Runge-Kutta scheme implemented in the 1d-version (init_1d_model). Diffusion quantity arrays are allocated for previous timelevels only in case of leapfrog scheme. This version is adapted for use on COMPAQ-DECALPHA systems (main changes: calling of SHAPE function within subroutine arguments (e.g. singleton) causes compiler errors, particle data type modified for better alignment, DATA statements from modules removed because they caused internal compiler errors). | advec_s_ups, advec_u_ups,
advec_v_ups, advec_w_ups, calc_spectra, check_parameters, fft_xy,
header, init_1d_model, init_3d_model, init_particles, init_pegrid,
modules, parin, plot_2d, poisfft, prandtl_fluxes, pres, read_var_list,
singleton, spline_x, spline_y, spline_z, time_integration, transpose,
write_3d_binary, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | FFT routines renamed. Module fft_for_1d_decomp renamed fft_xy.
Subroutine leap_frog
renamed
time_integration. For all transpositions, MPI_ALLTOALL is used instead of MPI_ALLTOALLV. The names of many transposition indices have been changed. Inipar-parameter impulse_advec renamed momentum_advec. Reading of restart data is moved from init_3d_model to new routine read_3d_binary. All former transpose routines collected into one file. |
check_parameters,
flow_statistics, header, init_1d_model, init_3d_model, init_advec,
init_pegrid, palm, parin, poisfft, poisfft_hybrid, production_e,
prognostic_equations, read_var_list, sline_x, spline_y, write_var_list new: fft_xy, read_3d_binary, time_integration, transpose deleted: fft_for_1d_decomp, leap_frog, transpose_xy, transpose_xz, transpose_yx, transpose_yz, transpose_zx, transpose_zy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Small errors in the
particle-package removed, which sometimes caused aborts of restart runs
on IBM. Small error in calculating the time series profiles removed (array bounds of some arrays needed for profil-output had to be increased). Function fft (singleton method) replaced by subroutine fftn due to problems with 64-bit mode on IBM | advec_particles,
check_parameters, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
26/03/05 |
SR |
2.9 |
N | Non-cyclic lateral boundary
conditions implemented. Dirichlet/Neumann conditions at the inflow/outflow can be used either along x or along y. Cyclic conditions have to be used along the remaining direction. In case of non-cyclic conditions along x (y), the upper bound nxl (nyn) of array u (v) is enlarged by one gridpoint on the rightmost (northest) processor. These array index informations are passed to routine exchange_horiz and disturb_field by two additional arguments. Boundary conditions are set with new inipar-parameters bc_lr and bc_ns. A damping layer is needed at the outflow in order to damp reflections (see new parameters km_damp_max and outflow_damping_width) and an additional disturbance is imposed near the inflow (see new parameters inflow_disturbance_begin and inflow_disturbance_end). Non-cyclic conditions require the use of the multigrid-method for solving the Poisson equation. Argument range added to routine boundary_conds (where the non-cyclic conditions are set). Minor changes: Output of parameter datform on &GLOBAL-Namelist (iso2d). This is set to 'big_endian' on IBM- and NEC-machines. Number of particle groups are additionally calculated in header (formerly unknown). | advec_u_pw,
advec_u_up, advec_v_pw, advec_v_up, boundary_conds,
calc_liquid_water_content, check_parameters, close_file, coriolis,
diffusion_u, diffusion_v, diffusion_w, diffusivities, disturb_field,
exchange_horiz, header, init_3d_model, init_pegrid, init_pt_anomaly,
init_rankine, modules, parin, poismg, pres, prognostic_equations,
read_var_list, sor, time_integration, timestep, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | pres is called
by default only
at the last Runge-Kutta-substep, which spares a big amount of CPU-time
(see also new parameter
call_psolver_at_all_substeps). No pressure term in the
momentum
equations in case of Runge-Kutta-schemes. Attention: The content of the testresult-file (run control output) has changed due to this modification. Program speedup by removing the exchange of ghost points in routines calc_liquid_water_content, diffusivities, . Default value for residual limit increased from 1E-6 to 1E-4. Routine prolong in poismg simplified (one call of exchange_horiz spared). | calc_liquid_water_content,
diffusivities, modules, poismg, pres, time_integration,
timestep_scheme_steering | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Calculation of vertical
particle
velocity (with inertia) corrected, exp_arg had a wrong sign. (e)**1.5 replaced by e*SQRT(e) in init_1d_model because of wrong results on NEC machines (as a side effect, the new calculation is much faster). Two errors concerning switch to PE0 (multigrid method) removed from init_pegrid. Two errors in plot_2d removed: local_2d is allocated with upper bound nzt (former nzt+1 was wrong), additional barrier in case that PE0 gathers data from the other PEs, this barrier had to be set at the end of the gathering because otherwise PE0 sometimes received wrong data on tag 0. Use of module indices removed from routine split_1dd in poisfft since it caused errors in case of nx /= ny and a 1D-decomposition along y. Wrong re-definition of dx2 and dy2 in sor removed. | advec_particles,
init_1d_model,
init_pegrid, plot_2d, poisfft, sor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
23/04/05 |
SR |
2.9a |
C | Additional check for
incompatibilities between non-cyclic lateral boundary conditions and
other schemes. fcl_factor renamed cfl_factor. New local array sums_ll declared in flow_statistics instead of temporarily using sums_l. crmax (maximum number of crosses allowed in a plot of vertical profiles) increased from 20 to 100. | calc_spectra, check_parameters,
flow_statistics, header, modules, parin, timestep |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Revised calculation of output
time counters regarding a possible decrease of the output time interval
in case of restart runs. Error removed in Dirichlet bottom boundary conditions for pt and q in case of Runge-Kutta schemes. batch_scp calls (needed for determining correct filenames for AVS-fld-files) is given the remote username as an additional argument. Default setting of outflow_damping_width corrected. Initial horizontal velocities at the lowest grid levels in the 1d-model are set to a very small value in order to avoid wrong results and the resulting too small timesteps. Implicit counters i renamed i9 in modules due to declaration conflicts with i in other subroutines (reported by Portland compiler). |
advec_particles,
boundary_conds,
check_open, check_parameters, init_1d_model, modules, time_integration | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
18/05/05 |
SR |
2.10 |
N | NetCDF support implemented. Profiles, time series, spectra, cross-sections, 3d-volume-data and particle data can now be output in NetCDF format (file handles 101-108). This output can be switched on with the new d3par-parameter data_output_format. So far, this support is available on IBM systems at HLRN and on the NEC system at DKRZ. Output in format suitable for graphic software profil, iso2d and avs is still possible. Output of cross sections for qv, vpt and lwp (liquid water path). | advec_particles,
check_open,
check_parameters, close_file, header, modules, parin, plot_1d, plot_2d,
plot_3d, plot_spectra, plot_ts, read_var_list, write_var_list new: netcdf | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | In calc_spectra, n
is assigned the
number of spectra (formerly, the number of spectra was given by n-1) Abort if poisfft_hybrid is called in a non-parallel environment. Default values of spectra package parameters pl_spectra and spectra_direction changed. | calc_spectra,
check_parameters,
modules, pres, read_3d_binary, write_3d_binary | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Missing argument in ffty
(non-parallel case) added. Error in output of particle inertia information removed. |
poisfft, header | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
05/07/05 |
SR |
2.11 |
N/C |
New cloud physics code
implemented, which explicitly simulates single cloud droplets,
including droplet growth by condensation and collision. Using this code
requires to set the new inipar-parameter cloud_droplets
= .TRUE. and to use the particle package (by using the mrun-option -p particles).
Coupling between droplets and the thermodynamic quantities (potential
temperature and specific humidity) is regarded in the new subroutine interaction_droplets_ptq.
The real number of droplets in a grid cell can steered by the new
inipar-parameter initial_weighting_factor. This code will be further extended and probably changed in the near future, so the current status is that of a test version! In connection with this new code implementation, several changes has been made to the existing code: The particle (droplet) size is now given as radius (previously diameter). E.g., the name of the respective package parameter diameter has changed to radius. The current weighting_factor and radius are stored as additional particle attributes in the type structure particle_type. The MPI data type mpi_particle_type, needed for exchanging particles between subdomains, has been changed correspondingly. gas_constant is renamed r_d, latent_heat is renamed r_v, the allowed string length of pl2d and pl3d is increased from 6 to 10. New 3d arrays ql_1, ql_2, ql_v and ql_vp, ql is now a pointer, new pointer ql_c. Data format for unit 85 (particle data output) is changed. | advec_particles.f90
check_open.f90, header.f90, init_3d_model.f90, init_cloud_physics.f90,
init_particles.f90, modules.f90, package_parin.f90, parin.f90,
plot_2d.f90, plot_3d.f90, read_var_list.f90, time_integration.f90,
write_var_list.f90 new: interaction_droplets_ptq.f90 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | Default value of call_psolver_at_all_substeps is .TRUE., because small scale waves occured with .FALSE. | modules.f90 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | 2d- and 3d-NetCDF-files are not
opened if there is no output for them (pl2d = pl3d = ' '). No opening of units 101 - 108 in case of missing NetCDF support. |
check_open.f90, netcdf.f90 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30/06/05 |
GS |
2.11a |
C | Scalars ug and vg have been
changed into
arrays in order to allow the specification of a geostrophic wind that
depends on height (baroclinicity). The initial profiles of the the
u- and v-component of the geostrophic wind are initialized by
specifying the new initialization parameters ug_surface, ug_vertical_gradient,
ug_vertical_gradient_level
and vg_surface,
vg_vertical_gradient,
vg_vertical_gradient_level,
respectively. The former initialization parameters ug and vg have been removed. | boundary_conds,
check_parameters, coriolis, header, init_1d_model, modules, parin,
prognostic_equations, read_var_list, spline_z, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Error in the calculation of u_0
and
v_0 in production_e.f90 removed. Attention: The content of the testresult-file (run control output) has changed due to this modification. | production_e |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
20/10/05 | SR | 2.11b | N/C | Collision process for droplet
growth completed. The droplet code is still under development and requires further speed optimization! Number of particles really used is additionally output on the netcdf particle data file. |
advec_particles, modules, netcdf | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | The
last PE in a row is not allowed to have more grid points than the other
PES (only less). Jobs crashed in these cases that the last PE has more
grid points. Therefore, the number of gridpoints along x (and y) must
now meet a special condition which is checked in case that grid_matching =
'match' is
used. Error removed in calculating y axis data for yz cross sections. Error in output of netcdf yz-cross-sections removed. 2*r replaced by r in the exponential term of the particle momentum equation. Error in output of yz-slice information removed. | advec_particles, header, init_pegrid, netcdf, plot_2d | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
06/12/05 | SR | 2.11c | N | Output of ql profile is allowed in case of using cloud droplets. | check_parameters, flow_statistics, modules | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | The horizontally averaged pt
profile is calculated within
buoyancy only
in case of the first respective intermediate timestep. This is done in
order to spare communication time and to produce identical model
results with jobs which are calling flow_statistics at
different time intervals. Error in netcdf variable declaration for statistic_regions /= 0 removed. |
buoyancy, netcdf | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
23/02/06 | SR | 3.0 | N | Version for simulating flows over
topography (buildings, mountains, etc.) Besides the implementation of topography, this version contains several other improvements. The most important ones are listed here:
The topography code is already optimized (vectorized) for use on the NEC-SX6. Output of time-averaged 2d-/3d-data can be enabled by appending the string '_av' to the respective output quantities given with the new runtime-parameter data_output (see further below for the (name)changes in the parameters for data output). Example: if a time-average of the vertical cross-section of potential temperature is required, the user has to set data_output = 'pt_xy_av'. In case of NetCDF-output, the time-averaged data is output to additional files (seperate from the non-averaged output). The length of the averaging interval and the temporal distance of the single instantaneous sections (volumes) entering into this averaging is controlled by the new runtime-parameters averaging_intervaland dt_averaging_input. An average normal to the direction of a cross-section can be output by setting the respective cross section index to -1 (example: section_xz = -1). New user-interface routines allowing the output of user-defined quantities are user_check_data_output, user_define_netcdf_grid, user_data_output_2d, user_data_output_3d, and user_3d_data_averaging. These quantities can be calculated using the new CASE-Entry 'after integration' in the user-interface routine user_actions. Optimization of the cloud droplet code is mainly done by re-sorting all particles after every timestep in a way that now all particles which belong to the same grid-box (k,j,i) are stored consecutively (wthout any strides) in memory. Code adaptation for the IBM at the department of atmospheric sciences, Yonsei university (ibmy). Affected subroutines: fft_xy, netcdf, Further new features:
| advec_particles,
advec_s_pw,
advec_s_up, advec_u_pw, advec_u_up, advec_v_pw, advec_v_up, advec_w_pw,
advec_w_up, boundary_conds, buoyancy, check_open, check_parameters,
close_file, coriolis, diffusion_e, diffusion_s, diffusion_u,
diffusion_v, diffusion_w, diffusivities, disturb_field,
disturb_heatflux, exchange_horiz_2d, exchange_horiz, flow_statistics,
header, init_1d_model, init_3d_model, init_grid, init_particles,
init_pegrid, modules, netcdf, package_parin, parin, poisfft,
prandtl_fluxes, pres, production_e, prognostic_equations,
read_3d_binary, read_var_list, run_control, time_integration,
user_interface, write_3d_binary, write_var_list new: average_3d_data, data_log, sum_up_3d_data renamed: plot_dvrp -> data_output_dvrp plot_spectra -> data_output_spectra plot_ts -> data_output_tseries plot_1d -> data_output_profiles plot_2d -> data_output_2d plot_3d -> data_output_3d | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | In
parallel mode, all PEs are opening the same copy of the
NAMELIST-parameter file PARIN,
i.e. from now on, the file attribute "npe" must be
removed from the corresponding file connection statements in the mrun configuration
file (.mrun.config). A large number of parameter names and local filenames have been changed (see list below). Most of them are parameters concerning data output (do). The former denotations "plot" and "pl" have been changed to "data_output" and "do", respectively. In addition to these changes, the names of many internal PALM parameters and variables have also changed. Restart runs now require setting of the initialization-parameter initializing_actions = 'read_restart_data'. Concerning particles, the parameters psl, psr, pdx, etc., which are controlling the position of the particle source and the number of particles within this source, are now 1d-arrays. This allows to define different particle sources for different particle groups. The number of particle groups has to be set by the user (no automatic calculation from the value of parameter density_ratio any more). Variable idum in type particle_type has been renamed tail_id. Output for units 15 and 17 flushed in init_1d_model. List of changed parameter names:
| advec_particles,
advec_s_bc, check_parameters, check_open, close_file,
data_output_dvrp, data_output_profiles, data_output_tseries,
data_output_2d, data_output_3d, flow_statistics, header, init_1d_model,
init_3d_model, init_dvrp, init_particles, init_pegrid, init_slope,
modules, netcdf, package_parin, palm, parin, print_1d, read_var_list,
run_control, time_integration, timestep, write_compressed,
write_var_list | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Error in
the particle release (defaults of psl, psr, psn, pss) at the PE
boundary has been fixed. Error removed getting the variable ids for _ext for profiles and time series. NetCDF calls in data_output_tseries only if NetCDF output is switched on. Output of the initial geostrophic wind profile corrected. Maximum possibel timestep for Runge-Kutta-schemes reduced, error concerning initialization of l_black removed (both in init_1d_model). | advec_particles,
data_output_tseries, header, init_particles, init_1d_model, netcdf | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
26/04/06 | SR | 3.0a | N | OpenMP parallelization for
the cache-optimized PALM code. OpenMP directives have been added where necessary. Still further tuning will be necessary to get optimum performance. Other parts of the code than the cache-optimized code still need to be (OpenMP-) parallelized. So far, threads are activated by setting the mrun-options -T <number_of_threads> and -O, i.e. when the Option -O is given, the -T argument is interpreted as the number of threads to be used. When -O is given, the number of MPI tasks per node is automatically set to 1. Beside the additional compiler directives, the main code change required by the OpenMP parallelization is that global sums are now calculated by first calculating local sums on each thread. As the next step, local sums are calculated from these thread sums for each MPI task before the global sum is computed via MPI_ALLREDUCE. For storing the thread sums, arrays sums_l and sums_l_l now have three dimensions where the number of elements of the third dimension is equal to the number of OpenMP threads. | buoyancy, cpu_statistics, diffusivities, flow_statistics, header, init_pegrid, init_3d_model, modules, prandtl_fluxes, pres, production_e | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ML | C | Provisional correction for Piacsek & Williams advection scheme: keep u and v zero one layer below the topography (in case of set_1d-model_profiles). | init_3d_model | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SR/ML | E | In flow_statistics.f90
nzb_s_inner(j,i) replaced by nzb in determination of z_i. Errors removed in the computation of the diabatic mixing length (init_1d_model.f90). Error removed in extend mode when checking whether the selected cross sections match those in the already existing NetCDF file (netcdf.f90). | flow_statistics, init_1d_model, netcdf | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
02/06/06 | SR | 3.0b | N | This version is adapted to the Sun Fire X4600 system at TIT (to be used by setting the mrun option -h lctit). | cpu_log, init_1d_model, local_tremain, locaö_tremain_ini, run_control | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | NetCDF 2d-
and 3d-datasets now contain the exact coordinates of the variables
along x and y with respect to the positions where they are defined on
the staggered grid. NetCDF datasets of cross sections (e.g. DATA_2D_XY_NETCDF) are only opened if the respective cross sections are really requested by the settings of parameter data_output. | check_parameters, data_output_2d, data_output_3d, modules, netcdf, user_interface | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | p is assigned to to_be_resorted instead of w | data_output_2d | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
04/08/06 | SR | 3.1 | N | Subgrid
scale velocities can (optionally) be included for calculating the
particle advection, using the method of Weil et al. (2004, JAS, 61,
2877-2887). This method is switched on by the new particle package
parameter use_sgs_for_particles.
This also forces the Euler/upstream method to be used for time
advancement of the TKE (see new parameter use_upstream_for_tke).
The minimum timestep during the sub-timesteps is controlled by
parameter dt_min_part.
The data type particle_type
has additional new attributes e_m,
dt_sum,
and speed_x/y/z_sgs. Other new particle features: output of particle quantities as timeseries in NetCDF format (on local file DATA_1D_PTS_NETCDF). The output time interval is controlled by parameter dt_dopts. Particle advection can be switched off after some time using parameter end_time_prel. More than one particle per point can be started with parameter particles_per_point. Additional parameter in function random_gauss which limits the range of the created random numbers to five times the standard deviation (=1). Seeds iran and iran_part are stored for restart runs. | advec_particles,
check_open, check_parameters, close_file, diffusion_e,
disturb_heatflux, header, init_3d_model, init_particles, modules,
netcdf, package_parin, parin, prognostic_equations, random_gauss,
read_3d_binary, read_var_list, time_integration, write_3d_binary,
write_var_list new: data_output_ptseries | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | Call of subroutine header is moved
after call of subroutine init_3d_model.
Generation of run_description_header
is moved from routines palm
and header
to check_parameters.
Determination of the number of particle groups is moved from header to init_particles. izuf renamed iran. | check_parameters, disturb_field, disturb_heatflux, header, init_particles, modules, palm | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Variables
do2d_unit and do3d_unit now defined as 2d-arrays. Before, in some
cases, the units of variables in the 2d- and 3d-NetCDF-files have been
wrong. In routine poisfft default setting of the thread number tn in case of not using OpenMP. Error removed in the non-parallel part of routine flow_statistics (number of arguments of array sums_l). Error removed which appeared if the user had decreased the value of dt_dopr within a job chain and if simulataneous time averaging of profiles was switched on. | check_parameters, data_output_profiles, flow_statistics, modules, netcdf, poisfft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
22/08/06 | SR | 3.1a | N | In case of more than one
particle group, seperate output of timeseries for each of the groups. New initial parameter dz_max, which limits the vertical gridspacing in case of a vertically stretched grid. | data_output_ptseries, header, init_grid, modules, netcdf, parin, read_var_list, write_var_list | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | Disturbances are imposed only
for the last Runge-Kutta-substep. Attention: The content of the testresult-file (run control output) has changed due to this modification. Output of xz and yz cross sections now up to gridpoint nzt+1. Default settings of particle start positions changed. | check_open, close_file, data_output_2d, init_particles, netcdf, time_integration | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Initialisation of all tendency
arrays (t.._m) needed for the Runge-Kutta schemes. Bugfix in index array initialization for line- or point-like topography structures. Bugfix: yv coordinates are now used for yz cross sections, where neccessary. | init_3d_model, init_grid, netcdf | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12/02/07 | SR | 3.1b | N | Attention: This is the last revision before switching to the subversion revison control system! Informative output to the job protocoll in case of restarts. | check_for_restart | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | Values of environment variables
are now read from local file ENVPAR
instead of getting them by a system call. For interpolation in advec_particles, allways level k is used. | advec_particles, local_tremain_ini, parin | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Several bugfixes in advec_particles:
new particles are released only if end_time_prel
> simulated_time, transfer
of particles when x < -0.5*dx (0.0 before), etc., index i,j used
instead of cartesian (x,y) coordinate to check for transfer because
this failed under very rare conditions, calculation of number of
particles with same radius as the current particle (cloud droplet code). Allocation of tail_mask and new_tail_id in case of restart-runs. "__" added in a cpp-directive. (both init_particles) | advec_particles, init_particles | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
02/03/07 | SR | 3.1c | N | A heatflux can be prescribed at
the top with new inipar parameters top_heatflux
and use_top_fluxes.
New 2d-arrays qswst,
qswst_m,
tswst
and tswst_m
are used to store this flux. Use of fluxes are controlled with new
index variable nzt_diff.
A Neumann boundary condition for temperature can be applied under these
conditions. Additionally, a Dirichlet condition for temperature can be used at the top. Attention: The content of the testresult-file (run control output) has changed due to this modification. | check_parameters, diffusion_s, flow_statistics, header, init_grid, init_3d_model, modules, parin, production_e, prognostic_equations, read_var_list, read_3d_binary, swap_timelevel, write_var_list, write_3d_binary | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | Prognostic equations for all
scalars are now solved up to gridpoint nzt (formerly nzt-1).
Boundary conditions for scalars at top adjusted respectively (now
applied only at nzt+1). The default top boundary condition for temperature has been renamed to 'initial_gradient'. Calls of dvrp_output_local, which were commented out for a long time, are now activated for all streams. | advec_s_pw, boundary_conds, calc_precipitation, check_parameters, diffusion_e, diffusion_s, impact_of_latent_heat, init_dvrp, init_pt_anomaly, modules, production_e, prognostic_equations, spline_z | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Bugfix: 3d-array p is not a
pointer any more. Bugfix in init_particles: MPI_REAL argument in MPI_ALLREDUCE replaced by MPI_INTEGER (caused error on NEC only). Bugfix: ddzw now dimensioned 1:nzt"+1". | diffusion_e, diffusion_s, diffusion_u, diffusion_v, diffusion_w, init_particles, modules | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
29/03/07 | SR | 3.2 | N | The code, including scripts, utility programs and documentation is now under full control of subversion. This revision includes a quite large number of new features, changes and bugfixes. Particle reflection from vertical walls implemented. The particle SGS model is also adjusted to these vertical walls. Wall functions for vertical walls now include diabatic conditions. New subroutines wall_fluxes, wall_fluxes_e. New 4D-array rif_wall. Calculation/output of precipitation amount, precipitation rate and z0 (by setting "pra*", "prr*", "z0*" with data_output). The time interval on which the precipitation amount is defined is set by new d3par-parameter precipitation_amount_interval. New inipar-parameter loop_optimization to control the loop optimization method. New inipar-parameter pt_reference. If given, this value is used as the reference that is used in the buoyancy terms (otherwise, the instantaneous horizontally averaged temperature is used). New d3par-parameter netcdf_64bit_3d to switch on and especially to switch off 64bit offset for 3D files only (because still some pd-software is unable to handle 64bit offset). New d3par-parameter dt_max to set the maximum value allowed for the timestep. New user interfaces user_advec_particles and user_init_3d_model. The new initializing action "by_user" calls user_init_3d_model and allows the initial setting of all 3d arrays under complete user control. Samples added to the user interface which show how to add user-define time series quantities. Topography height informations are stored on arrays zu_s_inner and zw_w_inner and output to the 2d/3d NetCDF files. Unit 9 is generally opened for output of debug informations (file DEBUG_<pe#>). | Makefile advec_particles, average_3d_data, buoyancy, calc_precipitation, check_open, check_parameters, data_output_2d, diffusion_e, diffusion_u, diffusion_v, diffusion_w, diffusivities, header, impact_of_latent_heat, init_particles, init_3d_model, modules, netcdf, parin, production_e, read_var_list, read_3d_binary, sum_up_3d_data, user_interface, write_var_list, write_3d_binary new: wall_fluxes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C | General revision of non-cyclic horizontal boundary conditions: Radiation boundary conditions are now used instead of Neumann conditions at the outflow (calculation needs velocity values for t-dt, which are stored on new arrays u_m_l, u_m_r, etc.). The calculation of a mean outflow is not needed any more. Volume flow control is added for the outflow boundary (currently only for the north boundary!!). Additional gridpoints along x and y (uxrp, vynp) are not needed any more and removed from the code. Routine "boundary_conds" now operates on timelevel t+dt and is not split in two parts (main, uvw_outflow) any more. Neumann boundary conditions are used at inflow/outflow in case of non-cyclic boundary conditions for all 2d-arrays that are handled by exchange_horiz_2d. Attention: the non-cyclic boundary conditions of this revision still contain some bugs which will be removed within the next revisions! The Bott-Chlond-scheme can now be used in the vectorization-optimized part (NEC, etc.). Equations are solved up to gridpoint nzt. The FFT-method for solving the Poisson-equation is now working with Neumann boundary conditions both at the bottom and the top. This requires adjustments of the tridiagonal coefficients and subtracting the horizontally averaged mean from the vertical velocity field. Particles-package is now part of the default code ("-p particles" is not needed as an mrun-option any more). New attribute age_m in particle_type. Move call of user_actions( 'after_integration' ) below the increments of times and counters. user_actions is now called for each statistic region and has as an argument the number of the respective region (sr). d3par-parameter data_output_ts is removed. Timeseries output for profil-software removed. Timeseries are now switched on by setting dt_dots. Timeseries data is collected in flow_statistics. Initial velocities at nzb+1 are regarded for volume flow control in case they have been set zero before (to avoid small timesteps); see new internal parameters u/v_nzb_p1_for_vfc. q is not allowed any more to become negative (prognostic_equations). poisfft_init is only called if the fft-solver is switched on (init_pegrid). d3par-parameter moisture renamed to humidity. Subversion global revision number is read from mrun and added to the run description header and to the run control (_rc) file. __vtk directives removed from main program. The uitility routine interpret_config now reads PALM environment variables from NAMELIST instead using the system call GETENV. | advec_s_bc, advec_u_pw, advec_u_up, advec_v_pw, advec_v_up, asselin_filter, boundary_conds, check_parameters, coriolis, data_output_dvrp, data_output_ptseries, data_output_ts, data_output_2d, data_output_3d, diffusion_u, diffusion_v, disturb_field, exchange_horiz, exchange_horiz_2d, flow_statistics, header, init_grid, init_particles, init_pegrid, init_rankine, init_pt_anomaly, init_1d_model, init_3d_model, modules, palm, package_parin, parin, poisfft, poismg, prandtl_fluxes, pres, production_e, prognostic_equations, read_var_list, read_3d_binary, sor, swap_timelevel, time_integration, write_var_list, write_3d_binary | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E | Bugfix: preset of tendencies te_em, te_um, and te_vm (init_1d_model). Bugfix in sample for reading user defined data from restart file (user_init). Bugfix in setting diffusivities for cases with the outflow damping layer extending over more than one subdomain (init_3d_model). Check for possible negative humidities in the initial humidity profile. In Makefile, default suffixes are removed from the suffix list to avoid calling of m2c in cases of existing .mod files (problem on Linux systems). | Makefile check_parameters, init_1d_model, init_3d_model, user_interface |
Die einzelnen Quelltextdateien des Modells werden mit RCS (Revision Control System) verwaltet. Grundlegende Kenntnisse über dieses System werden im weiteren vorausgesetzt.
Änderungen am Modellcode erfordern die Durchführung bestimmter Aktionen in einer festgelegten Reihenfolge, die nun beschrieben werden sollen.
Dieser Abschnitt verweist auf vorhandene Beschreibungen der
genauen
Funktionsweise einzelner, spezieller Modellteile. Dazu gehört
z.B.
die Beschreibung bestimmter numerischer Verfahren (auch ihr
theoretischer
Hintergrund), die Erklärung besonderer Prinzipien bei der
Parallelisierung
oder Erläuterungen zur Vorgehensweise bei der Lösung
bestimmter
Aufgaben (z.B. der Berechnung horizontal gemittelter
Größen).
Die Beschreibungen liegen in jeweils getrennten Dokumenten,
in der
Regel als TeX- und/oder Postscript-Datei vor und sind über die
folgenden
Links zugänglich.