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     c
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     c
14           integer               lats_nodes_a(nodes)
15           integer              global_lats_a(latg)
16     c
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     c
27           timesumold = 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     cmy old
35           timesumold = 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     c$$$         if (node .eq. nodes) print*,' old node, lat time = ',
41     c$$$     .     node,timesum_a(global_lats_a_old(lat_old)),
42     c$$$     .     global_lats_a_old(lat_old),timesumold
43              enddo
44                print*,' for node  timesumold = ',node,timesumold
45      
46               timeold = max(timeold,timesumold)
47     cmy new
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     c$$$         if (node .eq. nodes) print*,' new node, lat time = ',
52     c$$$     .     node,timesum_a(global_lats_a(lat_new)),
53     c$$$     .     global_lats_a(lat_new),timesumnew
54              enddo
55              print*,' for node timesumnew = ',node,timesumnew
56               timenew = max(timenew,timesumnew)
57           enddo
58     c
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