- Timestamp:
- 2020-09-29T12:41:06+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/r12377_ticket2386
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r12377_ticket2386
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@13507 sette
-
- Property svn:externals
-
NEMO/branches/2020/r12377_ticket2386/src/OCE/TRA/traadv_qck.F90
r12377 r13540 41 41 !! * Substitutions 42 42 # include "do_loop_substitute.h90" 43 # include "domzgr_substitute.h90" 43 44 !!---------------------------------------------------------------------- 44 45 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 141 142 ! 142 143 !!gm why not using a SHIFT instruction... 143 DO_3D _00_00( 1, jpkm1 )144 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !--- Computation of the ustream and downstream value of the tracer and the mask 144 145 zfc(ji,jj,jk) = pt(ji-1,jj,jk,jn,Kbb) ! Upstream in the x-direction for the tracer 145 146 zfd(ji,jj,jk) = pt(ji+1,jj,jk,jn,Kbb) ! Downstream in the x-direction for the tracer 146 147 END_3D 147 CALL lbc_lnk_multi( 'traadv_qck', zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1.) ! Lateral boundary conditions148 CALL lbc_lnk_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 148 149 149 150 ! 150 151 ! Horizontal advective fluxes 151 152 ! --------------------------- 152 DO_3D _00_00(1, jpkm1 )153 zdir = 0.5 + SIGN( 0.5 , pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0153 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 154 zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 154 155 zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji+1,jj,jk) ! FU in the x-direction for T 155 156 END_3D 156 157 ! 157 DO_3D _00_00(1, jpkm1 )158 zdir = 0.5 + SIGN( 0.5 , pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0158 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 159 zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 159 160 zdx = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) 160 161 zwx(ji,jj,jk) = ABS( pU(ji,jj,jk) ) * p2dt / zdx ! (0<zc_cfl<1 : Courant number on x-direction) … … 163 164 END_3D 164 165 !--- Lateral boundary conditions 165 CALL lbc_lnk_multi( 'traadv_qck', zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1., zwx(:,:,:), 'T', 1.)166 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 ) 166 167 167 168 !--- QUICKEST scheme … … 169 170 ! 170 171 ! Mask at the T-points in the x-direction (mask=0 or mask=1) 171 DO_3D _00_00(1, jpkm1 )172 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 172 173 zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 173 174 END_3D 174 CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1. ) ! Lateral boundary conditions175 CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 175 176 176 177 ! … … 178 179 DO jk = 1, jpkm1 179 180 ! 180 DO_2D _00_00181 zdir = 0.5 + SIGN( 0.5 , pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0181 DO_2D( 0, 0, 0, 0 ) 182 zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 182 183 !--- If the second ustream point is a land point 183 184 !--- the flux is computed by the 1st order UPWIND scheme … … 188 189 END DO 189 190 ! 190 CALL lbc_lnk( 'traadv_qck', zwx(:,:,:), 'T', 1. ) ! Lateral boundary conditions191 CALL lbc_lnk( 'traadv_qck', zwx(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 191 192 ! 192 193 ! Computation of the trend 193 DO_3D _00_00(1, jpkm1 )194 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 194 195 zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 195 196 ! horizontal advective trends … … 232 233 ! 233 234 !--- Computation of the ustream and downstream value of the tracer and the mask 234 DO_2D _00_00235 DO_2D( 0, 0, 0, 0 ) 235 236 ! Upstream in the x-direction for the tracer 236 237 zfc(ji,jj,jk) = pt(ji,jj-1,jk,jn,Kbb) … … 239 240 END_2D 240 241 END DO 241 CALL lbc_lnk_multi( 'traadv_qck', zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1.) ! Lateral boundary conditions242 CALL lbc_lnk_multi( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 242 243 243 244 … … 246 247 ! --------------------------- 247 248 ! 248 DO_3D _00_00(1, jpkm1 )249 zdir = 0.5 + SIGN( 0.5 , pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0249 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 250 zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 250 251 zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji,jj+1,jk) ! FU in the x-direction for T 251 252 END_3D 252 253 ! 253 DO_3D _00_00(1, jpkm1 )254 zdir = 0.5 + SIGN( 0.5 , pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0254 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 255 zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 255 256 zdx = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 256 257 zwy(ji,jj,jk) = ABS( pV(ji,jj,jk) ) * p2dt / zdx ! (0<zc_cfl<1 : Courant number on x-direction) … … 260 261 261 262 !--- Lateral boundary conditions 262 CALL lbc_lnk_multi( 'traadv_qck', zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1., zwy(:,:,:), 'T', 1.)263 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 ) 263 264 264 265 !--- QUICKEST scheme … … 266 267 ! 267 268 ! Mask at the T-points in the x-direction (mask=0 or mask=1) 268 DO_3D _00_00(1, jpkm1 )269 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 269 270 zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2. 270 271 END_3D 271 CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1. ) !--- Lateral boundary conditions272 CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp ) !--- Lateral boundary conditions 272 273 ! 273 274 ! Tracer flux on the x-direction 274 275 DO jk = 1, jpkm1 275 276 ! 276 DO_2D _00_00277 zdir = 0.5 + SIGN( 0.5 , pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0277 DO_2D( 0, 0, 0, 0 ) 278 zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 278 279 !--- If the second ustream point is a land point 279 280 !--- the flux is computed by the 1st order UPWIND scheme … … 284 285 END DO 285 286 ! 286 CALL lbc_lnk( 'traadv_qck', zwy(:,:,:), 'T', 1. ) ! Lateral boundary conditions287 CALL lbc_lnk( 'traadv_qck', zwy(:,:,:), 'T', 1.0_wp ) ! Lateral boundary conditions 287 288 ! 288 289 ! Computation of the trend 289 DO_3D _00_00(1, jpkm1 )290 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 290 291 zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 291 292 ! horizontal advective trends … … 326 327 ! ! =========== 327 328 ! 328 DO_3D _00_00( 2, jpkm1)329 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) !* Interior point (w-masked 2nd order centered flux) 329 330 zwz(ji,jj,jk) = 0.5 * pW(ji,jj,jk) * ( pt(ji,jj,jk-1,jn,Kmm) + pt(ji,jj,jk,jn,Kmm) ) * wmask(ji,jj,jk) 330 331 END_3D 331 332 IF( ln_linssh ) THEN !* top value (only in linear free surf. as zwz is multiplied by wmask) 332 333 IF( ln_isfcav ) THEN ! ice-shelf cavities (top of the ocean) 333 DO_2D _11_11334 DO_2D( 1, 1, 1, 1 ) 334 335 zwz(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kmm) ! linear free surface 335 336 END_2D … … 339 340 ENDIF 340 341 ! 341 DO_3D _00_00( 1, jpkm1 )342 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !== Tracer flux divergence added to the general trend ==! 342 343 pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( zwz(ji,jj,jk) - zwz(ji,jj,jk+1) ) & 343 344 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) … … 368 369 !---------------------------------------------------------------------- 369 370 ! 370 DO_3D _11_11(1, jpkm1 )371 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 371 372 zc = puc(ji,jj,jk) ! Courant number 372 373 zcurv = pfd(ji,jj,jk) + pfu(ji,jj,jk) - 2. * pfc(ji,jj,jk)
Note: See TracChangeset
for help on using the changeset viewer.