File: C:\NOAA\NEMS_11731\src\atmos\gfs\dyn\ifshuff.f
1 subroutine if_shuff(global_lats_a_old,lats_nodes_a_old,
2 . global_lats_a,lats_nodes_a,timesum_a,kdt,ifshuff,
3 . shuffle_overhead)
4
5
6 use gfs_dyn_resol_def
7 use gfs_dyn_layout1
8 use gfs_dyn_gg_def
9 use gfs_dyn_vert_def
10 use gfs_dyn_date_def
11 use gfs_dyn_mpi_def
12 implicit none
13
14 integer lats_nodes_a(nodes)
15 integer global_lats_a(latg)
16
17 integer lats_nodes_a_old(nodes)
18 integer global_lats_a_old(latg)
19 integer kdt
20 logical ifshuff
21 real(kind=kind_evod) timesum_a(latg)
22 real timesumold,timesumnew,timeold,timenew
23 real shuffle_overhead
24 integer node,ilat
25 integer lat_old,lat_new
26
27 = 0.0
28 timeold = 0.0
29 timesumnew = 0.0
30 timenew = 0.0
31 lat_old = 0
32 lat_new = 0
33 do node=1,nodes
34
35 = 0.0
36 timesumnew = 0.0
37 do ilat=1,lats_nodes_a_old(node)
38 lat_old = lat_old + 1
39 timesumold=timesumold + timesum_a(global_lats_a_old(lat_old))
40
41
42
43 enddo
44 print*,' for node timesumold = ',node,timesumold
45
46 timeold = max(timeold,timesumold)
47
48 do ilat=1,lats_nodes_a(node)
49 lat_new = lat_new + 1
50 timesumnew=timesumnew + timesum_a(global_lats_a(lat_new))
51
52
53
54 enddo
55 print*,' for node timesumnew = ',node,timesumnew
56 timenew = max(timenew,timesumnew)
57 enddo
58
59 if (timenew+shuffle_overhead .le. timeold) ifshuff = .true.
60
61 print*,' from if_shuff kdt,new,old,overhead = ',
62 . kdt,timenew,timeold,shuffle_overhead
63
64 return
65 end
66