- Timestamp:
- 2016-11-28T17:04:10+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
r5836 r7351 102 102 103 103 !! * Substitutions 104 # include "domzgr_substitute.h90"105 104 # include "vectopt_loop_substitute.h90" 106 105 !!---------------------------------------------------------------------- … … 204 203 avmu(ji,jj,jk) = avmu(ji,jj,jk) * ( un(ji,jj,jk-1) - un(ji,jj,jk) ) & 205 204 & * ( ub(ji,jj,jk-1) - ub(ji,jj,jk) ) & 206 & / ( fse3uw_n(ji,jj,jk) & 207 & * fse3uw_b(ji,jj,jk) ) 205 & / ( e3uw_n(ji,jj,jk) * e3uw_b(ji,jj,jk) ) 208 206 avmv(ji,jj,jk) = avmv(ji,jj,jk) * ( vn(ji,jj,jk-1) - vn(ji,jj,jk) ) & 209 207 & * ( vb(ji,jj,jk-1) - vb(ji,jj,jk) ) & 210 & / ( fse3vw_n(ji,jj,jk) & 211 & * fse3vw_b(ji,jj,jk) ) 208 & / ( e3vw_n(ji,jj,jk) * e3vw_b(ji,jj,jk) ) 212 209 eps(ji,jj,jk) = rc03 * en(ji,jj,jk) * SQRT(en(ji,jj,jk)) / mxln(ji,jj,jk) 213 210 END DO … … 226 223 DO jj = 2, jpjm1 227 224 DO ji = fs_2, fs_jpim1 ! vector opt. 228 zup = mxln(ji,jj,jk) * fsdepw(ji,jj,mbkt(ji,jj)+1)229 zdown = vkarmn * fsdepw(ji,jj,jk) * ( -fsdepw(ji,jj,jk) + fsdepw(ji,jj,mbkt(ji,jj)+1) )225 zup = mxln(ji,jj,jk) * gdepw_n(ji,jj,mbkt(ji,jj)+1) 226 zdown = vkarmn * gdepw_n(ji,jj,jk) * ( -gdepw_n(ji,jj,jk) + gdepw_n(ji,jj,mbkt(ji,jj)+1) ) 230 227 zcoef = ( zup / MAX( zdown, rsmall ) ) 231 228 zwall (ji,jj,jk) = ( 1._wp + re2 * zcoef*zcoef ) * tmask(ji,jj,jk) … … 284 281 ! lower diagonal 285 282 z_elem_a(ji,jj,jk) = zcof * ( avm (ji,jj,jk ) + avm (ji,jj,jk-1) ) & 286 & / ( fse3t(ji,jj,jk-1) * fse3w(ji,jj,jk ) )283 & / ( e3t_n(ji,jj,jk-1) * e3w_n(ji,jj,jk ) ) 287 284 ! 288 285 ! upper diagonal 289 286 z_elem_c(ji,jj,jk) = zcof * ( avm (ji,jj,jk+1) + avm (ji,jj,jk ) ) & 290 & / ( fse3t(ji,jj,jk ) * fse3w(ji,jj,jk) )287 & / ( e3t_n(ji,jj,jk ) * e3w_n(ji,jj,jk) ) 291 288 ! 292 289 ! diagonal … … 320 317 ! 321 318 ! One level below 322 en(:,:,2) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1 * ((zhsro(:,:)+ fsdepw(:,:,2)) &319 en(:,:,2) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1 * ((zhsro(:,:)+gdepw_n(:,:,2)) & 323 320 & / zhsro(:,:) )**(1.5_wp*ra_sf))**(2._wp/3._wp) 324 321 en(:,:,2) = MAX(en(:,:,2), rn_emin ) … … 341 338 z_elem_b(:,:,2) = z_elem_b(:,:,2) + z_elem_a(:,:,2) ! Remove z_elem_a from z_elem_b 342 339 z_elem_a(:,:,2) = 0._wp 343 zkar(:,:) = (rl_sf + (vkarmn-rl_sf)*(1.-exp(-rtrans* fsdept(:,:,1)/zhsro(:,:)) ))340 zkar(:,:) = (rl_sf + (vkarmn-rl_sf)*(1.-exp(-rtrans*gdept_n(:,:,1)/zhsro(:,:)) )) 344 341 zflxs(:,:) = rsbc_tke2 * ustars2(:,:)**1.5_wp * zkar(:,:) & 345 & * ((zhsro(:,:)+ fsdept(:,:,1)) / zhsro(:,:) )**(1.5_wp*ra_sf)346 347 en(:,:,2) = en(:,:,2) + zflxs(:,:)/ fse3w(:,:,2)342 & * ((zhsro(:,:)+gdept_n(:,:,1)) / zhsro(:,:) )**(1.5_wp*ra_sf) 343 344 en(:,:,2) = en(:,:,2) + zflxs(:,:)/e3w_n(:,:,2) 348 345 ! 349 346 ! … … 508 505 ! lower diagonal 509 506 z_elem_a(ji,jj,jk) = zcof * ( avm (ji,jj,jk ) + avm (ji,jj,jk-1) ) & 510 & / ( fse3t(ji,jj,jk-1) * fse3w(ji,jj,jk ) )507 & / ( e3t_n(ji,jj,jk-1) * e3w_n(ji,jj,jk ) ) 511 508 ! upper diagonal 512 509 z_elem_c(ji,jj,jk) = zcof * ( avm (ji,jj,jk+1) + avm (ji,jj,jk ) ) & 513 & / ( fse3t(ji,jj,jk ) * fse3w(ji,jj,jk) )510 & / ( e3t_n(ji,jj,jk ) * e3w_n(ji,jj,jk) ) 514 511 ! diagonal 515 512 z_elem_b(ji,jj,jk) = 1._wp - z_elem_a(ji,jj,jk) - z_elem_c(ji,jj,jk) & … … 539 536 ! 540 537 ! One level below 541 zkar(:,:) = (rl_sf + (vkarmn-rl_sf)*(1._wp-exp(-rtrans* fsdepw(:,:,2)/zhsro(:,:) )))542 zdep(:,:) = (zhsro(:,:) + fsdepw(:,:,2)) * zkar(:,:)538 zkar(:,:) = (rl_sf + (vkarmn-rl_sf)*(1._wp-exp(-rtrans*gdepw_n(:,:,2)/zhsro(:,:) ))) 539 zdep(:,:) = (zhsro(:,:) + gdepw_n(:,:,2)) * zkar(:,:) 543 540 psi (:,:,2) = rc0**rpp * en(:,:,2)**rmm * zdep(:,:)**rnn * tmask(:,:,1) 544 541 z_elem_a(:,:,2) = 0._wp … … 561 558 ! 562 559 ! Set psi vertical flux at the surface: 563 zkar(:,:) = rl_sf + (vkarmn-rl_sf)*(1._wp-exp(-rtrans* fsdept(:,:,1)/zhsro(:,:) )) ! Lengh scale slope564 zdep(:,:) = ((zhsro(:,:) + fsdept(:,:,1)) / zhsro(:,:))**(rmm*ra_sf)560 zkar(:,:) = rl_sf + (vkarmn-rl_sf)*(1._wp-exp(-rtrans*gdept_n(:,:,1)/zhsro(:,:) )) ! Lengh scale slope 561 zdep(:,:) = ((zhsro(:,:) + gdept_n(:,:,1)) / zhsro(:,:))**(rmm*ra_sf) 565 562 zflxs(:,:) = (rnn + rsbc_tke1 * (rnn + rmm*ra_sf) * zdep(:,:))*(1._wp + rsbc_tke1*zdep(:,:))**(2._wp*rmm/3._wp-1_wp) 566 563 zdep(:,:) = rsbc_psi1 * (zwall_psi(:,:,1)*avm(:,:,1)+zwall_psi(:,:,2)*avm(:,:,2)) * & 567 & ustars2(:,:)**rmm * zkar(:,:)**rnn * (zhsro(:,:) + fsdept(:,:,1))**(rnn-1.)564 & ustars2(:,:)**rmm * zkar(:,:)**rnn * (zhsro(:,:) + gdept_n(:,:,1))**(rnn-1.) 568 565 zflxs(:,:) = zdep(:,:) * zflxs(:,:) 569 psi(:,:,2) = psi(:,:,2) + zflxs(:,:) / fse3w(:,:,2)566 psi(:,:,2) = psi(:,:,2) + zflxs(:,:) / e3w_n(:,:,2) 570 567 571 568 ! … … 593 590 ! 594 591 ! Just above last level, Dirichlet condition again (GOTM like) 595 zdep(ji,jj) = vkarmn * ( rn_bfrz0 + fse3t(ji,jj,ibotm1) )592 zdep(ji,jj) = vkarmn * ( rn_bfrz0 + e3t_n(ji,jj,ibotm1) ) 596 593 psi (ji,jj,ibotm1) = rc0**rpp * en(ji,jj,ibot )**rmm * zdep(ji,jj)**rnn 597 594 z_elem_a(ji,jj,ibotm1) = 0._wp … … 621 618 ! 622 619 ! Set psi vertical flux at the bottom: 623 zdep(ji,jj) = rn_bfrz0 + 0.5_wp* fse3t(ji,jj,ibotm1)620 zdep(ji,jj) = rn_bfrz0 + 0.5_wp*e3t_n(ji,jj,ibotm1) 624 621 zflxb = rsbc_psi2 * ( avm(ji,jj,ibot) + avm(ji,jj,ibotm1) ) & 625 622 & * (0.5_wp*(en(ji,jj,ibot)+en(ji,jj,ibotm1)))**rmm * zdep(ji,jj)**(rnn-1._wp) 626 psi(ji,jj,ibotm1) = psi(ji,jj,ibotm1) + zflxb / fse3w(ji,jj,ibotm1)623 psi(ji,jj,ibotm1) = psi(ji,jj,ibotm1) + zflxb / e3w_n(ji,jj,ibotm1) 627 624 END DO 628 625 END DO
Note: See TracChangeset
for help on using the changeset viewer.