66
67
68
69
70 integer, intent(in) :: model
71 integer, intent(in) :: my_Im(1:Ngrids), my_Jm(1:Ngrids)
72 integer, intent(in) :: my_Lm(1:Ngrids), my_Mm(1:Ngrids)
73
74 TYPE (T_BOUNDS), intent(out) :: my_BOUNDS(1:Ngrids)
75 TYPE (T_DOMAIN), intent(inout) :: my_DOMAIN(1:Ngrids)
76 TYPE (T_IOBOUNDS), intent(inout) :: my_IOBOUNDS(1:Ngrids)
77
78
79
80 integer :: Itile, Jtile, Nghost
81 integer :: ng, tile
82
83
84
85
86
87
88
89
90 DO ng=1,ngrids
91 my_bounds(ng) % edge(iwest ,p2dvar) = 1
92 my_bounds(ng) % edge(iwest ,r2dvar) = 0
93 my_bounds(ng) % edge(iwest ,u2dvar) = 1
94 my_bounds(ng) % edge(iwest ,v2dvar) = 0
95
96 my_bounds(ng) % edge(ieast ,p2dvar) = my_lm(ng)+1
97 my_bounds(ng) % edge(ieast ,r2dvar) = my_lm(ng)+1
98 my_bounds(ng) % edge(ieast ,u2dvar) = my_lm(ng)+1
99 my_bounds(ng) % edge(ieast ,v2dvar) = my_lm(ng)+1
100
101 my_bounds(ng) % edge(isouth,p2dvar) = 1
102 my_bounds(ng) % edge(isouth,u2dvar) = 0
103 my_bounds(ng) % edge(isouth,r2dvar) = 0
104 my_bounds(ng) % edge(isouth,v2dvar) = 1
105
106 my_bounds(ng) % edge(inorth,p2dvar) = my_mm(ng)+1
107 my_bounds(ng) % edge(inorth,r2dvar) = my_mm(ng)+1
108 my_bounds(ng) % edge(inorth,u2dvar) = my_mm(ng)+1
109 my_bounds(ng) % edge(inorth,v2dvar) = my_mm(ng)+1
110 END DO
111
112
113
114
115
116 DO ng=1,ngrids
117 DO tile=-1,ntilei(ng)*ntilej(ng)-1
118 CALL get_domain_edges (ng, tile, &
119 & my_lm(ng), my_mm(ng), &
120 & my_domain(ng)% Eastern_Edge (tile), &
121 & my_domain(ng)% Western_Edge (tile), &
122 & my_domain(ng)% Northern_Edge (tile), &
123 & my_domain(ng)% Southern_Edge (tile), &
124 & my_domain(ng)% NorthEast_Corner(tile), &
125 & my_domain(ng)% NorthWest_Corner(tile), &
126 & my_domain(ng)% SouthEast_Corner(tile), &
127 & my_domain(ng)% SouthWest_Corner(tile), &
128 & my_domain(ng)% NorthEast_Test (tile), &
129 & my_domain(ng)% NorthWest_Test (tile), &
130 & my_domain(ng)% SouthEast_Test (tile), &
131 & my_domain(ng)% SouthWest_Test (tile))
132 END DO
133 END DO
134
135
136
137 nghost=nghostpoints
138 DO ng=1,ngrids
139 my_bounds(ng) % LBij = 0
140 my_bounds(ng) % UBij = max(my_lm(ng)+1,my_mm(ng)+1)
141 DO tile=-1,ntilei(ng)*ntilej(ng)-1
142 my_bounds(ng) % tile(tile) = tile
143 CALL get_tile (ng, tile, &
144 & my_lm(ng), my_mm(ng), &
145 & itile, jtile, &
146 & my_bounds(ng)% Istr (tile), &
147 & my_bounds(ng)% Iend (tile), &
148 & my_bounds(ng)% Jstr (tile), &
149 & my_bounds(ng)% Jend (tile), &
150 & my_bounds(ng)% IstrM (tile), &
151 & my_bounds(ng)% IstrR (tile), &
152 & my_bounds(ng)% IstrU (tile), &
153 & my_bounds(ng)% IendR (tile), &
154 & my_bounds(ng)% JstrM (tile), &
155 & my_bounds(ng)% JstrR (tile), &
156 & my_bounds(ng)% JstrV (tile), &
157 & my_bounds(ng)% JendR (tile), &
158 & my_bounds(ng)% IstrB (tile), &
159 & my_bounds(ng)% IendB (tile), &
160 & my_bounds(ng)% IstrP (tile), &
161 & my_bounds(ng)% IendP (tile), &
162 & my_bounds(ng)% IstrT (tile), &
163 & my_bounds(ng)% IendT (tile), &
164 & my_bounds(ng)% JstrB (tile), &
165 & my_bounds(ng)% JendB (tile), &
166 & my_bounds(ng)% JstrP (tile), &
167 & my_bounds(ng)% JendP (tile), &
168 & my_bounds(ng)% JstrT (tile), &
169 & my_bounds(ng)% JendT (tile), &
170 & my_bounds(ng)% Istrm3 (tile), &
171 & my_bounds(ng)% Istrm2 (tile), &
172 & my_bounds(ng)% Istrm1 (tile), &
173 & my_bounds(ng)% IstrUm2(tile), &
174 & my_bounds(ng)% IstrUm1(tile), &
175 & my_bounds(ng)% Iendp1 (tile), &
176 & my_bounds(ng)% Iendp2 (tile), &
177 & my_bounds(ng)% Iendp2i(tile), &
178 & my_bounds(ng)% Iendp3 (tile), &
179 & my_bounds(ng)% Jstrm3 (tile), &
180 & my_bounds(ng)% Jstrm2 (tile), &
181 & my_bounds(ng)% Jstrm1 (tile), &
182 & my_bounds(ng)% JstrVm2(tile), &
183 & my_bounds(ng)% JstrVm1(tile), &
184 & my_bounds(ng)% Jendp1 (tile), &
185 & my_bounds(ng)% Jendp2 (tile), &
186 & my_bounds(ng)% Jendp2i(tile), &
187 & my_bounds(ng)% Jendp3 (tile))
188
189 CALL get_bounds (ng, tile, 0, nghost, &
190 & my_im(ng), my_jm(ng), &
191 & my_lm(ng), my_mm(ng), &
192 & itile, jtile, &
193 & my_bounds(ng)% LBi(tile), &
194 & my_bounds(ng)% UBi(tile), &
195 & my_bounds(ng)% LBj(tile), &
196 & my_bounds(ng)% UBj(tile))
197 END DO
198 END DO
199
200
201
202
203
204 nghost=nghostpoints
205 DO ng=1,ngrids
206 DO tile=0,ntilei(ng)*ntilej(ng)-1
207 CALL get_bounds (ng, tile, p2dvar, 0 , &
208 & my_im(ng), my_jm(ng), &
209 & my_lm(ng), my_mm(ng), &
210 & itile, jtile, &
211 & my_bounds(ng)% Imin(1,0,tile), &
212 & my_bounds(ng)% Imax(1,0,tile), &
213 & my_bounds(ng)% Jmin(1,0,tile), &
214 & my_bounds(ng)% Jmax(1,0,tile))
215 CALL get_bounds (ng, tile, p2dvar, nghost, &
216 & my_im(ng), my_jm(ng), &
217 & my_lm(ng), my_mm(ng), &
218 & itile, jtile, &
219 & my_bounds(ng)% Imin(1,1,tile), &
220 & my_bounds(ng)% Imax(1,1,tile), &
221 & my_bounds(ng)% Jmin(1,1,tile), &
222 & my_bounds(ng)% Jmax(1,1,tile))
223
224 CALL get_bounds (ng, tile, r2dvar, 0 , &
225 & my_im(ng), my_jm(ng), &
226 & my_lm(ng), my_mm(ng), &
227 & itile, jtile, &
228 & my_bounds(ng)% Imin(2,0,tile), &
229 & my_bounds(ng)% Imax(2,0,tile), &
230 & my_bounds(ng)% Jmin(2,0,tile), &
231 & my_bounds(ng)% Jmax(2,0,tile))
232 CALL get_bounds (ng, tile, r2dvar, nghost, &
233 & my_im(ng), my_jm(ng), &
234 & my_lm(ng), my_mm(ng), &
235 & itile, jtile, &
236 & my_bounds(ng)% Imin(2,1,tile), &
237 & my_bounds(ng)% Imax(2,1,tile), &
238 & my_bounds(ng)% Jmin(2,1,tile), &
239 & my_bounds(ng)% Jmax(2,1,tile))
240
241 CALL get_bounds (ng, tile, u2dvar, 0 , &
242 & my_im(ng), my_jm(ng), &
243 & my_lm(ng), my_mm(ng), &
244 & itile, jtile, &
245 & my_bounds(ng)% Imin(3,0,tile), &
246 & my_bounds(ng)% Imax(3,0,tile), &
247 & my_bounds(ng)% Jmin(3,0,tile), &
248 & my_bounds(ng)% Jmax(3,0,tile))
249 CALL get_bounds (ng, tile, u2dvar, nghost, &
250 & my_im(ng), my_jm(ng), &
251 & my_lm(ng), my_mm(ng), &
252 & itile, jtile, &
253 & my_bounds(ng)% Imin(3,1,tile), &
254 & my_bounds(ng)% Imax(3,1,tile), &
255 & my_bounds(ng)% Jmin(3,1,tile), &
256 & my_bounds(ng)% Jmax(3,1,tile))
257
258 CALL get_bounds (ng, tile, v2dvar, 0 , &
259 & my_im(ng), my_jm(ng), &
260 & my_lm(ng), my_mm(ng), &
261 & itile, jtile, &
262 & my_bounds(ng)% Imin(4,0,tile), &
263 & my_bounds(ng)% Imax(4,0,tile), &
264 & my_bounds(ng)% Jmin(4,0,tile), &
265 & my_bounds(ng)% Jmax(4,0,tile))
266 CALL get_bounds (ng, tile, v2dvar, nghost, &
267 & my_im(ng), my_jm(ng), &
268 & my_lm(ng), my_mm(ng), &
269 & itile, jtile, &
270 & my_bounds(ng)% Imin(4,1,tile), &
271 & my_bounds(ng)% Imax(4,1,tile), &
272 & my_bounds(ng)% Jmin(4,1,tile), &
273 & my_bounds(ng)% Jmax(4,1,tile))
274 END DO
275 END DO
276
277
278
279 DO ng=1,ngrids
280 CALL get_iobounds (ng, my_lm(ng), my_mm(ng), &
281 & my_bounds, my_iobounds)
282 END DO
283
284 RETURN