Changeset 9190 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LBC/lbc_nfd_nogather_generic.h90
- Timestamp:
- 2018-01-06T15:18:23+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/LBC/lbc_nfd_nogather_generic.h90
r9019 r9190 55 55 56 56 SUBROUTINE ROUTINE_NFD( ptab, ptab2, cd_nat, psgn, kfld ) 57 !58 57 !!---------------------------------------------------------------------- 59 58 !! … … 85 84 ! 86 85 DO jf = 1, ipf ! Loop over the number of arrays to be processed 86 ! 87 87 SELECT CASE ( npolj ) 88 88 ! … … 90 90 ! 91 91 SELECT CASE ( NAT_IN(jf) ) 92 CASE ( 'T' , 'W' ) ! T-, W-point 93 IF ( nimpp /= 1 ) THEN ; startloop = 1 94 ELSE ; startloop = 2 95 ENDIF 96 ! 92 ! 93 CASE ( 'T' , 'W' ) ! T-, W-point 94 IF ( nimpp /= 1 ) THEN ; startloop = 1 95 ELSE ; startloop = 2 96 ENDIF 97 ! 97 98 DO ji = startloop, nlci 98 ijt=jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 499 100 END DO 101 IF( nimpp .eq. 1) THEN102 ARRAY_IN(1,ijpj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(3,ijpj-2,:,:,jf)103 ENDIF 104 99 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 100 ARRAY_IN(ji,ijpj,:,:,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,ijpj-2,:,:,jf) 101 END DO 102 IF( nimpp == 1 ) THEN 103 ARRAY_IN(1,ijpj,:,:,jf) = SGN_IN(jf) * ARRAY_IN(3,ijpj-2,:,:,jf) 104 ENDIF 105 ! 105 106 IF( nimpp >= jpiglo/2+1 ) THEN 106 107 startloop = 1 … … 110 111 startloop = nlci + 1 111 112 ENDIF 112 IF( startloop <= nlci) THEN113 DO ji = startloop, nlci114 ijt= jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4115 jia= ji + nimpp - 1116 ijta = jpiglo - jia + 2117 IF( ijta >= startloop+nimpp-1 .AND. ijta < jia ) THEN118 119 ELSE120 121 ENDIF122 END DO113 IF( startloop <= nlci ) THEN 114 DO ji = startloop, nlci 115 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 116 jia = ji + nimpp - 1 117 ijta = jpiglo - jia + 2 118 IF( ijta >= startloop+nimpp-1 .AND. ijta < jia ) THEN 119 ARRAY_IN(ji,ijpjm1,:,:,jf) = SGN_IN(jf) * ARRAY_IN(ijta-nimpp+1,ijpjm1,:,:,jf) 120 ELSE 121 ARRAY_IN(ji,ijpjm1,:,:,jf) = SGN_IN(jf) * ARRAY2_IN(ijt,ijpjm1,:,:,jf) 122 ENDIF 123 END DO 123 124 ENDIF 124 125 ! … … 289 290 ! 290 291 CASE ( 'I' ) ! ice U-V point (I-point) 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 292 IF( nimpp /= 1 ) THEN 293 startloop = 1 294 ELSE 295 startloop = 2 296 ENDIF 297 IF( nimpp + nlci - 1 /= jpiglo ) THEN 298 endloop = nlci 299 ELSE 300 endloop = nlci - 1 301 ENDIF 302 DO ji = startloop , endloop 303 ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4 304 ARRAY_IN(ji,ijpj,:,:,jf) = 0.5 * (ARRAY_IN(ji,ijpjm1,:,:,jf) + SGN_IN(jf) * ARRAY2_IN(ijt,ijpjm1,:,:,jf)) 305 END DO 306 ! 306 307 END SELECT 307 308 ! … … 310 311 SELECT CASE ( NAT_IN(jf)) 311 312 CASE ( 'T' , 'U' , 'V' , 'W' ) ! T-, U-, V-, W-points 312 313 313 ARRAY_IN(:, 1 ,:,:,jf) = 0._wp 314 ARRAY_IN(:,ijpj,:,:,jf) = 0._wp 314 315 CASE ( 'F' ) ! F-point 315 316 ARRAY_IN(:,ijpj,:,:,jf) = 0._wp 316 317 CASE ( 'I' ) ! ice U-V point 317 318 318 ARRAY_IN(:, 1 ,:,:,jf) = 0._wp 319 ARRAY_IN(:,ijpj,:,:,jf) = 0._wp 319 320 END SELECT 320 321 !
Note: See TracChangeset
for help on using the changeset viewer.