- Timestamp:
- 2015-03-31T19:58:23+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5151_UKMO_ISF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90
r5120 r5189 171 171 END DO 172 172 END DO 173 CALL lbc_lnk( bfrua, 'U', 1. ) ; CALL lbc_lnk( bfrva, 'V', 1. ) ! Lateral boundary condition 173 174 IF ( ln_isfcav ) THEN 174 175 DO jj = 2, jpjm1 … … 202 203 END DO 203 204 END DO 205 CALL lbc_lnk( tfrua, 'U', 1. ) ; CALL lbc_lnk( tfrva, 'V', 1. ) ! Lateral boundary condition 204 206 END IF 205 207 ! 206 CALL lbc_lnk( bfrua, 'U', 1. ) ; CALL lbc_lnk( bfrva, 'V', 1. ) ! Lateral boundary condition207 208 ! 208 209 IF(ln_ctl) CALL prt_ctl( tab2d_1=bfrua, clinfo1=' bfr - u: ', mask1=umask, & … … 295 296 bfrua(:,:) = - bfrcoef2d(:,:) 296 297 bfrva(:,:) = - bfrcoef2d(:,:) 298 ! 299 IF ( ln_isfcav ) THEN 300 IF(ln_tfr2d) THEN 301 ! tfr_coef is a coefficient in [0,1] giving the mask where to apply the bfr enhancement 302 CALL iom_open('tfr_coef.nc',inum) 303 CALL iom_get (inum, jpdom_data, 'tfr_coef',tfrcoef2d,1) ! tfrcoef2d is used as tmp array 304 CALL iom_close(inum) 305 tfrcoef2d(:,:) = rn_tfri1 * ( 1 + rn_tfrien * tfrcoef2d(:,:) ) 306 ELSE 307 tfrcoef2d(:,:) = rn_tfri1 ! initialize tfrcoef2d to the namelist variable 308 ENDIF 309 ! 310 tfrua(:,:) = - tfrcoef2d(:,:) 311 tfrva(:,:) = - tfrcoef2d(:,:) 312 END IF 297 313 ! 298 314 CASE( 2 ) … … 336 352 bfrcoef2d(:,:) = rn_bfri2 ! initialize bfrcoef2d to the namelist variable 337 353 ENDIF 354 355 IF ( ln_isfcav ) THEN 356 IF(ln_tfr2d) THEN 357 ! tfr_coef is a coefficient in [0,1] giving the mask where to apply the bfr enhancement 358 CALL iom_open('tfr_coef.nc',inum) 359 CALL iom_get (inum, jpdom_data, 'tfr_coef',tfrcoef2d,1) ! bfrcoef2d is used as tmp array 360 CALL iom_close(inum) 361 ! 362 tfrcoef2d(:,:) = rn_tfri2 * ( 1 + rn_tfrien * tfrcoef2d(:,:) ) 363 ELSE 364 tfrcoef2d(:,:) = rn_tfri2 ! initialize tfrcoef2d to the namelist variable 365 ENDIF 366 END IF 338 367 ! 339 368 IF ( ln_loglayer.AND.(.NOT.lk_vvl) ) THEN ! set "log layer" bottom friction once for all … … 346 375 END DO 347 376 END DO 377 IF ( ln_isfcav ) THEN 378 DO jj = 1, jpj 379 DO ji = 1, jpi 380 ikbt = mikt(ji,jj) 381 ztmp = tmask(ji,jj,ikbt) * ( vkarmn / LOG( 0.5_wp * fse3t_n(ji,jj,ikbt) / rn_tfrz0 ))**2._wp 382 tfrcoef2d(ji,jj) = MAX(tfrcoef2d(ji,jj), ztmp) 383 tfrcoef2d(ji,jj) = MIN(tfrcoef2d(ji,jj), rn_tfri2_max) 384 END DO 385 END DO 386 END IF 348 387 ENDIF 349 388 ! … … 398 437 zminbfr = MIN( zminbfr, MIN( zfru, ABS( bfrcoef2d(ji,jj) ) ) ) 399 438 zmaxbfr = MAX( zmaxbfr, MIN( zfrv, ABS( bfrcoef2d(ji,jj) ) ) ) 439 ! (ISF) 440 IF ( ln_isfcav ) THEN 441 ikbu = miku(ji,jj) ! deepest ocean level at u- and v-points 442 ikbv = mikv(ji,jj) 443 zfru = 0.5 * fse3u(ji,jj,ikbu) / rdt 444 zfrv = 0.5 * fse3v(ji,jj,ikbv) / rdt 445 IF( ABS( tfrcoef2d(ji,jj) ) > zfru ) THEN 446 IF( ln_ctl ) THEN 447 WRITE(numout,*) 'BFR ', narea, nimpp+ji, njmpp+jj, ikbu 448 WRITE(numout,*) 'BFR ', ABS( tfrcoef2d(ji,jj) ), zfru 449 ENDIF 450 ictu = ictu + 1 451 ENDIF 452 IF( ABS( tfrcoef2d(ji,jj) ) > zfrv ) THEN 453 IF( ln_ctl ) THEN 454 WRITE(numout,*) 'BFR ', narea, nimpp+ji, njmpp+jj, ikbv 455 WRITE(numout,*) 'BFR ', tfrcoef2d(ji,jj), zfrv 456 ENDIF 457 ictv = ictv + 1 458 ENDIF 459 zmintfr = MIN( zmintfr, MIN( zfru, ABS( tfrcoef2d(ji,jj) ) ) ) 460 zmaxtfr = MAX( zmaxtfr, MIN( zfrv, ABS( tfrcoef2d(ji,jj) ) ) ) 461 END IF 462 ! END ISF 400 463 END DO 401 464 END DO … … 405 468 CALL mpp_min( zminbfr ) 406 469 CALL mpp_max( zmaxbfr ) 470 IF ( ln_isfcav) CALL mpp_min( zmintfr ) 471 IF ( ln_isfcav) CALL mpp_max( zmaxtfr ) 407 472 ENDIF 408 473 IF( .NOT.ln_bfrimp) THEN … … 411 476 WRITE(numout,*) ' Bottom friction stability check failed at ', ictv, ' V-points ' 412 477 WRITE(numout,*) ' Bottom friction coefficient now ranges from: ', zminbfr, ' to ', zmaxbfr 413 WRITE(numout,*) ' Bottom friction coefficient now ranges from: ', zmintfr, ' to ', zmaxtfr414 478 WRITE(numout,*) ' Bottom friction coefficient will be reduced where necessary' 479 IF ( ln_isfcav ) WRITE(numout,*) ' Top friction coefficient now ranges from: ', zmintfr, ' to ', zmaxtfr 415 480 ENDIF 416 481 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.