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 13268 for NEMO/releases/r4.0/r4.0-HEAD/src – NEMO

Ignore:
Timestamp:
2020-07-08T16:27:49+02:00 (4 years ago)
Author:
clem
Message:

should solve ticket #2435

Location:
NEMO/releases/r4.0/r4.0-HEAD/src/OCE/ZDF
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/releases/r4.0/r4.0-HEAD/src/OCE/ZDF/zdfdrg.F90

    r11536 r13268  
    4141 
    4242   !                                 !!* Namelist namdrg: nature of drag coefficient namelist * 
    43    LOGICAL          ::   ln_OFF       ! free-slip       : Cd = 0 
     43   LOGICAL , PUBLIC ::   ln_drg_OFF   ! free-slip       : Cd = 0 
    4444   LOGICAL          ::   ln_lin       !     linear  drag: Cd = Cd0_lin 
    4545   LOGICAL          ::   ln_non_lin   ! non-linear  drag: Cd = Cd0_nl |U| 
     
    231231      INTEGER   ::   ios, ioptio   ! local integers 
    232232      !! 
    233       NAMELIST/namdrg/ ln_OFF, ln_lin, ln_non_lin, ln_loglayer, ln_drgimp 
     233      NAMELIST/namdrg/ ln_drg_OFF, ln_lin, ln_non_lin, ln_loglayer, ln_drgimp 
    234234      !!---------------------------------------------------------------------- 
    235235      ! 
     
    249249         WRITE(numout,*) '~~~~~~~~~~~~' 
    250250         WRITE(numout,*) '   Namelist namdrg : top/bottom friction choices' 
    251          WRITE(numout,*) '      free-slip       : Cd = 0                  ln_OFF      = ', ln_OFF  
     251         WRITE(numout,*) '      free-slip       : Cd = 0                  ln_drg_OFF  = ', ln_drg_OFF  
    252252         WRITE(numout,*) '      linear  drag    : Cd = Cd0                ln_lin      = ', ln_lin 
    253253         WRITE(numout,*) '      non-linear  drag: Cd = Cd0_nl |U|         ln_non_lin  = ', ln_non_lin 
     
    257257      ! 
    258258      ioptio = 0                       ! set ndrg and control check 
    259       IF( ln_OFF      ) THEN   ;   ndrg = np_OFF        ;   ioptio = ioptio + 1   ;   ENDIF 
     259      IF( ln_drg_OFF  ) THEN   ;   ndrg = np_OFF        ;   ioptio = ioptio + 1   ;   ENDIF 
    260260      IF( ln_lin      ) THEN   ;   ndrg = np_lin        ;   ioptio = ioptio + 1   ;   ENDIF 
    261261      IF( ln_non_lin  ) THEN   ;   ndrg = np_non_lin    ;   ioptio = ioptio + 1   ;   ENDIF 
  • NEMO/releases/r4.0/r4.0-HEAD/src/OCE/ZDF/zdfgls.F90

    r13260 r13268  
    1919   USE dom_oce        ! ocean space and time domain 
    2020   USE domvvl         ! ocean space and time domain : variable volume layer 
     21   USE zdfdrg  , ONLY : ln_drg_OFF            ! top/bottom free-slip flag 
    2122   USE zdfdrg  , ONLY : r_z0_top , r_z0_bot   ! top/bottom roughness 
    2223   USE zdfdrg  , ONLY : rCdU_top , rCdU_bot   ! top/bottom friction 
     
    166167 
    167168      ! Compute surface, top and bottom friction at T-points 
    168       DO jj = 2, jpjm1           
    169          DO ji = fs_2, fs_jpim1   ! vector opt.          
    170             ! 
    171             ! surface friction 
     169      DO jj = 2, jpjm1              !==  surface ocean friction 
     170         DO ji = fs_2, fs_jpim1           ! vector opt.          
    172171            ustar2_surf(ji,jj) = r1_rau0 * taum(ji,jj) * tmask(ji,jj,1) 
    173             !    
     172         END DO 
     173      END DO 
     174      !    
    174175!!gm Rq we may add here r_ke0(_top/_bot) ?  ==>> think about that... 
    175           ! bottom friction (explicit before friction) 
    176           zmsku = ( 2._wp - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 
    177           zmskv = ( 2._wp - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) )     ! (CAUTION: CdU<0) 
    178           ustar2_bot(ji,jj) = - rCdU_bot(ji,jj) * SQRT(  ( zmsku*( ub(ji,jj,mbkt(ji,jj))+ub(ji-1,jj,mbkt(ji,jj)) ) )**2  & 
    179              &                                         + ( zmskv*( vb(ji,jj,mbkt(ji,jj))+vb(ji,jj-1,mbkt(ji,jj)) ) )**2  ) 
    180          END DO 
    181       END DO 
    182       IF( ln_isfcav ) THEN       !top friction 
    183          DO jj = 2, jpjm1 
    184             DO ji = fs_2, fs_jpim1   ! vector opt. 
    185                zmsku = ( 2. - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 
    186                zmskv = ( 2. - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) )     ! (CAUTION: CdU<0) 
    187                ustar2_top(ji,jj) = - rCdU_top(ji,jj) * SQRT(  ( zmsku*( ub(ji,jj,mikt(ji,jj))+ub(ji-1,jj,mikt(ji,jj)) ) )**2  & 
    188                   &                                         + ( zmskv*( vb(ji,jj,mikt(ji,jj))+vb(ji,jj-1,mikt(ji,jj)) ) )**2  ) 
    189             END DO 
    190          END DO 
     176      !     
     177      IF( .NOT.ln_drg_OFF ) THEN    !== top/bottom friction   (explicit before friction) 
     178         DO jj = 2, jpjm1                      ! bottom friction 
     179            DO ji = fs_2, fs_jpim1   ! vector opt.          
     180               zmsku = ( 2._wp - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 
     181               zmskv = ( 2._wp - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) )     ! (CAUTION: CdU<0) 
     182               ustar2_bot(ji,jj) = - rCdU_bot(ji,jj) * SQRT(  ( zmsku*( ub(ji,jj,mbkt(ji,jj))+ub(ji-1,jj,mbkt(ji,jj)) ) )**2  & 
     183                  &                                         + ( zmskv*( vb(ji,jj,mbkt(ji,jj))+vb(ji,jj-1,mbkt(ji,jj)) ) )**2  ) 
     184            END DO 
     185         END DO 
     186         IF( ln_isfcav ) THEN       !top friction 
     187            DO jj = 2, jpjm1 
     188               DO ji = fs_2, fs_jpim1   ! vector opt. 
     189                  zmsku = ( 2._wp - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 
     190                  zmskv = ( 2._wp - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) )     ! (CAUTION: CdU<0) 
     191                  ustar2_top(ji,jj) = - rCdU_top(ji,jj) * SQRT(  ( zmsku*( ub(ji,jj,mikt(ji,jj))+ub(ji-1,jj,mikt(ji,jj)) ) )**2  & 
     192                     &                                         + ( zmskv*( vb(ji,jj,mikt(ji,jj))+vb(ji,jj-1,mikt(ji,jj)) ) )**2  ) 
     193               END DO 
     194            END DO 
     195         ENDIF 
    191196      ENDIF 
    192197    
  • NEMO/releases/r4.0/r4.0-HEAD/src/OCE/ZDF/zdftke.F90

    r12703 r13268  
    2828   !!            3.6  !  2014-11  (P. Mathiot) add ice shelf capability 
    2929   !!            4.0  !  2017-04  (G. Madec)  remove CPP ddm key & avm at t-point only  
    30    !!             -   !  2017-05  (G. Madec)  add top/bottom friction as boundary condition (ln_drg) 
     30   !!             -   !  2017-05  (G. Madec)  add top/bottom friction as boundary condition 
    3131   !!---------------------------------------------------------------------- 
    3232 
     
    7171   REAL(wp) ::   rn_emin0  ! surface minimum value of tke   [m2/s2] 
    7272   REAL(wp) ::   rn_bshear ! background shear (>0) currently a numerical threshold (do not change it) 
    73    LOGICAL  ::   ln_drg    ! top/bottom friction forcing flag  
    7473   INTEGER  ::   nn_etau   ! type of depth penetration of surface tke (=0/1/2/3) 
    7574   INTEGER  ::      nn_htau   ! type of tke profile of penetration (=0/1) 
     
    229228      ! Note that stress averaged is done using an wet-only calculation of u and v at t-point like in zdfsh2 
    230229      ! 
    231       IF( ln_drg ) THEN       !== friction used as top/bottom boundary condition on TKE 
    232          ! 
    233          DO jj = 2, jpjm1           ! bottom friction 
     230      IF( .NOT.ln_drg_OFF ) THEN    !== friction used as top/bottom boundary condition on TKE 
     231         ! 
     232         DO jj = 2, jpjm1              ! bottom friction 
    234233            DO ji = fs_2, fs_jpim1     ! vector opt. 
    235234               zmsku = ( 2. - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 
     
    644643      INTEGER ::   ios 
    645644      !! 
    646       NAMELIST/namzdf_tke/ rn_ediff, rn_ediss , rn_ebb , rn_emin  ,          & 
    647          &                 rn_emin0, rn_bshear, nn_mxl , ln_mxl0  ,          & 
    648          &                 rn_mxl0 , nn_pdl   , ln_drg , ln_lc    , rn_lc,   & 
     645      NAMELIST/namzdf_tke/ rn_ediff, rn_ediss , rn_ebb , rn_emin  ,  & 
     646         &                 rn_emin0, rn_bshear, nn_mxl , ln_mxl0  ,  & 
     647         &                 rn_mxl0 , nn_pdl   , ln_lc  , rn_lc,      & 
    649648         &                 nn_etau , nn_htau  , rn_efr , rn_eice   
    650649      !!---------------------------------------------------------------------- 
     
    676675         WRITE(numout,*) '         surface mixing length = F(stress) or not    ln_mxl0   = ', ln_mxl0 
    677676         WRITE(numout,*) '         surface  mixing length minimum value        rn_mxl0   = ', rn_mxl0 
    678          WRITE(numout,*) '      top/bottom friction forcing flag            ln_drg    = ', ln_drg 
    679677         WRITE(numout,*) '      Langmuir cells parametrization              ln_lc     = ', ln_lc 
    680678         WRITE(numout,*) '         coef to compute vertical velocity of LC     rn_lc  = ', rn_lc 
     
    684682         WRITE(numout,*) '          below sea-ice:  =0 ON                      rn_eice   = ', rn_eice 
    685683         WRITE(numout,*) '          =4 OFF when ice fraction > 1/4   ' 
    686          IF( ln_drg ) THEN 
     684         IF( .NOT.ln_drg_OFF ) THEN 
    687685            WRITE(numout,*) 
    688686            WRITE(numout,*) '   Namelist namdrg_top/_bot:   used values:' 
Note: See TracChangeset for help on using the changeset viewer.