= 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) }}} == 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!) == 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