Changeset 5877
- Timestamp:
- 2015-11-11T18:19:12+01:00 (8 years ago)
- 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 1289 1289 rn_wdmin1 = 0.1 ! Minimum wet depth on dried cells 1290 1290 rn_wdmin2 = 0.01 ! Tolerance of min wet depth on dried cells 1291 rn_wdld = 20.0 ! Land elevation below which wetting/dryin sis allowed1291 rn_wdld = 20.0 ! Land elevation below which wetting/drying is allowed 1292 1292 nn_wdit = 10 ! Max iterations for W/D limiter 1293 1293 / -
branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
r5870 r5877 11 11 !! to the optimization of BDY communications 12 12 !! 3.7 ! 2015-11 (G. Madec) introduce surface and scale factor ratio 13 !! ! (H. Liu) Add arrays associated with Wetting and Drying14 13 !!---------------------------------------------------------------------- 15 14 -
branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r5870 r5877 1809 1809 REAL(wp) :: zrmax, ztaper ! temporary scalars 1810 1810 REAL(wp) :: zrfact 1811 REAL(wp) :: zsmth1812 1811 ! 1813 1812 REAL(wp), POINTER, DIMENSION(:,: ) :: ztmpi1, ztmpi2, ztmpj1, ztmpj2 … … 1865 1864 bathy(:,:) = MIN( rn_sbot_max, bathy(:,:) ) 1866 1865 1867 IF( .NOT.ln_wd) THEN1866 IF( .NOT.ln_wd ) THEN 1868 1867 DO jj = 1, jpj 1869 1868 DO ji = 1, jpi … … 1878 1877 zenv(:,:) = bathy(:,:) 1879 1878 ! 1880 IF( .NOT.ln_wd) THEN1879 IF( .NOT.ln_wd ) THEN 1881 1880 ! set first land point adjacent to a wet cell to sbot_min as this needs to be included in smoothing 1882 1881 DO jj = 1, jpj … … 1936 1935 zrj(:,:) = 0._wp 1937 1936 1938 !IF(ln_wd) THEN !extend the smoothed region to cover the W/D zones1939 ! zsmth = -rn_wdld1940 !ELSE1941 zsmth = 0._wp ! The original form (only smooth ocean points)1942 !ENDIF1943 1944 1937 DO jj = 1, nlcj 1945 1938 DO ji = 1, nlci 1946 1939 iip1 = MIN( ji+1, nlci ) ! force zri = 0 on last line (ji=ncli+1 to jpi) 1947 1940 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)) THEN1941 IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(iip1,jj) > 0._wp)) THEN 1949 1942 zri(ji,jj) = ( zenv(iip1,jj ) - zenv(ji,jj) ) / ( zenv(iip1,jj ) + zenv(ji,jj) ) 1950 1943 END IF 1951 IF( (zenv(ji,jj) > zsmth) .AND. (zenv(ji,ijp1) > zsmth)) THEN1944 IF( (zenv(ji,jj) > 0._wp) .AND. (zenv(ji,ijp1) > 0._wp)) THEN 1952 1945 zrj(ji,jj) = ( zenv(ji ,ijp1) - zenv(ji,jj) ) / ( zenv(ji ,ijp1) + zenv(ji,jj) ) 1953 1946 END IF … … 1972 1965 END DO ! End loop ! 1973 1966 ! ! ================ ! 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 1987 1972 ! 1988 1973 ! Envelope bathymetry saved in hbatt … … 2014 1999 IF(lwp) THEN 2015 2000 WRITE(numout,*) 2016 IF( .NOT.ln_wd) THEN2001 IF( .NOT.ln_wd ) THEN 2017 2002 WRITE(numout,*) ' zgr_sco: minimum depth of the envelop topography set to : ', rn_sbot_min 2018 2003 ELSE … … 2033 2018 END DO 2034 2019 2035 IF( ln_wd) THEN !avoid the zero depth on T- (U-,V-,F-) points2020 IF( ln_wd ) THEN !avoid the zero depth on T- (U-,V-,F-) points 2036 2021 DO jj = 1, jpj 2037 2022 DO ji = 1, jpi … … 2080 2065 2081 2066 !!bug: key_helsinki a verifer 2082 IF( .NOT.ln_wd) THEN2067 IF( .NOT.ln_wd ) THEN 2083 2068 hift(:,:) = MIN( hift(:,:), hbatt(:,:) ) 2084 2069 hifu(:,:) = MIN( hifu(:,:), hbatu(:,:) ) … … 2130 2115 fsde3w(:,:,:) = gdep3w_0(:,:,:) 2131 2116 ! 2132 IF( .NOT.ln_wd) THEN2117 IF( .NOT.ln_wd ) THEN 2133 2118 where (e3t_0 (:,:,:).eq.0.0) e3t_0(:,:,:) = 1.0 2134 2119 where (e3u_0 (:,:,:).eq.0.0) e3u_0(:,:,:) = 1.0 … … 2181 2166 END DO 2182 2167 2183 IF( ln_wd) THEN2168 IF( ln_wd ) THEN 2184 2169 IF( scobot(ji,jj) <= -(rn_wdld - rn_wdmin2)) THEN 2185 2170 mbathy(ji,jj) = 0 … … 2368 2353 DO jj = 1, jpjm1 2369 2354 ! 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) 2373 2358 ztmpu1 = hbatt(ji,jj)*hbatt(ji+1,jj) 2374 2359 ztmpv1 = hbatt(ji,jj)*hbatt(ji,jj+1) … … 2376 2361 & MAX(hbatt(ji,jj), hbatt(ji+1,jj), hbatt(ji,jj+1), hbatt(ji+1,jj+1)) 2377 2362 DO jk = 1, jpk 2378 IF( (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1).AND.ln_wd) THEN2363 IF( ln_wd .AND. (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1) ) THEN 2379 2364 z_esigtu3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji+1,jj,jk) ) 2380 2365 z_esigwu3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji+1,jj,jk) ) … … 2386 2371 END IF 2387 2372 2388 IF( (ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1).AND.ln_wd) THEN2373 IF( ln_wd .AND. (ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1) ) THEN 2389 2374 z_esigtv3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji,jj+1,jk) ) 2390 2375 z_esigwv3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji,jj+1,jk) ) … … 2396 2381 END IF 2397 2382 2398 IF( (ztmpf1 < 0._wp.OR.ABS(ztmpf) < rn_wdmin1).AND.ln_wd) THEN2399 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) ) 2401 2386 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 2405 2391 END IF 2406 2392 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) )2419 2393 ! 2420 2394 e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigt3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) … … 2537 2511 2538 2512 ! 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) 2542 2516 ztmpu1 = hbatt(ji,jj)*hbatt(ji+1,jj) 2543 2517 ztmpv1 = hbatt(ji,jj)*hbatt(ji,jj+1) … … 2545 2519 & MAX(hbatt(ji,jj), hbatt(ji+1,jj), hbatt(ji,jj+1), hbatt(ji+1,jj+1)) 2546 2520 DO jk = 1, jpk 2547 IF( (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1).AND.ln_wd) THEN2521 IF( ln_wd .AND. (ztmpu1 < 0._wp.OR.ABS(ztmpu) < rn_wdmin1) ) THEN 2548 2522 z_esigtu3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji+1,jj,jk) ) 2549 2523 z_esigwu3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji+1,jj,jk) ) … … 2555 2529 END IF 2556 2530 2557 IF( (ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1).AND.ln_wd) THEN2531 IF( ln_wd .AND. (ztmpv1 < 0._wp.OR.ABS(ztmpv) < rn_wdmin1) ) THEN 2558 2532 z_esigtv3(ji,jj,jk) = 0.5_wp * ( z_esigt3(ji,jj,jk) + z_esigt3(ji,jj+1,jk) ) 2559 2533 z_esigwv3(ji,jj,jk) = 0.5_wp * ( z_esigw3(ji,jj,jk) + z_esigw3(ji,jj+1,jk) ) … … 2565 2539 END IF 2566 2540 2567 IF( (ztmpf1 < 0._wp.OR.ABS(ztmpf) < rn_wdmin1).AND.ln_wd) THEN2568 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) ) 2570 2544 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 2574 2549 END IF 2575 2550 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) ) 2587 2569 2588 2570 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.