Size: 3274
Comment:
|
Size: 3564
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 32: | Line 32: |
* 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 |
|| status || || OUT || Fehlercode || || level || (dnparts) || IN || Level (ZETA-Werte)|| || indarr || (dnparts) || OUT || sortierter Index von levelind|| || irange || (2,l_nthetas,0:ntasks-1) || OUT || Start- und Endposition jedes Levels im sortierten Feld <<BR>> irange(1,i,k): Erster Punkt auf Level i in levelind(indarr) auf PE k <<BR>> irange(2,i,k): Letzter Punkt auf Level i in levelind(indarr) auf PE k|| || levelind || (dnparts) || LOKAL || Index der ZETA-Werte in ZETA-Grid|| |
Line 39: | Line 38: |
* 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 |
|
Line 40: | Line 42: |
{{{ | {{{ |
Line 53: | Line 55: |
}}} | }}} |
Line 55: | Line 57: |
* 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 |
|
Line 62: | Line 61: |
{{{ | {{{ |
Line 64: | Line 63: |
}}} | }}} |
Line 73: | Line 72: |
{{{ | {{{ |
Line 75: | Line 74: |
}}} | }}} |
Line 84: | Line 83: |
{{{ | {{{ |
Line 87: | Line 86: |
}}} | }}} |
Line 91: | Line 90: |
* 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 || integer || OUT || Fehlercode || || my_nparts || integer || OUT || neue Anzahl Punkte auf aktueller PE|| || indarr || integer (dnparts) || IN || || || irange || integer (2,l_nthetas,0:ntasks-1)|| IN || || || levelrange || integer (2,0:ntasks-1) || IN || || || dnparts_level|| integer (l_nthetas,0:ntasks-1) || IN || || || nparts_level || integer (l_nthetas) || IN || || || level || real(prec)|| IN || Level (ZETA-Werte) || || infield || real(prec)|| IN || Umzuordnender Parameter || || outfield || real(prec)|| 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
status
OUT
Fehlercode
level
(dnparts)
IN
Level (ZETA-Werte)
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 klevelind
(dnparts)
LOKAL
Index der ZETA-Werte in ZETA-Grid
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
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)
- 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
integer
OUT
Fehlercode
my_nparts
integer
OUT
neue Anzahl Punkte auf aktueller PE
indarr
integer (dnparts)
IN
irange
integer (2,l_nthetas,0:ntasks-1)
IN
levelrange
integer (2,0:ntasks-1)
IN
dnparts_level
integer (l_nthetas,0:ntasks-1)
IN
nparts_level
integer (l_nthetas)
IN
level
real(prec)
IN
Level (ZETA-Werte)
infield
real(prec)
IN
Umzuordnender Parameter
outfield
real(prec)
OUT
Umgeordneter Parameter
- Umsortierung der Punkte:
- mix
- Punkte wieder gleichmäßig auf CPUs verteilen