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 12068 for NEMO/branches/2019/UKMO_MERGE_2019/src/OCE/ISF/isfcavgam.F90 – NEMO

Ignore:
Timestamp:
2019-12-05T13:18:21+01:00 (4 years ago)
Author:
davestorkey
Message:

2019/UKMO_MERGE_2019 : Merging in changes from ENHANCE-02_ISF_nemo.

Location:
NEMO/branches/2019/UKMO_MERGE_2019/src/OCE/ISF
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/UKMO_MERGE_2019/src/OCE/ISF/isfcavgam.F90

    r11931 r12068  
    1414   USE isftbl  , ONLY: isf_tbl 
    1515 
    16    USE oce     , ONLY: un, vn, rn2         ! ocean dynamics and tracers 
     16   USE oce     , ONLY: uu, vv, rn2         ! ocean dynamics and tracers 
    1717   USE phycst  , ONLY: grav, vkarmn        ! physical constant 
    1818   USE eosbn2  , ONLY: eos_rab             ! equation of state 
     
    4141   !!----------------------------------------------------------------------------------------------------- 
    4242   ! 
    43    SUBROUTINE isfcav_gammats( pttbl, pstbl, pqoce, pqfwf, pgt, pgs ) 
     43   SUBROUTINE isfcav_gammats( Kmm, pttbl, pstbl, pqoce, pqfwf, pgt, pgs ) 
    4444      !!---------------------------------------------------------------------- 
    4545      !! ** Purpose    : compute the coefficient echange for heat and fwf flux 
     
    5151      REAL(wp), DIMENSION(jpi,jpj), INTENT(  out) :: pgt  , pgs      ! gamma t and gamma s  
    5252      !!-------------------------- IN  ------------------------------------- 
     53      INTEGER                                     :: Kmm             ! ocean time level index 
    5354      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) :: pqoce, pqfwf    ! isf heat and fwf 
    5455      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) :: pttbl, pstbl    ! top boundary layer tracer 
     
    6768      CASE ('ad15', 'hj99') 
    6869         ! compute velocity in tbl 
    69          CALL isf_tbl(un(:,:,:) ,zutbl(:,:),'U', miku, rhisf_tbl_cav) 
    70          CALL isf_tbl(vn(:,:,:) ,zvtbl(:,:),'V', mikv, rhisf_tbl_cav) 
     70         CALL isf_tbl(Kmm, uu(:,:,:,Kmm) ,zutbl(:,:),'U', miku, rhisf_tbl_cav) 
     71         CALL isf_tbl(Kmm, vv(:,:,:,Kmm) ,zvtbl(:,:),'V', mikv, rhisf_tbl_cav) 
    7172         ! 
    7273         ! mask velocity in tbl with ice shelf mask 
     
    9091         pgs(:,:) = rn_gammas0 
    9192      CASE ( 'ad15' ) ! gamma is proportional to u* 
    92          CALL gammats_AD15 (              zutbl, zvtbl, rCd0_top, r_ke0_top,               pgt, pgs ) 
     93         CALL gammats_AD15 (                   zutbl, zvtbl, rCd0_top, r_ke0_top,               pgt, pgs ) 
    9394      CASE ( 'hj99' ) ! gamma depends of stability of boundary layer and u* 
    94          CALL gammats_HJ99 (pttbl, pstbl, zutbl, zvtbl, rCd0_top, r_ke0_top, pqoce, pqfwf, pgt, pgs ) 
     95         CALL gammats_HJ99 (Kmm, pttbl, pstbl, zutbl, zvtbl, rCd0_top, r_ke0_top, pqoce, pqfwf, pgt, pgs ) 
    9596      CASE DEFAULT 
    9697         CALL ctl_stop('STOP','method to compute gamma (cn_gammablk) is unknown (should not see this)') 
     
    147148   END SUBROUTINE gammats_AD15 
    148149 
    149    SUBROUTINE gammats_HJ99( pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, &  ! <<== in 
    150       &                                                            pgt  , pgs    )  ! ==>> out gammats [m/s] 
     150   SUBROUTINE gammats_HJ99( Kmm, pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, &  ! <<== in 
     151      &                                                                 pgt  , pgs    )  ! ==>> out gammats [m/s] 
    151152      !!---------------------------------------------------------------------- 
    152153      !! ** Purpose    : compute the coefficient echange coefficient  
     
    159160      REAL(wp), DIMENSION(jpi,jpj), INTENT(  out) :: pgt, pgs     ! gammat and gammas 
    160161      !!-------------------------- IN  ------------------------------------- 
     162      INTEGER                                     :: Kmm            ! ocean time level index 
    161163      REAL(wp),                     INTENT(in   ) :: pke2           ! background velocity squared 
    162164      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) :: pqoce, pqfwf   ! surface heat flux and fwf flux 
     
    208210               ! compute Rc number (as done in zdfric.F90) 
    209211!!gm better to do it like in the new zdfric.F90   i.e. avm weighted Ri computation 
    210                zcoef = 0.5_wp / e3w_n(ji,jj,ikt+1) 
     212               zcoef = 0.5_wp / e3w(ji,jj,ikt+1,Kmm) 
    211213               !                                            ! shear of horizontal velocity 
    212                zdku = zcoef * (  un(ji-1,jj  ,ikt  ) + un(ji,jj,ikt  )  & 
    213                   &             -un(ji-1,jj  ,ikt+1) - un(ji,jj,ikt+1)  ) 
    214                zdkv = zcoef * (  vn(ji  ,jj-1,ikt  ) + vn(ji,jj,ikt  )  & 
    215                   &             -vn(ji  ,jj-1,ikt+1) - vn(ji,jj,ikt+1)  ) 
     214               zdku = zcoef * (  uu(ji-1,jj  ,ikt  ,Kmm) + uu(ji,jj,ikt  ,Kmm)  & 
     215                  &             -uu(ji-1,jj  ,ikt+1,Kmm) - uu(ji,jj,ikt+1,Kmm)  ) 
     216               zdkv = zcoef * (  vv(ji  ,jj-1,ikt  ,Kmm) + vv(ji,jj,ikt  ,Kmm)  & 
     217                  &             -vv(ji  ,jj-1,ikt+1,Kmm) - vv(ji,jj,ikt+1,Kmm)  ) 
    216218               !                                            ! richardson number (minimum value set to zero) 
    217219               zRc = MAX(rn2(ji,jj,ikt+1), 0._wp) / MAX( zdku*zdku + zdkv*zdkv, zeps ) 
     
    220222               zts(jp_tem) = pttbl(ji,jj) 
    221223               zts(jp_sal) = pstbl(ji,jj) 
    222                zdep        = gdepw_n(ji,jj,ikt) 
    223                ! 
    224                CALL eos_rab( zts, zdep, zab ) 
     224               zdep        = gdepw(ji,jj,ikt,Kmm) 
     225               ! 
     226               CALL eos_rab( zts, zdep, zab, Kmm ) 
    225227               ! 
    226228               ! compute length scale (Eq ??) 
     
    229231               ! compute Monin Obukov Length 
    230232               ! Maximum boundary layer depth (Eq ??) 
    231                zhmax = gdept_n(ji,jj,mbkt(ji,jj)) - gdepw_n(ji,jj,mikt(ji,jj)) -0.001_wp 
     233               zhmax = gdept(ji,jj,mbkt(ji,jj),Kmm) - gdepw(ji,jj,mikt(ji,jj),Kmm) -0.001_wp 
    232234               ! 
    233235               ! Compute Monin obukhov length scale at the surface and Ekman depth: (Eq ??) 
Note: See TracChangeset for help on using the changeset viewer.