- 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/zdfbfr.F90
r5332 r7351 56 56 !! * Substitutions 57 57 # include "vectopt_loop_substitute.h90" 58 # include "domzgr_substitute.h90"59 58 !!---------------------------------------------------------------------- 60 59 !! NEMO/OPA 4.0 , NEMO Consortium (2011) … … 111 110 CALL wrk_alloc( jpi, jpj, zbfrt, ztfrt ) 112 111 113 IF ( ln_loglayer.AND. lk_vvl) THEN ! "log layer" bottom friction coefficient112 IF ( ln_loglayer.AND. .NOT.ln_linssh ) THEN ! "log layer" bottom friction coefficient 114 113 115 114 DO jj = 1, jpj … … 117 116 ikbt = mbkt(ji,jj) 118 117 !! JC: possible WAD implementation should modify line below if layers vanish 119 ztmp = tmask(ji,jj,ikbt) * ( vkarmn / LOG( 0.5_wp * fse3t_n(ji,jj,ikbt) / rn_bfrz0 ))**2._wp118 ztmp = tmask(ji,jj,ikbt) * ( vkarmn / LOG( 0.5_wp * e3t_n(ji,jj,ikbt) / rn_bfrz0 ))**2._wp 120 119 zbfrt(ji,jj) = MAX(bfrcoef2d(ji,jj), ztmp) 121 120 zbfrt(ji,jj) = MIN(zbfrt(ji,jj), rn_bfri2_max) … … 128 127 ikbt = mikt(ji,jj) 129 128 ! JC: possible WAD implementation should modify line below if layers vanish 130 ztmp = (1 -tmask(ji,jj,1)) * ( vkarmn / LOG( 0.5_wp * fse3t_n(ji,jj,ikbt) / rn_bfrz0 ))**2._wp129 ztmp = (1.-tmask(ji,jj,1)) * ( vkarmn / LOG( 0.5_wp * e3t_n(ji,jj,ikbt) / rn_bfrz0 ))**2._wp 131 130 ztfrt(ji,jj) = MAX(tfrcoef2d(ji,jj), ztmp) 132 131 ztfrt(ji,jj) = MIN(ztfrt(ji,jj), rn_tfri2_max) … … 134 133 END DO 135 134 END IF 136 !135 ! 137 136 ELSE 138 137 zbfrt(:,:) = bfrcoef2d(:,:) … … 158 157 ! in case of 2 cell water column, we assume each cell feels the top and bottom friction 159 158 IF ( ln_isfcav ) THEN 160 IF ( miku(ji,jj) + 1 .GE.mbku(ji,jj) ) THEN159 IF ( miku(ji,jj) + 1 >= mbku(ji,jj) ) THEN 161 160 bfrua(ji,jj) = - 0.5_wp * ( ( zbfrt(ji,jj) + zbfrt(ji+1,jj ) ) & 162 161 & + ( ztfrt(ji,jj) + ztfrt(ji+1,jj ) ) ) & 163 162 & * zecu * (1._wp - umask(ji,jj,1)) 164 END 165 IF ( mikv(ji,jj) + 1 .GE.mbkv(ji,jj) ) THEN163 ENDIF 164 IF( mikv(ji,jj) + 1 >= mbkv(ji,jj) ) THEN 166 165 bfrva(ji,jj) = - 0.5_wp * ( ( zbfrt(ji,jj) + zbfrt(ji ,jj+1) ) & 167 166 & + ( ztfrt(ji,jj) + ztfrt(ji ,jj+1) ) ) & 168 167 & * zecv * (1._wp - vmask(ji,jj,1)) 169 END 170 END 168 ENDIF 169 ENDIF 171 170 END DO 172 171 END DO 173 172 CALL lbc_lnk( bfrua, 'U', 1. ) ; CALL lbc_lnk( bfrva, 'V', 1. ) ! Lateral boundary condition 174 173 175 IF 174 IF( ln_isfcav ) THEN 176 175 DO jj = 2, jpjm1 177 176 DO ji = 2, jpim1 … … 371 370 END IF 372 371 ! 373 IF ( ln_loglayer.AND.(.NOT.lk_vvl)) THEN ! set "log layer" bottom friction once for all372 IF( ln_loglayer.AND. ln_linssh ) THEN ! set "log layer" bottom friction once for all 374 373 DO jj = 1, jpj 375 374 DO ji = 1, jpi 376 375 ikbt = mbkt(ji,jj) 377 ztmp = tmask(ji,jj,ikbt) * ( vkarmn / LOG( 0.5_wp * fse3t_n(ji,jj,ikbt) / rn_bfrz0 ))**2._wp376 ztmp = tmask(ji,jj,ikbt) * ( vkarmn / LOG( 0.5_wp * e3t_n(ji,jj,ikbt) / rn_bfrz0 ))**2._wp 378 377 bfrcoef2d(ji,jj) = MAX(bfrcoef2d(ji,jj), ztmp) 379 378 bfrcoef2d(ji,jj) = MIN(bfrcoef2d(ji,jj), rn_bfri2_max) … … 384 383 DO ji = 1, jpi 385 384 ikbt = mikt(ji,jj) 386 ztmp = tmask(ji,jj,ikbt) * ( vkarmn / LOG( 0.5_wp * fse3t_n(ji,jj,ikbt) / rn_tfrz0 ))**2._wp385 ztmp = tmask(ji,jj,ikbt) * ( vkarmn / LOG( 0.5_wp * e3t_n(ji,jj,ikbt) / rn_tfrz0 ))**2._wp 387 386 tfrcoef2d(ji,jj) = MAX(tfrcoef2d(ji,jj), ztmp) 388 387 tfrcoef2d(ji,jj) = MIN(tfrcoef2d(ji,jj), rn_tfri2_max) … … 424 423 ikbu = mbku(ji,jj) ! deepest ocean level at u- and v-points 425 424 ikbv = mbkv(ji,jj) 426 zfru = 0.5 * fse3u(ji,jj,ikbu) / rdt427 zfrv = 0.5 * fse3v(ji,jj,ikbv) / rdt425 zfru = 0.5 * e3u_n(ji,jj,ikbu) / rdt 426 zfrv = 0.5 * e3v_n(ji,jj,ikbv) / rdt 428 427 IF( ABS( bfrcoef2d(ji,jj) ) > zfru ) THEN 429 428 IF( ln_ctl ) THEN … … 446 445 ikbu = miku(ji,jj) ! 1st wet ocean level at u- and v-points 447 446 ikbv = mikv(ji,jj) 448 zfru = 0.5 * fse3u(ji,jj,ikbu) / rdt449 zfrv = 0.5 * fse3v(ji,jj,ikbv) / rdt447 zfru = 0.5 * e3u_n(ji,jj,ikbu) / rdt 448 zfrv = 0.5 * e3v_n(ji,jj,ikbv) / rdt 450 449 IF( ABS( tfrcoef2d(ji,jj) ) > zfru ) THEN 451 450 IF( ln_ctl ) THEN
Note: See TracChangeset
for help on using the changeset viewer.