New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 4924 for branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90 – NEMO

Ignore:
Timestamp:
2014-11-28T18:24:01+01:00 (9 years ago)
Author:
mathiot
Message:

UKM02_ice_shelves merged and SETTE tested with revision 4879 of trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90

    r4747 r4924  
    168168               ! 
    169169               ! 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) ) THEN 
     170               IF ( miku(ji,jj) + 2 .GE. mbku(ji,jj) ) THEN 
    171171                  bfrua(ji,jj) = - 0.5_wp * ( ( zbfrt(ji,jj) + zbfrt(ji+1,jj  ) )   & 
    172172                               &            + ( ztfrt(ji,jj) + ztfrt(ji+1,jj  ) ) ) & 
    173173                               &          * zecu * (1._wp - umask(ji,jj,1)) 
    174174               END IF 
    175                IF ( mikv(ji,jj) + 2 .LE. mbkv(ji,jj) ) THEN 
     175               IF ( mikv(ji,jj) + 2 .GE. mbkv(ji,jj) ) THEN 
    176176                  bfrva(ji,jj) = - 0.5_wp * ( ( zbfrt(ji,jj) + zbfrt(ji  ,jj+1) )   & 
    177177                               &            + ( ztfrt(ji,jj) + ztfrt(ji  ,jj+1) ) ) & 
    178                                &          * zecv 
     178                               &          * zecv * (1._wp - vmask(ji,jj,1)) 
    179179               END IF 
    180180               ! (ISF) ======================================================================== 
     
    194194               ! (ISF) END ==================================================================== 
    195195               ! 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) ) THEN 
     196               IF ( miku(ji,jj) + 2 .GE. mbku(ji,jj) ) THEN 
    197197                  tfrua(ji,jj) = - 0.5_wp * ( ( ztfrt(ji,jj) + ztfrt(ji+1,jj  ) )   & 
    198198                               &            + ( zbfrt(ji,jj) + zbfrt(ji+1,jj  ) ) ) & 
    199199                               &          * zecu * (1._wp - umask(ji,jj,1)) 
    200200               END IF 
    201                IF ( mikv(ji,jj) + 2 .LE. mbkv(ji,jj) ) THEN 
     201               IF ( mikv(ji,jj) + 2 .GE. mbkv(ji,jj) ) THEN 
    202202                  tfrva(ji,jj) = - 0.5_wp * ( ( ztfrt(ji,jj) + ztfrt(ji  ,jj+1) )   & 
    203203                               &            + ( zbfrt(ji,jj) + zbfrt(ji  ,jj+1) ) ) & 
     
    209209         ! 
    210210         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 condition 
    212211         ! 
    213212         IF(ln_ctl)   CALL prt_ctl( tab2d_1=bfrua, clinfo1=' bfr  - u: ', mask1=umask,        & 
     
    300299         bfrua(:,:) = - bfrcoef2d(:,:) 
    301300         bfrva(:,:) = - bfrcoef2d(:,:) 
    302          ! 
    303          IF(ln_tfr2d) THEN 
    304             ! tfr_coef is a coefficient in [0,1] giving the mask where to apply the bfr enhancement 
    305             CALL iom_open('tfr_coef.nc',inum) 
    306             CALL iom_get (inum, jpdom_data, 'tfr_coef',tfrcoef2d,1) ! tfrcoef2d is used as tmp array 
    307             CALL iom_close(inum) 
    308             tfrcoef2d(:,:) = rn_tfri1 * ( 1 + rn_tfrien * tfrcoef2d(:,:) ) 
    309          ELSE 
    310             tfrcoef2d(:,:) = rn_tfri1  ! initialize tfrcoef2d to the namelist variable 
    311          ENDIF 
    312          ! 
    313          tfrua(:,:) = - tfrcoef2d(:,:) 
    314          tfrva(:,:) = - tfrcoef2d(:,:) 
    315301         ! 
    316302      CASE( 2 ) 
     
    354340            bfrcoef2d(:,:) = rn_bfri2  ! initialize bfrcoef2d to the namelist variable 
    355341         ENDIF 
    356  
    357          IF(ln_tfr2d) THEN 
    358             ! tfr_coef is a coefficient in [0,1] giving the mask where to apply the bfr enhancement 
    359             CALL iom_open('tfr_coef.nc',inum) 
    360             CALL iom_get (inum, jpdom_data, 'tfr_coef',tfrcoef2d,1) ! bfrcoef2d is used as tmp array 
    361             CALL iom_close(inum) 
    362             ! 
    363             tfrcoef2d(:,:) = rn_tfri2 * ( 1 + rn_tfrien * tfrcoef2d(:,:) ) 
    364          ELSE 
    365             tfrcoef2d(:,:) = rn_tfri2  ! initialize tfrcoef2d to the namelist variable 
    366          ENDIF 
    367342         ! 
    368343         IF ( ln_loglayer.AND.(.NOT.lk_vvl) ) THEN ! set "log layer" bottom friction once for all 
     
    381356                  bfrcoef2d(ji,jj) = MAX(bfrcoef2d(ji,jj), ztmp) 
    382357                  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._wp 
    385                   tfrcoef2d(ji,jj) = MAX(tfrcoef2d(ji,jj), ztmp) 
    386                   tfrcoef2d(ji,jj) = MIN(tfrcoef2d(ji,jj), rn_tfri2_max) 
    387358               END DO 
    388359            END DO 
     
    447418             zminbfr = MIN(  zminbfr, MIN( zfru, ABS( bfrcoef2d(ji,jj) ) )  ) 
    448419             zmaxbfr = MAX(  zmaxbfr, MIN( zfrv, ABS( bfrcoef2d(ji,jj) ) )  ) 
    449 ! (ISF) 
    450              ikbu = miku(ji,jj)       ! deepest ocean level at u- and v-points 
    451              ikbv = mikv(ji,jj) 
    452              zfru = 0.5 * fse3u(ji,jj,ikbu) / rdt 
    453              zfrv = 0.5 * fse3v(ji,jj,ikbv) / rdt 
    454              IF( ABS( tfrcoef2d(ji,jj) ) > zfru ) THEN 
    455                 IF( ln_ctl ) THEN 
    456                    WRITE(numout,*) 'BFR ', narea, nimpp+ji, njmpp+jj, ikbu 
    457                    WRITE(numout,*) 'BFR ', ABS( tfrcoef2d(ji,jj) ), zfru 
    458                 ENDIF 
    459                 ictu = ictu + 1 
    460              ENDIF 
    461              IF( ABS( tfrcoef2d(ji,jj) ) > zfrv ) THEN 
    462                  IF( ln_ctl ) THEN 
    463                      WRITE(numout,*) 'BFR ', narea, nimpp+ji, njmpp+jj, ikbv 
    464                      WRITE(numout,*) 'BFR ', tfrcoef2d(ji,jj), zfrv 
    465                  ENDIF 
    466                  ictv = ictv + 1 
    467              ENDIF 
    468              zmintfr = MIN(  zmintfr, MIN( zfru, ABS( tfrcoef2d(ji,jj) ) )  ) 
    469              zmaxtfr = MAX(  zmaxtfr, MIN( zfrv, ABS( tfrcoef2d(ji,jj) ) )  ) 
    470  
    471420         END DO 
    472421      END DO 
     
    476425         CALL mpp_min( zminbfr ) 
    477426         CALL mpp_max( zmaxbfr ) 
    478          CALL mpp_min( zmintfr ) 
    479          CALL mpp_max( zmaxtfr ) 
    480427      ENDIF 
    481428      IF( .NOT.ln_bfrimp) THEN 
Note: See TracChangeset for help on using the changeset viewer.