Differences between revisions 23 and 26 (spanning 3 versions)
Revision 23 as of 2015-01-22 12:31:22
Size: 2327
Editor: NicoleThomas
Comment:
Revision 26 as of 2015-01-27 10:48:56
Size: 2659
Editor: NicoleThomas
Comment:
Deletions are marked like this. Additions are marked like this.
Line 30: Line 30:
 * in '''messy_clams_si.f90''':
   Deklaration von ''lxxxevent''
Line 31: Line 33:
 * Variablendeklaration (Variablen für eigene oder gekoppelte Channelobjekte)
 * Deklaration der Events für Submodel-Start und Submodel-Output
{{{
TYPE(time_event) :: xxxoutevent
TYPE(io_time_event) :: io_xxxoutevent
  * 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
Line 37: Line 39:
 * Folgende Subroutines anlegen:
  * ''clamsxxx_setup ''(evtl.)
  * ''clamsxxx_initialize''
   . ''clamsxxx_read_nml'' aufrufen
  * ''clamsxxx_init_memory''
   . Anlegen von Channels/Channelobjekten
  * ''clamsxxx_init_coupling''
   . Koppeln von Channelobjekten aus Channels anderer Submodule
  * ''clamsxxx_global_start'' (evtl.)
  * ''clamsxxx_global_end''
   .
Aufruf des Submodel-HP ''xxx''
  * ''clamsxxx_free_memory''
   . Freigeben aller im Submodel allokierten Variablen
  * evtl. weitere auf SMIL-Ebene genutzte Routinen
  * 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
Line 53: Line 57:
 * '''messy_clams_global'''
   * Deklaration von ''lxxxevent'' (Schalter, ob Submodel im aktuellen Zeitschritt läuft oder nicht)
Line 62: Line 68:
   * in subroutine ''switch_init'': ''modstr'' und ''modver'' aus sedi einbinden    * in subroutine ''switch_init'': ''modstr'' und ''modver'' aus Submodel einbinden

MESSy/CLaMS: Erstellen eines neuen CLaMS-Submodels

BML

  • keine Änderungen nötig

BMIL

  • messy_main_channel_bi.f90

    • Deklarationen zusätzlicher Dimensionen/Representationen
  • messy_main_channel_clams.inc

    • Anlegen neuer Dimensionen, Dimensionsvariablen und Representationen
  • 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:

    • Deklaration 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

    • 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

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

messy/NewSubmodel (last edited 2016-08-19 08:03:45 by NicoleThomas)