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 6827 for branches/2016/dev_r6409_SIMPLIF_2_usrdef_tools/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90 – NEMO

Ignore:
Timestamp:
2016-08-01T15:37:15+02:00 (8 years ago)
Author:
flavoni
Message:

#1692 - branch SIMPLIF_2_usrdef: commit routines Fortran to create domain_cfg.nc file, to have domain (input) files for new simplification branch. To be moved in TOOLS directory

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6409_SIMPLIF_2_usrdef_tools/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r6492 r6827  
    3737   USE oce               ! ocean variables 
    3838   USE dom_oce           ! ocean domain 
    39    USE wet_dry           ! wetting and drying 
    4039   USE closea            ! closed seas 
    41    USE c1d               ! 1D vertical configuration 
    4240   ! 
    4341   USE in_out_manager    ! I/O manager 
     
    147145                          CALL zgr_z            ! Reference z-coordinate system (always called) 
    148146                          CALL zgr_bat          ! Bathymetry fields (levels and meters) 
    149       IF( lk_c1d      )   CALL lbc_lnk( bathy , 'T', 1._wp )   ! 1D config.: same bathy value over the 3x3 domain 
    150147      IF( ln_zco      )   CALL zgr_zco          ! z-coordinate 
    151148      IF( ln_zps      )   CALL zgr_zps          ! Partial step z-coordinate 
     
    155152      ! ----------------------------------- 
    156153      IF( lzoom       )   CALL zgr_bat_zoom     ! correct mbathy in case of zoom subdomain 
    157       IF( .NOT.lk_c1d )   CALL zgr_bat_ctl      ! check bathymetry (mbathy) and suppress isolated ocean points 
     154                          CALL zgr_bat_ctl      ! check bathymetry (mbathy) and suppress isolated ocean points 
    158155                          CALL zgr_bot_level    ! deepest ocean level for t-, u- and v-points 
    159156                          CALL zgr_top_level    ! shallowest ocean level for T-, U-, V- points 
    160       ! 
    161       IF( lk_c1d ) THEN                         ! 1D config.: same mbathy value over the 3x3 domain 
    162          ibat = mbathy(2,2) 
    163          mbathy(:,:) = ibat 
    164       END IF 
    165157      ! 
    166158      IF( nprint == 1 .AND. lwp )   THEN 
     
    19501942      bathy(:,:) = MIN( rn_sbot_max, bathy(:,:) ) 
    19511943 
    1952       IF( .NOT.ln_wd ) THEN                       
    19531944         DO jj = 1, jpj 
    19541945            DO ji = 1, jpi 
     
    19561947            END DO 
    19571948         END DO 
    1958       END IF 
    19591949      !                                        ! ============================= 
    19601950      !                                        ! Define the envelop bathymetry   (hbatt) 
     
    19631953      zenv(:,:) = bathy(:,:) 
    19641954      ! 
    1965       IF( .NOT.ln_wd ) THEN     
    19661955      ! set first land point adjacent to a wet cell to sbot_min as this needs to be included in smoothing 
    19671956         DO jj = 1, jpj 
     
    19861975            END DO 
    19871976         END DO 
    1988       END IF 
    19891977 
    19901978      ! apply lateral boundary condition   CAUTION: keep the value when the lbc field is zero 
     
    20802068      IF(lwp) THEN 
    20812069         WRITE(numout,*) 
    2082          IF( .NOT.ln_wd ) THEN 
    20832070           WRITE(numout,*) ' zgr_sco: minimum depth of the envelop topography set to : ', rn_sbot_min 
    2084          ELSE 
    2085            WRITE(numout,*) ' zgr_sco: minimum positive depth of the envelop topography set to : ', rn_sbot_min 
    2086            WRITE(numout,*) ' zgr_sco: minimum negative depth of the envelop topography set to : ', -rn_wdld 
    2087          ENDIF 
    20882071      ENDIF 
    20892072      hbatu(:,:) = rn_sbot_min 
     
    20992082      END DO 
    21002083 
    2101       IF( ln_wd ) THEN               !avoid the zero depth on T- (U-,V-,F-) points 
    2102         DO jj = 1, jpj 
    2103           DO ji = 1, jpi 
    2104             IF(ABS(hbatt(ji,jj)) < rn_wdmin1) & 
    2105               & hbatt(ji,jj) = SIGN(1._wp, hbatt(ji,jj)) * rn_wdmin1 
    2106             IF(ABS(hbatu(ji,jj)) < rn_wdmin1) & 
    2107               & hbatu(ji,jj) = SIGN(1._wp, hbatu(ji,jj)) * rn_wdmin1 
    2108             IF(ABS(hbatv(ji,jj)) < rn_wdmin1) & 
    2109               & hbatv(ji,jj) = SIGN(1._wp, hbatv(ji,jj)) * rn_wdmin1 
    2110             IF(ABS(hbatf(ji,jj)) < rn_wdmin1) & 
    2111               & hbatf(ji,jj) = SIGN(1._wp, hbatf(ji,jj)) * rn_wdmin1 
    2112           END DO 
    2113         END DO 
    2114       END IF 
    21152084      !  
    21162085      ! Apply lateral boundary condition 
     
    21462115 
    21472116!!bug:  key_helsinki a verifer 
    2148       IF( .NOT.ln_wd ) THEN 
    21492117        hift(:,:) = MIN( hift(:,:), hbatt(:,:) ) 
    21502118        hifu(:,:) = MIN( hifu(:,:), hbatu(:,:) ) 
    21512119        hifv(:,:) = MIN( hifv(:,:), hbatv(:,:) ) 
    21522120        hiff(:,:) = MIN( hiff(:,:), hbatf(:,:) ) 
    2153       END IF 
    21542121 
    21552122      IF( nprint == 1 .AND. lwp )   THEN 
     
    21932160      CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 
    21942161      ! 
    2195       IF( .NOT.ln_wd ) THEN 
    21962162        WHERE( e3t_0 (:,:,:) == 0._wp )   e3t_0 (:,:,:) = 1._wp 
    21972163        WHERE( e3u_0 (:,:,:) == 0._wp )   e3u_0 (:,:,:) = 1._wp 
     
    22012167        WHERE( e3uw_0(:,:,:) == 0._wp )   e3uw_0(:,:,:) = 1._wp 
    22022168        WHERE( e3vw_0(:,:,:) == 0._wp )   e3vw_0(:,:,:) = 1._wp 
    2203       END IF 
    22042169 
    22052170#if defined key_agrif 
     
    22342199               IF( scobot(ji,jj) >= gdept_n(ji,jj,jk) )   mbathy(ji,jj) = MAX( 2, jk ) 
    22352200            END DO 
    2236             IF( ln_wd ) THEN 
    2237               IF( scobot(ji,jj) <= -(rn_wdld - rn_wdmin2)) THEN 
    2238                 mbathy(ji,jj) = 0 
    2239               ELSEIF(scobot(ji,jj) <= rn_wdmin1) THEN 
    2240                 mbathy(ji,jj) = 2 
    2241               ENDIF 
    2242             ELSE 
    2243               IF( scobot(ji,jj) == 0._wp )   mbathy(ji,jj) = 0 
    2244             ENDIF 
    22452201         END DO 
    22462202      END DO 
     
    24252381                   & MAX(hbatt(ji,jj), hbatt(ji+1,jj), hbatt(ji,jj+1), hbatt(ji+1,jj+1)) 
    24262382            DO jk = 1, jpk 
    2427                IF( ln_wd .AND. (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1) ) THEN 
    2428                  z_esigtu3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji+1,jj,jk) ) 
    2429                  z_esigwu3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji+1,jj,jk) ) 
    2430                ELSE 
    24312383                 z_esigtu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk) ) & 
    24322384                        &              / ztmpu 
    24332385                 z_esigwu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigw3(ji+1,jj,jk) ) & 
    24342386                        &              / ztmpu 
    2435                END IF 
    2436  
    2437                IF( ln_wd .AND. (ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1) ) THEN 
    2438                  z_esigtv3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji,jj+1,jk) ) 
    2439                  z_esigwv3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji,jj+1,jk) ) 
    2440                ELSE 
     2387 
    24412388                 z_esigtv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk) ) & 
    24422389                        &              / ztmpv 
    24432390                 z_esigwv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigw3(ji,jj+1,jk) ) & 
    24442391                        &              / ztmpv 
    2445                END IF 
    2446  
    2447                IF( ln_wd .AND. (ztmpf1 < 0._wp.OR.ABS(ztmpf) < rn_wdmin1) ) THEN 
    2448                  z_esigtf3(ji,jj,jk) = 0.25_wp * ( z_esigt3(ji,jj  ,jk) + z_esigt3(ji+1,jj  ,jk)               & 
    2449                         &                        + z_esigt3(ji,jj+1,jk) + z_esigt3(ji+1,jj+1,jk) ) 
    2450                ELSE 
     2392 
    24512393                 z_esigtf3(ji,jj,jk) = ( hbatt(ji  ,jj  )*z_esigt3(ji  ,jj  ,jk)                               & 
    24522394                        &            +   hbatt(ji+1,jj  )*z_esigt3(ji+1,jj  ,jk)                               & 
    24532395                        &            +   hbatt(ji  ,jj+1)*z_esigt3(ji  ,jj+1,jk)                               & 
    24542396                        &            +   hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) ) / ztmpf 
    2455                END IF 
    24562397 
    24572398               ! 
     
    25822523                  & MAX(hbatt(ji,jj), hbatt(ji+1,jj), hbatt(ji,jj+1), hbatt(ji+1,jj+1)) 
    25832524           DO jk = 1, jpk 
    2584               IF( ln_wd .AND. (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1) ) THEN 
    2585                 z_esigtu3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji+1,jj,jk) ) 
    2586                 z_esigwu3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji+1,jj,jk) ) 
    2587               ELSE 
    25882525                z_esigtu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk) ) & 
    25892526                       &              / ztmpu 
    25902527                z_esigwu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigw3(ji+1,jj,jk) ) & 
    25912528                       &              / ztmpu 
    2592               END IF 
    2593  
    2594               IF( ln_wd .AND. (ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1) ) THEN 
    2595                 z_esigtv3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji,jj+1,jk) ) 
    2596                 z_esigwv3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji,jj+1,jk) ) 
    2597               ELSE 
    25982529                z_esigtv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk) ) & 
    25992530                       &              / ztmpv 
    26002531                z_esigwv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigw3(ji,jj+1,jk) ) & 
    26012532                       &              / ztmpv 
    2602               END IF 
    2603  
    2604               IF( ln_wd .AND. (ztmpf1 < 0._wp.OR.ABS(ztmpf) < rn_wdmin1) ) THEN 
    2605                 z_esigtf3(ji,jj,jk) = 0.25_wp * ( z_esigt3(ji,jj,jk)   + z_esigt3(ji+1,jj,jk)                 & 
    2606                        &                        + z_esigt3(ji,jj+1,jk) + z_esigt3(ji+1,jj+1,jk) ) 
    2607               ELSE 
     2533 
    26082534                z_esigtf3(ji,jj,jk) = ( hbatt(ji  ,jj  )*z_esigt3(ji  ,jj  ,jk)                               & 
    26092535                       &              + hbatt(ji+1,jj  )*z_esigt3(ji+1,jj  ,jk)                               & 
    26102536                       &              + hbatt(ji  ,jj+1)*z_esigt3(ji  ,jj+1,jk)                               & 
    26112537                       &              + hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) ) / ztmpf 
    2612               END IF 
    26132538 
    26142539             ! Code prior to wetting and drying option (for reference) 
Note: See TracChangeset for help on using the changeset viewer.