- Timestamp:
- 2020-01-27T15:31:53+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TRD/trdglo.F90
r11949 r12340 52 52 !! * Substitutions 53 53 # include "vectopt_loop_substitute.h90" 54 # include "do_loop_substitute.h90" 54 55 !!---------------------------------------------------------------------- 55 56 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 85 86 ! 86 87 CASE( 'TRA' ) !== Tracers (T & S) ==! 87 DO jk = 1, jpkm1 ! global sum of mask volume trend and trend*T (including interior mask) 88 DO jj = 1, jpj 89 DO ji = 1, jpi 90 zvm = e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) * tmask_i(ji,jj) 91 zvt = ptrdx(ji,jj,jk) * zvm 92 zvs = ptrdy(ji,jj,jk) * zvm 93 tmo(ktrd) = tmo(ktrd) + zvt 94 smo(ktrd) = smo(ktrd) + zvs 95 t2 (ktrd) = t2(ktrd) + zvt * ts(ji,jj,jk,jp_tem,Kmm) 96 s2 (ktrd) = s2(ktrd) + zvs * ts(ji,jj,jk,jp_sal,Kmm) 97 END DO 98 END DO 99 END DO 88 DO_3D_11_11( 1, jpkm1 ) 89 zvm = e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) * tmask_i(ji,jj) 90 zvt = ptrdx(ji,jj,jk) * zvm 91 zvs = ptrdy(ji,jj,jk) * zvm 92 tmo(ktrd) = tmo(ktrd) + zvt 93 smo(ktrd) = smo(ktrd) + zvs 94 t2 (ktrd) = t2(ktrd) + zvt * ts(ji,jj,jk,jp_tem,Kmm) 95 s2 (ktrd) = s2(ktrd) + zvs * ts(ji,jj,jk,jp_sal,Kmm) 96 END_3D 100 97 ! ! linear free surface: diagnose advective flux trough the fixed k=1 w-surface 101 98 IF( ln_linssh .AND. ktrd == jptra_zad ) THEN … … 118 115 ! 119 116 CASE( 'DYN' ) !== Momentum and KE ==! 120 DO jk = 1, jpkm1 121 DO jj = 1, jpjm1 122 DO ji = 1, jpim1 123 zvt = ptrdx(ji,jj,jk) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk) & 124 & * e1e2u (ji,jj) * e3u(ji,jj,jk,Kmm) 125 zvs = ptrdy(ji,jj,jk) * tmask_i(ji,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) & 126 & * e1e2v (ji,jj) * e3u(ji,jj,jk,Kmm) 127 umo(ktrd) = umo(ktrd) + zvt 128 vmo(ktrd) = vmo(ktrd) + zvs 129 hke(ktrd) = hke(ktrd) + uu(ji,jj,jk,Kmm) * zvt + vv(ji,jj,jk,Kmm) * zvs 130 END DO 131 END DO 132 END DO 117 DO_3D_10_10( 1, jpkm1 ) 118 zvt = ptrdx(ji,jj,jk) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk) & 119 & * e1e2u (ji,jj) * e3u(ji,jj,jk,Kmm) 120 zvs = ptrdy(ji,jj,jk) * tmask_i(ji,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) & 121 & * e1e2v (ji,jj) * e3u(ji,jj,jk,Kmm) 122 umo(ktrd) = umo(ktrd) + zvt 123 vmo(ktrd) = vmo(ktrd) + zvs 124 hke(ktrd) = hke(ktrd) + uu(ji,jj,jk,Kmm) * zvt + vv(ji,jj,jk,Kmm) * zvs 125 END_3D 133 126 ! 134 127 IF( ktrd == jpdyn_zdf ) THEN ! zdf trend: compute separately the surface forcing trend 135 128 z1_2rau0 = 0.5_wp / rau0 136 DO jj = 1, jpjm1 137 DO ji = 1, jpim1 138 zvt = ( utau_b(ji,jj) + utau(ji,jj) ) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk) & 139 & * z1_2rau0 * e1e2u(ji,jj) 140 zvs = ( vtau_b(ji,jj) + vtau(ji,jj) ) * tmask_i(ji,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) & 141 & * z1_2rau0 * e1e2v(ji,jj) 142 umo(jpdyn_tau) = umo(jpdyn_tau) + zvt 143 vmo(jpdyn_tau) = vmo(jpdyn_tau) + zvs 144 hke(jpdyn_tau) = hke(jpdyn_tau) + uu(ji,jj,1,Kmm) * zvt + vv(ji,jj,1,Kmm) * zvs 145 END DO 146 END DO 129 DO_2D_10_10 130 zvt = ( utau_b(ji,jj) + utau(ji,jj) ) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk) & 131 & * z1_2rau0 * e1e2u(ji,jj) 132 zvs = ( vtau_b(ji,jj) + vtau(ji,jj) ) * tmask_i(ji,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) & 133 & * z1_2rau0 * e1e2v(ji,jj) 134 umo(jpdyn_tau) = umo(jpdyn_tau) + zvt 135 vmo(jpdyn_tau) = vmo(jpdyn_tau) + zvs 136 hke(jpdyn_tau) = hke(jpdyn_tau) + uu(ji,jj,1,Kmm) * zvt + vv(ji,jj,1,Kmm) * zvs 137 END_2D 147 138 ENDIF 148 139 ! … … 220 211 221 212 zcof = 0.5_wp / rau0 ! Density flux at u and v-points 222 DO jk = 1, jpkm1 223 DO jj = 1, jpjm1 224 DO ji = 1, jpim1 225 zkx(ji,jj,jk) = zcof * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Kmm) * ( rhop(ji,jj,jk) + rhop(ji+1,jj,jk) ) 226 zky(ji,jj,jk) = zcof * e1v(ji,jj) * e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Kmm) * ( rhop(ji,jj,jk) + rhop(ji,jj+1,jk) ) 227 END DO 228 END DO 229 END DO 213 DO_3D_10_10( 1, jpkm1 ) 214 zkx(ji,jj,jk) = zcof * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Kmm) * ( rhop(ji,jj,jk) + rhop(ji+1,jj,jk) ) 215 zky(ji,jj,jk) = zcof * e1v(ji,jj) * e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Kmm) * ( rhop(ji,jj,jk) + rhop(ji,jj+1,jk) ) 216 END_3D 230 217 231 DO jk = 1, jpkm1 ! Density flux divergence at t-point 232 DO jj = 2, jpjm1 233 DO ji = 2, jpim1 234 zkepe(ji,jj,jk) = - ( zkz(ji,jj,jk) - zkz(ji ,jj ,jk+1) & 235 & + zkx(ji,jj,jk) - zkx(ji-1,jj ,jk ) & 236 & + zky(ji,jj,jk) - zky(ji ,jj-1,jk ) ) & 237 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) * tmask(ji,jj,jk) * tmask_i(ji,jj) 238 END DO 239 END DO 240 END DO 218 DO_3D_00_00( 1, jpkm1 ) 219 zkepe(ji,jj,jk) = - ( zkz(ji,jj,jk) - zkz(ji ,jj ,jk+1) & 220 & + zkx(ji,jj,jk) - zkx(ji-1,jj ,jk ) & 221 & + zky(ji,jj,jk) - zky(ji ,jj-1,jk ) ) & 222 & / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) * tmask(ji,jj,jk) * tmask_i(ji,jj) 223 END_3D 241 224 242 225 ! I.2 Basin averaged kinetic energy trend … … 541 524 tvolv = 0._wp 542 525 543 DO jk = 1, jpk 544 DO jj = 2, jpjm1 545 DO ji = fs_2, fs_jpim1 ! vector opt. 546 tvolu = tvolu + e1u(ji,jj) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * tmask_i(ji+1,jj ) * tmask_i(ji,jj) * umask(ji,jj,jk) 547 tvolv = tvolv + e1v(ji,jj) * e2v(ji,jj) * e3v(ji,jj,jk,Kmm) * tmask_i(ji ,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) 548 END DO 549 END DO 550 END DO 526 DO_3D_00_00( 1, jpk ) 527 tvolu = tvolu + e1u(ji,jj) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * tmask_i(ji+1,jj ) * tmask_i(ji,jj) * umask(ji,jj,jk) 528 tvolv = tvolv + e1v(ji,jj) * e2v(ji,jj) * e3v(ji,jj,jk,Kmm) * tmask_i(ji ,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) 529 END_3D 551 530 CALL mpp_sum( 'trdglo', tvolu ) ! sums over the global domain 552 531 CALL mpp_sum( 'trdglo', tvolv )
Note: See TracChangeset
for help on using the changeset viewer.