Changeset 12340 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DIA
- Timestamp:
- 2020-01-27T15:31:53+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DIA
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DIA/diaar5.F90
r12336 r12340 40 40 !! * Substitutions 41 41 # include "vectopt_loop_substitute.h90" 42 # include "do_loop_substitute.h90" 42 43 !!---------------------------------------------------------------------- 43 44 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 107 108 ! 108 109 IF( iom_use( 'e3tb' ) ) THEN ! bottom layer thickness 109 DO jj = 1, jpj 110 DO ji = 1, jpi 111 ikb = mbkt(ji,jj) 112 z2d(ji,jj) = e3t(ji,jj,ikb,Kmm) 113 END DO 114 END DO 110 DO_2D_11_11 111 ikb = mbkt(ji,jj) 112 z2d(ji,jj) = e3t(ji,jj,ikb,Kmm) 113 END_2D 115 114 CALL iom_put( 'e3tb', z2d ) 116 115 ENDIF … … 192 191 ! ! Mean density anomalie, temperature and salinity 193 192 ztsn(:,:,:,:) = 0._wp ! ztsn(:,:,1,jp_tem/sal) is used here as 2D Workspace for temperature & salinity 194 DO jk = 1, jpkm1 195 DO jj = 1, jpj 196 DO ji = 1, jpi 197 zztmp = area(ji,jj) * e3t(ji,jj,jk,Kmm) 198 ztsn(ji,jj,1,jp_tem) = ztsn(ji,jj,1,jp_tem) + zztmp * ts(ji,jj,jk,jp_tem,Kmm) 199 ztsn(ji,jj,1,jp_sal) = ztsn(ji,jj,1,jp_sal) + zztmp * ts(ji,jj,jk,jp_sal,Kmm) 200 ENDDO 201 ENDDO 202 ENDDO 193 DO_3D_11_11( 1, jpkm1 ) 194 zztmp = area(ji,jj) * e3t(ji,jj,jk,Kmm) 195 ztsn(ji,jj,1,jp_tem) = ztsn(ji,jj,1,jp_tem) + zztmp * ts(ji,jj,jk,jp_tem,Kmm) 196 ztsn(ji,jj,1,jp_sal) = ztsn(ji,jj,1,jp_sal) + zztmp * ts(ji,jj,jk,jp_sal,Kmm) 197 END_3D 203 198 204 199 IF( ln_linssh ) THEN … … 256 251 IF( iom_use( 'tosmint_pot') ) THEN 257 252 z2d(:,:) = 0._wp 258 DO jk = 1, jpkm1 259 DO jj = 1, jpj 260 DO ji = 1, jpi ! vector opt. 261 z2d(ji,jj) = z2d(ji,jj) + rau0 * e3t(ji,jj,jk,Kmm) * ztpot(ji,jj,jk) 262 END DO 263 END DO 264 END DO 253 DO_3D_11_11( 1, jpkm1 ) 254 z2d(ji,jj) = z2d(ji,jj) + rau0 * e3t(ji,jj,jk,Kmm) * ztpot(ji,jj,jk) 255 END_3D 265 256 CALL iom_put( 'tosmint_pot', z2d ) 266 257 ENDIF … … 281 272 zpe(:,:) = 0._wp 282 273 IF( ln_zdfddm ) THEN 283 DO jk = 2, jpk 284 DO jj = 1, jpj 285 DO ji = 1, jpi 286 IF( rn2(ji,jj,jk) > 0._wp ) THEN 287 zrw = ( gdept(ji,jj,jk,Kmm) - gdepw(ji,jj,jk,Kmm) ) / e3w(ji,jj,jk,Kmm) 288 ! 289 zaw = rab_n(ji,jj,jk,jp_tem) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_tem)* zrw 290 zbw = rab_n(ji,jj,jk,jp_sal) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_sal)* zrw 291 ! 292 zpe(ji, jj) = zpe(ji,jj) & 293 & - grav * ( avt(ji,jj,jk) * zaw * (ts(ji,jj,jk-1,jp_tem,Kmm) - ts(ji,jj,jk,jp_tem,Kmm) ) & 294 & - avs(ji,jj,jk) * zbw * (ts(ji,jj,jk-1,jp_sal,Kmm) - ts(ji,jj,jk,jp_sal,Kmm) ) ) 295 ENDIF 296 END DO 297 END DO 298 END DO 274 DO_3D_11_11( 2, jpk ) 275 IF( rn2(ji,jj,jk) > 0._wp ) THEN 276 zrw = ( gdept(ji,jj,jk,Kmm) - gdepw(ji,jj,jk,Kmm) ) / e3w(ji,jj,jk,Kmm) 277 ! 278 zaw = rab_n(ji,jj,jk,jp_tem) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_tem)* zrw 279 zbw = rab_n(ji,jj,jk,jp_sal) * (1. - zrw) + rab_n(ji,jj,jk-1,jp_sal)* zrw 280 ! 281 zpe(ji, jj) = zpe(ji,jj) & 282 & - grav * ( avt(ji,jj,jk) * zaw * (ts(ji,jj,jk-1,jp_tem,Kmm) - ts(ji,jj,jk,jp_tem,Kmm) ) & 283 & - avs(ji,jj,jk) * zbw * (ts(ji,jj,jk-1,jp_sal,Kmm) - ts(ji,jj,jk,jp_sal,Kmm) ) ) 284 ENDIF 285 END_3D 299 286 ELSE 300 DO jk = 1, jpk 301 DO jj = 1, jpj 302 DO ji = 1, jpi 303 zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * rau0 * e3w(ji,jj,jk,Kmm) 304 END DO 305 END DO 306 END DO 287 DO_3D_11_11( 1, jpk ) 288 zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * rau0 * e3w(ji,jj,jk,Kmm) 289 END_3D 307 290 ENDIF 308 291 CALL iom_put( 'tnpeo', zpe ) … … 338 321 339 322 z2d(:,:) = puflx(:,:,1) 340 DO jk = 1, jpkm1 341 DO jj = 2, jpjm1 342 DO ji = fs_2, fs_jpim1 ! vector opt. 343 z2d(ji,jj) = z2d(ji,jj) + puflx(ji,jj,jk) 344 END DO 345 END DO 346 END DO 323 DO_3D_00_00( 1, jpkm1 ) 324 z2d(ji,jj) = z2d(ji,jj) + puflx(ji,jj,jk) 325 END_3D 347 326 CALL lbc_lnk( 'diaar5', z2d, 'U', -1. ) 348 327 IF( cptr == 'adv' ) THEN … … 356 335 ! 357 336 z2d(:,:) = pvflx(:,:,1) 358 DO jk = 1, jpkm1 359 DO jj = 2, jpjm1 360 DO ji = fs_2, fs_jpim1 ! vector opt. 361 z2d(ji,jj) = z2d(ji,jj) + pvflx(ji,jj,jk) 362 END DO 363 END DO 364 END DO 337 DO_3D_00_00( 1, jpkm1 ) 338 z2d(ji,jj) = z2d(ji,jj) + pvflx(ji,jj,jk) 339 END_3D 365 340 CALL lbc_lnk( 'diaar5', z2d, 'V', -1. ) 366 341 IF( cptr == 'adv' ) THEN … … 407 382 zvol0 (:,:) = 0._wp 408 383 thick0(:,:) = 0._wp 409 DO jk = 1, jpkm1 410 DO jj = 1, jpj ! interpolation of salinity at the last ocean level (i.e. the partial step) 411 DO ji = 1, jpi 412 idep = tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 413 zvol0 (ji,jj) = zvol0 (ji,jj) + idep * area(ji,jj) 414 thick0(ji,jj) = thick0(ji,jj) + idep 415 END DO 416 END DO 417 END DO 384 DO_3D_11_11( 1, jpkm1 ) 385 idep = tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 386 zvol0 (ji,jj) = zvol0 (ji,jj) + idep * area(ji,jj) 387 thick0(ji,jj) = thick0(ji,jj) + idep 388 END_3D 418 389 vol0 = glob_sum( 'diaar5', zvol0 ) 419 390 DEALLOCATE( zvol0 ) … … 429 400 sn0(:,:,:) = sn0(:,:,:) * tmask(:,:,:) 430 401 IF( ln_zps ) THEN ! z-coord. partial steps 431 DO jj = 1, jpj ! interpolation of salinity at the last ocean level (i.e. the partial step) 432 DO ji = 1, jpi 433 ik = mbkt(ji,jj) 434 IF( ik > 1 ) THEN 435 zztmp = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 436 sn0(ji,jj,ik) = ( 1._wp - zztmp ) * sn0(ji,jj,ik) + zztmp * sn0(ji,jj,ik-1) 437 ENDIF 438 END DO 439 END DO 402 DO_2D_11_11 403 ik = mbkt(ji,jj) 404 IF( ik > 1 ) THEN 405 zztmp = ( gdept_1d(ik) - gdept_0(ji,jj,ik) ) / ( gdept_1d(ik) - gdept_1d(ik-1) ) 406 sn0(ji,jj,ik) = ( 1._wp - zztmp ) * sn0(ji,jj,ik) + zztmp * sn0(ji,jj,ik-1) 407 ENDIF 408 END_2D 440 409 ENDIF 441 410 ! -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DIA/diacfl.F90
r11949 r12340 34 34 !! * Substitutions 35 35 # include "vectopt_loop_substitute.h90" 36 # include "do_loop_substitute.h90" 36 37 !!---------------------------------------------------------------------- 37 38 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 65 66 ! 66 67 ! 67 DO jk = 1, jpk ! calculate Courant numbers 68 DO jj = 1, jpj 69 DO ji = 1, jpi 70 zCu_cfl(ji,jj,jk) = ABS( uu(ji,jj,jk,Kmm) ) * z2dt / e1u (ji,jj) ! for i-direction 71 zCv_cfl(ji,jj,jk) = ABS( vv(ji,jj,jk,Kmm) ) * z2dt / e2v (ji,jj) ! for j-direction 72 zCw_cfl(ji,jj,jk) = ABS( ww(ji,jj,jk) ) * z2dt / e3w(ji,jj,jk,Kmm) ! for k-direction 73 END DO 74 END DO 75 END DO 68 DO_3D_11_11( 1, jpk ) 69 zCu_cfl(ji,jj,jk) = ABS( uu(ji,jj,jk,Kmm) ) * z2dt / e1u (ji,jj) ! for i-direction 70 zCv_cfl(ji,jj,jk) = ABS( vv(ji,jj,jk,Kmm) ) * z2dt / e2v (ji,jj) ! for j-direction 71 zCw_cfl(ji,jj,jk) = ABS( ww(ji,jj,jk) ) * z2dt / e3w(ji,jj,jk,Kmm) ! for k-direction 72 END_3D 76 73 ! 77 74 ! write outputs -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DIA/diahth.F90
r12193 r12340 40 40 41 41 42 !! * Substitutions 43 # include "do_loop_substitute.h90" 42 44 !!---------------------------------------------------------------------- 43 45 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 127 129 zdepinv(:,:) = 0._wp 128 130 zmaxdzT(:,:) = 0._wp 129 DO jj = 1, jpj 130 DO ji = 1, jpi 131 DO_2D_11_11 132 zztmp = gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) 133 hth (ji,jj) = zztmp 134 zabs2 (ji,jj) = zztmp 135 ztm2 (ji,jj) = zztmp 136 zrho10_3(ji,jj) = zztmp 137 zpycn (ji,jj) = zztmp 138 END_2D 139 IF( nla10 > 1 ) THEN 140 DO_2D_11_11 131 141 zztmp = gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) 132 hth (ji,jj) = zztmp 133 zabs2 (ji,jj) = zztmp 134 ztm2 (ji,jj) = zztmp 135 zrho10_3(ji,jj) = zztmp 136 zpycn (ji,jj) = zztmp 137 END DO 138 END DO 139 IF( nla10 > 1 ) THEN 140 DO jj = 1, jpj 141 DO ji = 1, jpi 142 zztmp = gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) 143 zrho0_3(ji,jj) = zztmp 144 zrho0_1(ji,jj) = zztmp 145 END DO 146 END DO 142 zrho0_3(ji,jj) = zztmp 143 zrho0_1(ji,jj) = zztmp 144 END_2D 147 145 ENDIF 148 146 149 147 ! Preliminary computation 150 148 ! computation of zdelr = (dr/dT)(T,S,10m)*(-0.2 degC) 151 DO jj = 1, jpj 152 DO ji = 1, jpi 153 IF( tmask(ji,jj,nla10) == 1. ) THEN 154 zu = 1779.50 + 11.250 * ts(ji,jj,nla10,jp_tem,Kmm) - 3.80 * ts(ji,jj,nla10,jp_sal,Kmm) & 155 & - 0.0745 * ts(ji,jj,nla10,jp_tem,Kmm) * ts(ji,jj,nla10,jp_tem,Kmm) & 156 & - 0.0100 * ts(ji,jj,nla10,jp_tem,Kmm) * ts(ji,jj,nla10,jp_sal,Kmm) 157 zv = 5891.00 + 38.000 * ts(ji,jj,nla10,jp_tem,Kmm) + 3.00 * ts(ji,jj,nla10,jp_sal,Kmm) & 158 & - 0.3750 * ts(ji,jj,nla10,jp_tem,Kmm) * ts(ji,jj,nla10,jp_tem,Kmm) 159 zut = 11.25 - 0.149 * ts(ji,jj,nla10,jp_tem,Kmm) - 0.01 * ts(ji,jj,nla10,jp_sal,Kmm) 160 zvt = 38.00 - 0.750 * ts(ji,jj,nla10,jp_tem,Kmm) 161 zw = (zu + 0.698*zv) * (zu + 0.698*zv) 162 zdelr(ji,jj) = ztem2 * (1000.*(zut*zv - zvt*zu)/zw) 163 ELSE 164 zdelr(ji,jj) = 0._wp 165 ENDIF 166 END DO 167 END DO 149 DO_2D_11_11 150 IF( tmask(ji,jj,nla10) == 1. ) THEN 151 zu = 1779.50 + 11.250 * ts(ji,jj,nla10,jp_tem,Kmm) - 3.80 * ts(ji,jj,nla10,jp_sal,Kmm) & 152 & - 0.0745 * ts(ji,jj,nla10,jp_tem,Kmm) * ts(ji,jj,nla10,jp_tem,Kmm) & 153 & - 0.0100 * ts(ji,jj,nla10,jp_tem,Kmm) * ts(ji,jj,nla10,jp_sal,Kmm) 154 zv = 5891.00 + 38.000 * ts(ji,jj,nla10,jp_tem,Kmm) + 3.00 * ts(ji,jj,nla10,jp_sal,Kmm) & 155 & - 0.3750 * ts(ji,jj,nla10,jp_tem,Kmm) * ts(ji,jj,nla10,jp_tem,Kmm) 156 zut = 11.25 - 0.149 * ts(ji,jj,nla10,jp_tem,Kmm) - 0.01 * ts(ji,jj,nla10,jp_sal,Kmm) 157 zvt = 38.00 - 0.750 * ts(ji,jj,nla10,jp_tem,Kmm) 158 zw = (zu + 0.698*zv) * (zu + 0.698*zv) 159 zdelr(ji,jj) = ztem2 * (1000.*(zut*zv - zvt*zu)/zw) 160 ELSE 161 zdelr(ji,jj) = 0._wp 162 ENDIF 163 END_2D 168 164 169 165 ! ------------------------------------------------------------- ! … … 173 169 ! MLD: rho = rho(1) + zrho1 ! 174 170 ! ------------------------------------------------------------- ! 175 DO jk = jpkm1, 2, -1 ! loop from bottom to 2 176 DO jj = 1, jpj 177 DO ji = 1, jpi 178 ! 179 zzdep = gdepw(ji,jj,jk,Kmm) 180 zztmp = ( ts(ji,jj,jk-1,jp_tem,Kmm) - ts(ji,jj,jk,jp_tem,Kmm) ) & 181 & / zzdep * tmask(ji,jj,jk) ! vertical gradient of temperature (dT/dz) 182 zzdep = zzdep * tmask(ji,jj,1) 183 184 IF( zztmp > zmaxdzT(ji,jj) ) THEN 185 zmaxdzT(ji,jj) = zztmp 186 hth (ji,jj) = zzdep ! max and depth of dT/dz 187 ENDIF 188 189 IF( nla10 > 1 ) THEN 190 zztmp = rhop(ji,jj,jk) - rhop(ji,jj,1) ! delta rho(1) 191 IF( zztmp > zrho3 ) zrho0_3(ji,jj) = zzdep ! > 0.03 192 IF( zztmp > zrho1 ) zrho0_1(ji,jj) = zzdep ! > 0.01 193 ENDIF 194 END DO 195 END DO 196 END DO 171 DO_3DS_11_11( jpkm1, 2, -1 ) 172 ! 173 zzdep = gdepw(ji,jj,jk,Kmm) 174 zztmp = ( ts(ji,jj,jk-1,jp_tem,Kmm) - ts(ji,jj,jk,jp_tem,Kmm) ) & 175 & / zzdep * tmask(ji,jj,jk) ! vertical gradient of temperature (dT/dz) 176 zzdep = zzdep * tmask(ji,jj,1) 177 178 IF( zztmp > zmaxdzT(ji,jj) ) THEN 179 zmaxdzT(ji,jj) = zztmp 180 hth (ji,jj) = zzdep ! max and depth of dT/dz 181 ENDIF 182 183 IF( nla10 > 1 ) THEN 184 zztmp = rhop(ji,jj,jk) - rhop(ji,jj,1) ! delta rho(1) 185 IF( zztmp > zrho3 ) zrho0_3(ji,jj) = zzdep ! > 0.03 186 IF( zztmp > zrho1 ) zrho0_1(ji,jj) = zzdep ! > 0.01 187 ENDIF 188 END_3D 197 189 198 190 CALL iom_put( 'mlddzt', hth ) ! depth of the thermocline … … 214 206 ! depth of temperature inversion ! 215 207 ! ------------------------------------------------------------- ! 216 DO jk = jpkm1, nlb10, -1 ! loop from bottom to nlb10 217 DO jj = 1, jpj 218 DO ji = 1, jpi 219 ! 220 zzdep = gdepw(ji,jj,jk,Kmm) * tmask(ji,jj,1) 221 ! 222 zztmp = ts(ji,jj,nla10,jp_tem,Kmm) - ts(ji,jj,jk,jp_tem,Kmm) ! - delta T(10m) 223 IF( ABS(zztmp) > ztem2 ) zabs2 (ji,jj) = zzdep ! abs > 0.2 224 IF( zztmp > ztem2 ) ztm2 (ji,jj) = zzdep ! > 0.2 225 zztmp = -zztmp ! delta T(10m) 226 IF( zztmp > ztinv(ji,jj) ) THEN ! temperature inversion 227 ztinv(ji,jj) = zztmp 228 zdepinv (ji,jj) = zzdep ! max value and depth 229 ENDIF 230 231 zztmp = rhop(ji,jj,jk) - rhop(ji,jj,nla10) ! delta rho(10m) 232 IF( zztmp > zrho3 ) zrho10_3(ji,jj) = zzdep ! > 0.03 233 IF( zztmp > zdelr(ji,jj) ) zpycn (ji,jj) = zzdep ! > equi. delta T(10m) - 0.2 234 ! 235 END DO 236 END DO 237 END DO 208 DO_3DS_11_11( jpkm1, nlb10, -1 ) 209 ! 210 zzdep = gdepw(ji,jj,jk,Kmm) * tmask(ji,jj,1) 211 ! 212 zztmp = ts(ji,jj,nla10,jp_tem,Kmm) - ts(ji,jj,jk,jp_tem,Kmm) ! - delta T(10m) 213 IF( ABS(zztmp) > ztem2 ) zabs2 (ji,jj) = zzdep ! abs > 0.2 214 IF( zztmp > ztem2 ) ztm2 (ji,jj) = zzdep ! > 0.2 215 zztmp = -zztmp ! delta T(10m) 216 IF( zztmp > ztinv(ji,jj) ) THEN ! temperature inversion 217 ztinv(ji,jj) = zztmp 218 zdepinv (ji,jj) = zzdep ! max value and depth 219 ENDIF 220 221 zztmp = rhop(ji,jj,jk) - rhop(ji,jj,nla10) ! delta rho(10m) 222 IF( zztmp > zrho3 ) zrho10_3(ji,jj) = zzdep ! > 0.03 223 IF( zztmp > zdelr(ji,jj) ) zpycn (ji,jj) = zzdep ! > equi. delta T(10m) - 0.2 224 ! 225 END_3D 238 226 239 227 CALL iom_put( 'mld_dt02', zabs2 ) ! MLD abs(delta t) - 0.2 … … 316 304 ! --------------------------------------- ! 317 305 iktem(:,:) = 1 318 DO jk = 1, jpkm1 ! beware temperature is not always decreasing with depth => loop from top to bottom 319 DO jj = 1, jpj 320 DO ji = 1, jpi 321 zztmp = ts(ji,jj,jk,jp_tem,Kmm) 322 IF( zztmp >= ptem ) iktem(ji,jj) = jk 323 END DO 324 END DO 325 END DO 306 DO_3D_11_11( 1, jpkm1 ) 307 zztmp = ts(ji,jj,jk,jp_tem,Kmm) 308 IF( zztmp >= ptem ) iktem(ji,jj) = jk 309 END_3D 326 310 327 311 ! ------------------------------- ! 328 312 ! Depth of ptem isotherm ! 329 313 ! ------------------------------- ! 330 DO jj = 1, jpj 331 DO ji = 1, jpi 332 ! 333 zzdep = gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) ! depth of the ocean bottom 334 ! 335 iid = iktem(ji,jj) 336 IF( iid /= 1 ) THEN 337 zztmp = gdept(ji,jj,iid ,Kmm) & ! linear interpolation 338 & + ( gdept(ji,jj,iid+1,Kmm) - gdept(ji,jj,iid,Kmm) ) & 339 & * ( 20.*tmask(ji,jj,iid+1) - ts(ji,jj,iid,jp_tem,Kmm) ) & 340 & / ( ts(ji,jj,iid+1,jp_tem,Kmm) - ts(ji,jj,iid,jp_tem,Kmm) + (1.-tmask(ji,jj,1)) ) 341 pdept(ji,jj) = MIN( zztmp , zzdep) * tmask(ji,jj,1) ! bound by the ocean depth 342 ELSE 343 pdept(ji,jj) = 0._wp 344 ENDIF 345 END DO 346 END DO 314 DO_2D_11_11 315 ! 316 zzdep = gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) ! depth of the ocean bottom 317 ! 318 iid = iktem(ji,jj) 319 IF( iid /= 1 ) THEN 320 zztmp = gdept(ji,jj,iid ,Kmm) & ! linear interpolation 321 & + ( gdept(ji,jj,iid+1,Kmm) - gdept(ji,jj,iid,Kmm) ) & 322 & * ( 20.*tmask(ji,jj,iid+1) - ts(ji,jj,iid,jp_tem,Kmm) ) & 323 & / ( ts(ji,jj,iid+1,jp_tem,Kmm) - ts(ji,jj,iid,jp_tem,Kmm) + (1.-tmask(ji,jj,1)) ) 324 pdept(ji,jj) = MIN( zztmp , zzdep) * tmask(ji,jj,1) ! bound by the ocean depth 325 ELSE 326 pdept(ji,jj) = 0._wp 327 ENDIF 328 END_2D 347 329 ! 348 330 END SUBROUTINE dia_hth_dep … … 368 350 ! 369 351 ilevel(:,:) = 1 370 DO jk = 2, jpkm1 371 DO jj = 1, jpj 372 DO ji = 1, jpi 373 IF( ( gdept(ji,jj,jk,Kmm) < pdep ) .AND. ( tmask(ji,jj,jk) == 1 ) ) THEN 374 ilevel(ji,jj) = jk 375 zthick(ji,jj) = zthick(ji,jj) + e3t(ji,jj,jk,Kmm) 376 phtc (ji,jj) = phtc (ji,jj) + e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk) 377 ENDIF 378 ENDDO 379 ENDDO 380 ENDDO 381 ! 382 DO jj = 1, jpj 383 DO ji = 1, jpi 384 ik = ilevel(ji,jj) 385 zthick(ji,jj) = pdep - zthick(ji,jj) ! remaining thickness to reach depht pdep 386 phtc(ji,jj) = phtc(ji,jj) + pt(ji,jj,ik+1) * MIN( e3t(ji,jj,ik+1,Kmm), zthick(ji,jj) ) & 387 * tmask(ji,jj,ik+1) 388 END DO 389 ENDDO 352 DO_3D_11_11( 2, jpkm1 ) 353 IF( ( gdept(ji,jj,jk,Kmm) < pdep ) .AND. ( tmask(ji,jj,jk) == 1 ) ) THEN 354 ilevel(ji,jj) = jk 355 zthick(ji,jj) = zthick(ji,jj) + e3t(ji,jj,jk,Kmm) 356 phtc (ji,jj) = phtc (ji,jj) + e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk) 357 ENDIF 358 END_3D 359 ! 360 DO_2D_11_11 361 ik = ilevel(ji,jj) 362 zthick(ji,jj) = pdep - zthick(ji,jj) ! remaining thickness to reach depht pdep 363 phtc(ji,jj) = phtc(ji,jj) + pt(ji,jj,ik+1) * MIN( e3t(ji,jj,ik+1,Kmm), zthick(ji,jj) ) & 364 * tmask(ji,jj,ik+1) 365 END_2D 390 366 ! 391 367 ! -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DIA/diamlr.F90
r12229 r12340 23 23 PUBLIC :: dia_mlr_init, dia_mlr_iom_init, dia_mlr 24 24 25 !! * Substitutions 26 # include "do_loop_substitute.h90" 25 27 !!---------------------------------------------------------------------- 26 28 !! NEMO/OCE 4.0 , NEMO Consortium (2019) -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DIA/diaptr.F90
r12193 r12340 62 62 !! * Substitutions 63 63 # include "vectopt_loop_substitute.h90" 64 # include "do_loop_substitute.h90" 64 65 !!---------------------------------------------------------------------- 65 66 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 117 118 zmask(:,:,:) = 0._wp 118 119 zts(:,:,:,:) = 0._wp 119 DO jk = 1, jpkm1 120 DO jj = 1, jpjm1 121 DO ji = 1, jpi 122 zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 123 zmask(ji,jj,jk) = vmask(ji,jj,jk) * zvfc 124 zts(ji,jj,jk,jp_tem) = (ts(ji,jj,jk,jp_tem,Kmm)+ts(ji,jj+1,jk,jp_tem,Kmm)) * 0.5 * zvfc !Tracers averaged onto V grid 125 zts(ji,jj,jk,jp_sal) = (ts(ji,jj,jk,jp_sal,Kmm)+ts(ji,jj+1,jk,jp_sal,Kmm)) * 0.5 * zvfc 126 ENDDO 127 ENDDO 128 ENDDO 120 DO_3D_10_11( 1, jpkm1 ) 121 zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 122 zmask(ji,jj,jk) = vmask(ji,jj,jk) * zvfc 123 zts(ji,jj,jk,jp_tem) = (ts(ji,jj,jk,jp_tem,Kmm)+ts(ji,jj+1,jk,jp_tem,Kmm)) * 0.5 * zvfc !Tracers averaged onto V grid 124 zts(ji,jj,jk,jp_sal) = (ts(ji,jj,jk,jp_sal,Kmm)+ts(ji,jj+1,jk,jp_sal,Kmm)) * 0.5 * zvfc 125 END_3D 129 126 ENDIF 130 127 IF( iom_use( 'sopstove' ) .OR. iom_use( 'sophtove' ) ) THEN … … 192 189 zts(:,:,:,:) = 0._wp 193 190 IF( iom_use( 'zotem' ) .OR. iom_use( 'zosal' ) .OR. iom_use( 'zosrf' ) ) THEN ! i-mean i-k-surface 194 DO jk = 1, jpkm1 195 DO jj = 1, jpj 196 DO ji = 1, jpi 197 zsfc = e1t(ji,jj) * e3t(ji,jj,jk,Kmm) 198 zmask(ji,jj,jk) = tmask(ji,jj,jk) * zsfc 199 zts(ji,jj,jk,jp_tem) = ts(ji,jj,jk,jp_tem,Kmm) * zsfc 200 zts(ji,jj,jk,jp_sal) = ts(ji,jj,jk,jp_sal,Kmm) * zsfc 201 END DO 202 END DO 203 END DO 191 DO_3D_11_11( 1, jpkm1 ) 192 zsfc = e1t(ji,jj) * e3t(ji,jj,jk,Kmm) 193 zmask(ji,jj,jk) = tmask(ji,jj,jk) * zsfc 194 zts(ji,jj,jk,jp_tem) = ts(ji,jj,jk,jp_tem,Kmm) * zsfc 195 zts(ji,jj,jk,jp_sal) = ts(ji,jj,jk,jp_sal,Kmm) * zsfc 196 END_3D 204 197 ! 205 198 DO jn = 1, nptr … … 286 279 IF( iom_use( 'sopstvtr' ) .OR. iom_use( 'sophtvtr' ) ) THEN 287 280 zts(:,:,:,:) = 0._wp 288 DO jk = 1, jpkm1 289 DO jj = 1, jpjm1 290 DO ji = 1, jpi 291 zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 292 zts(ji,jj,jk,jp_tem) = (ts(ji,jj,jk,jp_tem,Kmm)+ts(ji,jj+1,jk,jp_tem,Kmm)) * 0.5 * zvfc !Tracers averaged onto V grid 293 zts(ji,jj,jk,jp_sal) = (ts(ji,jj,jk,jp_sal,Kmm)+ts(ji,jj+1,jk,jp_sal,Kmm)) * 0.5 * zvfc 294 ENDDO 295 ENDDO 296 ENDDO 281 DO_3D_10_11( 1, jpkm1 ) 282 zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 283 zts(ji,jj,jk,jp_tem) = (ts(ji,jj,jk,jp_tem,Kmm)+ts(ji,jj+1,jk,jp_tem,Kmm)) * 0.5 * zvfc !Tracers averaged onto V grid 284 zts(ji,jj,jk,jp_sal) = (ts(ji,jj,jk,jp_sal,Kmm)+ts(ji,jj+1,jk,jp_sal,Kmm)) * 0.5 * zvfc 285 END_3D 297 286 CALL dia_ptr_hst( jp_tem, 'vtr', zts(:,:,:,jp_tem) ) 298 287 CALL dia_ptr_hst( jp_sal, 'vtr', zts(:,:,:,jp_sal) ) … … 515 504 ijpj = jpj 516 505 p_fval(:) = 0._wp 517 DO jk = 1, jpkm1 518 DO jj = 2, jpjm1 519 DO ji = fs_2, fs_jpim1 ! Vector opt. 520 p_fval(jj) = p_fval(jj) + pvflx(ji,jj,jk) * pmsk(ji,jj) * tmask_i(ji,jj) 521 END DO 522 END DO 523 END DO 506 DO_3D_00_00( 1, jpkm1 ) 507 p_fval(jj) = p_fval(jj) + pvflx(ji,jj,jk) * pmsk(ji,jj) * tmask_i(ji,jj) 508 END_3D 524 509 #if defined key_mpp_mpi 525 510 CALL mpp_sum( 'diaptr', p_fval, ijpj, ncomm_znl) … … 552 537 ijpj = jpj 553 538 p_fval(:) = 0._wp 554 DO jj = 2, jpjm1 555 DO ji = fs_2, fs_jpim1 ! Vector opt. 556 p_fval(jj) = p_fval(jj) + pvflx(ji,jj) * pmsk(ji,jj) * tmask_i(ji,jj) 557 END DO 558 END DO 539 DO_2D_00_00 540 p_fval(jj) = p_fval(jj) + pvflx(ji,jj) * pmsk(ji,jj) * tmask_i(ji,jj) 541 END_2D 559 542 #if defined key_mpp_mpi 560 543 CALL mpp_sum( 'diaptr', p_fval, ijpj, ncomm_znl ) … … 583 566 p_fval(:,:) = 0._wp 584 567 DO jc = 1, jpnj ! looping over all processors in j axis 585 DO jj = 2, jpjm1 586 DO ji = fs_2, fs_jpim1 ! Vector opt. 587 p_fval(ji,jj) = p_fval(ji,jj-1) + pva(ji,jj) * tmask_i(ji,jj) 588 END DO 589 END DO 568 DO_2D_00_00 569 p_fval(ji,jj) = p_fval(ji,jj-1) + pva(ji,jj) * tmask_i(ji,jj) 570 END_2D 590 571 CALL lbc_lnk( 'diaptr', p_fval, 'U', -1. ) 591 572 END DO … … 624 605 p_fval(:,:) = 0._wp 625 606 ! 626 DO jk = 1, jpkm1 627 DO jj = 2, jpjm1 628 DO ji = fs_2, fs_jpim1 ! Vector opt. 629 p_fval(jj,jk) = p_fval(jj,jk) + pta(ji,jj,jk) * pmsk(ji,jj) * tmask_i(ji,jj) 630 END DO 631 END DO 632 END DO 607 DO_3D_00_00( 1, jpkm1 ) 608 p_fval(jj,jk) = p_fval(jj,jk) + pta(ji,jj,jk) * pmsk(ji,jj) * tmask_i(ji,jj) 609 END_3D 633 610 ! 634 611 #if defined key_mpp_mpi -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DIA/diawri.F90
r12252 r12340 85 85 !! * Substitutions 86 86 # include "vectopt_loop_substitute.h90" 87 # include "do_loop_substitute.h90" 87 88 !!---------------------------------------------------------------------- 88 89 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 155 156 CALL iom_put( "sst", ts(:,:,1,jp_tem,Kmm) ) ! surface temperature 156 157 IF ( iom_use("sbt") ) THEN 157 DO jj = 1, jpj 158 DO ji = 1, jpi 159 ikbot = mbkt(ji,jj) 160 z2d(ji,jj) = ts(ji,jj,ikbot,jp_tem,Kmm) 161 END DO 162 END DO 158 DO_2D_11_11 159 ikbot = mbkt(ji,jj) 160 z2d(ji,jj) = ts(ji,jj,ikbot,jp_tem,Kmm) 161 END_2D 163 162 CALL iom_put( "sbt", z2d ) ! bottom temperature 164 163 ENDIF … … 167 166 CALL iom_put( "sss", ts(:,:,1,jp_sal,Kmm) ) ! surface salinity 168 167 IF ( iom_use("sbs") ) THEN 169 DO jj = 1, jpj 170 DO ji = 1, jpi 171 ikbot = mbkt(ji,jj) 172 z2d(ji,jj) = ts(ji,jj,ikbot,jp_sal,Kmm) 173 END DO 174 END DO 168 DO_2D_11_11 169 ikbot = mbkt(ji,jj) 170 z2d(ji,jj) = ts(ji,jj,ikbot,jp_sal,Kmm) 171 END_2D 175 172 CALL iom_put( "sbs", z2d ) ! bottom salinity 176 173 ENDIF … … 179 176 zztmp = rau0 * 0.25 180 177 z2d(:,:) = 0._wp 181 DO jj = 2, jpjm1 182 DO ji = fs_2, fs_jpim1 ! vector opt. 183 zztmp2 = ( ( rCdU_bot(ji+1,jj)+rCdU_bot(ji ,jj) ) * uu(ji ,jj,mbku(ji ,jj),Kmm) )**2 & 184 & + ( ( rCdU_bot(ji ,jj)+rCdU_bot(ji-1,jj) ) * uu(ji-1,jj,mbku(ji-1,jj),Kmm) )**2 & 185 & + ( ( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj ) ) * vv(ji,jj ,mbkv(ji,jj ),Kmm) )**2 & 186 & + ( ( rCdU_bot(ji,jj )+rCdU_bot(ji,jj-1) ) * vv(ji,jj-1,mbkv(ji,jj-1),Kmm) )**2 187 z2d(ji,jj) = zztmp * SQRT( zztmp2 ) * tmask(ji,jj,1) 188 ! 189 END DO 190 END DO 178 DO_2D_00_00 179 zztmp2 = ( ( rCdU_bot(ji+1,jj)+rCdU_bot(ji ,jj) ) * uu(ji ,jj,mbku(ji ,jj),Kmm) )**2 & 180 & + ( ( rCdU_bot(ji ,jj)+rCdU_bot(ji-1,jj) ) * uu(ji-1,jj,mbku(ji-1,jj),Kmm) )**2 & 181 & + ( ( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj ) ) * vv(ji,jj ,mbkv(ji,jj ),Kmm) )**2 & 182 & + ( ( rCdU_bot(ji,jj )+rCdU_bot(ji,jj-1) ) * vv(ji,jj-1,mbkv(ji,jj-1),Kmm) )**2 183 z2d(ji,jj) = zztmp * SQRT( zztmp2 ) * tmask(ji,jj,1) 184 ! 185 END_2D 191 186 CALL lbc_lnk( 'diawri', z2d, 'T', 1. ) 192 187 CALL iom_put( "taubot", z2d ) … … 196 191 CALL iom_put( "ssu", uu(:,:,1,Kmm) ) ! surface i-current 197 192 IF ( iom_use("sbu") ) THEN 198 DO jj = 1, jpj 199 DO ji = 1, jpi 200 ikbot = mbku(ji,jj) 201 z2d(ji,jj) = uu(ji,jj,ikbot,Kmm) 202 END DO 203 END DO 193 DO_2D_11_11 194 ikbot = mbku(ji,jj) 195 z2d(ji,jj) = uu(ji,jj,ikbot,Kmm) 196 END_2D 204 197 CALL iom_put( "sbu", z2d ) ! bottom i-current 205 198 ENDIF … … 208 201 CALL iom_put( "ssv", vv(:,:,1,Kmm) ) ! surface j-current 209 202 IF ( iom_use("sbv") ) THEN 210 DO jj = 1, jpj 211 DO ji = 1, jpi 212 ikbot = mbkv(ji,jj) 213 z2d(ji,jj) = vv(ji,jj,ikbot,Kmm) 214 END DO 215 END DO 203 DO_2D_11_11 204 ikbot = mbkv(ji,jj) 205 z2d(ji,jj) = vv(ji,jj,ikbot,Kmm) 206 END_2D 216 207 CALL iom_put( "sbv", z2d ) ! bottom j-current 217 208 ENDIF … … 240 231 241 232 IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 242 DO jj = 2, jpjm1 ! sst gradient 243 DO ji = fs_2, fs_jpim1 ! vector opt. 244 zztmp = ts(ji,jj,1,jp_tem,Kmm) 245 zztmpx = ( ts(ji+1,jj,1,jp_tem,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj ,1,jp_tem,Kmm) ) * r1_e1u(ji-1,jj) 246 zztmpy = ( ts(ji,jj+1,1,jp_tem,Kmm) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - ts(ji ,jj-1,1,jp_tem,Kmm) ) * r1_e2v(ji,jj-1) 247 z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 248 & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) 249 END DO 250 END DO 233 DO_2D_00_00 234 zztmp = ts(ji,jj,1,jp_tem,Kmm) 235 zztmpx = ( ts(ji+1,jj,1,jp_tem,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj ,1,jp_tem,Kmm) ) * r1_e1u(ji-1,jj) 236 zztmpy = ( ts(ji,jj+1,1,jp_tem,Kmm) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - ts(ji ,jj-1,1,jp_tem,Kmm) ) * r1_e2v(ji,jj-1) 237 z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 238 & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) 239 END_2D 251 240 CALL lbc_lnk( 'diawri', z2d, 'T', 1. ) 252 241 CALL iom_put( "sstgrad2", z2d ) ! square of module of sst gradient … … 258 247 IF( iom_use("heatc") ) THEN 259 248 z2d(:,:) = 0._wp 260 DO jk = 1, jpkm1 261 DO jj = 1, jpj 262 DO ji = 1, jpi 263 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 264 END DO 265 END DO 266 END DO 249 DO_3D_11_11( 1, jpkm1 ) 250 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 251 END_3D 267 252 CALL iom_put( "heatc", rau0_rcp * z2d ) ! vertically integrated heat content (J/m2) 268 253 ENDIF … … 270 255 IF( iom_use("saltc") ) THEN 271 256 z2d(:,:) = 0._wp 272 DO jk = 1, jpkm1 273 DO jj = 1, jpj 274 DO ji = 1, jpi 275 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 276 END DO 277 END DO 278 END DO 257 DO_3D_11_11( 1, jpkm1 ) 258 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 259 END_3D 279 260 CALL iom_put( "saltc", rau0 * z2d ) ! vertically integrated salt content (PSU*kg/m2) 280 261 ENDIF … … 282 263 IF ( iom_use("eken") ) THEN 283 264 z3d(:,:,jpk) = 0._wp 284 DO jk = 1, jpkm1 285 DO jj = 2, jpjm1 286 DO ji = fs_2, fs_jpim1 ! vector opt. 287 zztmp = 0.25_wp * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 288 z3d(ji,jj,jk) = zztmp * ( uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 289 & + uu(ji ,jj,jk,Kmm)**2 * e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 290 & + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) & 291 & + vv(ji,jj ,jk,Kmm)**2 * e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) ) 292 END DO 293 END DO 294 END DO 265 DO_3D_00_00( 1, jpkm1 ) 266 zztmp = 0.25_wp * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 267 z3d(ji,jj,jk) = zztmp * ( uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 268 & + uu(ji ,jj,jk,Kmm)**2 * e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 269 & + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) & 270 & + vv(ji,jj ,jk,Kmm)**2 * e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) ) 271 END_3D 295 272 CALL lbc_lnk( 'diawri', z3d, 'T', 1. ) 296 273 CALL iom_put( "eken", z3d ) ! kinetic energy … … 312 289 IF( iom_use("u_heattr") ) THEN 313 290 z2d(:,:) = 0._wp 314 DO jk = 1, jpkm1 315 DO jj = 2, jpjm1 316 DO ji = fs_2, fs_jpim1 ! vector opt. 317 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 318 END DO 319 END DO 320 END DO 291 DO_3D_00_00( 1, jpkm1 ) 292 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 293 END_3D 321 294 CALL lbc_lnk( 'diawri', z2d, 'U', -1. ) 322 295 CALL iom_put( "u_heattr", 0.5*rcp * z2d ) ! heat transport in i-direction … … 325 298 IF( iom_use("u_salttr") ) THEN 326 299 z2d(:,:) = 0.e0 327 DO jk = 1, jpkm1 328 DO jj = 2, jpjm1 329 DO ji = fs_2, fs_jpim1 ! vector opt. 330 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 331 END DO 332 END DO 333 END DO 300 DO_3D_00_00( 1, jpkm1 ) 301 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 302 END_3D 334 303 CALL lbc_lnk( 'diawri', z2d, 'U', -1. ) 335 304 CALL iom_put( "u_salttr", 0.5 * z2d ) ! heat transport in i-direction … … 347 316 IF( iom_use("v_heattr") ) THEN 348 317 z2d(:,:) = 0.e0 349 DO jk = 1, jpkm1 350 DO jj = 2, jpjm1 351 DO ji = fs_2, fs_jpim1 ! vector opt. 352 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 353 END DO 354 END DO 355 END DO 318 DO_3D_00_00( 1, jpkm1 ) 319 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 320 END_3D 356 321 CALL lbc_lnk( 'diawri', z2d, 'V', -1. ) 357 322 CALL iom_put( "v_heattr", 0.5*rcp * z2d ) ! heat transport in j-direction … … 360 325 IF( iom_use("v_salttr") ) THEN 361 326 z2d(:,:) = 0._wp 362 DO jk = 1, jpkm1 363 DO jj = 2, jpjm1 364 DO ji = fs_2, fs_jpim1 ! vector opt. 365 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 366 END DO 367 END DO 368 END DO 327 DO_3D_00_00( 1, jpkm1 ) 328 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 329 END_3D 369 330 CALL lbc_lnk( 'diawri', z2d, 'V', -1. ) 370 331 CALL iom_put( "v_salttr", 0.5 * z2d ) ! heat transport in j-direction … … 373 334 IF( iom_use("tosmint") ) THEN 374 335 z2d(:,:) = 0._wp 375 DO jk = 1, jpkm1 376 DO jj = 2, jpjm1 377 DO ji = fs_2, fs_jpim1 ! vector opt. 378 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) 379 END DO 380 END DO 381 END DO 336 DO_3D_00_00( 1, jpkm1 ) 337 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) 338 END_3D 382 339 CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 383 340 CALL iom_put( "tosmint", rau0 * z2d ) ! Vertical integral of temperature … … 385 342 IF( iom_use("somint") ) THEN 386 343 z2d(:,:)=0._wp 387 DO jk = 1, jpkm1 388 DO jj = 2, jpjm1 389 DO ji = fs_2, fs_jpim1 ! vector opt. 390 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 391 END DO 392 END DO 393 END DO 344 DO_3D_00_00( 1, jpkm1 ) 345 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 346 END_3D 394 347 CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 395 348 CALL iom_put( "somint", rau0 * z2d ) ! Vertical integral of salinity
Note: See TracChangeset
for help on using the changeset viewer.