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 10023 for NEMO/branches/2018/dev_r9838_ENHANCE04_RK3/src/OCE/DOM/domvvl_RK3.F90 – NEMO

Ignore:
Timestamp:
2018-08-02T08:19:03+02:00 (6 years ago)
Author:
gm
Message:

#1911 (ENHANCE-04): RK3 branch - step II.2 bug correction in dynnxt + domvvl_RK3 creation

File:
1 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r9838_ENHANCE04_RK3/src/OCE/DOM/domvvl_RK3.F90

    r10009 r10023  
    1 MODULE domvvl 
     1MODULE domvvl_RK3 
    22   !!====================================================================== 
    3    !!                       ***  MODULE domvvl   *** 
     3   !!                       ***  MODULE domvvl_RK3   *** 
    44   !! Ocean :  
    55   !!====================================================================== 
     
    99   ! 1- remove   z-tilde          ==>>>  pure z-star (or s-star) 
    1010   ! 2- remove   dom_vvl_interpol   
     11   ! 3-  
    1112    
    1213   !!---------------------------------------------------------------------- 
     
    142143      !                          !* BEFORE fields :  
    143144      CALL ssh2e3_before               ! set:      hu , hv , r1_hu, r1_hv  
    144       !                                !      e3t, e3w, e3u, e3uw, e3v, e3vw        (from 1 to jpkm1) 
     145      !                                !      e3t, e3u , e3v              (from 1 to jpkm1) 
     146      !                                !      e3w, e3uw, e3vw             (from 1 to jpk  ) 
     147      !                                !      gdept, gdepw                (from 1 to jpk  ) 
    145148      ! 
    146149      !                                ! set jpk level one to the e3._0 values 
    147       e3t_b(:,:,jpk) = e3t_0(:,:,jpk)  ;   e3u_b(:,:,jpk) =  e3w_0(:,:,jpk)  ;   e3v_b(:,:,jpk) =  e3v_0(:,:,jpk) 
    148       e3w_b(:,:,jpk) = e3w_0(:,:,jpk)  ;  e3uw_b(:,:,jpk) = e3uw_0(:,:,jpk)  ;  e3vw_b(:,:,jpk) = e3vw_0(:,:,jpk) 
     150      e3t_b(:,:,jpk) = e3t_0(:,:,jpk)  ;   e3u_b(:,:,jpk) =  e3u_0(:,:,jpk)  ;   e3v_b(:,:,jpk) =  e3v_0(:,:,jpk) 
    149151      ! 
    150152      !                          !* NOW fields :  
    151153      CALL ssh2e3_now                  ! set: ht , hu , hv , r1_hu, r1_hv 
    152       !                                !      e3t, e3w, e3u, e3uw, e3v, e3vw, e3f   (from 1 to jpkm1) 
    153       !                                !      gdept_n, gdepw_n, gde3w_n 
    154 !!gm issue?   gdept_n, gdepw_n, gde3w_n never defined at jpk 
     154      !                                !      e3t, e3u , e3v, e3f         (from 1 to jpkm1) 
     155      !                                !      e3w, e3uw, e3vw             (from 1 to jpk  ) 
     156      !                                !      gdept, gdepw, gde3w         (from 1 to jpk  ) 
    155157      ! 
    156158      !                                ! set one for all last level to the e3._0 value 
    157       e3t_n(:,:,jpk) = e3t_0(:,:,jpk)  ;   e3u_n(:,:,jpk) =  e3w_0(:,:,jpk)  ;   e3v_n(:,:,jpk) =  e3v_0(:,:,jpk) 
    158       e3w_n(:,:,jpk) = e3w_0(:,:,jpk)  ;  e3uw_n(:,:,jpk) = e3uw_0(:,:,jpk)  ;  e3vw_n(:,:,jpk) = e3vw_0(:,:,jpk) 
     159      e3t_n(:,:,jpk) = e3t_0(:,:,jpk)  ;   e3u_n(:,:,jpk) =  e3u_0(:,:,jpk)  ;   e3v_n(:,:,jpk) =  e3v_0(:,:,jpk) 
    159160      e3f_n(:,:,jpk) = e3f_0(:,:,jpk) 
    160161      ! 
    161162      !                          !* AFTER fields : (last level for OPA, 3D required for AGRIF initialisation) 
    162       e3t_a(:,:,:) = e3t_n(:,:,:)   ;   e3u_a(:,:,:) = e3u_n(:,:,:)   ;   e3v_a(:,:,:) = e3v_n(:,:,:) 
     163      e3t_a(:,:,:) = e3t_n(:,:,:)   ;   e3u_a(:,:,:) = e3u_n(:,:,:) 
     164      e3w_a(:,:,:) = e3w_n(:,:,:)   ;   e3v_a(:,:,:) = e3v_n(:,:,:) 
    163165       
    164166!!gm            
     
    207209      !! 
    208210      !! Reference  : Leclair, M., and Madec, G. 2011, Ocean Modelling. 
     211      !! 
     212      ! !  ref.   ! before  !   now   ! after  ! 
     213      !     e3t_0 ,   e3t_b ,   e3t_n ,  e3t_a   !: t- vert. scale factor [m] 
     214      !     e3u_0 ,   e3u_b ,   e3u_n ,  e3u_a   !: u- vert. scale factor [m] 
     215      !     e3v_0 ,   e3v_b ,   e3v_n ,  e3v_a   !: v- vert. scale factor [m] 
     216      !     e3w_0 ,   e3w_b ,   e3w_n ,  e3w_a   !: w- vert. scale factor [m] 
     217      !    e3uw_0 ,  e3uw_b ,  e3uw_n            !: uw-vert. scale factor [m] 
     218      !    e3vw_0 ,  e3vw_b ,  e3vw_n            !: vw-vert. scale factor [m] 
     219      !     e3f_0           ,   e3f_n            !: f- vert. scale factor [m] 
     220      ! 
     221      ! !  ref.   ! before  !   now   ! 
     222      !   gdept_0 , gdept_b , gdept_n   !: t- depth              [m] 
     223      !   gdepw_0 , gdepw_b , gdepw_n   !: w- depth              [m] 
     224      !   gde3w_0           , gde3w_n   !: w- depth (sum of e3w) [m] 
     225      !  
     226      ! !  ref. ! before  !   now   !  after  ! 
     227      !   ht_0            ,    ht_n             !: t-depth              [m] 
     228      !   hu_0  ,    hu_b ,    hu_n ,    hu_a   !: u-depth              [m] 
     229      !   hv_0  ,    hv_b ,    hv_n ,    hv_a   !: v-depth              [m] 
     230      !   hf_0                                  !: v-depth              [m] 
     231      ! r1_ht_0                                 !: inverse of u-depth [1/m] 
     232      ! r1_hu_0 , r1_hu_b , r1_hu_n , r1_hu_a   !: inverse of u-depth [1/m] 
     233      ! r1_hv_0 , r1_hv_b , r1_hv_n , r1_hv_a   !: inverse of v-depth [1/m] 
     234      ! r1_hf_0                                 !: inverse of v-depth [1/m] 
     235      ! 
    209236      !!---------------------------------------------------------------------- 
    210237      INTEGER, INTENT( in )           ::   kt      ! time step 
     
    230257      ! 
    231258      !                                   !==  after ssh  ==!  (u- and v-points) 
    232       DO jj = 2, jpjm1   ;   DO ji = 2, jpim1 
    233          zsshu_h(ji,jj) = 0.5_wp * ( ssh(ji,jj,Naa) + ssh(ji+1,jj,Naa) ) * ssumask(ji,jj) 
    234          zsshv_h(ji,jj) = 0.5_wp * ( ssh(ji,jj,Naa) + ssh(ji,jj+1,Naa) ) * ssvmask(ji,jj) 
    235       END DO             ;   END DO       
     259      DO jj = 2, jpjm1 
     260         DO ji = 2, jpim1 
     261            zsshu_h(ji,jj) = 0.5_wp * ( ssh(ji,jj,Naa) + ssh(ji+1,jj,Naa) ) * ssumask(ji,jj) 
     262            zsshv_h(ji,jj) = 0.5_wp * ( ssh(ji,jj,Naa) + ssh(ji,jj+1,Naa) ) * ssvmask(ji,jj) 
     263         END DO 
     264      END DO       
    236265      CALL lbc_lnk_multi( zsshu_h(:,:), 'U', 1._wp , zsshv_h(:,:), 'V', 1._wp ) 
    237266      ! 
     
    247276      zsshv_h(:,:) = zsshv_h(:,:)     * r1_hv_0(:,:)     ! v-point 
    248277      DO jk = 1, jpkm1 
    249          e3t_a(:,:,jk) = e3t_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * tmask(:,:,jk) ) 
    250          e3u_a(:,:,jk) = e3u_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) * umask(:,:,jk) ) 
    251          e3v_a(:,:,jk) = e3v_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * vmask(:,:,jk) ) 
     278         e3t_a(:,:,jk) = e3t_0(:,:,jk) * ( 1._wp + zssht_h(:,:) *      tmask(:,:,jk)                     ) 
     279         e3u_a(:,:,jk) = e3u_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) *      umask(:,:,jk)                     ) 
     280         e3v_a(:,:,jk) = e3v_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) *      vmask(:,:,jk)                     ) 
     281         e3w_a(:,:,jk) = e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * MAX( tmask(:,:,jk) , tmask(:,:,jk+1) ) ) 
    252282      END DO 
    253283      ! 
     
    315345         gdept_b(:,:,jk) = gdept_n(:,:,jk)         ! depth at t and w 
    316346         gdepw_b(:,:,jk) = gdepw_n(:,:,jk) 
    317          e3t_n  (:,:,jk) = e3t_a  (:,:,jk)         ! e3t, e3u, e3v 
     347         e3t_n  (:,:,jk) = e3t_a  (:,:,jk)         ! e3t, e3u, e3v, e3w 
    318348         e3u_n  (:,:,jk) = e3u_a  (:,:,jk) 
    319349         e3v_n  (:,:,jk) = e3v_a  (:,:,jk) 
     350         e3w_n  (:,:,jk) = e3w_a  (:,:,jk) 
    320351      END DO 
    321352      ht_n(:,:) = ht_0(:,:) + ssh(:,:,Nnn)            ! ocean thickness 
     
    324355      hv_n(:,:) = hv_a(:,:)   ;   r1_hv_n(:,:) = r1_hv_a(:,:) 
    325356      ! 
    326       !                    !==  before :  
     357      !                    !==  before  ==! 
    327358      !                                            !* ssh at u- and v-points) 
    328359      DO jj = 2, jpjm1   ;   DO ji = 2, jpim1 
     
    341372         e3vw_b(:,:,jk) = e3vw_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * vmask(:,:,jk) ) 
    342373      END DO 
     374      !  
     375      zssht_h(:,:) = 1._wp + zssht_h(:,:)          !* gdept , gdepw 
     376      ! 
     377      IF( ln_isfcav ) THEN    ! ISF cavities : ssh scaling not applied over the iceshelf thickness  
     378         DO jk = 1, jpkm1 
     379            gdept_b(:,:,jk) = ( gdept_0(:,:,jk) - ht_isf(:,:) ) * zssht_h(:,:) + ht_isf(:,:) 
     380            gdepw_b(:,:,jk) = ( gdepw_0(:,:,jk) - ht_isf(:,:) ) * zssht_h(:,:) + ht_isf(:,:) 
     381         END DO 
     382      ELSE                    ! no ISF cavities  
     383         DO jk = 1, jpkm1 
     384            gdept_b(:,:,jk) = gdept_0(:,:,jk) * zssht_h(:,:) 
     385            gdepw_b(:,:,jk) = gdepw_0(:,:,jk) * zssht_h(:,:) 
     386         END DO 
     387      ENDIF 
    343388      !       
    344       !                    !==  now    :  
     389      !                    !==   now    ==! 
    345390      !                                            !* ssh at u- and v-points) 
    346391      DO jj = 1, jpjm1   ;   DO ji = 1, jpim1            ! start from 1 for f-point 
     
    358403      zsshf_h(:,:) = zsshf_h(:,:)     * r1_hf_0(:,:)     ! f-point 
    359404      DO jk = 1, jpkm1 
    360           e3w_n(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * MAX( tmask(:,:,jk) , tmask(:,:,jk+1) ) ) 
    361405         e3uw_n(:,:,jk) = e3uw_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) * wumask(:,:,jk) ) 
    362406         e3vw_n(:,:,jk) = e3vw_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * wvmask(:,:,jk) ) 
     
    364408      END DO       
    365409      !  
    366       zssht_h(:,:) = 1._wp + zssht_h(:,:)               ! t-point 
     410      zssht_h(:,:) = 1._wp + zssht_h(:,:)          !* gdept , gdepw , gde3w 
    367411      ! 
    368412      IF( ln_isfcav ) THEN    ! ISF cavities : ssh scaling not applied over the iceshelf thickness  
    369413         DO jk = 1, jpkm1 
    370             gdept_n(:,:,jk) = ( gdept_0(:,:,jk) - risfdep(:,:) ) * zssht_h(:,:) + risfdep(:,:) 
    371             gdepw_n(:,:,jk) = ( gdepw_0(:,:,jk) - risfdep(:,:) ) * zssht_h(:,:) + risfdep(:,:) 
     414            gdept_n(:,:,jk) = ( gdept_0(:,:,jk) - ht_isf(:,:) ) * zssht_h(:,:) + ht_isf(:,:) 
     415            gdepw_n(:,:,jk) = ( gdepw_0(:,:,jk) - ht_isf(:,:) ) * zssht_h(:,:) + ht_isf(:,:) 
    372416            gde3w_n(:,:,jk) =   gdept_n(:,:,jk) - ssh    (:,:,Nnn) 
    373417         END DO 
     
    584628      !!---------------------------------------------------------------------- 
    585629      !!                  ***  ROUTINE ssh2e3_now  *** 
     630      ! !  ref.   ! before  !   now   ! after  ! 
     631      !     e3t_0 ,   e3t_b ,   e3t_n ,  e3t_a   !: t- vert. scale factor [m] 
     632      !     e3u_0 ,   e3u_b ,   e3u_n ,  e3u_a   !: u- vert. scale factor [m] 
     633      !     e3v_0 ,   e3v_b ,   e3v_n ,  e3v_a   !: v- vert. scale factor [m] 
     634      !     e3w_0 ,   e3w_b ,   e3w_n ,  e3w_a   !: w- vert. scale factor [m] 
     635      !    e3uw_0 ,  e3uw_b ,  e3uw_n            !: uw-vert. scale factor [m] 
     636      !    e3vw_0 ,  e3vw_b ,  e3vw_n            !: vw-vert. scale factor [m] 
     637      !     e3f_0           ,   e3f_n            !: f- vert. scale factor [m] 
     638      ! 
     639      ! !  ref.   ! before  !   now   ! 
     640      !   gdept_0 , gdept_b , gdept_n   !: t- depth              [m] 
     641      !   gdepw_0 , gdepw_b , gdepw_n   !: w- depth              [m] 
     642      !   gde3w_0           , gde3w_n   !: w- depth (sum of e3w) [m] 
     643      !  
     644      ! !  ref. ! before  !   now   !  after  ! 
     645      !   ht_0            ,    ht_n             !: t-depth              [m] 
     646      !   hu_0  ,    hu_b ,    hu_n ,    hu_a   !: u-depth              [m] 
     647      !   hv_0  ,    hv_b ,    hv_n ,    hv_a   !: v-depth              [m] 
     648      !   hf_0                                  !: v-depth              [m] 
     649      ! r1_ht_0                                 !: inverse of u-depth [1/m] 
     650      ! r1_hu_0 , r1_hu_b , r1_hu_n , r1_hu_a   !: inverse of u-depth [1/m] 
     651      ! r1_hv_0 , r1_hv_b , r1_hv_n , r1_hv_a   !: inverse of v-depth [1/m] 
     652      ! r1_hf_0                                 !: inverse of v-depth [1/m] 
     653      ! 
    586654      !!---------------------------------------------------------------------- 
    587655      INTEGER ::   ji, jj, jk 
     
    616684      zsshf_h(:,:) = zsshf_h(:,:)     * r1_hf_0(:,:) 
    617685      ! 
    618       !                             !==  e3t, e3w  ,  e3u, e3uw ,  e3v, e3vw  , and e3f  ==! 
     686      !                             !==  e3t  ,  e3u  ,  e3v  , e3f  ==! 
    619687      !       
    620688      DO jk = 1, jpkm1 
    621           e3t_n(:,:,jk) =  e3t_0(:,:,jk) * ( 1._wp + zssht_h(:,:) *      tmask(:,:,jk)                     ) 
    622           e3w_n(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * MAX( tmask(:,:,jk) , tmask(:,:,jk+1) ) ) 
    623           ! 
    624           e3u_n(:,:,jk) =  e3u_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) *  umask(:,:,jk) ) 
    625          e3uw_n(:,:,jk) = e3uw_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) * wumask(:,:,jk) ) 
    626          ! 
    627           e3v_n(:,:,jk) =  e3v_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) *  vmask(:,:,jk) ) 
    628          e3vw_n(:,:,jk) = e3vw_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * wvmask(:,:,jk) ) 
    629           ! 
     689          e3t_n(:,:,jk) =  e3t_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * tmask(:,:,jk) ) 
     690          e3u_n(:,:,jk) =  e3u_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) * umask(:,:,jk) ) 
     691          e3v_n(:,:,jk) =  e3v_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * vmask(:,:,jk) ) 
    630692          e3f_n(:,:,jk) =  e3f_0(:,:,jk) * ( 1._wp + zsshf_h(:,:) * fmask(:,:,jk) ) 
    631693      END DO 
    632694      !       
     695      !                             !==  e3w  ,  e3uw  ,  e3vw  ==! 
     696      ! 
     697       e3w_n(:,:,1) =  e3w_0(:,:,1) * ( 1._wp + zssht_h(:,:) *  tmask(:,:,1) ) 
     698      e3uw_n(:,:,1) = e3uw_0(:,:,1) * ( 1._wp + zsshu_h(:,:) * wumask(:,:,1) ) 
     699      e3vw_n(:,:,1) = e3vw_0(:,:,1) * ( 1._wp + zsshv_h(:,:) * wvmask(:,:,1) ) 
     700      DO jk = 2, jpk 
     701          e3w_n(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * MAX(  tmask(:,:,jk-1) ,  tmask(:,:,jk) ) ) 
     702         e3uw_n(:,:,jk) = e3uw_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) * MAX( wumask(:,:,jk-1) , wumask(:,:,jk) ) ) 
     703         e3vw_n(:,:,jk) = e3vw_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * MAX( wvmask(:,:,jk-1) , wvmask(:,:,jk) ) ) 
     704      END DO 
     705      ! 
    633706      !                             !== depth of t- and w-points  ==! 
    634707      ! 
     
    636709      ! 
    637710      IF( ln_isfcav ) THEN    ! ISF cavities : ssh scaling not applied over the iceshelf thickness  
    638          DO jk = 1, jpkm1 
    639             gdept_n(:,:,jk) = ( gdept_0(:,:,jk) - risfdep(:,:) ) * zssht_h(:,:) + risfdep(:,:) 
    640             gdepw_n(:,:,jk) = ( gdepw_0(:,:,jk) - risfdep(:,:) ) * zssht_h(:,:) + risfdep(:,:) 
     711         DO jk = 1, jpk 
     712            gdept_n(:,:,jk) = ( gdept_0(:,:,jk) - ht_isf(:,:) ) * zssht_h(:,:) + ht_isf(:,:) 
     713            gdepw_n(:,:,jk) = ( gdepw_0(:,:,jk) - ht_isf(:,:) ) * zssht_h(:,:) + ht_isf(:,:) 
    641714            gde3w_n(:,:,jk) =   gdept_n(:,:,jk) - ssh(:,:,Nnn) 
    642715         END DO 
    643716      ELSE                    ! no ISF cavities 
    644 !!gm BUG ???    gdept should be updated down to the ocean floor !  ===>> jpk NOT jpkm1 !!! 
    645          DO jk = 1, jpkm1 
     717         DO jk = 1, jpk 
    646718            gdept_n(:,:,jk) = gdept_0(:,:,jk) * zssht_h(:,:) 
    647719            gdepw_n(:,:,jk) = gdepw_0(:,:,jk) * zssht_h(:,:) 
     
    656728      !!---------------------------------------------------------------------- 
    657729      !!                  ***  ROUTINE ssh2e3_before  *** 
     730      ! !  ref.   ! before  !   now   ! after  ! 
     731      !     e3t_0 ,   e3t_b ,   e3t_n ,  e3t_a   !: t- vert. scale factor [m] 
     732      !     e3u_0 ,   e3u_b ,   e3u_n ,  e3u_a   !: u- vert. scale factor [m] 
     733      !     e3v_0 ,   e3v_b ,   e3v_n ,  e3v_a   !: v- vert. scale factor [m] 
     734      !     e3w_0 ,   e3w_b ,   e3w_n ,  e3w_a   !: w- vert. scale factor [m] 
     735      !    e3uw_0 ,  e3uw_b ,  e3uw_n            !: uw-vert. scale factor [m] 
     736      !    e3vw_0 ,  e3vw_b ,  e3vw_n            !: vw-vert. scale factor [m] 
     737      !     e3f_0           ,   e3f_n            !: f- vert. scale factor [m] 
     738      ! 
     739      ! !  ref.   ! before  !   now   ! 
     740      !   gdept_0 , gdept_b , gdept_n   !: t- depth              [m] 
     741      !   gdepw_0 , gdepw_b , gdepw_n   !: w- depth              [m] 
     742      !   gde3w_0           , gde3w_n   !: w- depth (sum of e3w) [m] 
     743      !  
     744      ! !  ref. ! before  !   now   !  after  ! 
     745      !   ht_0            ,    ht_n             !: t-depth              [m] 
     746      !   hu_0  ,    hu_b ,    hu_n ,    hu_a   !: u-depth              [m] 
     747      !   hv_0  ,    hv_b ,    hv_n ,    hv_a   !: v-depth              [m] 
     748      !   hf_0                                  !: v-depth              [m] 
     749      ! r1_ht_0                                 !: inverse of u-depth [1/m] 
     750      ! r1_hu_0 , r1_hu_b , r1_hu_n , r1_hu_a   !: inverse of u-depth [1/m] 
     751      ! r1_hv_0 , r1_hv_b , r1_hv_n , r1_hv_a   !: inverse of v-depth [1/m] 
     752      ! r1_hf_0                                 !: inverse of v-depth [1/m] 
     753      ! 
    658754      !!---------------------------------------------------------------------- 
    659755      INTEGER ::   ji, jj, jk 
     
    677773      ! 
    678774      !       
    679       !                             !==  ssh / h  factor at t-, u- ,v- & f-points  ==! 
     775      !                             !==  ssh / h  factor at t-, u- ,v-points  ==! 
    680776      zssht_h(:,:) = ssh    (:,:,Nbb) * r1_ht_0(:,:) 
    681777      zsshu_h(:,:) = zsshu_h(:,:)     * r1_hu_0(:,:) 
    682778      zsshv_h(:,:) = zsshv_h(:,:)     * r1_hv_0(:,:) 
    683779      ! 
    684       !                             !==  e3t, e3w  ,  e3u, e3uw , and  e3v, e3vw  ==! 
     780      !                             !==  e3t  ,  e3u  ,  e3v  ==! 
     781      !       
    685782      DO jk = 1, jpkm1 
    686           e3t_b(:,:,jk) =  e3t_0(:,:,jk) * ( 1._wp + zssht_h(:,:) *      tmask(:,:,jk)                     ) 
    687           e3w_b(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * MAX( tmask(:,:,jk) , tmask(:,:,jk+1) ) ) 
    688           ! 
    689           e3u_b(:,:,jk) =  e3u_0(:,:,jk) * ( 1._wp + zsshu_h  (:,:) *  umask(:,:,jk) ) 
    690          e3uw_b(:,:,jk) = e3uw_0(:,:,jk) * ( 1._wp + zsshu_h  (:,:) * wumask(:,:,jk) ) 
    691           ! 
    692           e3v_b(:,:,jk) =  e3v_0(:,:,jk) * ( 1._wp + zsshv_h  (:,:) *  vmask(:,:,jk) ) 
    693          e3vw_b(:,:,jk) = e3vw_0(:,:,jk) * ( 1._wp + zsshv_h  (:,:) * wvmask(:,:,jk) ) 
     783          e3t_b(:,:,jk) =  e3t_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * tmask(:,:,jk) ) 
     784          e3u_b(:,:,jk) =  e3u_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) * umask(:,:,jk) ) 
     785          e3v_b(:,:,jk) =  e3v_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * vmask(:,:,jk) ) 
     786      END DO 
     787      !       
     788      !                             !==  e3w  ,  e3uw  ,  e3vw  ==! 
     789      ! 
     790       e3w_b(:,:,1) =  e3w_0(:,:,1) * ( 1._wp + zssht_h(:,:) *  tmask(:,:,1) ) 
     791      e3uw_b(:,:,1) = e3uw_0(:,:,1) * ( 1._wp + zsshu_h(:,:) * wumask(:,:,1) ) 
     792      e3vw_b(:,:,1) = e3vw_0(:,:,1) * ( 1._wp + zsshv_h(:,:) * wvmask(:,:,1) ) 
     793      DO jk = 2, jpk 
     794          e3w_b(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * MAX(  tmask(:,:,jk-1) ,  tmask(:,:,jk) ) ) 
     795         e3uw_b(:,:,jk) = e3uw_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) * MAX( wumask(:,:,jk-1) , wumask(:,:,jk) ) ) 
     796         e3vw_b(:,:,jk) = e3vw_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * MAX( wvmask(:,:,jk-1) , wvmask(:,:,jk) ) ) 
    694797      END DO 
    695798      !    
     799      !                             !== depth of t- and w-points  ==! 
     800      ! 
     801      zssht_h(:,:) = 1._wp + zssht_h(:,:)     ! = 1 + ssh(Nnn) / ht_0 
     802      ! 
     803      IF( ln_isfcav ) THEN    ! ISF cavities : ssh scaling not applied over the iceshelf thickness  
     804         DO jk = 1, jpk 
     805            gdept_b(:,:,jk) = ( gdept_0(:,:,jk) - ht_isf(:,:) ) * zssht_h(:,:) + ht_isf(:,:) 
     806            gdepw_b(:,:,jk) = ( gdepw_0(:,:,jk) - ht_isf(:,:) ) * zssht_h(:,:) + ht_isf(:,:) 
     807         END DO 
     808      ELSE                    ! no ISF cavities 
     809         DO jk = 1, jpk 
     810            gdept_b(:,:,jk) = gdept_0(:,:,jk) * zssht_h(:,:) 
     811            gdepw_b(:,:,jk) = gdepw_0(:,:,jk) * zssht_h(:,:) 
     812         END DO 
     813      ENDIF 
     814      ! 
    696815   END SUBROUTINE ssh2e3_before 
    697816    
    698817   !!====================================================================== 
    699 END MODULE domvvl 
     818END MODULE domvvl_RK3 
Note: See TracChangeset for help on using the changeset viewer.