File: C:\NOAA\NEMS_11731\src\atmos\gfs\phys\lats_shuff.f
1 subroutine setlats_r_ext(lats_nodes_r,lats_nodes_ext,
2 . global_lats_r,
3 & global_lats_ext,iprint,lonsperlat)
4
5 use resol_def, ONLY: latr, jintmx, nypt
6 use layout1, ONLY: nodes
7
8 implicit none
9
10 integer lats_nodes_r(nodes)
11
12 integer global_lats_r(latr)
13 integer lats_nodes_ext(nodes)
14 integer global_lats_ext(latr+2*jintmx+2*nypt*(nodes-1))
15
16 integer iprint,opt,ifin,nodesio
17
18 integer lonsperlat(latr)
19
20 integer ijk,jcount,jpt,lat,lats_sum,node,i,j
21 integer ILATPE,ngrptg,ngrptl,ipe,irest,idp
22
23
24 =1
25
26
27
28
29
30
31
32 =nodes
33
34
35 do node=1,nodesio
36 if (nodesio.eq.1) then
37 lats_nodes_ext(node)=lats_nodes_r(node)+2*jintmx
38 else
39 if (node.eq.1.or.node.eq.nodesio) then
40 lats_nodes_ext(node)=lats_nodes_r(node)+jintmx+nypt
41 else
42 lats_nodes_ext(node)=lats_nodes_r(node)+2*nypt
43 endif
44 endif
45 enddo
46
47
48
49 =0
50 do node=1,nodesio
51 if (nodesio.eq.1) then
52 do i=1,jintmx
53 global_lats_ext(i)=global_lats_r(1)
54 enddo
55 do i=1,jintmx
56 global_lats_ext(jintmx+latr+i)=global_lats_r(latr)
57 enddo
58 do i=1,latr
59 global_lats_ext(i+jintmx)=global_lats_r(i)
60 enddo
61 else
62 do jcount=1,lats_nodes_r(node)
63 global_lats_ext(jpt+jintmx+jcount+2*nypt*(node-1))=
64 & global_lats_r(jpt+jcount)
65 enddo
66 if (node.eq.1) then
67 do i=1,jintmx
68 global_lats_ext(i)=global_lats_r(1)
69 enddo
70 do i=1,nypt
71 global_lats_ext(jintmx+lats_nodes_r(node)+i)=
72 & global_lats_r(lats_nodes_r(node))+i
73 enddo
74 elseif (node.eq.nodesio) then
75 do i=1,jintmx
76 global_lats_ext(latr+jintmx+2*nypt*(nodesio-1)+i)=
77 & global_lats_r(latr)
78 enddo
79 do i=nypt,1,-1
80 global_lats_ext(jpt+jintmx+2*nypt*(node-1)-i+1)=
81 & global_lats_r(jpt)-i+1
82 enddo
83 else
84 do i=nypt,1,-1
85 global_lats_ext(jpt+jintmx+2*nypt*(node-1)-i+1)=
86 & global_lats_r(jpt)-i+1
87 enddo
88 do i=1,nypt
89 global_lats_ext(jpt+jintmx+2*nypt*(node-1)+
90 & lats_nodes_r(node)+i)=
91 & global_lats_r(jpt+lats_nodes_r(node))+i
92 enddo
93 endif
94 endif
95 jpt=jpt+lats_nodes_r(node)
96 enddo
97
98
99
100 if ( iprint .ne. 1 ) return
101
102 =0
103 do node=1,nodesio
104 if ( lats_nodes_r(node) .gt. 0 ) then
105 print 600
106 lats_sum=0
107 do jcount=1,lats_nodes_r(node)
108 lats_sum=lats_sum + lonsperlat(global_lats_r(jpt+jcount))
109 print 701, node-1,
110 x node, lats_nodes_r(node),
111 x jpt+jcount, global_lats_r(jpt+jcount)
112
113
114 enddo
115 endif
116 jpt=jpt+lats_nodes_r(node)
117 enddo
118
119 print 600
120
121 format ( ' ' )
122
123 format ( 'setlats me=', i4,
124 x ' lats_nodes_r(', i4, ' )=', i4,
125 x ' global_lats_r(', i4, ' )=', i4)
126 700 format ( 'setlats me=', i4,
127 x ' lats_nodes_r(', i4, ' )=', i4,
128 x ' global_lats_r(', i4, ' )=', i4,
129 x ' lonsperlat=', i5,
130 x ' lats_sum=', i6 )
131
132 return
133 end
134
135 subroutine setlats_r_ext_shuff(lats_nodes_r,lats_nodes_ext,
136 . global_lats_r,
137 & global_lats_ext,iprint,lonsperlat)
138
139 use resol_def, ONLY: latr, jintmx, nypt
140 use layout1, ONLY: nodes
141
142 implicit none
143
144 integer lats_nodes_r(nodes)
145
146 integer global_lats_r(latr)
147 integer lats_nodes_ext(nodes)
148 integer global_lats_ext(latr+2*jintmx+2*nypt*(nodes-1))
149
150 integer iprint,opt,ifin,nodesio
151
152 integer lonsperlat(latr)
153
154 integer ijk,jcount,jpt,lat,lats_sum,node,i,j
155 integer ILATPE,ngrptg,ngrptl,ipe,irest,idp
156
157
158 =1
159
160
161
162
163
164
165
166 =nodes
167
168
169 do node=1,nodesio
170 if (nodesio.eq.1) then
171 lats_nodes_ext(node)=lats_nodes_r(node)+2*jintmx
172 else
173 if (node.eq.1.or.node.eq.nodesio) then
174 lats_nodes_ext(node)=lats_nodes_r(node)+jintmx+nypt
175 else
176 lats_nodes_ext(node)=lats_nodes_r(node)+2*nypt
177 endif
178 endif
179 enddo
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234 if ( iprint .ne. 1 ) return
235
236 =0
237 do node=1,nodesio
238 if ( lats_nodes_r(node) .gt. 0 ) then
239 print 600
240 lats_sum=0
241 do jcount=1,lats_nodes_r(node)
242 lats_sum=lats_sum + lonsperlat(global_lats_r(jpt+jcount))
243 print 701, node-1,
244 x node, lats_nodes_r(node),
245 x jpt+jcount, global_lats_r(jpt+jcount)
246
247
248 enddo
249 endif
250 jpt=jpt+lats_nodes_r(node)
251 enddo
252
253 print 600
254
255 format ( ' ' )
256
257 format ( 'setlats me=', i4,
258 x ' lats_nodes_r(', i4, ' )=', i4,
259 x ' global_lats_r(', i4, ' )=', i4)
260 700 format ( 'setlats me=', i4,
261 x ' lats_nodes_r(', i4, ' )=', i4,
262 x ' global_lats_r(', i4, ' )=', i4,
263 x ' lonsperlat=', i5,
264 x ' lats_sum=', i6 )
265
266 return
267 end
268