Changeset 5877


Ignore:
Timestamp:
2015-11-11T18:19:12+01:00 (5 years ago)
Author:
acc
Message:

Branch 2015/dev_r5803_NOC_WAD. Some minor code tidying. No functional changes

Location:
branches/2015/dev_r5803_NOC_WAD/NEMOGCM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5803_NOC_WAD/NEMOGCM/CONFIG/SHARED/namelist_ref

    r5870 r5877  
    12891289   rn_wdmin1         =  0.1     ! Minimum wet depth on dried cells 
    12901290   rn_wdmin2         =  0.01    ! Tolerance of min wet depth on dried cells 
    1291    rn_wdld           =  20.0    ! Land elevation below which wetting/dryins is allowed 
     1291   rn_wdld           =  20.0    ! Land elevation below which wetting/drying is allowed 
    12921292   nn_wdit           =  10      ! Max iterations for W/D limiter 
    12931293/ 
  • branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r5870 r5877  
    1111   !!                             to the optimization of BDY communications 
    1212   !!            3.7  ! 2015-11  (G. Madec) introduce surface and scale factor ratio 
    13    !!                 !          (H. Liu) Add arrays associated with Wetting and Drying 
    1413   !!---------------------------------------------------------------------- 
    1514 
  • branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r5870 r5877  
    18091809      REAL(wp) ::   zrmax, ztaper   ! temporary scalars 
    18101810      REAL(wp) ::   zrfact 
    1811       REAL(wp) ::   zsmth 
    18121811      ! 
    18131812      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 
     
    18651864      bathy(:,:) = MIN( rn_sbot_max, bathy(:,:) ) 
    18661865 
    1867       IF(.NOT.ln_wd) THEN                       
     1866      IF( .NOT.ln_wd ) THEN                       
    18681867      DO jj = 1, jpj 
    18691868         DO ji = 1, jpi 
     
    18781877      zenv(:,:) = bathy(:,:) 
    18791878      ! 
    1880       IF(.NOT.ln_wd) THEN     
     1879      IF( .NOT.ln_wd ) THEN     
    18811880      ! set first land point adjacent to a wet cell to sbot_min as this needs to be included in smoothing 
    18821881      DO jj = 1, jpj 
     
    19361935         zrj(:,:) = 0._wp 
    19371936          
    1938          !IF(ln_wd) THEN                     !extend the smoothed region to cover the W/D zones 
    1939          !  zsmth = -rn_wdld     
    1940          !ELSE 
    1941            zsmth = 0._wp                     ! The original form (only smooth ocean points) 
    1942          !ENDIF 
    1943  
    19441937         DO jj = 1, nlcj 
    19451938            DO ji = 1, nlci 
    19461939               iip1 = MIN( ji+1, nlci )      ! force zri = 0 on last line (ji=ncli+1 to jpi) 
    19471940               ijp1 = MIN( jj+1, nlcj )      ! force zrj = 0 on last raw  (jj=nclj+1 to jpj) 
    1948                IF( (zenv(ji,jj) > zsmth) .AND. (zenv(iip1,jj) > zsmth)) THEN 
     1941               IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(iip1,jj) > 0._wp)) THEN 
    19491942                  zri(ji,jj) = ( zenv(iip1,jj  ) - zenv(ji,jj) ) / ( zenv(iip1,jj  ) + zenv(ji,jj) ) 
    19501943               END IF 
    1951                IF( (zenv(ji,jj) > zsmth) .AND. (zenv(ji,ijp1) > zsmth)) THEN 
     1944               IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(ji,ijp1) > 0._wp)) THEN 
    19521945                  zrj(ji,jj) = ( zenv(ji  ,ijp1) - zenv(ji,jj) ) / ( zenv(ji  ,ijp1) + zenv(ji,jj) ) 
    19531946               END IF 
     
    19721965      END DO                                                !     End loop     ! 
    19731966      !                                                     ! ================ ! 
    1974       IF(ln_wd) THEN 
    1975         DO jj = 1, jpj 
    1976            DO ji = 1, jpi 
    1977               !zenv(ji,jj) = MAX( zenv(ji,jj), -rn_wdld )    ! filt out land bathy data  
    1978            END DO 
    1979         END DO 
    1980       ELSE 
    1981         DO jj = 1, jpj 
    1982            DO ji = 1, jpi 
    1983               zenv(ji,jj) = MAX( zenv(ji,jj), rn_sbot_min ) ! set all points to avoid undefined scale value warnings 
    1984            END DO 
    1985         END DO 
    1986       ENDIF 
     1967      DO jj = 1, jpj 
     1968         DO ji = 1, jpi 
     1969            zenv(ji,jj) = MAX( zenv(ji,jj), rn_sbot_min ) ! set all points to avoid undefined scale value warnings 
     1970         END DO 
     1971      END DO 
    19871972      ! 
    19881973      ! Envelope bathymetry saved in hbatt 
     
    20141999      IF(lwp) THEN 
    20152000         WRITE(numout,*) 
    2016          IF(.NOT.ln_wd) THEN 
     2001         IF( .NOT.ln_wd ) THEN 
    20172002           WRITE(numout,*) ' zgr_sco: minimum depth of the envelop topography set to : ', rn_sbot_min 
    20182003         ELSE 
     
    20332018      END DO 
    20342019 
    2035       IF(ln_wd) THEN               !avoid the zero depth on T- (U-,V-,F-) points 
     2020      IF( ln_wd ) THEN               !avoid the zero depth on T- (U-,V-,F-) points 
    20362021        DO jj = 1, jpj 
    20372022          DO ji = 1, jpi 
     
    20802065 
    20812066!!bug:  key_helsinki a verifer 
    2082       IF(.NOT.ln_wd) THEN 
     2067      IF( .NOT.ln_wd ) THEN 
    20832068       hift(:,:) = MIN( hift(:,:), hbatt(:,:) ) 
    20842069       hifu(:,:) = MIN( hifu(:,:), hbatu(:,:) ) 
     
    21302115      fsde3w(:,:,:) = gdep3w_0(:,:,:) 
    21312116      ! 
    2132       IF(.NOT.ln_wd) THEN 
     2117      IF( .NOT.ln_wd ) THEN 
    21332118        where (e3t_0   (:,:,:).eq.0.0)  e3t_0(:,:,:) = 1.0 
    21342119        where (e3u_0   (:,:,:).eq.0.0)  e3u_0(:,:,:) = 1.0 
     
    21812166            END DO 
    21822167 
    2183             IF(ln_wd) THEN 
     2168            IF( ln_wd ) THEN 
    21842169              IF( scobot(ji,jj) <= -(rn_wdld - rn_wdmin2)) THEN 
    21852170                mbathy(ji,jj) = 0 
     
    23682353         DO jj = 1, jpjm1 
    23692354            ! extended for Wetting/Drying case 
    2370             ztmpu = hbatt(ji,jj)+hbatt(ji+1,jj) 
    2371             ztmpv = hbatt(ji,jj)+hbatt(ji,jj+1) 
    2372             ztmpf = hbatt(ji,jj)+hbatt(ji+1,jj)+hbatt(ji,jj+1)+hbatt(ji+1,jj+1) 
     2355            ztmpu  = hbatt(ji,jj)+hbatt(ji+1,jj) 
     2356            ztmpv  = hbatt(ji,jj)+hbatt(ji,jj+1) 
     2357            ztmpf  = hbatt(ji,jj)+hbatt(ji+1,jj)+hbatt(ji,jj+1)+hbatt(ji+1,jj+1) 
    23732358            ztmpu1 = hbatt(ji,jj)*hbatt(ji+1,jj) 
    23742359            ztmpv1 = hbatt(ji,jj)*hbatt(ji,jj+1) 
     
    23762361                   & MAX(hbatt(ji,jj), hbatt(ji+1,jj), hbatt(ji,jj+1), hbatt(ji+1,jj+1)) 
    23772362            DO jk = 1, jpk 
    2378                IF((ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1).AND.ln_wd) THEN 
     2363               IF( ln_wd .AND. (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1) ) THEN 
    23792364                 z_esigtu3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji+1,jj,jk) ) 
    23802365                 z_esigwu3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji+1,jj,jk) ) 
     
    23862371               END IF 
    23872372 
    2388                IF((ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1).AND.ln_wd) THEN 
     2373               IF( ln_wd .AND. (ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1) ) THEN 
    23892374                 z_esigtv3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji,jj+1,jk) ) 
    23902375                 z_esigwv3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji,jj+1,jk) ) 
     
    23962381               END IF 
    23972382 
    2398                IF((ztmpf1 < 0._wp.OR.ABS(ztmpf) < rn_wdmin1).AND.ln_wd) THEN 
    2399                  z_esigtf3(ji,jj,jk) = 0.25_wp * ( z_esigt3(ji,jj,jk)   + z_esigt3(ji+1,jj,jk)  & 
    2400                     &                            + z_esigt3(ji,jj+1,jk) + z_esigt3(ji+1,jj+1,jk) ) 
     2383               IF( ln_wd .AND. (ztmpf1 < 0._wp.OR.ABS(ztmpf) < rn_wdmin1) ) THEN 
     2384                 z_esigtf3(ji,jj,jk) = 0.25_wp * ( z_esigt3(ji,jj  ,jk) + z_esigt3(ji+1,jj  ,jk)               & 
     2385                        &                        + z_esigt3(ji,jj+1,jk) + z_esigt3(ji+1,jj+1,jk) ) 
    24012386               ELSE 
    2402                  z_esigtf3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk)  & 
    2403                     &                + hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk)+hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) ) & 
    2404                     &              / ztmpf 
     2387                 z_esigtf3(ji,jj,jk) = ( hbatt(ji  ,jj  )*z_esigt3(ji  ,jj  ,jk)                               & 
     2388                        &            +   hbatt(ji+1,jj  )*z_esigt3(ji+1,jj  ,jk)                               & 
     2389                        &            +   hbatt(ji  ,jj+1)*z_esigt3(ji  ,jj+1,jk)                               & 
     2390                        &            +   hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) ) / ztmpf 
    24052391               END IF 
    24062392 
    2407                ! 
    2408                !z_esigtu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk) )   & 
    2409                !   &              / ( hbatt(ji,jj)+hbatt(ji+1,jj) ) 
    2410                !z_esigtv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk) )   & 
    2411                !   &              / ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
    2412                !z_esigtf3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk)     & 
    2413                !   &                + hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk)+hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) )   & 
    2414                !   &              / ( hbatt(ji,jj)+hbatt(ji+1,jj)+hbatt(ji,jj+1)+hbatt(ji+1,jj+1) ) 
    2415                !z_esigwu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigw3(ji+1,jj,jk) )   & 
    2416                !   &              / ( hbatt(ji,jj)+hbatt(ji+1,jj) ) 
    2417                !z_esigwv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigw3(ji,jj+1,jk) )   & 
    2418                !   &              / ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
    24192393               ! 
    24202394               e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigt3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 
     
    25372511 
    25382512           ! extend to suit for Wetting/Drying case 
    2539            ztmpu = hbatt(ji,jj)+hbatt(ji+1,jj) 
    2540            ztmpv = hbatt(ji,jj)+hbatt(ji,jj+1) 
    2541            ztmpf = hbatt(ji,jj)+hbatt(ji+1,jj)+hbatt(ji,jj+1)+hbatt(ji+1,jj+1) 
     2513           ztmpu  = hbatt(ji,jj)+hbatt(ji+1,jj) 
     2514           ztmpv  = hbatt(ji,jj)+hbatt(ji,jj+1) 
     2515           ztmpf  = hbatt(ji,jj)+hbatt(ji+1,jj)+hbatt(ji,jj+1)+hbatt(ji+1,jj+1) 
    25422516           ztmpu1 = hbatt(ji,jj)*hbatt(ji+1,jj) 
    25432517           ztmpv1 = hbatt(ji,jj)*hbatt(ji,jj+1) 
     
    25452519                  & MAX(hbatt(ji,jj), hbatt(ji+1,jj), hbatt(ji,jj+1), hbatt(ji+1,jj+1)) 
    25462520           DO jk = 1, jpk 
    2547               IF((ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1).AND.ln_wd) THEN 
     2521              IF( ln_wd .AND. (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1) ) THEN 
    25482522                z_esigtu3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji+1,jj,jk) ) 
    25492523                z_esigwu3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji+1,jj,jk) ) 
     
    25552529              END IF 
    25562530 
    2557               IF((ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1).AND.ln_wd) THEN 
     2531              IF( ln_wd .AND. (ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1) ) THEN 
    25582532                z_esigtv3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji,jj+1,jk) ) 
    25592533                z_esigwv3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji,jj+1,jk) ) 
     
    25652539              END IF 
    25662540 
    2567               IF((ztmpf1 < 0._wp.OR.ABS(ztmpf) < rn_wdmin1).AND.ln_wd) THEN 
    2568                 z_esigtf3(ji,jj,jk) = 0.25_wp * ( z_esigt3(ji,jj,jk)   + z_esigt3(ji+1,jj,jk)  & 
    2569                    &                            + z_esigt3(ji,jj+1,jk) + z_esigt3(ji+1,jj+1,jk) ) 
     2541              IF( ln_wd .AND. (ztmpf1 < 0._wp.OR.ABS(ztmpf) < rn_wdmin1) ) THEN 
     2542                z_esigtf3(ji,jj,jk) = 0.25_wp * ( z_esigt3(ji,jj,jk)   + z_esigt3(ji+1,jj,jk)                 & 
     2543                       &                        + z_esigt3(ji,jj+1,jk) + z_esigt3(ji+1,jj+1,jk) ) 
    25702544              ELSE 
    2571                 z_esigtf3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk)  & 
    2572                    &                + hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk)+hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) ) & 
    2573                    &              / ztmpf 
     2545                z_esigtf3(ji,jj,jk) = ( hbatt(ji  ,jj  )*z_esigt3(ji  ,jj  ,jk)                               & 
     2546                       &              + hbatt(ji+1,jj  )*z_esigt3(ji+1,jj  ,jk)                               & 
     2547                       &              + hbatt(ji  ,jj+1)*z_esigt3(ji  ,jj+1,jk)                               & 
     2548                       &              + hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) ) / ztmpf 
    25742549              END IF 
    25752550 
    2576              !z_esigtu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk) ) / & 
    2577              !                    ( hbatt(ji,jj)+hbatt(ji+1,jj) ) 
    2578              !z_esigtv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk) ) / & 
    2579              !                    ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
    2580              !z_esigtf3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk) +  & 
    2581              !                      hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk)+hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) ) / & 
    2582              !                    ( hbatt(ji,jj)+hbatt(ji+1,jj)+hbatt(ji,jj+1)+hbatt(ji+1,jj+1) ) 
    2583              !z_esigwu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigw3(ji+1,jj,jk) ) / & 
    2584              !                    ( hbatt(ji,jj)+hbatt(ji+1,jj) ) 
    2585              !z_esigwv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigw3(ji,jj+1,jk) ) / & 
    2586              !                    ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
     2551             ! Code prior to wetting and drying option (for reference) 
     2552             !z_esigtu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk) )   & 
     2553             !                     /( hbatt(ji,jj)+hbatt(ji+1,jj) ) 
     2554             ! 
     2555             !z_esigwu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigw3(ji+1,jj,jk) )   & 
     2556             !                     /( hbatt(ji,jj)+hbatt(ji+1,jj) ) 
     2557             ! 
     2558             !z_esigtv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk) )   & 
     2559             !                     /( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
     2560             ! 
     2561             !z_esigwv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigw3(ji,jj+1,jk) )   & 
     2562             !                     /( hbatt(ji,jj)+hbatt(ji,jj+1) ) 
     2563             ! 
     2564             !z_esigtf3(ji,jj,jk) = ( hbatt(ji  ,jj  )*z_esigt3(ji  ,jj  ,jk)                                 & 
     2565             !                    &  +hbatt(ji+1,jj  )*z_esigt3(ji+1,jj  ,jk)                                 & 
     2566             !                       +hbatt(ji  ,jj+1)*z_esigt3(ji  ,jj+1,jk)                                 & 
     2567             !                    &  +hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) )                               & 
     2568             !                     /( hbatt(ji  ,jj  )+hbatt(ji+1,jj)+hbatt(ji,jj+1)+hbatt(ji+1,jj+1) ) 
    25872569 
    25882570             e3t_0(ji,jj,jk)=(scosrf(ji,jj)+hbatt(ji,jj))*z_esigt3(ji,jj,jk) 
Note: See TracChangeset for help on using the changeset viewer.