Differences between revisions 1 and 2
Revision 1 as of 2012-04-17 10:22:58
Size: 3274
Editor: NicoleThomas
Comment:
Revision 2 as of 2012-04-17 10:34:32
Size: 3324
Editor: NicoleThomas
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
   {{{  {{{
Line 9: Line 9:
   }}}  }}}
Line 16: Line 16:
   {{{  {{{
Line 18: Line 18:
   }}}  }}}
Line 26: Line 26:
   {{{  {{{
Line 28: Line 28:
   }}}  }}}
Line 62: Line 62:
   {{{  {{{
Line 64: Line 64:
   }}}   }}}
Line 73: Line 73:
   {{{  {{{
Line 75: Line 75:
   }}}  }}}
Line 84: Line 84:
   {{{  {{{
Line 87: Line 87:
   }}}  }}}
Line 91: Line 91:
    * indarr(dnparts), IN
    *
irange(2,l_nthetas,0:ntasks-1), IN
    *
levelrange(2,0:ntasks-1), IN
    *
dnparts_level(l_nthetas,0:ntasks-1), IN
    *
nparts_level(l_nthetas), IN
    *
level, IN, Level (ZETA-Werte)
    *
infield, IN Umzuordnender Parameter
    * status,
OUT, Fehlercode
    * my_nparts, OUT, neue Anzahl Punkte auf aktueller PE
    * outfield, OUT
Umgeordneter Parameter
   || status ||OUT || Fehlercode ||
   || my_nparts || OUT || neue Anzahl Punkte auf aktueller PE||
   ||
indarr (dnparts)|| IN || ||
   ||
irange (2,l_nthetas,0:ntasks-1)|| IN || ||
   ||
levelrange (2,0:ntasks-1) || IN || ||
   ||
dnparts_level (l_nthetas,0:ntasks-1) || IN || ||
   ||
nparts_level (l_nthetas) || IN || ||
   ||
level || IN || Level (ZETA-Werte) ||
   ||
infield || IN || Umzuordnender Parameter ||
   || outfield ||
OUT || Umgeordneter Parameter ||

messy_clamsmix_si.f90

sub. clamsmix_global_end

  • clamsmix_set_config
    SUBROUTINE clamsmix_set_config
    • in messy_clamsmix.f90
    • Setze von mix benötigte Variablen:
      • adapt_par, time_step, nthetas, l_nthetas, theta_min, theta_max
  • clamsmix_set_bounds
      SUBROUTINE clamsmix_set_bounds 
    • in messy_clamsmix.f90
    • Setze die Grenzen für jedes Level:
      • theta_min_act, theta_max_act, theta_delta_act, l_min_act, l_max_act, l_delta_act
  • clamsmix_sort
     SUBROUTINE clamsmix_sort (status, level, indarr, irange)
    • Indexsortierung des Levels (ZETA)
    • Variablen
      • level (dnparts), IN, Level (ZETA-Werte)
      • levelind (dnparts), LOKAL, Index der ZETA-Werte in ZETA-Grid
      • indarr (dnparts), OUT, sortierter Index von levelind
      • irange (2,l_nthetas,0:ntasks-1), OUT, Start- und Endposition jedes Levels im sortierten Feld
        • irange(1,i,k): Erster Punkt auf Level i in levelind(indarr) auf PE k
        • irange(2,i,k): Letzter Punkt auf Level i in levelind(indarr) auf PE k
        ipart      1    2    3    4    5    6    7    8    9
         
        level     320  330  325  340  322  331  332  342  mdi
        
        levelind   1    2    1    3    1    2    2    3   9999
        
        indarr     1    3    5    2    6    7    4    8    9
        
        levelind   1    1    1    2    2    2    3    3   9999
        (indarr)
        
        irange      (1,3)          (4,6)         (7,8)
    • Ermittle zu jedem ZETA-Wert den Index im ZETA-Grid -> levelind

    • Indexsortierung des Feldes levelind -> indarr

    • Ermittle den ersten und letzten Punkt jedes Levels in levelind(indarr) -> irange

  • clamsmix_nparts_per_level
      SUBROUTINE clamsmix_nparts_per_level (irange, dnparts_level, nparts_level)
    • in messy_clamsmix.f90
    • Ermittle die Anzahl Punkte pro Level
    • Parameter:
      • irange (2,l_nthetas,0:ntasks-1), IN
      • dnparts_level(l_nthetas,0:ntasks-1), OUT, Anzahl Punkte pro Level für jede PE
      • nparts_level(l_nthetas), OUT, Anzahl Punkte pro Level auf allen PEs
  • clamsmix_set_level
      SUBROUTINE clamsmix_set_level (levelrange, nparts_level)
    • in messy_clamsmix.f90
    • Ermittle für jede PE, welche Level bearbeitet werden
    • Parameter:
      • nparts_level(l_nthetas), IN, Anzahl Punkte pro Level auf allen PEs
      • levelrange(2,0:ntasks-1), OUT, Start- und Endlevel für jede PE
  • clamsmix_shuffle
       SUBROUTINE clamsmix_shuffle (status, my_nparts, indarr, irange, levelrange, &
                            dnparts_level, nparts_level, level, infield, outfield)
    • Umsortierung der Punkte:
      • Jede PE bekommt alle Punkte, deren Level zwischen levelrange(1,irank) and levelrange(2,irank) liegt
    • Parameter

      status

      OUT

      Fehlercode

      my_nparts

      OUT

      neue Anzahl Punkte auf aktueller PE

      indarr (dnparts)

      IN

      irange (2,l_nthetas,0:ntasks-1)

      IN

      levelrange (2,0:ntasks-1)

      IN

      dnparts_level (l_nthetas,0:ntasks-1)

      IN

      nparts_level (l_nthetas)

      IN

      level

      IN

      Level (ZETA-Werte)

      infield

      IN

      Umzuordnender Parameter

      outfield

      OUT

      Umgeordneter Parameter

  • mix
  • Punkte wieder gleichmäßig auf CPUs verteilen

messy/mix (last edited 2013-02-18 09:00:01 by NicoleThomas)