- Timestamp:
- 2014-11-28T18:24:01+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90
r4747 r4924 168 168 ! 169 169 ! in case of 2 cell water column, we assume each cell feels the top and bottom friction 170 IF ( miku(ji,jj) + 2 . LE. mbku(ji,jj) ) THEN170 IF ( miku(ji,jj) + 2 .GE. mbku(ji,jj) ) THEN 171 171 bfrua(ji,jj) = - 0.5_wp * ( ( zbfrt(ji,jj) + zbfrt(ji+1,jj ) ) & 172 172 & + ( ztfrt(ji,jj) + ztfrt(ji+1,jj ) ) ) & 173 173 & * zecu * (1._wp - umask(ji,jj,1)) 174 174 END IF 175 IF ( mikv(ji,jj) + 2 . LE. mbkv(ji,jj) ) THEN175 IF ( mikv(ji,jj) + 2 .GE. mbkv(ji,jj) ) THEN 176 176 bfrva(ji,jj) = - 0.5_wp * ( ( zbfrt(ji,jj) + zbfrt(ji ,jj+1) ) & 177 177 & + ( ztfrt(ji,jj) + ztfrt(ji ,jj+1) ) ) & 178 & * zecv 178 & * zecv * (1._wp - vmask(ji,jj,1)) 179 179 END IF 180 180 ! (ISF) ======================================================================== … … 194 194 ! (ISF) END ==================================================================== 195 195 ! in case of 2 cell water column, we assume each cell feels the top and bottom friction 196 IF ( miku(ji,jj) + 2 . LE. mbku(ji,jj) ) THEN196 IF ( miku(ji,jj) + 2 .GE. mbku(ji,jj) ) THEN 197 197 tfrua(ji,jj) = - 0.5_wp * ( ( ztfrt(ji,jj) + ztfrt(ji+1,jj ) ) & 198 198 & + ( zbfrt(ji,jj) + zbfrt(ji+1,jj ) ) ) & 199 199 & * zecu * (1._wp - umask(ji,jj,1)) 200 200 END IF 201 IF ( mikv(ji,jj) + 2 . LE. mbkv(ji,jj) ) THEN201 IF ( mikv(ji,jj) + 2 .GE. mbkv(ji,jj) ) THEN 202 202 tfrva(ji,jj) = - 0.5_wp * ( ( ztfrt(ji,jj) + ztfrt(ji ,jj+1) ) & 203 203 & + ( zbfrt(ji,jj) + zbfrt(ji ,jj+1) ) ) & … … 209 209 ! 210 210 CALL lbc_lnk( bfrua, 'U', 1. ) ; CALL lbc_lnk( bfrva, 'V', 1. ) ! Lateral boundary condition 211 CALL lbc_lnk( tfrua, 'U', 1. ) ; CALL lbc_lnk( tfrva, 'V', 1. ) ! Lateral boundary condition212 211 ! 213 212 IF(ln_ctl) CALL prt_ctl( tab2d_1=bfrua, clinfo1=' bfr - u: ', mask1=umask, & … … 300 299 bfrua(:,:) = - bfrcoef2d(:,:) 301 300 bfrva(:,:) = - bfrcoef2d(:,:) 302 !303 IF(ln_tfr2d) THEN304 ! tfr_coef is a coefficient in [0,1] giving the mask where to apply the bfr enhancement305 CALL iom_open('tfr_coef.nc',inum)306 CALL iom_get (inum, jpdom_data, 'tfr_coef',tfrcoef2d,1) ! tfrcoef2d is used as tmp array307 CALL iom_close(inum)308 tfrcoef2d(:,:) = rn_tfri1 * ( 1 + rn_tfrien * tfrcoef2d(:,:) )309 ELSE310 tfrcoef2d(:,:) = rn_tfri1 ! initialize tfrcoef2d to the namelist variable311 ENDIF312 !313 tfrua(:,:) = - tfrcoef2d(:,:)314 tfrva(:,:) = - tfrcoef2d(:,:)315 301 ! 316 302 CASE( 2 ) … … 354 340 bfrcoef2d(:,:) = rn_bfri2 ! initialize bfrcoef2d to the namelist variable 355 341 ENDIF 356 357 IF(ln_tfr2d) THEN358 ! tfr_coef is a coefficient in [0,1] giving the mask where to apply the bfr enhancement359 CALL iom_open('tfr_coef.nc',inum)360 CALL iom_get (inum, jpdom_data, 'tfr_coef',tfrcoef2d,1) ! bfrcoef2d is used as tmp array361 CALL iom_close(inum)362 !363 tfrcoef2d(:,:) = rn_tfri2 * ( 1 + rn_tfrien * tfrcoef2d(:,:) )364 ELSE365 tfrcoef2d(:,:) = rn_tfri2 ! initialize tfrcoef2d to the namelist variable366 ENDIF367 342 ! 368 343 IF ( ln_loglayer.AND.(.NOT.lk_vvl) ) THEN ! set "log layer" bottom friction once for all … … 381 356 bfrcoef2d(ji,jj) = MAX(bfrcoef2d(ji,jj), ztmp) 382 357 bfrcoef2d(ji,jj) = MIN(bfrcoef2d(ji,jj), rn_bfri2_max) 383 ikbt = mikt(ji,jj)384 ztmp = tmask(ji,jj,ikbt) * ( vkarmn / LOG( 0.5_wp * fse3t_n(ji,jj,ikbt) / rn_tfrz0 ))**2._wp385 tfrcoef2d(ji,jj) = MAX(tfrcoef2d(ji,jj), ztmp)386 tfrcoef2d(ji,jj) = MIN(tfrcoef2d(ji,jj), rn_tfri2_max)387 358 END DO 388 359 END DO … … 447 418 zminbfr = MIN( zminbfr, MIN( zfru, ABS( bfrcoef2d(ji,jj) ) ) ) 448 419 zmaxbfr = MAX( zmaxbfr, MIN( zfrv, ABS( bfrcoef2d(ji,jj) ) ) ) 449 ! (ISF)450 ikbu = miku(ji,jj) ! deepest ocean level at u- and v-points451 ikbv = mikv(ji,jj)452 zfru = 0.5 * fse3u(ji,jj,ikbu) / rdt453 zfrv = 0.5 * fse3v(ji,jj,ikbv) / rdt454 IF( ABS( tfrcoef2d(ji,jj) ) > zfru ) THEN455 IF( ln_ctl ) THEN456 WRITE(numout,*) 'BFR ', narea, nimpp+ji, njmpp+jj, ikbu457 WRITE(numout,*) 'BFR ', ABS( tfrcoef2d(ji,jj) ), zfru458 ENDIF459 ictu = ictu + 1460 ENDIF461 IF( ABS( tfrcoef2d(ji,jj) ) > zfrv ) THEN462 IF( ln_ctl ) THEN463 WRITE(numout,*) 'BFR ', narea, nimpp+ji, njmpp+jj, ikbv464 WRITE(numout,*) 'BFR ', tfrcoef2d(ji,jj), zfrv465 ENDIF466 ictv = ictv + 1467 ENDIF468 zmintfr = MIN( zmintfr, MIN( zfru, ABS( tfrcoef2d(ji,jj) ) ) )469 zmaxtfr = MAX( zmaxtfr, MIN( zfrv, ABS( tfrcoef2d(ji,jj) ) ) )470 471 420 END DO 472 421 END DO … … 476 425 CALL mpp_min( zminbfr ) 477 426 CALL mpp_max( zmaxbfr ) 478 CALL mpp_min( zmintfr )479 CALL mpp_max( zmaxtfr )480 427 ENDIF 481 428 IF( .NOT.ln_bfrimp) THEN
Note: See TracChangeset
for help on using the changeset viewer.