Changeset 6827 for branches/2016/dev_r6409_SIMPLIF_2_usrdef_tools/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
- Timestamp:
- 2016-08-01T15:37:15+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6409_SIMPLIF_2_usrdef_tools/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r6492 r6827 37 37 USE oce ! ocean variables 38 38 USE dom_oce ! ocean domain 39 USE wet_dry ! wetting and drying40 39 USE closea ! closed seas 41 USE c1d ! 1D vertical configuration42 40 ! 43 41 USE in_out_manager ! I/O manager … … 147 145 CALL zgr_z ! Reference z-coordinate system (always called) 148 146 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 domain150 147 IF( ln_zco ) CALL zgr_zco ! z-coordinate 151 148 IF( ln_zps ) CALL zgr_zps ! Partial step z-coordinate … … 155 152 ! ----------------------------------- 156 153 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 points154 CALL zgr_bat_ctl ! check bathymetry (mbathy) and suppress isolated ocean points 158 155 CALL zgr_bot_level ! deepest ocean level for t-, u- and v-points 159 156 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 domain162 ibat = mbathy(2,2)163 mbathy(:,:) = ibat164 END IF165 157 ! 166 158 IF( nprint == 1 .AND. lwp ) THEN … … 1950 1942 bathy(:,:) = MIN( rn_sbot_max, bathy(:,:) ) 1951 1943 1952 IF( .NOT.ln_wd ) THEN1953 1944 DO jj = 1, jpj 1954 1945 DO ji = 1, jpi … … 1956 1947 END DO 1957 1948 END DO 1958 END IF1959 1949 ! ! ============================= 1960 1950 ! ! Define the envelop bathymetry (hbatt) … … 1963 1953 zenv(:,:) = bathy(:,:) 1964 1954 ! 1965 IF( .NOT.ln_wd ) THEN1966 1955 ! set first land point adjacent to a wet cell to sbot_min as this needs to be included in smoothing 1967 1956 DO jj = 1, jpj … … 1986 1975 END DO 1987 1976 END DO 1988 END IF1989 1977 1990 1978 ! apply lateral boundary condition CAUTION: keep the value when the lbc field is zero … … 2080 2068 IF(lwp) THEN 2081 2069 WRITE(numout,*) 2082 IF( .NOT.ln_wd ) THEN2083 2070 WRITE(numout,*) ' zgr_sco: minimum depth of the envelop topography set to : ', rn_sbot_min 2084 ELSE2085 WRITE(numout,*) ' zgr_sco: minimum positive depth of the envelop topography set to : ', rn_sbot_min2086 WRITE(numout,*) ' zgr_sco: minimum negative depth of the envelop topography set to : ', -rn_wdld2087 ENDIF2088 2071 ENDIF 2089 2072 hbatu(:,:) = rn_sbot_min … … 2099 2082 END DO 2100 2083 2101 IF( ln_wd ) THEN !avoid the zero depth on T- (U-,V-,F-) points2102 DO jj = 1, jpj2103 DO ji = 1, jpi2104 IF(ABS(hbatt(ji,jj)) < rn_wdmin1) &2105 & hbatt(ji,jj) = SIGN(1._wp, hbatt(ji,jj)) * rn_wdmin12106 IF(ABS(hbatu(ji,jj)) < rn_wdmin1) &2107 & hbatu(ji,jj) = SIGN(1._wp, hbatu(ji,jj)) * rn_wdmin12108 IF(ABS(hbatv(ji,jj)) < rn_wdmin1) &2109 & hbatv(ji,jj) = SIGN(1._wp, hbatv(ji,jj)) * rn_wdmin12110 IF(ABS(hbatf(ji,jj)) < rn_wdmin1) &2111 & hbatf(ji,jj) = SIGN(1._wp, hbatf(ji,jj)) * rn_wdmin12112 END DO2113 END DO2114 END IF2115 2084 ! 2116 2085 ! Apply lateral boundary condition … … 2146 2115 2147 2116 !!bug: key_helsinki a verifer 2148 IF( .NOT.ln_wd ) THEN2149 2117 hift(:,:) = MIN( hift(:,:), hbatt(:,:) ) 2150 2118 hifu(:,:) = MIN( hifu(:,:), hbatu(:,:) ) 2151 2119 hifv(:,:) = MIN( hifv(:,:), hbatv(:,:) ) 2152 2120 hiff(:,:) = MIN( hiff(:,:), hbatf(:,:) ) 2153 END IF2154 2121 2155 2122 IF( nprint == 1 .AND. lwp ) THEN … … 2193 2160 CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 2194 2161 ! 2195 IF( .NOT.ln_wd ) THEN2196 2162 WHERE( e3t_0 (:,:,:) == 0._wp ) e3t_0 (:,:,:) = 1._wp 2197 2163 WHERE( e3u_0 (:,:,:) == 0._wp ) e3u_0 (:,:,:) = 1._wp … … 2201 2167 WHERE( e3uw_0(:,:,:) == 0._wp ) e3uw_0(:,:,:) = 1._wp 2202 2168 WHERE( e3vw_0(:,:,:) == 0._wp ) e3vw_0(:,:,:) = 1._wp 2203 END IF2204 2169 2205 2170 #if defined key_agrif … … 2234 2199 IF( scobot(ji,jj) >= gdept_n(ji,jj,jk) ) mbathy(ji,jj) = MAX( 2, jk ) 2235 2200 END DO 2236 IF( ln_wd ) THEN2237 IF( scobot(ji,jj) <= -(rn_wdld - rn_wdmin2)) THEN2238 mbathy(ji,jj) = 02239 ELSEIF(scobot(ji,jj) <= rn_wdmin1) THEN2240 mbathy(ji,jj) = 22241 ENDIF2242 ELSE2243 IF( scobot(ji,jj) == 0._wp ) mbathy(ji,jj) = 02244 ENDIF2245 2201 END DO 2246 2202 END DO … … 2425 2381 & MAX(hbatt(ji,jj), hbatt(ji+1,jj), hbatt(ji,jj+1), hbatt(ji+1,jj+1)) 2426 2382 DO jk = 1, jpk 2427 IF( ln_wd .AND. (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1) ) THEN2428 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 ELSE2431 2383 z_esigtu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk) ) & 2432 2384 & / ztmpu 2433 2385 z_esigwu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigw3(ji+1,jj,jk) ) & 2434 2386 & / 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 2441 2388 z_esigtv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk) ) & 2442 2389 & / ztmpv 2443 2390 z_esigwv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigw3(ji,jj+1,jk) ) & 2444 2391 & / 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 2451 2393 z_esigtf3(ji,jj,jk) = ( hbatt(ji ,jj )*z_esigt3(ji ,jj ,jk) & 2452 2394 & + hbatt(ji+1,jj )*z_esigt3(ji+1,jj ,jk) & 2453 2395 & + hbatt(ji ,jj+1)*z_esigt3(ji ,jj+1,jk) & 2454 2396 & + hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) ) / ztmpf 2455 END IF2456 2397 2457 2398 ! … … 2582 2523 & MAX(hbatt(ji,jj), hbatt(ji+1,jj), hbatt(ji,jj+1), hbatt(ji+1,jj+1)) 2583 2524 DO jk = 1, jpk 2584 IF( ln_wd .AND. (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1) ) THEN2585 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 ELSE2588 2525 z_esigtu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigt3(ji+1,jj,jk) ) & 2589 2526 & / ztmpu 2590 2527 z_esigwu3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji+1,jj)*z_esigw3(ji+1,jj,jk) ) & 2591 2528 & / ztmpu 2592 END IF2593 2594 IF( ln_wd .AND. (ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1) ) THEN2595 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 ELSE2598 2529 z_esigtv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigt3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigt3(ji,jj+1,jk) ) & 2599 2530 & / ztmpv 2600 2531 z_esigwv3(ji,jj,jk) = ( hbatt(ji,jj)*z_esigw3(ji,jj,jk)+hbatt(ji,jj+1)*z_esigw3(ji,jj+1,jk) ) & 2601 2532 & / 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 2608 2534 z_esigtf3(ji,jj,jk) = ( hbatt(ji ,jj )*z_esigt3(ji ,jj ,jk) & 2609 2535 & + hbatt(ji+1,jj )*z_esigt3(ji+1,jj ,jk) & 2610 2536 & + hbatt(ji ,jj+1)*z_esigt3(ji ,jj+1,jk) & 2611 2537 & + hbatt(ji+1,jj+1)*z_esigt3(ji+1,jj+1,jk) ) / ztmpf 2612 END IF2613 2538 2614 2539 ! Code prior to wetting and drying option (for reference)
Note: See TracChangeset
for help on using the changeset viewer.