Changeset 5727


Ignore:
Timestamp:
2015-09-10T19:05:13+02:00 (5 years ago)
Author:
rfurner
Message:

some bug fixes for wetting and drying elements…still not working though

Location:
branches/UKMO/2014_Surge_Modelling/NEMOGCM
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/CONFIG/AMM7_SURGE/EXP00/namelist_cfg

    r5275 r5727  
    402402!----------------------------------------------------------------------- 
    403403/ 
     404!----------------------------------------------------------------------- 
     405&namwad       !   Wetting and Drying namelist 
     406!----------------------------------------------------------------------- 
     407   ln_wd = .false.   !: key to turn on/off wetting/drying (T: on, F: off)  
     408   rn_wdmin1=0.1     !: minimum water depth on dried cells  
     409   rn_wdmin2 = 0.01  !: tolerrance of minimum water depth on dried cells 
     410   rn_wdld   = 20.0  !: land elevation below which wetting/drying will be considered 
     411   nn_wdit   =   10  !: maximum number of iteration for W/D limiter 
     412/ 
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/CONFIG/AMM7_SURGE/EXP00/namelist_ref

    r5275 r5727  
    11791179   rn_htrmax         =  200.0   ! max. depth of transition range 
    11801180/ 
     1181!----------------------------------------------------------------------- 
     1182&namwad       !   Wetting and Drying namelist 
     1183!----------------------------------------------------------------------- 
     1184   ln_wd = .false.   !: key to turn on/off wetting/drying (T: on, F: off) 
     1185   rn_wdmin1=0.1     !: minimum water depth on dried cells 
     1186   rn_wdmin2 = 0.01  !: tolerrance of minimum water depth on dried cells 
     1187   rn_wdld   = 20.0  !: land elevation below which wetting/drying will be considered 
     1188   nn_wdit   =   10  !: maximum number of iteration for W/D limiter 
     1189/ 
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r5066 r5727  
    145145      fse3t_a(:,:,jpk) = e3t_0(:,:,jpk) 
    146146 
    147       IF(ln_wd) THEN 
    148         DO jj = 1, jpj 
    149           DO ji = 1, jpi 
    150             IF(mbathy(ji,jj) == 2 .AND. e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
    151              fse3t_a(ji,jj,1:2) = 0.5_wp * rn_wdmin1 
    152             END IF 
    153           ENDDO 
    154         ENDDO 
    155       END IF 
     147!      IF(ln_wd) THEN 
     148!        DO jj = 1, jpj 
     149!          DO ji = 1, jpi 
     150!            IF(mbathy(ji,jj) == 2 .AND. e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
     151!             fse3t_a(ji,jj,1:2) = 0.5_wp * rn_wdmin1 
     152!             fse3t_n(ji,jj,1:2) = 0.5_wp * rn_wdmin1 
     153!             fse3t_b(ji,jj,1:2) = 0.5_wp * rn_wdmin1  
     154!            END IF 
     155!          ENDDO 
     156!        ENDDO 
     157!      END IF 
    156158 
    157159      ! Reconstruction of all vertical scale factors at now and before time steps 
     
    703705            DO jj = 1, jpjm1 
    704706               DO ji = 1, fs_jpim1   ! vector opt. 
    705                   pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk) * r1_e12u(ji,jj)                                   & 
     707!                  pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk) * r1_e12u(ji,jj)                                   & 
     708                  pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk)   * r1_e12u(ji,jj)        & 
    706709                     &                       * (   e12t(ji  ,jj) * ( pe3_in(ji  ,jj,jk) - e3t_0(ji  ,jj,jk) )     & 
    707710                     &                           + e12t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 
     
    721724            DO jj = 1, jpjm1 
    722725               DO ji = 1, fs_jpim1   ! vector opt. 
    723                   pe3_out(ji,jj,jk) = 0.5_wp * vmask(ji,jj,jk) * r1_e12v(ji,jj)                                   & 
    724                      &                       * (   e12t(ji,jj  ) * ( pe3_in(ji,jj  ,jk) - e3t_0(ji,jj  ,jk) )     & 
    725                      &                           + e12t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
     726!                  pe3_out(ji,jj,jk) = 0.5_wp * vmask(ji,jj,jk) * r1_e12v(ji,jj)                                   & 
     727                     pe3_out(ji,jj,jk) = 0.5_wp * vmask(ji,jj,jk)   * r1_e12v(ji,jj)        & 
     728                        &                       * (   e12t(ji,jj  ) * ( pe3_in(ji,jj  ,jk) - e3t_0(ji,jj  ,jk) )     & 
     729                        &                           + e12t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
    726730               END DO 
    727731            END DO 
     
    739743            DO jj = 1, jpjm1 
    740744               DO ji = 1, fs_jpim1   ! vector opt. 
    741                   pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk) * umask(ji,jj+1,jk) * r1_e12f(ji,jj)               & 
     745!                  pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk) * umask(ji,jj+1,jk) * r1_e12f(ji,jj)               & 
     746                  pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk) * umask(ji,jj+1,jk)      & 
     747                     &                       * r1_e12f(ji,jj)                                                     & 
    742748                     &                       * (   e12u(ji,jj  ) * ( pe3_in(ji,jj  ,jk) - e3u_0(ji,jj  ,jk) )     & 
    743749                     &                           + e12u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 
     
    882888                DO ji = 1, jpi 
    883889                  !IF(e3t_0(ji,jj,1) < 0._wp) THEN 
    884                   IF(mbathy(ji,jj) == 2 .AND. e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
    885                     fse3t_b(ji,jj,1:2) = 0.5_wp * rn_wdmin1 
    886                     fse3t_n(ji,jj,1:2) = 0.5_wp * rn_wdmin1 
     890                  !IF(mbathy(ji,jj) == 2 .AND. e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
     891                  IF( e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
     892                    fse3t_b(ji,jj,:) = 0.5_wp * rn_wdmin1 
     893                    fse3t_n(ji,jj,:) = 0.5_wp * rn_wdmin1 
     894                    fse3t_a(ji,jj,:) = 0.5_wp * rn_wdmin1  
    887895                    sshb(ji,jj) = rn_wdmin1 - bathy(ji,jj) 
    888896                    sshn(ji,jj) = rn_wdmin1 - bathy(ji,jj) 
     897                    ssha(ji,jj) = rn_wdmin1 - bathy(ji,jj) 
    889898                  ENDIF 
    890899                ENDDO 
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r5066 r5727  
    300300      zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_1d )                   ! ref. depth with tolerance (10% of minimum layer thickness) 
    301301      nlb10 = MINLOC( gdepw_1d, mask = gdepw_1d > zrefdep, dim = 1 ) ! shallowest W level Below ~10m 
     302      nlb10 = MAX(nlb10, 2)                                          ! prevent nla10 = 0  
    302303      nla10 = nlb10 - 1                                              ! deepest    W level Above ~10m 
    303304!!gm end bug 
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r5066 r5727  
    395395        DO jj = 2, jpjm1 
    396396           DO ji = 2, jpim1 
    397              ll_tmp1 = MIN(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) 
    398              ll_tmp2 = MAX(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) +& 
     397             IF ( tmask(ji+1,jj,1) == 0._wp) THEN 
     398                zcpx(ji,jj) = 1.0_wp 
     399             ELSE 
     400                ll_tmp1 = MIN(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) 
     401                ll_tmp2 = MAX(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) +& 
     402                                                          & rn_wdmin1 + rn_wdmin2 
     403    
     404                IF(ll_tmp1) THEN 
     405                  zcpx(ji,jj) = 1.0_wp 
     406                ELSE IF(ll_tmp2) THEN 
     407                   ! no worries about sshn(ji+1,jj)-sshn(ji,jj) = 0, it won't happen ! here 
     408                   zcpx(ji,jj) = ABS((sshn(ji+1,jj) + bathy(ji+1,jj) - sshn(ji,jj) - bathy(ji,jj)) /& 
     409                               &     (sshn(ji+1,jj) - sshn(ji,jj))) 
     410                ELSE 
     411                  zcpx(ji,jj) = 0._wp 
     412                END IF 
     413             ENDIF 
     414         
     415             IF ( tmask(ji,jj+1,1) == 0._wp) THEN 
     416                zcpy(ji,jj) = 1.0_wp 
     417             ELSE 
     418                ll_tmp1 = MIN(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) 
     419                ll_tmp2 = MAX(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) +& 
    399420                                                       & rn_wdmin1 + rn_wdmin2 
    400421 
    401              IF(ll_tmp1) THEN 
    402                zcpx(ji,jj) = 1.0_wp 
    403              ELSE IF(ll_tmp2) THEN 
    404                ! no worries about sshn(ji+1,jj)-sshn(ji,jj) = 0, it won't happen ! here 
    405                zcpx(ji,jj) = ABS((sshn(ji+1,jj) + bathy(ji+1,jj) - sshn(ji,jj) - bathy(ji,jj)) /& 
    406                            &     (sshn(ji+1,jj) - sshn(ji,jj))) 
    407              ELSE 
    408                zcpx(ji,jj) = 0._wp 
    409              END IF 
    410       
    411              ll_tmp1 = MIN(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) 
    412              ll_tmp2 = MAX(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) +& 
    413                                                        & rn_wdmin1 + rn_wdmin2 
    414  
    415              IF(ll_tmp1) THEN 
    416                zcpy(ji,jj) = 1.0_wp 
    417              ELSE IF(ll_tmp2) THEN 
    418                ! no worries about sshn(ji,jj+1)-sshn(ji,jj) = 0, it won't happen ! here 
    419                zcpy(ji,jj) = ABS((sshn(ji,jj+1) + bathy(ji,jj+1) - sshn(ji,jj) - bathy(ji,jj)) /& 
    420                            &     (sshn(ji,jj+1) - sshn(ji,jj))) 
    421              ELSE 
    422                zcpy(ji,jj) = 0._wp 
    423              END IF 
     422                IF(ll_tmp1) THEN 
     423                  zcpy(ji,jj) = 1.0_wp 
     424                ELSE IF(ll_tmp2) THEN 
     425                  ! no worries about sshn(ji,jj+1)-sshn(ji,jj) = 0, it won't happen ! here 
     426                  zcpy(ji,jj) = ABS((sshn(ji,jj+1) + bathy(ji,jj+1) - sshn(ji,jj) - bathy(ji,jj)) /& 
     427                              &     (sshn(ji,jj+1) - sshn(ji,jj))) 
     428                ELSE 
     429                  zcpy(ji,jj) = 0._wp 
     430                END IF 
     431             ENDIF 
    424432           END DO 
    425433        END DO 
     
    450458 
    451459            ! add to the general momentum trend 
    452             ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap 
    453             va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap 
     460            ua(ji,jj,1) = ua(ji,jj,1) + ( zhpi(ji,jj,1) + zuap ) * umask(ji,jj,1) 
     461            va(ji,jj,1) = va(ji,jj,1) + ( zhpj(ji,jj,1) + zvap ) * vmask(ji,jj,1) 
    454462         END DO 
    455463      END DO 
     
    480488 
    481489               ! add to the general momentum trend 
    482                ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap 
    483                va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap 
     490               ua(ji,jj,jk) = ua(ji,jj,jk) + ( zhpi(ji,jj,jk) + zuap ) * umask(ji,jj,jk) 
     491               va(ji,jj,jk) = va(ji,jj,jk) + ( zhpj(ji,jj,jk) + zvap ) * vmask(ji,jj,jk) 
    484492            END DO 
    485493         END DO 
     
    546554#endif 
    547555      ! 
     556 
    548557      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj ) 
    549558      IF(ln_wd) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
     
    852861      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdept, zrhh 
    853862      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp 
     863      REAL(wp), POINTER, DIMENSION(:,:)   ::   sshu_n, sshv_n 
    854864      REAL(wp), POINTER, DIMENSION(:,:)   ::   zcpx, zcpy    !W/D pressure filter 
    855865      !!---------------------------------------------------------------------- 
     
    857867      CALL wrk_alloc( jpi,jpj,jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
    858868      CALL wrk_alloc( jpi,jpj,jpk, zdept, zrhh ) 
     869      CALL wrk_alloc( jpi,jpj, sshu_n, sshv_n ) 
    859870      IF(ln_wd) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
    860871      ! 
     
    967978 
    968979      ! Z coordinate of U(ji,jj,1:jpkm1) and V(ji,jj,1:jpkm1) 
     980 
     981      ! The following modification "sshu_n -> sshn" is a big mistake, this 
     982      ! should never happen here, remember to correct this in NEMO v3.6 
     983      ! trunk.  H.L. 
     984 
     985      !prepare sshu_n and sshv_n 
     986      DO jj = 1, jpjm1 
     987        DO ji = 1, jpim1 
     988          sshu_n(ji,jj) = (e12u(ji,jj) * sshn(ji,jj) + e12u(ji+1, jj) * sshn(ji+1,jj)) * & 
     989                        & r1_e12u(ji,jj) * umask(ji,jj,1) * 0.5_wp 
     990          sshv_n(ji,jj) = (e12v(ji,jj) * sshn(ji,jj) + e12v(ji+1, jj) * sshn(ji,jj+1)) * & 
     991                        & r1_e12v(ji,jj) * vmask(ji,jj,1) * 0.5_wp 
     992        END DO 
     993      END DO 
     994 
     995      CALL lbc_lnk (sshu_n, 'U', 1.) 
     996      CALL lbc_lnk (sshv_n, 'V', 1.) 
     997 
    969998      DO jj = 2, jpjm1 
    970999        DO ji = 2, jpim1 
    971           zu(ji,jj,1) = - ( fse3u(ji,jj,1) - sshn(ji,jj) * znad)    ! probable bug: changed from sshu_n for ztilde compilation 
    972           zv(ji,jj,1) = - ( fse3v(ji,jj,1) - sshn(ji,jj) * znad)    ! probable bug: changed from sshv_n for ztilde compilation 
     1000!          zu(ji,jj,1) = - ( fse3u(ji,jj,1) - sshn(ji,jj) * znad)    ! probable bug: changed from sshu_n for ztilde compilation 
     1001!          zv(ji,jj,1) = - ( fse3v(ji,jj,1) - sshn(ji,jj) * znad)    ! probable bug: changed from sshv_n for ztilde compilation 
     1002          zu(ji,jj,1) = - ( fse3u(ji,jj,1) - sshu_n(ji,jj) * znad) 
     1003          zv(ji,jj,1) = - ( fse3v(ji,jj,1) - sshv_n(ji,jj) * znad) 
    9731004        END DO 
    9741005      END DO 
     
    11391170      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
    11401171      CALL wrk_dealloc( jpi,jpj,jpk, zdept, zrhh ) 
     1172      CALL wrk_dealloc( jpi,jpj, sshu_n, sshv_n ) 
    11411173      IF(ln_wd) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
    11421174      ! 
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90

    r3294 r5727  
    9999         DO jj = 2, jpjm1       ! add the gradient of kinetic energy to the general momentum trends 
    100100            DO ji = fs_2, fs_jpim1   ! vector opt. 
    101                ua(ji,jj,jk) = ua(ji,jj,jk) - ( zhke(ji+1,jj  ,jk) - zhke(ji,jj,jk) ) / e1u(ji,jj) 
    102                va(ji,jj,jk) = va(ji,jj,jk) - ( zhke(ji  ,jj+1,jk) - zhke(ji,jj,jk) ) / e2v(ji,jj) 
     101               ua(ji,jj,jk) = ua(ji,jj,jk) - ( zhke(ji+1,jj  ,jk) - zhke(ji,jj,jk) ) / e1u(ji,jj) * umask(ji,jj,jk) 
     102               va(ji,jj,jk) = va(ji,jj,jk) - ( zhke(ji  ,jj+1,jk) - zhke(ji,jj,jk) ) / e2v(ji,jj) * vmask(ji,jj,jk) 
    103103            END DO  
    104104         END DO 
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90

    r3634 r5727  
    144144          
    145145         ! Multiply by the eddy viscosity coef. (at u- and v-points) 
    146          zlu(:,:,jk) = zlu(:,:,jk) * ( fsahmu(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 
    147  
    148          zlv(:,:,jk) = zlv(:,:,jk) * ( fsahmv(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 
     146         zlu(:,:,jk) = zlu(:,:,jk) * ( fsahmu(:,:,jk) * (1-nkahm_smag) + nkahm_smag) * umask(:,:,jk) 
     147  
     148         zlv(:,:,jk) = zlv(:,:,jk) * ( fsahmv(:,:,jk) * (1-nkahm_smag) + nkahm_smag) * vmask(:,:,jk) 
    149149          
    150150         ! Contravariant "laplacian" 
     
    174174               zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
    175175               zut(ji,jj,jk) = (  zlu(ji,jj,jk) - zlu(ji-1,jj  ,jk)   & 
    176                   &             + zlv(ji,jj,jk) - zlv(ji  ,jj-1,jk) ) / zbt 
     176                  &             + zlv(ji,jj,jk) - zlv(ji  ,jj-1,jk) ) / zbt * tmask(ji,jj,jk) 
    177177            END DO 
    178178         END DO 
     
    201201                  &  + ( zut(ji,jj+1,jk) - zut(ji  ,jj,jk) ) / e2v(ji,jj) 
    202202               ! add it to the general momentum trends 
    203                ua(ji,jj,jk) = ua(ji,jj,jk) + zua * ( fsahmu(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) 
    204                va(ji,jj,jk) = va(ji,jj,jk) + zva * ( fsahmv(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) 
     203               ua(ji,jj,jk) = ua(ji,jj,jk) + zua * ( fsahmu(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) * umask(ji,jj,jk) 
     204               va(ji,jj,jk) = va(ji,jj,jk) + zva * ( fsahmv(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) * vmask(ji,jj,jk) 
    205205            END DO 
    206206         END DO 
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r4496 r5727  
    159159            DO jj = 2, jpjm1 
    160160               DO ji = fs_2, fs_jpim1   ! vector opt. 
    161                   ua(ji,jj,jk) = ua(ji,jj,jk) + spgu(ji,jj) 
    162                   va(ji,jj,jk) = va(ji,jj,jk) + spgv(ji,jj) 
     161                  ua(ji,jj,jk) = ua(ji,jj,jk) + spgu(ji,jj) * umask(ji,jj,jk) 
     162                  va(ji,jj,jk) = va(ji,jj,jk) + spgv(ji,jj) * vmask(ji,jj,jk) 
    163163               END DO 
    164164            END DO 
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r5066 r5727  
    371371      !                                   !* Right-Hand-Side of the barotropic momentum equation 
    372372      !                                   ! ---------------------------------------------------- 
     373 
    373374      IF( lk_vvl ) THEN                         ! Variable volume : remove surface pressure gradient 
    374375        IF(ln_wd) THEN                    ! Calculating and applying W/D gravity filters 
    375376          DO jj = 2, jpjm1 
    376377             DO ji = 2, jpim1 
    377                 ll_tmp1 = MIN(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) 
    378                 ll_tmp2 = MAX(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) + & 
     378                IF ( tmask(ji+1,jj,1) == 0._wp ) THEN 
     379                   zcpx = 1._wp 
     380                ELSE 
     381                   ll_tmp1 = MIN(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj)*tmask(ji,jj,1), -bathy(ji+1,jj)*tmask(ji+1,jj,1)) & 
     382                           & .and. MAX(sshn(ji,jj) + bathy(ji,jj)*tmask(ji,jj,1), sshn(ji+1,jj) + bathy(ji+1,jj)*tmask(ji+1,jj,1)) & 
     383                           &  > rn_wdmin1 + rn_wdmin2 
     384                   ll_tmp2 = MAX(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj)*tmask(ji,jj,1), -bathy(ji+1,jj)*tmask(ji+1,jj,1)) + & 
    379385                                                          & rn_wdmin1 + rn_wdmin2 
    380                 IF(ll_tmp1) THEN 
    381                   zcpx(ji,jj) = 1.0_wp 
    382                 ELSE IF(ll_tmp2) THEN 
    383                    ! no worries about sshn(ji+1,jj)-sshn(ji,jj) = 0, it won't happen ! here 
    384                   zcpx(ji,jj) = ABS((sshn(ji+1,jj) + bathy(ji+1,jj) - sshn(ji,jj) - bathy(ji,jj)) /& 
    385                               &     (sshn(ji+1,jj) - sshn(ji,jj))) 
     386                   IF(ll_tmp1) THEN 
     387                      zcpx(ji,jj) = 1.0_wp 
     388                   ELSE IF(ll_tmp2) THEN 
     389                      ! no worries about sshn(ji+1,jj)-sshn(ji,jj) = 0, it won't happen ! here 
     390                      zcpx(ji,jj) = ABS((sshn(ji+1,jj) + bathy(ji+1,jj)*tmask(ji+1,jj,1) - sshn(ji,jj) - bathy(ji,jj)*tmask(ji,jj,1)) /& 
     391                                  &     (sshn(ji+1,jj) - sshn(ji,jj))) 
     392                   ELSE 
     393                      zcpx(ji,jj) = 0._wp 
     394                   END IF 
     395                ENDIF 
     396 
     397                IF ( tmask(ji,jj+1,1) == 0._wp ) THEN 
     398                   zcpy = 1._wp 
    386399                ELSE 
    387                    zcpx(ji,jj) = 0._wp 
    388                 END IF 
    389  
    390                 ll_tmp1 = MIN(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) 
    391                 ll_tmp2 = MAX(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) + & 
    392                                                           & rn_wdmin1 + rn_wdmin2 
    393                 IF(ll_tmp1) THEN 
    394                    zcpy(ji,jj) = 1.0_wp 
    395                 ELSE IF(ll_tmp2) THEN 
    396                    ! no worries about sshn(ji,jj+1)-sshn(ji,jj) = 0, it won't happen ! here 
    397                   zcpy(ji,jj) = ABS((sshn(ji,jj+1) + bathy(ji,jj+1) - sshn(ji,jj) + bathy(ji,jj)) /& 
    398                               &     (sshn(ji,jj+1) - sshn(ji,jj))) 
    399                 ELSE 
    400                   zcpy(ji,jj) = 0._wp 
    401                 END IF 
     400                   ll_tmp1 = MIN(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj)*tmask(ji,jj,1), -bathy(ji,jj+1)*tmask(ji,jj+1,1)) & 
     401                           & .and. MAX(sshn(ji,jj) + bathy(ji,jj)*tmask(ji,jj,1), sshn(ji,jj+1) + bathy(ji,jj+1)*tmask(ji,jj+1,1)) & 
     402                           &  > rn_wdmin1 + rn_wdmin2 
     403                   ll_tmp2 = MAX(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj)*tmask(ji,jj,1), -bathy(ji,jj+1)*tmask(ji,jj+1,1)) + & 
     404                                                             & rn_wdmin1 + rn_wdmin2 
     405                   IF(ll_tmp1) THEN 
     406                      zcpy(ji,jj) = 1.0_wp 
     407                   ELSE IF(ll_tmp2) THEN 
     408                      ! no worries about sshn(ji,jj+1)-sshn(ji,jj) = 0, it won't happen ! here 
     409                     zcpy(ji,jj) = ABS((sshn(ji,jj+1) + bathy(ji,jj+1)*tmask(ji,jj+1,1) - sshn(ji,jj) - bathy(ji,jj)*tmask(ji,jj,1)) /& 
     410                                 &     (sshn(ji,jj+1) - sshn(ji,jj))) 
     411                   ELSE 
     412                     zcpy(ji,jj) = 0._wp 
     413                   END IF 
     414                ENDIF 
    402415             END DO 
    403416           END DO 
     
    453466      ! 
    454467      ! Note that the "unclipped" bottom friction parameter is used even with explicit drag 
    455       zu_frc(:,:) = zu_frc(:,:) + hur(:,:) * bfrua(:,:) * zwx(:,:) 
    456       zv_frc(:,:) = zv_frc(:,:) + hvr(:,:) * bfrva(:,:) * zwy(:,:) 
     468      IF(ln_wd) THEN 
     469        zu_frc(:,:) = zu_frc(:,:) + MAX(hur(:,:) * bfrua(:,:),-1._wp / rdtbt) * zwx(:,:) 
     470        zv_frc(:,:) = zv_frc(:,:) + MAX(hvr(:,:) * bfrva(:,:),-1._wp / rdtbt) * zwy(:,:) 
     471      ELSE 
     472        zu_frc(:,:) = zu_frc(:,:) + hur(:,:) * bfrua(:,:) * zwx(:,:) 
     473        zv_frc(:,:) = zv_frc(:,:) + hvr(:,:) * bfrva(:,:) * zwy(:,:) 
     474      END IF 
    457475      !        
    458476      IF (ln_bt_fw) THEN                        ! Add wind forcing 
     
    518536      IF(ln_wd) THEN      !preserve the positivity of water depth 
    519537                          !ssh[b,n,a] should have already been processed for this 
    520          sshbb_e(:,:) = MAX(sshbb_e(:,:), rn_wdmin1 - bathy(:,:)) 
    521          sshb_e(:,:)  = MAX(sshb_e(:,:) , rn_wdmin1 - bathy(:,:)) 
     538         sshbb_e(:,:jj) = MAX( sshbb_e(:,:), (rn_wdmin1 - bathy(:,:)) ) *tmask(:,:,1) 
     539         sshb_e(:,:jj)  = MAX( sshb_e(:,:) , (rn_wdmin1 - bathy(:,:)) ) *tmask(:,:,1) 
    522540      ENDIF 
    523541 
     
    637655         ENDIF 
    638656#endif 
     657 
    639658         IF(ln_wd) CALL wad_lmt_bt(zwx, zwy, sshn_e, zssh_frc, rdtbt) 
    640659         ! 
     
    652671         END DO 
    653672         ssha_e(:,:) = (  sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) )  ) * tmask(:,:,1) 
    654          IF(ln_wd) ssha_e(:,:) = MAX(ssha_e(:,:), rn_wdmin1 - bathy(:,:))  
     673         IF(ln_wd) ssha_e(:,:) = MAX(ssha_e(:,:), (rn_wdmin1 - bathy(:,:)) ) * tmask(:,:,1) 
    655674         CALL lbc_lnk( ssha_e, 'T',  1._wp ) 
    656675 
     
    785804         ! 
    786805         ! Add bottom stresses: 
    787          zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * zun_e(:,:) * hur_e(:,:) 
    788          zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * zvn_e(:,:) * hvr_e(:,:) 
    789          ! 
     806         IF(ln_wd) THEN 
     807           zu_trd(:,:) = zu_trd(:,:) + MAX(bfrua(:,:) * hur_e(:,:), -1._wp / rdtbt) * zun_e(:,:) 
     808           zv_trd(:,:) = zv_trd(:,:) + MAX(bfrva(:,:) * hvr_e(:,:), -1._wp / rdtbt) * zvn_e(:,:) 
     809         ELSE 
     810           zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * zun_e(:,:) * hur_e(:,:) 
     811           zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * zvn_e(:,:) * hvr_e(:,:) 
     812         END IF 
     813          
    790814         IF(ln_wd) THEN                    ! Calculating and applying W/D gravity filters 
    791815           DO jj = 2, jpjm1 
    792816              DO ji = 2, jpim1 
    793                  ll_tmp1 = MIN(zsshp2_e(ji,jj), zsshp2_e(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) 
    794                  ll_tmp2 = MAX(zsshp2_e(ji,jj), zsshp2_e(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) + & 
     817                 IF ( tmask(ji+1,jj,1) == 0._wp ) THEN 
     818                    zcpx = 1._wp 
     819                 ELSE 
     820                    ll_tmp1 = MIN(zsshp2_e(ji,jj), zsshp2_e(ji+1,jj)) > MAX(-bathy(ji,jj)*tmask(ji,jj,1), -bathy(ji+1,jj)*tmask(ji+1,jj,1)) & 
     821                           & .and. MAX(zsshp2_e(ji,jj) + bathy(ji,jj)*tmask(ji,jj,1), zsshp2_e(ji+1,jj) + bathy(ji+1,jj)*tmask(ji+1,jj,1))  & 
     822                           &  > rn_wdmin1 + rn_wdmin2 
     823                    ll_tmp2 = MAX(zsshp2_e(ji,jj), zsshp2_e(ji+1,jj)) > MAX(-bathy(ji,jj)*tmask(ji,jj,1), -bathy(ji+1,jj)*tmask(ji+1,jj,1)) + & 
    795824                                                           & rn_wdmin1 + rn_wdmin2 
    796                  IF(ll_tmp1) THEN 
    797                    zcpx(ji,jj) = 1.0_wp 
    798                  ELSE IF(ll_tmp2) THEN 
    799                     ! no worries about zsshp2_e(ji+1,jj)-zsshp2_e(ji,jj) = 0, it won't happen ! here 
    800                    zcpx(ji,jj) = ABS((zsshp2_e(ji+1,jj) + bathy(ji+1,jj) - zsshp2_e(ji,jj) - bathy(ji,jj)) /& 
    801                                & (zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj))) 
     825                    IF(ll_tmp1) THEN 
     826                      zcpx(ji,jj) = 1.0_wp 
     827                    ELSE IF(ll_tmp2) THEN 
     828                       ! no worries about zsshp2_e(ji+1,jj)-zsshp2_e(ji,jj) = 0, it won't happen ! here 
     829                      zcpx(ji,jj) = ABS((zsshp2_e(ji+1,jj) + bathy(ji+1,jj)*tmask(ji+1,jj,1) - zsshp2_e(ji,jj) - bathy(ji,jj)*tmask(ji,jj,1)) /& 
     830                                 & (zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj))) 
     831                    ELSE 
     832                       zcpx(ji,jj) = 0._wp 
     833                    END IF 
     834                 ENDIF 
     835 
     836                 IF ( tmask(ji,jj+1,1) == 0._wp ) THEN 
     837                    zcpy = 1._wp 
    802838                 ELSE 
    803                     zcpx(ji,jj) = 0._wp 
    804                  END IF 
    805  
    806                  ll_tmp1 = MIN(zsshp2_e(ji,jj), zsshp2_e(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) 
    807                  ll_tmp2 = MAX(zsshp2_e(ji,jj), zsshp2_e(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) + & 
     839                    ll_tmp1 = MIN(zsshp2_e(ji,jj), zsshp2_e(ji,jj+1)) > MAX(-bathy(ji,jj)*tmask(ji,jj,1), -bathy(ji,jj+1)*tmask(ji,jj+1,1))& 
     840                           & .and. MAX(zsshp2_e(ji,jj) + bathy(ji,jj)*tmask(ji,jj,1), zsshp2_e(ji,jj+1) + bathy(ji,jj+1)*tmask(ji,jj+1,1)) & 
     841                           &  > rn_wdmin1 + rn_wdmin2 
     842                    ll_tmp2 = MAX(zsshp2_e(ji,jj), zsshp2_e(ji,jj+1)) > MAX(-bathy(ji,jj)*tmask(ji,jj,1), -bathy(ji,jj+1)*tmask(ji,jj+1,1)) + & 
    808843                                                           & rn_wdmin1 + rn_wdmin2 
    809                  IF(ll_tmp1) THEN 
    810                     zcpy(ji,jj) = 1.0_wp 
    811                  ELSE IF(ll_tmp2) THEN 
    812                     ! no worries about zsshp2_e(ji,jj+1)-zsshp2_e(ji,jj) = 0, it won't happen ! here 
    813                    zcpy(ji,jj) = ABS((zsshp2_e(ji,jj+1) + bathy(ji,jj+1) - zsshp2_e(ji,jj) - bathy(ji,jj)) /& 
    814                                & (zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj))) 
    815                  ELSE 
    816                    zcpy(ji,jj) = 0._wp 
    817                  END IF 
     844                    IF(ll_tmp1) THEN 
     845                       zcpy(ji,jj) = 1.0_wp 
     846                    ELSE IF(ll_tmp2) THEN 
     847                       ! no worries about zsshp2_e(ji,jj+1)-zsshp2_e(ji,jj) = 0, it won't happen ! here 
     848                      zcpy(ji,jj) = ABS((zsshp2_e(ji,jj+1) + bathy(ji,jj+1)*tmask(ji,jj+1,1) - zsshp2_e(ji,jj) - bathy(ji,jj)*tmask(ji,jj,1)) /& 
     849                                  & (zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj))) 
     850                    ELSE 
     851                      zcpy(ji,jj) = 0._wp 
     852                    END IF 
     853                 ENDIF 
    818854              END DO 
    819855            END DO 
     
    894930            !                                          !  ----------------------------------------------         
    895931            IF(ln_wd) THEN 
    896               hu_e (:,:) = MAX(hu_0(:,:) + zsshu_a(:,:), rn_wdmin1) 
    897               hv_e (:,:) = MAX(hv_0(:,:) + zsshv_a(:,:), rn_wdmin1) 
     932              hu_e (:,:) = MAX(hu_0(:,:) + zsshu_a(:,:), rn_wdmin1 * umask(:,:,1) ) 
     933              hv_e (:,:) = MAX(hv_0(:,:) + zsshv_a(:,:), rn_wdmin1 * vmask(:,:,1) ) 
    898934            ELSE 
    899935              hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
     
    10321068      CALL wrk_dealloc( jpi, jpj, zsshu_a, zsshv_a                                   ) 
    10331069      CALL wrk_dealloc( jpi, jpj, zhf ) 
    1034       IF(ln_wd) CALL wrk_alloc( jpi, jpj, zcpx, zcpy ) 
     1070      IF(ln_wd) CALL wrk_dealloc( jpi, jpj, zcpx, zcpy ) 
    10351071      ! 
    10361072      IF( nn_timing == 1 )  CALL timing_stop('dyn_spg_ts') 
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r4624 r5727  
    288288               zx1 = zwx(ji-1,jj) + zwx(ji-1,jj+1) 
    289289               zx2 = zwx(ji  ,jj) + zwx(ji  ,jj+1) 
    290                pua(ji,jj,jk) = pua(ji,jj,jk) + zfact2 / e1u(ji,jj) * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 ) 
    291                pva(ji,jj,jk) = pva(ji,jj,jk) - zfact2 / e2v(ji,jj) * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 )  
     290               pua(ji,jj,jk) = pua(ji,jj,jk) + zfact2 / e1u(ji,jj) * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 ) * umask(ji,jj,jk) 
     291               pva(ji,jj,jk) = pva(ji,jj,jk) - zfact2 / e2v(ji,jj) * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 ) * vmask(ji,jj,jk) 
    292292            END DO   
    293293         END DO   
     
    409409               zcva =-zfact2 * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 ) 
    410410               ! mixed vorticity trend added to the momentum trends 
    411                ua(ji,jj,jk) = ua(ji,jj,jk) + zcua + zua 
    412                va(ji,jj,jk) = va(ji,jj,jk) + zcva + zva 
     411               ua(ji,jj,jk) = ua(ji,jj,jk) + ( zcua + zua ) * umask(ji,jj,jk) 
     412               va(ji,jj,jk) = va(ji,jj,jk) + ( zcva + zva ) * vmask(ji,jj,jk) 
    413413            END DO   
    414414         END DO   
     
    529529               zvau =-zfact1 / e2v(ji,jj) * ( zwx(ji-1,jj  ) + zwx(ji-1,jj+1)   & 
    530530                  &                         + zwx(ji  ,jj  ) + zwx(ji  ,jj+1) ) 
    531                pua(ji,jj,jk) = pua(ji,jj,jk) + zuav * ( zwz(ji  ,jj-1) + zwz(ji,jj) ) 
    532                pva(ji,jj,jk) = pva(ji,jj,jk) + zvau * ( zwz(ji-1,jj  ) + zwz(ji,jj) ) 
     531               pua(ji,jj,jk) = pua(ji,jj,jk) + zuav * ( zwz(ji  ,jj-1) + zwz(ji,jj) ) * umask(ji,jj,jk) 
     532               pva(ji,jj,jk) = pva(ji,jj,jk) + zvau * ( zwz(ji-1,jj  ) + zwz(ji,jj) ) * vmask(ji,jj,jk) 
    533533            END DO   
    534534         END DO   
     
    686686               zva = - zfac12 / e2v(ji,jj) * (  ztsw(ji,jj+1) * zwx(ji-1,jj+1) + ztse(ji,jj+1) * zwx(ji  ,jj+1)   & 
    687687                  &                           + ztnw(ji,jj  ) * zwx(ji-1,jj  ) + ztne(ji,jj  ) * zwx(ji  ,jj  ) ) 
    688                pua(ji,jj,jk) = pua(ji,jj,jk) + zua 
    689                pva(ji,jj,jk) = pva(ji,jj,jk) + zva 
     688               pua(ji,jj,jk) = pua(ji,jj,jk) + zua * umask(ji,jj,jk) 
     689               pva(ji,jj,jk) = pva(ji,jj,jk) + zva * vmask(ji,jj,jk) 
    690690            END DO   
    691691         END DO   
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90

    r3294 r5727  
    109109               zva = - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) / ( e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    110110               !                         ! add the trends to the general momentum trends 
    111                ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    112                va(ji,jj,jk) = va(ji,jj,jk) + zva 
     111               ua(ji,jj,jk) = ua(ji,jj,jk) + zua * umask(ji,jj,jk) 
     112               va(ji,jj,jk) = va(ji,jj,jk) + zva * vmask(ji,jj,jk) 
    113113            END DO   
    114114         END DO   
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/wadlmt.F90

    r5066 r5727  
    131131              DO ji = 2, jpim1  
    132132         
    133                  wdmask(ji,jj) = 0 
     133!                 wdmask(ji,jj) = 0 
    134134                 IF(tmask(ji, jj, 1) < 0.5_wp) CYCLE  
    135135                 IF(bathy(ji,jj) > zdepwd) CYCLE 
     
    148148                 IF(zdep1 > zdep2) THEN 
    149149                   zflag = 1 
    150                    wdmask(ji, jj) = 1 
     150!                   wdmask(ji, jj) = 1 
    151151                   zcoef = ( ( zdep2 - rn_wdmin2 ) * ztmp - zzflxn * z2dt ) / ( zflxp(ji,jj) * z2dt ) 
    152152                   zcoef = max(zcoef, 0._wp) 
     
    170170        END DO  ! jk1 loop 
    171171        
    172         un(:,:,:) = un(:,:,:) * zwdlmtu(ji, jj)  
    173         vn(:,:,:) = vn(:,:,:) * zwdlmtv(ji, jj)  
     172        DO jk = 1, jpkm1 
     173          un(:,:,jk) = un(:,:,jk) * zwdlmtu(:, :)  
     174          vn(:,:,jk) = vn(:,:,jk) * zwdlmtv(:, :)  
     175        END DO 
    174176 
    175177        CALL lbc_lnk( un, 'U', -1. ) 
     
    213215      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxp,  zflxn            ! local 2D workspace 
    214216      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! local 2D workspace 
     217      REAL(wp), POINTER,  DIMENSION(:,:) ::   sum_e3u, sum_e3v         ! local 2D workspace 
    215218 
    216219      !!---------------------------------------------------------------------- 
     
    223226        CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu1, zflxv1 ) 
    224227        CALL wrk_alloc( jpi, jpj, zwdlmtu, zwdlmtv) 
     228        CALL wrk_alloc( jpi, jpj, sum_e3u, sum_e3v) 
    225229        ! 
    226230        
     
    235239        zflxp(:,:)   = 0._wp 
    236240        zflxn(:,:)   = 0._wp 
    237         zflxu(:,:)   = 0._wp 
    238         zflxv(:,:)   = 0._wp 
     241!RF bug fix!        zflxu(:,:)   = 0._wp 
     242!RF bug fix!        zflxv(:,:)   = 0._wp 
    239243 
    240244        zwdlmtu(:,:)  = 1._wp 
     
    243247        ! Horizontal Flux in u and v direction 
    244248        
    245         zflxu(:,:) = zflxu(:,:) * e2u(:,:) 
    246         zflxv(:,:) = zflxv(:,:) * e1v(:,:) 
     249!RF bug fix        zflxu(:,:) = zflxu(:,:) * e2u(:,:) 
     250!RF bug fix        zflxv(:,:) = zflxv(:,:) * e1v(:,:) 
    247251        
    248252        DO jj = 2, jpjm1 
     
    276280              DO ji = 2, jpim1  
    277281         
    278                  wdmask(ji,jj) = 0 
    279                  IF(tmask(ji, jj, 1) < 0.5_wp) CYCLE  
    280                  IF(bathy(ji,jj) > zdepwd) CYCLE 
     282!                 wdmask(ji,jj) = 0 
     283                 IF(tmask(ji, jj, 1) < 0.5_wp) CYCLE   ! we don't care about land cells 
     284                 IF(bathy(ji,jj) > zdepwd) CYCLE       ! and cells which will unlikely go dried out  
    281285         
    282                  !ztmp = e1t(ji,jj) * e2t(ji,jj)     !there must be an array ready for this 
    283286                 ztmp = e12t(ji,jj) 
    284287 
     
    316319        END DO  ! jk1 loop 
    317320        
    318         zflxu(:,:) = zflxu(:,:) * zwdlmtu(ji, jj)  
    319         zflxv(:,:) = zflxv(:,:) * zwdlmtv(ji, jj)  
     321        zflxu(:,:) = zflxu(:,:) * zwdlmtu(:, :)  
     322        zflxv(:,:) = zflxv(:,:) * zwdlmtv(:, :)  
    320323 
    321324        CALL lbc_lnk( zflxu, 'U', -1. ) 
     
    330333        CALL wrk_dealloc( jpi, jpj, zflxp, zflxn, zflxu1, zflxv1 ) 
    331334        CALL wrk_dealloc( jpi, jpj, zwdlmtu, zwdlmtv) 
     335        CALL wrk_dealloc( jpi, jpj, sum_e3u, sum_e3v) 
    332336      ! 
    333337      END IF 
Note: See TracChangeset for help on using the changeset viewer.