Changeset 12807 for NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/lbc_nfd_nogather_generic.h90
- Timestamp:
- 2020-04-23T15:14:45+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12558_HPC-08_epico_Extra_Halo/src/OCE/LBC/lbc_nfd_nogather_generic.h90
r12719 r12807 97 97 DO jl = 1, ipl; DO jk = 1, ipk 98 98 DO jj = 1, nn_hls 99 ijj = nlcj -jj +1100 DO ji = startloop, nlci99 ijj = jpj -jj +1 100 DO ji = startloop, jpi 101 101 ijt = jpiglo - (ji + nimpp-nn_hls+1 ) - nfiimpp(isendto(1),jpnj) + 4 102 102 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) … … 107 107 DO jl = 1, ipl; DO jk = 1, ipk 108 108 DO jj = 1, nn_hls 109 ijj = nlcj -jj +1109 ijj = jpj -jj +1 110 110 DO ii = 0, nn_hls-1 111 ARRAY_IN(ii+1,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii+1, nlcj-2*nn_hls+jj-1,jk,jl,jf)111 ARRAY_IN(ii+1,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii+1,jpj-2*nn_hls+jj-1,jk,jl,jf) 112 112 END DO 113 113 END DO … … 118 118 IF( nimpp >= jpiglo/2+1 ) THEN 119 119 startloop = 1 120 ELSEIF( nimpp+ nlci-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN120 ELSEIF( nimpp+jpi-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN 121 121 startloop = jpiglo/2+1 - nimpp + nn_hls 122 122 ELSE 123 startloop = nlci + 1124 ENDIF 125 IF( startloop <= nlci ) THEN123 startloop = jpi + 1 124 ENDIF 125 IF( startloop <= jpi ) THEN 126 126 DO jl = 1, ipl; DO jk = 1, ipk 127 DO ji = startloop, nlci127 DO ji = startloop, jpi 128 128 ijt = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 4 129 129 jia = ji + nimpp -nn_hls 130 130 ijta = jpiglo - jia + 2 131 131 IF( ijta >= startloop+nimpp-1 .AND. ijta < jia ) THEN 132 ARRAY_IN(ji, nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijta-nimpp+nn_hls,nlcj-nn_hls,jk,jl,jf)132 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijta-nimpp+nn_hls,jpj-nn_hls,jk,jl,jf) 133 133 ELSE 134 ARRAY_IN(ji, nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,nn_hls+1,jk,jl,jf)134 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,nn_hls+1,jk,jl,jf) 135 135 ENDIF 136 136 END DO … … 139 139 ENDIF 140 140 CASE ( 'U' ) ! U-point 141 IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN142 endloop = nlci141 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 142 endloop = jpi 143 143 ELSE 144 endloop = nlci - nn_hls145 ENDIF 146 DO jl = 1, ipl; DO jk = 1, ipk 147 DO jj = 1, nn_hls 148 ijj = nlcj -jj +1144 endloop = jpi - nn_hls 145 ENDIF 146 DO jl = 1, ipl; DO jk = 1, ipk 147 DO jj = 1, nn_hls 148 ijj = jpj -jj +1 149 149 DO ji = 1, endloop 150 150 iju = jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 3 … … 155 155 IF (nimpp .eq. 1) THEN 156 156 DO jj = 1, nn_hls 157 ijj = nlcj -jj +1157 ijj = jpj -jj +1 158 158 DO ii = 0, nn_hls-1 159 ARRAY_IN(ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii, nlcj-2*nn_hls+jj-1,:,:,jf)159 ARRAY_IN(ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls+jj-1,:,:,jf) 160 160 END DO 161 161 END DO 162 162 ENDIF 163 IF((nimpp + nlci - 2*nn_hls+1) .eq. jpiglo) THEN163 IF((nimpp + jpi - 2*nn_hls+1) .eq. jpiglo) THEN 164 164 DO jj = 1, nn_hls 165 ijj = nlcj -jj +1165 ijj = jpj -jj +1 166 166 DO ii = 1, nn_hls 167 ARRAY_IN( nlci-ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(nlci-2*nn_hls+ii,nlcj-2*nn_hls+jj-1,:,:,jf)167 ARRAY_IN(jpi-ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii,jpj-2*nn_hls+jj-1,:,:,jf) 168 168 END DO 169 169 END DO … … 171 171 ! 172 172 IF ( .NOT. l_fast_exchanges ) THEN 173 IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN174 endloop = nlci175 ELSE 176 endloop = nlci - nn_hls173 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 174 endloop = jpi 175 ELSE 176 endloop = jpi - nn_hls 177 177 ENDIF 178 178 IF( nimpp >= jpiglo/2 ) THEN 179 179 startloop = 1 180 ELSEIF( ( nimpp + nlci - 2*nn_hls+1 >= jpiglo/2 ) .AND. ( nimpp < jpiglo/2 ) ) THEN180 ELSEIF( ( nimpp + jpi - 2*nn_hls+1 >= jpiglo/2 ) .AND. ( nimpp < jpiglo/2 ) ) THEN 181 181 startloop = jpiglo/2 - (nimpp -nn_hls+1) +1 182 182 ELSE … … 190 190 ijua = jpiglo - jia + 1 191 191 IF( ijua >= startloop+nimpp-1 .AND. ijua < jia ) THEN 192 ARRAY_IN(ji, nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijua-nimpp+nn_hls,nlcj-nn_hls,jk,jl,jf)192 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(ijua-nimpp+nn_hls,jpj-nn_hls,jk,jl,jf) 193 193 ELSE 194 ARRAY_IN(ji, nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf)194 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf) 195 195 ENDIF 196 196 END DO … … 208 208 DO jl = 1, ipl; DO jk = 1, ipk 209 209 DO jj = 2, nn_hls+1 210 ijj = nlcj -jj +1211 DO ji = startloop, nlci210 ijj = jpj -jj +1 211 DO ji = startloop, jpi 212 212 ijt=jpiglo - (ji +nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 4 213 213 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) … … 217 217 ENDIF 218 218 DO jl = 1, ipl; DO jk = 1, ipk 219 DO ji = startloop, nlci219 DO ji = startloop, jpi 220 220 ijt=jpiglo - (ji + nimpp -nn_hls+1)- nfiimpp(isendto(1),jpnj) + 4 221 ARRAY_IN(ji, nlcj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,1,jk,jl,jf)221 ARRAY_IN(ji,jpj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,1,jk,jl,jf) 222 222 END DO 223 223 END DO; END DO 224 224 IF (nimpp .eq. 1) THEN 225 225 DO jj = 1, nn_hls 226 ijj = nlcj-jj+1226 ijj = jpj-jj+1 227 227 DO ii = 0, nn_hls-1 228 ARRAY_IN(ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii+1, nlcj-2*nn_hls+jj-1,:,:,jf)228 ARRAY_IN(ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii+1,jpj-2*nn_hls+jj-1,:,:,jf) 229 229 END DO 230 230 END DO 231 231 ENDIF 232 232 CASE ( 'F' ) ! F-point 233 IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN234 endloop = nlci233 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 234 endloop = jpi 235 235 ELSE 236 endloop = nlci - nn_hls236 endloop = jpi - nn_hls 237 237 ENDIF 238 238 IF ( .NOT. l_fast_exchanges ) THEN 239 239 DO jl = 1, ipl; DO jk = 1, ipk 240 240 DO jj = 2, nn_hls+1 241 ijj = nlcj -jj +1241 ijj = jpj -jj +1 242 242 DO ji = 1, endloop 243 243 iju = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 … … 250 250 DO ji = 1, endloop 251 251 iju = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 252 ARRAY_IN(ji, nlcj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,1,jk,jl,jf)252 ARRAY_IN(ji,jpj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,1,jk,jl,jf) 253 253 END DO 254 254 END DO; END DO 255 255 IF (nimpp .eq. 1) THEN 256 256 DO ii = 1, nn_hls 257 ARRAY_IN(ii+1, nlcj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,nlcj-2*nn_hls-1,:,:,jf)257 ARRAY_IN(ii+1,jpj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls-1,:,:,jf) 258 258 END DO 259 259 IF ( .NOT. l_fast_exchanges ) THEN 260 260 DO jj = 1, nn_hls 261 ijj = nlcj -jj261 ijj = jpj -jj 262 262 DO ii = 1, nn_hls 263 ARRAY_IN(2-ii,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii, nlcj-2*nn_hls+jj-1,:,:,jf)263 ARRAY_IN(2-ii,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(2*nn_hls-ii,jpj-2*nn_hls+jj-1,:,:,jf) 264 264 END DO 265 265 END DO 266 266 ENDIF 267 267 ENDIF 268 IF((nimpp + nlci - 2*nn_hls+1 ) .eq. jpiglo) THEN268 IF((nimpp + jpi - 2*nn_hls+1 ) .eq. jpiglo) THEN 269 269 DO ii = 1, nn_hls 270 ARRAY_IN( nlci-ii+1,nlcj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(nlci-2*nn_hls+ii,nlcj-2*nn_hls-1,:,:,jf)270 ARRAY_IN(jpi-ii+1,jpj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii,jpj-2*nn_hls-1,:,:,jf) 271 271 END DO 272 272 IF ( .NOT. l_fast_exchanges ) THEN 273 273 DO jj = 1, nn_hls 274 ijj = nlcj -jj274 ijj = jpj -jj 275 275 DO ii = 1, nn_hls 276 ARRAY_IN( nlci-ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(nlci-2*nn_hls+ii,nlcj-2*nn_hls+jj-1,:,:,jf)276 ARRAY_IN(jpi-ii+1,ijj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii,jpj-2*nn_hls+jj-1,:,:,jf) 277 277 END DO 278 278 END DO … … 288 288 DO jl = 1, ipl; DO jk = 1, ipk 289 289 DO jj = 1, nn_hls 290 ijj = nlcj-jj+1291 DO ji = 1, nlci290 ijj = jpj-jj+1 291 DO ji = 1, jpi 292 292 ijt = jpiglo - ( ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 293 293 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) … … 297 297 ! 298 298 CASE ( 'U' ) ! U-point 299 IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN300 endloop = nlci299 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 300 endloop = jpi 301 301 ELSE 302 endloop = nlci - nn_hls303 ENDIF 304 DO jl = 1, ipl; DO jk = 1, ipk 305 DO jj = 1, nn_hls 306 ijj = nlcj-jj+1302 endloop = jpi - nn_hls 303 ENDIF 304 DO jl = 1, ipl; DO jk = 1, ipk 305 DO jj = 1, nn_hls 306 ijj = jpj-jj+1 307 307 DO ji = 1, endloop 308 308 iju = jpiglo- (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 2 … … 311 311 END DO 312 312 END DO; END DO 313 IF(nimpp + nlci - 2*nn_hls+1 .eq. jpiglo) THEN313 IF(nimpp + jpi - 2*nn_hls+1 .eq. jpiglo) THEN 314 314 DO jl = 1, ipl; DO jk = 1, ipk 315 315 DO jj = 1, nn_hls 316 ijj = nlcj-jj+1316 ijj = jpj-jj+1 317 317 DO ii = 1, nn_hls 318 iij = nlci-ii+1319 ARRAY_IN(iij,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN( nlci-2*nn_hls+ii-1,nlcj-2*nn_hls+jj,jk,jl,jf)318 iij = jpi-ii+1 319 ARRAY_IN(iij,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii-1,jpj-2*nn_hls+jj,jk,jl,jf) 320 320 END DO 321 321 END DO … … 326 326 DO jl = 1, ipl; DO jk = 1, ipk 327 327 DO jj = 1, nn_hls 328 ijj = nlcj -jj +1329 DO ji = 1, nlci328 ijj = jpj -jj +1 329 DO ji = 1, jpi 330 330 ijt = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 331 331 ARRAY_IN(ji,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,jj,jk,jl,jf) … … 337 337 IF( nimpp >= jpiglo/2+1 ) THEN 338 338 startloop = 1 339 ELSEIF( nimpp+ nlci-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN339 ELSEIF( nimpp+jpi-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN 340 340 startloop = jpiglo/2+1 - nimpp + nn_hls 341 341 ELSE 342 startloop = nlci + 1343 ENDIF 344 IF( startloop <= nlci ) THEN345 DO jl = 1, ipl; DO jk = 1, ipk 346 DO ji = startloop, nlci342 startloop = jpi + 1 343 ENDIF 344 IF( startloop <= jpi ) THEN 345 DO jl = 1, ipl; DO jk = 1, ipk 346 DO ji = startloop, jpi 347 347 ijt = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 3 348 ARRAY_IN(ji, nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,nn_hls+1,jk,jl,jf)348 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,nn_hls+1,jk,jl,jf) 349 349 END DO 350 350 END DO; END DO … … 353 353 ! 354 354 CASE ( 'F' ) ! F-point 355 IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN356 endloop = nlci355 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 356 endloop = jpi 357 357 ELSE 358 endloop = nlci - nn_hls359 ENDIF 360 DO jl = 1, ipl; DO jk = 1, ipk 361 DO jj = 1, nn_hls 362 ijj = nlcj -jj +1358 endloop = jpi - nn_hls 359 ENDIF 360 DO jl = 1, ipl; DO jk = 1, ipk 361 DO jj = 1, nn_hls 362 ijj = jpj -jj +1 363 363 DO ji = 1, endloop 364 364 iju = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 2 … … 367 367 END DO 368 368 END DO; END DO 369 IF((nimpp + nlci - 2*nn_hls+1) .eq. jpiglo) THEN369 IF((nimpp + jpi - 2*nn_hls+1) .eq. jpiglo) THEN 370 370 DO jl = 1, ipl; DO jk = 1, ipk 371 371 DO jj = 1, nn_hls 372 ijj = nlcj -jj +1372 ijj = jpj -jj +1 373 373 DO ii = 1, nn_hls 374 iij = nlci -ii+1375 ARRAY_IN(iij,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN( nlci-2*nn_hls+ii-1,nlcj-2*nn_hls+jj-1,jk,jl,jf)374 iij = jpi -ii+1 375 ARRAY_IN(iij,ijj,jk,jl,jf) = SGN_IN(jf) * ARRAY_IN(jpi-2*nn_hls+ii-1,jpj-2*nn_hls+jj-1,jk,jl,jf) 376 376 END DO 377 377 END DO … … 380 380 ! 381 381 IF ( .NOT. l_fast_exchanges ) THEN 382 IF( nimpp + nlci - 2*nn_hls+1 /= jpiglo ) THEN383 endloop = nlci384 ELSE 385 endloop = nlci - nn_hls382 IF( nimpp + jpi - 2*nn_hls+1 /= jpiglo ) THEN 383 endloop = jpi 384 ELSE 385 endloop = jpi - nn_hls 386 386 ENDIF 387 387 IF( nimpp >= jpiglo/2+1 ) THEN 388 388 startloop = 1 389 ELSEIF( nimpp+ nlci-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN389 ELSEIF( nimpp+jpi-2*nn_hls+1 >= jpiglo/2+1 .AND. nimpp < jpiglo/2+1 ) THEN 390 390 startloop = jpiglo/2+1 - nimpp + nn_hls 391 391 ELSE … … 396 396 DO ji = startloop, endloop 397 397 iju = jpiglo - (ji + nimpp -nn_hls+1) - nfiimpp(isendto(1),jpnj) + 2 398 ARRAY_IN(ji, nlcj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf)398 ARRAY_IN(ji,jpj-nn_hls,jk,jl,jf) = SGN_IN(jf) * ARRAY2_IN(iju,nn_hls+1,jk,jl,jf) 399 399 END DO 400 400 END DO; END DO
Note: See TracChangeset
for help on using the changeset viewer.