MESSy/CLaMS: Erstellen eines neuen CLaMS-Submodels
BML
- keine Änderungen nötig
BMIL
messy_main_channel_bi.f90
- Deklarationen zusätzlicher Dimensionen/Repraesentationen
messy_main_channel_clams.inc
- Anlegen neuer Dimensionen, Dimensionsvariablen und Repraesentationen
messy_main_control_clams.f90
Ergänze USE und Aufruf der Submodelroutinen:
clamsxxx_setup (evtl.)
clamsxxx_initialize
clamsxxx_init_memory
clamsxxx_init_coupling
clamsxxx_global_start (evtl.)
clamsxxx_global_end
clamsxxx_free_memory
messy_main_switch_bi.f90
- Broadcast des Submodel-Schalters
CALL p_bcast(USE_CLAMSXXX, p_io)
- Broadcast des Submodel-Schalters
SMIL
in messy_clams_si.f90:
Setzen von lxxxevent
Submodel-Interface messy_clamsxxx_si.f90 anlegen
- Variablendeklaration (Variablen für eigene oder gekoppelte Channelobjekte)
- Deklaration des Events für Submodel-Start:
TYPE(time_event) :: xxxevent TYPE(io_time_event) :: io_xxxevent
- Folgende Subroutines anlegen:
clamsxxx_setup (evtl.)
clamsxxx_initialize
clamsxxx_read_nml aufrufen
Event für Submodel-Start initialisieren mit timer_event_init
clamsxxx_init_memory
- Anlegen von Channels/Channelobjekten
clamsxxx_init_coupling
- Koppeln von Channelobjekten aus Channels anderer Submodule
clamsxxx_global_start (evtl.)
clamsxxx_global_end
Start des Submodels, wenn lxxxevent gesetzt ist
Aufruf des Submodel-HP xxx
clamsxxx_free_memory
- Freigeben aller im Submodel allokierten Variablen
- evtl. weitere auf SMIL-Ebene genutzte Routinen
SMCL
messy_clams_global
Deklaration von lxxxevent (Schalter, ob Submodel im aktuellen Zeitschritt läuft oder nicht)
messy_clamsxxx.f90
modver und modstr deklarieren und belegen
subroutine clamsxxx_read_nml: Einlesen der Konfiguration des Submodels
Submodel-HP xxx
messy_main_switch.f90
- Default-Deklaration des Submodel-Schalters
LOGICAL :: USE_CLAMSXXX = .false.
- USE_CLAMSXXX zu Namelist hinzufügen
in subroutine switch_init: modstr und modver aus Submodel einbinden
- (verschoben nach messy_main_switch_bi!)
- Default-Deklaration des Submodel-Schalters
Namelists
clamsxxx.nml mit Namelists CTRL und CPL anlegen
switch.nml Submodel-Schalter USE_CLAMSXXX hinzufuegen
Allgemeines
alle neu erstellten Dateien aus den jeweiligen CLaMS-Unterverzeichnissen in die entsprechenden messy-Unterverzeichnisse verlinken