MoinMoin Logo
  • Login
  • messy
  • CodingStandards
  • CLaMSWiki
  • RecentChanges
  • InterWikiMap
  • FindPage
  • HelpContents
  • messy/CodingStandards

Revision 1 as of 2015-05-21 08:35:20

Clear message
  • Immutable Page
  • Comments
  • Info
  • Attachments
  • Änderungen in Messy-Main-Routinen in Präprozessor-Direktiven klammern:
    #ifdef MBM_CLAMS
    ...
    #else
    ...
    #endif
  • Änderungen in Messy-Main-Routinen kennzeichnen mit aa_bb_yyyymmdd

    • aa = Institution
      bb = Initialen des Benutzers
      z.B. :

    ! ju_nt_20150101+
    <geaenderte Zeilen>
    ! ju_nt_20150101-
  • F90-Module müssen so heißen wie das Fortran-90-File
  • Die Namen der Files/Module müssen eindeutig sein.

    • D. h. ein Modul mit globalen Deklarationen für das Submodel xxx, sollte nicht nur "global" heißen, sondern z.B. clamsxxx_global

  • Ein- und Ausgabe von/auf Dateien sollte möglichst gebündelt in IO-Routinen ausgelagert werden und nicht im Sourcecode verteilt sein.

    • Alle IO-Routinen sollten in einem Modul zusammengefasst sein.
      Im Messy muss IO aus dem untersten Level ausgelagert und auf SMIL-Ebene genutzt werden

  • Immer IMPLICIT NONE verwenden

  • Bei der Deklaration sollten Variablen vordefiniert und Pointer auf NULL gesetzt werden, z.B.
    INTEGER :: nparts = 0
    REAL, DIMENSION(:), POINTER :: ptr => NULL() 
  • USE-Statements immer kombiniert mit ONLY verwenden, damit die Herkunft nicht-lokaler Variablen erkennbar ist

  • keine STOPs:

    • In allen Unterprogrammen, in denen Probleme auftreten können, einen Return-Code als Rückgabeparameter vereinbaren.
      Diesen Return-Code durch die Unterprogramm-Hierarchie bis auf das oberste Level zurückgeben und dort eine zentrale Fehlerbearbeitung aufrufen.
      Im Messy können keine Programmabrüche auf unterstem Level genutzt werden, da MPI dort nicht beendet werden kann.

  • MPI

    • Wenn MPI genutzt werden kann, sollten ntasks und rank auch für die serielle Version deklariert und belegt sein (ntasks=1, rank=0), damit keine Präprozessor-Direktiven für die MPI-Version genutzt werden müssen
      => Keine Fallunterscheidung nötig, da Ausgaben immer für rank=0 gemacht werden können und do-Loops für die serielle und paralleleVersion gleich aufgeteilt werden können
      Im Messy: kein MPI auf unterstem Level, sondern auf SMIL-Ebene

  • Immutable Page
  • Comments
  • Info
  • Attachments
  • MoinMoin Powered
  • Python Powered
  • MathTran Powered
  • Valid HTML 4.01
  • Impressum
  • Datenschutzerklärung