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

Ignore:
Timestamp:
2018-07-29T11:23:51+02:00 (6 years ago)
Author:
gm
Message:

#1911 (ENHANCE-04): RK3 branch - step II.1 time-level dimension on ssh

File:
1 edited

Legend:

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

    r10001 r10009  
    135135      IF( dom_vvl_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dom_vvl_init : unable to allocate arrays' ) 
    136136      ! 
    137       !                    ! Read or initialize e3t_(b/n), ssh(b/n) 
     137      !                    ! Read or initialize ssh(Nbb) & ssh(Nnn) 
    138138      CALL dom_vvl_rst( nit000, 'READ' ) 
    139139      ! 
     
    142142      !                          !* BEFORE fields :  
    143143      CALL ssh2e3_before               ! set:      hu , hv , r1_hu, r1_hv  
    144       !                                    !  e3t, e3w, e3u, e3uw, e3v, e3vw 
    145       ! 
    146       !                                ! set one for all last level to the e3._0 value 
     144      !                                !      e3t, e3w, e3u, e3uw, e3v, e3vw        (from 1 to jpkm1) 
     145      ! 
     146      !                                ! set jpk level one to the e3._0 values 
    147147      e3t_b(:,:,jpk) = e3t_0(:,:,jpk)  ;   e3u_b(:,:,jpk) =  e3w_0(:,:,jpk)  ;   e3v_b(:,:,jpk) =  e3v_0(:,:,jpk) 
    148148      e3w_b(:,:,jpk) = e3w_0(:,:,jpk)  ;  e3uw_b(:,:,jpk) = e3uw_0(:,:,jpk)  ;  e3vw_b(:,:,jpk) = e3vw_0(:,:,jpk) 
     
    150150      !                          !* NOW fields :  
    151151      CALL ssh2e3_now                  ! set: ht , hu , hv , r1_hu, r1_hv 
    152       !                                !      e3t, e3w, e3u, e3uw, e3v, e3vw, e3f 
     152      !                                !      e3t, e3w, e3u, e3uw, e3v, e3vw, e3f   (from 1 to jpkm1) 
    153153      !                                !      gdept_n, gdepw_n, gde3w_n 
     154!!gm issue?   gdept_n, gdepw_n, gde3w_n never defined at jpk 
    154155      ! 
    155156      !                                ! set one for all last level to the e3._0 value 
     
    230231      !                                   !==  after ssh  ==!  (u- and v-points) 
    231232      DO jj = 2, jpjm1   ;   DO ji = 2, jpim1 
    232          zsshu_h(ji,jj) = 0.5_wp * ( ssha(ji,jj) + ssha(ji+1,jj) ) * ssumask(ji,jj) 
    233          zsshv_h(ji,jj) = 0.5_wp * ( ssha(ji,jj) + ssha(ji,jj+1) ) * ssvmask(ji,jj) 
     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) 
    234235      END DO             ;   END DO       
    235236      CALL lbc_lnk_multi( zsshu_h(:,:), 'U', 1._wp , zsshv_h(:,:), 'V', 1._wp ) 
     
    242243      ! 
    243244      !                                   !==  after scale factors  ==!  (e3t , e3u , e3v) 
    244       zssht_h(:,:) = ssha   (:,:) * r1_ht_0(:,:)           ! t-point 
    245       zsshu_h(:,:) = zsshu_h(:,:) * r1_hu_0(:,:)           ! u-point 
    246       zsshv_h(:,:) = zsshv_h(:,:) * r1_hv_0(:,:)           ! v-point 
     245      zssht_h(:,:) = ssh    (:,:,Naa) * r1_ht_0(:,:)     ! t-point 
     246      zsshu_h(:,:) = zsshu_h(:,:)     * r1_hu_0(:,:)     ! u-point 
     247      zsshv_h(:,:) = zsshv_h(:,:)     * r1_hv_0(:,:)     ! v-point 
    247248      DO jk = 1, jpkm1 
    248249         e3t_a(:,:,jk) = e3t_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * tmask(:,:,jk) ) 
     
    318319         e3v_n  (:,:,jk) = e3v_a  (:,:,jk) 
    319320      END DO 
    320       ht_n(:,:) = ht_0(:,:) + sshn(:,:)            ! ocean thickness 
     321      ht_n(:,:) = ht_0(:,:) + ssh(:,:,Nnn)            ! ocean thickness 
    321322      ! 
    322323      hu_n(:,:) = hu_a(:,:)   ;   r1_hu_n(:,:) = r1_hu_a(:,:) 
     
    326327      !                                            !* ssh at u- and v-points) 
    327328      DO jj = 2, jpjm1   ;   DO ji = 2, jpim1 
    328          zsshu_h(ji,jj) = 0.5_wp  * ( sshb(ji  ,jj) + sshb(ji+1,jj  ) ) * ssumask(ji,jj) 
    329          zsshv_h(ji,jj) = 0.5_wp  * ( sshb(ji  ,jj) + sshb(ji  ,jj+1) ) * ssvmask(ji,jj) 
     329         zsshu_h(ji,jj) = 0.5_wp  * ( ssh(ji,jj,Nbb) + ssh(ji+1,jj  ,Nbb) ) * ssumask(ji,jj) 
     330         zsshv_h(ji,jj) = 0.5_wp  * ( ssh(ji,jj,Nbb) + ssh(ji  ,jj+1,Nbb) ) * ssvmask(ji,jj) 
    330331      END DO             ;   END DO       
    331332      CALL lbc_lnk_multi( zsshu_h(:,:),'U', 1._wp , zsshv_h(:,:),'V', 1._wp ) 
    332333      ! 
    333334      !                                            !*  e3w_b , e3uw_b , e3vw_b 
    334       zssht_h(:,:) = sshb (:,:) * r1_ht_0(:,:)           ! w-point 
    335       zsshu_h(:,:) = zsshu_h(:,:) * r1_hu_0(:,:)           ! uw-point 
    336       zsshv_h(:,:) = zsshv_h(:,:) * r1_hv_0(:,:)           ! vw-point 
     335      zssht_h(:,:) = ssh    (:,:,Nbb) * r1_ht_0(:,:)     ! w-point 
     336      zsshu_h(:,:) = zsshu_h(:,:)     * r1_hu_0(:,:)     ! uw-point 
     337      zsshv_h(:,:) = zsshv_h(:,:)     * r1_hv_0(:,:)     ! vw-point 
    337338      DO jk = 1, jpkm1 
    338           e3w_b(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * tmask(:,:,jk) ) 
     339          e3w_b(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * MAX( tmask(:,:,jk) , tmask(:,:,jk+1) ) ) 
    339340         e3uw_b(:,:,jk) = e3uw_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) * umask(:,:,jk) ) 
    340341         e3vw_b(:,:,jk) = e3vw_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * vmask(:,:,jk) ) 
     
    344345      !                                            !* ssh at u- and v-points) 
    345346      DO jj = 1, jpjm1   ;   DO ji = 1, jpim1            ! start from 1 for f-point 
    346          zsshu_h(ji,jj) = 0.50_wp * ( sshn(ji  ,jj) + sshn(ji+1,jj  ) ) * ssumask(ji,jj) 
    347          zsshv_h(ji,jj) = 0.50_wp * ( sshn(ji  ,jj) + sshn(ji  ,jj+1) ) * ssvmask(ji,jj) 
    348          zsshf_h(ji,jj) = 0.25_wp * ( sshn(ji  ,jj) + sshn(ji  ,jj+1)   &  
    349             &                       + sshn(ji+1,jj) + sshn(ji+1,jj+1) ) * ssfmask(ji,jj) 
     347         zsshu_h(ji,jj) = 0.50_wp * ( ssh(ji  ,jj,Nnn) + ssh(ji+1,jj  ,Nnn) ) * ssumask(ji,jj) 
     348         zsshv_h(ji,jj) = 0.50_wp * ( ssh(ji  ,jj,Nnn) + ssh(ji  ,jj+1,Nnn) ) * ssvmask(ji,jj) 
     349         zsshf_h(ji,jj) = 0.25_wp * ( ssh(ji  ,jj,Nnn) + ssh(ji  ,jj+1,Nnn)   &  
     350            &                       + ssh(ji+1,jj,Nnn) + ssh(ji+1,jj+1,Nnn) ) * ssfmask(ji,jj) 
    350351      END DO             ;   END DO       
    351352      CALL lbc_lnk_multi( zsshu_h(:,:),'U', 1._wp , zsshv_h(:,:),'V', 1._wp , zsshf_h(:,:),'F', 1._wp )       
    352353      ! 
    353354      !                                            !* e3w_n , e3uw_n , e3vw_n, e3f_n  
    354       zssht_h(:,:) = sshn   (:,:) * r1_ht_0(:,:)           ! t- & w-point 
    355       zsshu_h(:,:) = zsshu_h(:,:) * r1_hu_0(:,:)           ! uw-point 
    356       zsshv_h(:,:) = zsshv_h(:,:) * r1_hv_0(:,:)           ! vw-point 
    357       zsshf_h(:,:) = zsshf_h(:,:) * r1_hf_0(:,:)           ! f-point 
     355      zssht_h(:,:) = ssh    (:,:,Nnn) * r1_ht_0(:,:)     ! t- & w-point 
     356      zsshu_h(:,:) = zsshu_h(:,:)     * r1_hu_0(:,:)     ! uw-point 
     357      zsshv_h(:,:) = zsshv_h(:,:)     * r1_hv_0(:,:)     ! vw-point 
     358      zsshf_h(:,:) = zsshf_h(:,:)     * r1_hf_0(:,:)     ! f-point 
    358359      DO jk = 1, jpkm1 
    359           e3w_n(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) *  tmask(:,:,jk) ) 
     360          e3w_n(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * MAX( tmask(:,:,jk) , tmask(:,:,jk+1) ) ) 
    360361         e3uw_n(:,:,jk) = e3uw_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) * wumask(:,:,jk) ) 
    361362         e3vw_n(:,:,jk) = e3vw_0(:,:,jk) * ( 1._wp + zsshv_h(:,:) * wvmask(:,:,jk) ) 
     
    363364      END DO       
    364365      !  
    365       zssht_h(:,:) = 1._wp + sshn (:,:) * r1_ht_0(:,:)   ! t-point 
     366      zssht_h(:,:) = 1._wp + zssht_h(:,:)               ! t-point 
    366367      ! 
    367368      IF( ln_isfcav ) THEN    ! ISF cavities : ssh scaling not applied over the iceshelf thickness  
     
    369370            gdept_n(:,:,jk) = ( gdept_0(:,:,jk) - risfdep(:,:) ) * zssht_h(:,:) + risfdep(:,:) 
    370371            gdepw_n(:,:,jk) = ( gdepw_0(:,:,jk) - risfdep(:,:) ) * zssht_h(:,:) + risfdep(:,:) 
    371             gde3w_n(:,:,jk) =   gdept_n(:,:,jk) - sshn   (:,:) 
     372            gde3w_n(:,:,jk) =   gdept_n(:,:,jk) - ssh    (:,:,Nnn) 
    372373         END DO 
    373374      ELSE                    ! no ISF cavities  
     
    375376            gdept_n(:,:,jk) = gdept_0(:,:,jk) * zssht_h(:,:) 
    376377            gdepw_n(:,:,jk) = gdepw_0(:,:,jk) * zssht_h(:,:) 
    377             gde3w_n(:,:,jk) = gdept_n(:,:,jk) - sshn(:,:) 
     378            gde3w_n(:,:,jk) = gdept_n(:,:,jk) - ssh    (:,:,Nnn) 
    378379         END DO 
    379380      ENDIF 
     
    420421!!gm  Question: use jpdom_data above to read data over jpi x jpj    (like is dom_hgr_read and dom_zgr_read) 
    421422!!              so that it will work with land processor suppression 
    422 !               CALL iom_get( numror, jpdom_autoglo, 'sshn'   , sshn, ldxios = lrxios    ) 
    423 !               CALL iom_get( numror, jpdom_autoglo, 'sshb'   , sshb, ldxios = lrxios    ) 
     423!               CALL iom_get( numror, jpdom_autoglo, 'sshn'   , ssh(:,:,Nnn), ldxios = lrxios    ) 
     424!               CALL iom_get( numror, jpdom_autoglo, 'sshb'   , ssh(:,:,Nbb), ldxios = lrxios    ) 
    424425!!gm  
    425                CALL iom_get( numror, jpdom_data, 'sshn'   , sshn, ldxios = lrxios    ) 
    426                CALL iom_get( numror, jpdom_data, 'sshb'   , sshb, ldxios = lrxios    ) 
     426               CALL iom_get( numror, jpdom_data, 'sshn'   , ssh(:,:,Nnn), ldxios = lrxios    ) 
     427               CALL iom_get( numror, jpdom_data, 'sshb'   , ssh(:,:,Nbb), ldxios = lrxios    ) 
    427428!!gm end 
    428                IF( l_1st_euler ) THEN 
    429                   sshb(:,:) = sshn(:,:) 
    430                ENDIF 
     429               IF( l_1st_euler )   ssh(:,:,Nbb) = ssh(:,:,Nnn) 
    431430            ELSE IF( id1 > 0 ) THEN 
    432431               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : sshn not found in restart files' 
    433                IF(lwp) write(numout,*) '   set sshn = sshb  and force l_1st_euler = true' 
     432               IF(lwp) write(numout,*) '   set ssh(Nnn) = ssh(Nbb)  and force l_1st_euler = true' 
    434433!!gm               CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:), ldxios = lrxios ) 
    435                CALL iom_get( numror, jpdom_data, 'sshb', sshb, ldxios = lrxios ) 
    436                sshn(:,:) = sshb(:,:) 
     434               CALL iom_get( numror, jpdom_data, 'sshb', ssh(:,:,Nbb), ldxios = lrxios ) 
     435               ssh(:,:,Nnn) = ssh(:,:,Nbb) 
    437436               l_1st_euler = .TRUE. 
    438437            ELSE IF( id2 > 0 ) THEN 
    439438               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : sshb not found in restart files' 
    440                IF(lwp) write(numout,*) 'set sshb = sshn  and force l_1st_euler = true' 
    441                CALL iom_get( numror, jpdom_data, 'sshn', sshb, ldxios = lrxios ) 
    442                sshb(:,:) = sshn(:,:) 
     439               IF(lwp) write(numout,*) 'set ssh(Nbb) = ssh(Nnn)  and force l_1st_euler = true' 
     440               CALL iom_get( numror, jpdom_data, 'sshn', ssh(:,:,Nnn), ldxios = lrxios ) 
     441               ssh(:,:,Nbb) = ssh(:,:,Nnn) 
    443442               l_1st_euler = .TRUE. 
    444443            ELSE 
    445444               IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : sshb and sshn not found in restart file' 
    446                IF(lwp) write(numout,*) 'set sshb = sshn = 0  and force l_1st_euler = true' 
    447                sshb(:,:) = 0._wp 
    448                sshn(:,:) = 0._wp 
     445               IF(lwp) write(numout,*) 'set ssh(Nbb) = ssh(Nnn) = 0  and force l_1st_euler = true' 
     446               ssh(:,:,Nbb) = 0._wp 
     447               ssh(:,:,Nnn) = 0._wp 
    449448               l_1st_euler = .TRUE. 
    450449            ENDIF 
     
    454453               ! 
    455454               IF( cn_cfg == 'wad' ) THEN             ! Wetting and drying test case 
    456                   CALL usr_def_istate( gdept_b, tmask, tsb, ub, vb, sshb  ) 
    457                   tsn  (:,:,:,:) = tsb (:,:,:,:)            ! set now values from to before ones 
    458                   sshn (:,:)     = sshb(:,:) 
    459                   un   (:,:,:)   = ub (:,:,:) 
    460                   vn   (:,:,:)   = vb (:,:,:) 
     455                  CALL usr_def_istate( gdept_b, tmask, tsb, ub, vb, ssh(:,:,Nbb)  ) 
     456                  tsn(:,:,:,:) = tsb(:,:,:,:)            ! set now values from to before ones 
     457                  ssh(:,:,Nnn) = ssh(:,:,Nbb) 
     458                  un (:,:,:)   = ub (:,:,:) 
     459                  vn (:,:,:)   = vb (:,:,:) 
    461460               ELSE                                   ! Not the test case 
    462                   sshn(:,:) = -ssh_ref 
    463                   sshb(:,:) = -ssh_ref 
     461                  ssh(:,:,Nnn) = -ssh_ref 
     462                  ssh(:,:,Nbb) = -ssh_ref 
    464463                  ! 
    465464                  DO jj = 1, jpj 
    466465                     DO ji = 1, jpi 
    467466                        IF( ht_0(ji,jj)-ssh_ref <  rn_wdmin1 ) THEN  ! if total depth is less than min depth 
    468                            sshb(ji,jj) = rn_wdmin1 - (ht_0(ji,jj) ) 
    469                            sshn(ji,jj) = rn_wdmin1 - (ht_0(ji,jj) ) 
    470                            ssha(ji,jj) = rn_wdmin1 - (ht_0(ji,jj) ) 
     467                           ssh(ji,jj,Nbb) = rn_wdmin1 - (ht_0(ji,jj) ) 
     468                           ssh(ji,jj,Nnn) = rn_wdmin1 - (ht_0(ji,jj) ) 
     469                           ssh(ji,jj,Naa) = rn_wdmin1 - (ht_0(ji,jj) ) 
    471470                        ENDIF 
    472471                     END DO 
     
    485484               ! 
    486485               ! Just to read set ssh in fact, called latter once vertical grid is set up: 
    487 !               CALL usr_def_istate( gdept_0, tmask, tsb, ub, vb, sshb  ) 
    488                sshn(:,:) = 0._wp 
    489                sshb(:,:) = 0._wp 
     486!               CALL usr_def_istate( gdept_0, tmask, tsb, ub, vb, ssh(:,:,Nbb)  ) 
     487               ssh(:,:,Nnn) = 0._wp 
     488               ssh(:,:,Nbb) = 0._wp 
    490489               ! 
    491490            END IF 
     
    496495         !                                   ! =================== 
    497496 
    498 !!gm      DO NOTHING,   sshb and sshn  are written in restart.F90 
     497!!gm      DO NOTHING,   ssh(Nbb) and ssh(Nnn)  are written in restart.F90 
    499498 
    500499      ENDIF 
     
    594593      DO jj = 1, jpjm1                    ! start from 1 due to f-point 
    595594         DO ji = 1, jpim1 
    596             zsshu_h(ji,jj) = 0.50_wp * ( sshn(ji  ,jj) + sshn(ji+1,jj  ) ) * ssumask(ji,jj) 
    597             zsshv_h(ji,jj) = 0.50_wp * ( sshn(ji  ,jj) + sshn(ji  ,jj+1) ) * ssvmask(ji,jj) 
    598             zsshf_h(ji,jj) = 0.25_wp * ( sshn(ji  ,jj) + sshn(ji  ,jj+1)   &  
    599                &                       + sshn(ji+1,jj) + sshn(ji+1,jj+1) ) * ssfmask(ji,jj) 
     595            zsshu_h(ji,jj) = 0.50_wp * ( ssh(ji  ,jj,Nnn) + ssh(ji+1,jj  ,Nnn) ) * ssumask(ji,jj) 
     596            zsshv_h(ji,jj) = 0.50_wp * ( ssh(ji  ,jj,Nnn) + ssh(ji  ,jj+1,Nnn) ) * ssvmask(ji,jj) 
     597            zsshf_h(ji,jj) = 0.25_wp * ( ssh(ji  ,jj,Nnn) + ssh(ji  ,jj+1,Nnn)   &  
     598               &                       + ssh(ji+1,jj,Nnn) + ssh(ji+1,jj+1,Nnn) ) * ssfmask(ji,jj) 
    600599         END DO 
    601600      END DO       
     
    604603      !                             !==  ht, hu and hv  == !   (and their inverse) 
    605604      ! 
    606       ht_n   (:,:) = ht_0(:,:) +  sshn  (:,:) 
     605      ht_n   (:,:) = ht_0(:,:) +  ssh   (:,:,Nnn) 
    607606      hu_n   (:,:) = hu_0(:,:) + zsshu_h(:,:) 
    608607      hv_n   (:,:) = hv_0(:,:) + zsshv_h(:,:) 
     
    612611      !                             !==  ssh / h  factor at t-, u- ,v- & f-points  ==! 
    613612      ! 
    614       zssht_h(:,:) =  sshn  (:,:) * r1_ht_0(:,:) 
    615       zsshu_h(:,:) = zsshu_h(:,:) * r1_hu_0(:,:) 
    616       zsshv_h(:,:) = zsshv_h(:,:) * r1_hv_0(:,:) 
    617       zsshf_h(:,:) = zsshf_h(:,:) * r1_hf_0(:,:) 
     613      zssht_h(:,:) =  ssh   (:,:,Nnn) * r1_ht_0(:,:) 
     614      zsshu_h(:,:) = zsshu_h(:,:)     * r1_hu_0(:,:) 
     615      zsshv_h(:,:) = zsshv_h(:,:)     * r1_hv_0(:,:) 
     616      zsshf_h(:,:) = zsshf_h(:,:)     * r1_hf_0(:,:) 
    618617      ! 
    619618      !                             !==  e3t, e3w  ,  e3u, e3uw ,  e3v, e3vw  , and e3f  ==! 
    620619      !       
    621620      DO jk = 1, jpkm1 
    622           e3t_n(:,:,jk) =  e3t_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * tmask(:,:,jk) ) 
    623           e3w_n(:,:,jk) =  e3w_0(:,:,jk) * ( 1._wp + zssht_h(:,:) * tmask(:,:,jk) ) 
     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) ) ) 
    624623          ! 
    625624          e3u_n(:,:,jk) =  e3u_0(:,:,jk) * ( 1._wp + zsshu_h(:,:) *  umask(:,:,jk) ) 
     
    634633      !                             !== depth of t- and w-points  ==! 
    635634      ! 
    636       zssht_h(:,:) = 1._wp + zssht_h(:,:)     ! = 1 + sshn / ht_0 
     635      zssht_h(:,:) = 1._wp + zssht_h(:,:)     ! = 1 + ssh(Nnn) / ht_0 
    637636      ! 
    638637      IF( ln_isfcav ) THEN    ! ISF cavities : ssh scaling not applied over the iceshelf thickness  
     
    640639            gdept_n(:,:,jk) = ( gdept_0(:,:,jk) - risfdep(:,:) ) * zssht_h(:,:) + risfdep(:,:) 
    641640            gdepw_n(:,:,jk) = ( gdepw_0(:,:,jk) - risfdep(:,:) ) * zssht_h(:,:) + risfdep(:,:) 
    642             gde3w_n(:,:,jk) =   gdept_n(:,:,jk) - sshn(:,:) 
     641            gde3w_n(:,:,jk) =   gdept_n(:,:,jk) - ssh(:,:,Nnn) 
    643642         END DO 
    644643      ELSE                    ! no ISF cavities 
     644!!gm BUG ???    gdept should be updated down to the ocean floor !  ===>> jpk NOT jpkm1 !!! 
    645645         DO jk = 1, jpkm1 
    646646            gdept_n(:,:,jk) = gdept_0(:,:,jk) * zssht_h(:,:) 
    647647            gdepw_n(:,:,jk) = gdepw_0(:,:,jk) * zssht_h(:,:) 
    648             gde3w_n(:,:,jk) = gdept_n(:,:,jk) - sshn(:,:) 
     648            gde3w_n(:,:,jk) = gdept_n(:,:,jk) - ssh(:,:,Nnn) 
    649649         END DO 
    650650      ENDIF 
     
    664664      DO jj = 2, jpjm1 
    665665         DO ji = 2, jpim1 
    666             zsshu_h(ji,jj) = 0.5_wp  * ( sshb(ji  ,jj) + sshb(ji+1,jj  ) ) * ssumask(ji,jj) 
    667             zsshv_h(ji,jj) = 0.5_wp  * ( sshb(ji  ,jj) + sshb(ji  ,jj+1) ) * ssvmask(ji,jj) 
     666            zsshu_h(ji,jj) = 0.5_wp  * ( ssh(ji,jj,Nbb) + ssh(ji+1,jj  ,Nbb) ) * ssumask(ji,jj) 
     667            zsshv_h(ji,jj) = 0.5_wp  * ( ssh(ji,jj,Nbb) + ssh(ji  ,jj+1,Nbb) ) * ssvmask(ji,jj) 
    668668         END DO 
    669669      END DO       
     
    678678      !       
    679679      !                             !==  ssh / h  factor at t-, u- ,v- & f-points  ==! 
    680       zssht_h(:,:) = sshb (:,:) * r1_ht_0(:,:) 
    681       zsshu_h   (:,:) = zsshu_h(:,:) * r1_hu_0(:,:) 
    682       zsshv_h   (:,:) = zsshv_h(:,:) * r1_hv_0(:,:) 
     680      zssht_h(:,:) = ssh    (:,:,Nbb) * r1_ht_0(:,:) 
     681      zsshu_h(:,:) = zsshu_h(:,:)    * r1_hu_0(:,:) 
     682      zsshv_h(:,:) = zsshv_h(:,:)    * r1_hv_0(:,:) 
    683683      ! 
    684684      !                             !==  e3t, e3w  ,  e3u, e3uw , and  e3v, e3vw  ==! 
    685685      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(:,:) * tmask(:,:,jk) ) 
     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) ) ) 
    688688          ! 
    689689          e3u_b(:,:,jk) =  e3u_0(:,:,jk) * ( 1._wp + zsshu_h  (:,:) *  umask(:,:,jk) ) 
Note: See TracChangeset for help on using the changeset viewer.