Changeset 14644 for NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/lib_fortran.F90
- Timestamp:
- 2021-03-26T15:33:49+01:00 (3 years ago)
- Location:
- NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final
- Property svn:externals
-
old new 9 9 10 10 # SETTE 11 ^/utils/CI/sette _wave@13990sette11 ^/utils/CI/sette@14244 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/lib_fortran.F90
r14286 r14644 169 169 ! 170 170 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 171 IF( MOD(mig(ji), 3) == MOD(nn_hls, 3) .AND. & 171 IF( MOD(mig(ji), 3) == MOD(nn_hls, 3) .AND. & ! 1st bottom left corner always at (Nis0-1, Njs0-1) 172 172 & MOD(mjg(jj), 3) == MOD(nn_hls, 3) ) THEN ! bottom left corner of a 3x3 box 173 173 ji2 = MIN(mig(ji)+2, jpiglo) - nimpp + 1 ! right position of the box … … 179 179 END_2D 180 180 CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp ) 181 ! no need for 2nd exchange when nn_hls = 2 182 IF( nn_hls /= 2 ) THEN 183 IF( nbondi /= -1 ) THEN 184 IF( MOD(mig( 1), 3) == 1 ) p2d( 1,:) = p2d( 2,:) 185 IF( MOD(mig( 1), 3) == 2 ) p2d( 2,:) = p2d( 1,:) 186 ENDIF 187 IF( nbondi /= 1 ) THEN 181 ! no need for 2nd exchange when nn_hls > 1 182 IF( nn_hls == 1 ) THEN 183 IF( mpiRnei(nn_hls,jpwe) > -1 ) THEN ! 1st column was changed during the previous call to lbc_lnk 184 IF( MOD(mig( 1), 3) == 1 ) & ! 1st box start at i=1 -> column 1 to 3 correctly computed locally 185 p2d( 1,:) = p2d( 2,:) ! previous lbc_lnk corrupted column 1 -> put it back using column 2 186 IF( MOD(mig( 1), 3) == 2 ) & ! 1st box start at i=3 -> column 1 and 2 correctly computed on west neighbourh 187 p2d( 2,:) = p2d( 1,:) ! previous lbc_lnk fix column 1 -> copy it to column 2 188 ENDIF 189 IF( mpiRnei(nn_hls,jpea) > -1 ) THEN 188 190 IF( MOD(mig(jpi-2), 3) == 1 ) p2d( jpi,:) = p2d(jpi-1,:) 189 191 IF( MOD(mig(jpi-2), 3) == 0 ) p2d(jpi-1,:) = p2d( jpi,:) 190 192 ENDIF 191 IF( nbondj /=-1 ) THEN193 IF( mpiRnei(nn_hls,jpso) > -1 ) THEN 192 194 IF( MOD(mjg( 1), 3) == 1 ) p2d(:, 1) = p2d(:, 2) 193 195 IF( MOD(mjg( 1), 3) == 2 ) p2d(:, 2) = p2d(:, 1) 194 196 ENDIF 195 IF( nbondj /=1 ) THEN197 IF( mpiRnei(nn_hls,jpno) > -1 ) THEN 196 198 IF( MOD(mjg(jpj-2), 3) == 1 ) p2d(:, jpj) = p2d(:,jpj-1) 197 199 IF( MOD(mjg(jpj-2), 3) == 0 ) p2d(:,jpj-1) = p2d(:, jpj) … … 223 225 ! 224 226 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 225 IF( MOD(mig(ji), 3) == MOD(nn_hls, 3) .AND. & 227 IF( MOD(mig(ji), 3) == MOD(nn_hls, 3) .AND. & ! 1st bottom left corner always at (Nis0-1, Njs0-1) 226 228 & MOD(mjg(jj), 3) == MOD(nn_hls, 3) ) THEN ! bottom left corner of a 3x3 box 227 229 ji2 = MIN(mig(ji)+2, jpiglo) - nimpp + 1 ! right position of the box … … 234 236 END DO 235 237 CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp ) 236 ! no need for 2nd exchange when nn_hls = 2 237 IF( nn_hls /= 2 ) THEN 238 IF( nbondi /= -1 ) THEN 239 IF( MOD(mig( 1), 3) == 1 ) p3d( 1,:,:) = p3d( 2,:,:) 240 IF( MOD(mig( 1), 3) == 2 ) p3d( 2,:,:) = p3d( 1,:,:) 241 ENDIF 242 IF( nbondi /= 1 ) THEN 238 ! no need for 2nd exchange when nn_hls > 1 239 IF( nn_hls == 1 ) THEN 240 IF( mpiRnei(nn_hls,jpwe) > -1 ) THEN ! 1st column was changed during the previous call to lbc_lnk 241 IF( MOD(mig( 1), 3) == 1 ) & ! 1st box start at i=1 -> column 1 to 3 correctly computed locally 242 p3d( 1,:,:) = p3d( 2,:,:) ! previous lbc_lnk corrupted column 1 -> put it back using column 2 243 IF( MOD(mig( 1), 3) == 2 ) & ! 1st box start at i=3 -> column 1 and 2 correctly computed on west neighbourh 244 p3d( 2,:,:) = p3d( 1,:,:) ! previous lbc_lnk fix column 1 -> copy it to column 2 245 ENDIF 246 IF( mpiRnei(nn_hls,jpea) > -1 ) THEN 243 247 IF( MOD(mig(jpi-2), 3) == 1 ) p3d( jpi,:,:) = p3d(jpi-1,:,:) 244 248 IF( MOD(mig(jpi-2), 3) == 0 ) p3d(jpi-1,:,:) = p3d( jpi,:,:) 245 249 ENDIF 246 IF( nbondj /=-1 ) THEN250 IF( mpiRnei(nn_hls,jpso) > -1 ) THEN 247 251 IF( MOD(mjg( 1), 3) == 1 ) p3d(:, 1,:) = p3d(:, 2,:) 248 252 IF( MOD(mjg( 1), 3) == 2 ) p3d(:, 2,:) = p3d(:, 1,:) 249 253 ENDIF 250 IF( nbondj /=1 ) THEN254 IF( mpiRnei(nn_hls,jpno) > -1 ) THEN 251 255 IF( MOD(mjg(jpj-2), 3) == 1 ) p3d(:, jpj,:) = p3d(:,jpj-1,:) 252 256 IF( MOD(mjg(jpj-2), 3) == 0 ) p3d(:,jpj-1,:) = p3d(:, jpj,:)
Note: See TracChangeset
for help on using the changeset viewer.