Changeset 14644 for NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/OCE/TRA/traadv_qck.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/TRA/traadv_qck.F90
r14219 r14644 146 146 ! 147 147 !!gm why not using a SHIFT instruction... 148 DO_3D( 0, 0, nn_hls-1, nn_hls-1, 1, jpkm1 ) !--- Computation of the ustream and downstream value of the tracer and the mask148 DO_3D( nn_hls-1, nn_hls-1, 0, 0, 1, jpkm1 ) !--- Computation of the ustream and downstream value of the tracer and the mask 149 149 zfc(ji,jj,jk) = pt(ji-1,jj,jk,jn,Kbb) ! Upstream in the x-direction for the tracer 150 150 zfd(ji,jj,jk) = pt(ji+1,jj,jk,jn,Kbb) ! Downstream in the x-direction for the tracer 151 151 END_3D 152 IF (nn_hls.EQ.1) CALL lbc_lnk _multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions152 IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 153 153 154 154 ! 155 155 ! Horizontal advective fluxes 156 156 ! --------------------------- 157 DO_3D( 0, 0, nn_hls-1, 0, 1, jpkm1 )157 DO_3D( nn_hls-1, 0, 0, 0, 1, jpkm1 ) 158 158 zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 159 159 zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji+1,jj,jk) ! FU in the x-direction for T 160 160 END_3D 161 161 ! 162 DO_3D( 0, 0, nn_hls-1, 0, 1, jpkm1 )162 DO_3D( nn_hls-1, 0, 0, 0, 1, jpkm1 ) 163 163 zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 164 164 zdx = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) … … 168 168 END_3D 169 169 !--- Lateral boundary conditions 170 IF (nn_hls.EQ.1) CALL lbc_lnk _multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp, zwx(:,:,:), 'T', 1.0_wp )170 IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp, zwx(:,:,:), 'T', 1.0_wp ) 171 171 172 172 !--- QUICKEST scheme … … 174 174 ! 175 175 ! Mask at the T-points in the x-direction (mask=0 or mask=1) 176 DO_3D( 0, 0, nn_hls-1, nn_hls-1, 1, jpkm1 )176 DO_3D( nn_hls-1, nn_hls-1, 0, 0, 1, jpkm1 ) 177 177 zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 178 178 END_3D … … 181 181 ! 182 182 ! Tracer flux on the x-direction 183 DO_3D( 0, 0, 1, 0, 1, jpkm1 )183 DO_3D( 1, 0, 0, 0, 1, jpkm1 ) 184 184 zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 185 185 !--- If the second ustream point is a land point … … 233 233 ! 234 234 !--- Computation of the ustream and downstream value of the tracer and the mask 235 DO_2D( nn_hls-1, nn_hls-1, 0, 0)235 DO_2D( 0, 0, nn_hls-1, nn_hls-1 ) 236 236 ! Upstream in the x-direction for the tracer 237 237 zfc(ji,jj,jk) = pt(ji,jj-1,jk,jn,Kbb) … … 240 240 END_2D 241 241 END DO 242 IF (nn_hls.EQ.1) CALL lbc_lnk _multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions242 IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 243 243 244 244 ! … … 246 246 ! --------------------------- 247 247 ! 248 DO_3D( nn_hls-1, 0, 0, 0, 1, jpkm1 )248 DO_3D( 0, 0, nn_hls-1, 0, 1, jpkm1 ) 249 249 zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 250 250 zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji,jj+1,jk) ! FU in the x-direction for T 251 251 END_3D 252 252 ! 253 DO_3D( nn_hls-1, 0, 0, 0, 1, jpkm1 )253 DO_3D( 0, 0, nn_hls-1, 0, 1, jpkm1 ) 254 254 zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 255 255 zdx = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * e3v(ji,jj,jk,Kmm) … … 260 260 261 261 !--- Lateral boundary conditions 262 IF (nn_hls.EQ.1) CALL lbc_lnk _multi( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp, zwy(:,:,:), 'T', 1.0_wp )262 IF (nn_hls.EQ.1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp, zwy(:,:,:), 'T', 1.0_wp ) 263 263 264 264 !--- QUICKEST scheme … … 266 266 ! 267 267 ! Mask at the T-points in the x-direction (mask=0 or mask=1) 268 DO_3D( nn_hls-1, nn_hls-1, 0, 0, 1, jpkm1 )268 DO_3D( 0, 0, nn_hls-1, nn_hls-1, 1, jpkm1 ) 269 269 zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2. 270 270 END_3D … … 272 272 ! 273 273 ! Tracer flux on the x-direction 274 DO_3D( 1, 0, 0, 0, 1, jpkm1 )274 DO_3D( 0, 0, 1, 0, 1, jpkm1 ) 275 275 zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 276 276 !--- If the second ustream point is a land point
Note: See TracChangeset
for help on using the changeset viewer.