- Timestamp:
- 2013-03-14T19:00:38+01:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r2715 r3839 78 78 !! ln_zco=T z-coordinate 79 79 !! ln_zps=T z-coordinate with partial steps 80 !! ln_ zco=T s-coordinate80 !! ln_sco=T s-coordinate 81 81 !! 82 82 !! ** Action : define gdep., e3., mbathy and bathy … … 124 124 IF( nprint == 1 .AND. lwp ) THEN 125 125 WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 126 WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ), &127 & ' w ', MINVAL( fsdepw(:,:,:) ), '3w ', MINVAL( fsde3w(:,:,:) )128 WRITE(numout,*) ' MIN val e3 t ', MINVAL( fse3t(:,:,:) ), ' f ', MINVAL( fse3f(:,:,:) ), &129 & ' u ', MINVAL( fse3u(:,:,:) ), ' u ', MINVAL( fse3v(:,:,:) ), &130 & ' uw', MINVAL( fse3uw(:,:,:)), ' vw', MINVAL( fse3vw(:,:,:)), &131 & ' w ', MINVAL( fse3w(:,:,:) )132 133 WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ), &134 & ' w ', MAXVAL( fsdepw(:,:,:) ), '3w ', MAXVAL( fsde3w(:,:,:) )135 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( fse3t(:,:,:) ), ' f ', MAXVAL( fse3f(:,:,:) ), &136 & ' u ', MAXVAL( fse3u(:,:,:) ), ' u ', MAXVAL( fse3v(:,:,:) ), &137 & ' uw', MAXVAL( fse3uw(:,:,:)), ' vw', MAXVAL( fse3vw(:,:,:)), &138 & ' w ', MAXVAL( fse3w(:,:,:) )126 WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ), & 127 & ' w ', MINVAL( gdepw_0(:,:,:) ), '3w ', MINVAL( gdep3w_0(:,:,:) ) 128 WRITE(numout,*) ' MIN val e3 t ', MINVAL( e3t_0(:,:,:) ), ' f ', MINVAL( e3f_0(:,:,:) ), & 129 & ' u ', MINVAL( e3u_0(:,:,:) ), ' u ', MINVAL( e3v_0(:,:,:) ), & 130 & ' uw', MINVAL( e3uw_0(:,:,:)), ' vw', MINVAL( e3vw_0(:,:,:)), & 131 & ' w ', MINVAL( e3w_0(:,:,:) ) 132 133 WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ), & 134 & ' w ', MAXVAL( gdepw_0(:,:,:) ), '3w ', MAXVAL( gdep3w_0(:,:,:) ) 135 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( e3t_0(:,:,:) ), ' f ', MAXVAL( e3f_0(:,:,:) ), & 136 & ' u ', MAXVAL( e3u_0(:,:,:) ), ' u ', MAXVAL( e3v_0(:,:,:) ), & 137 & ' uw', MAXVAL( e3uw_0(:,:,:)), ' vw', MAXVAL( e3vw_0(:,:,:)), & 138 & ' w ', MAXVAL( e3w_0(:,:,:) ) 139 139 ENDIF 140 140 ! … … 153 153 !! function the derivative of which gives the scale factors. 154 154 !! both depth and scale factors only depend on k (1d arrays). 155 !! w-level: gdepw_ 0 = fsdep(k)156 !! e3w_ 0(k) = dk(fsdep)(k) = fse3(k)157 !! t-level: gdept_ 0 = fsdep(k+0.5)158 !! e3t_ 0(k) = dk(fsdep)(k+0.5) = fse3(k+0.5)159 !! 160 !! ** Action : - gdept_ 0, gdepw_0: depth of T- and W-point (m)161 !! - e3t_ 0 , e3w_0: scale factors at T- and W-levels (m)155 !! w-level: gdepw_1d = gdep(k) 156 !! e3w_1d(k) = dk(gdep)(k) = e3(k) 157 !! t-level: gdept_1d = gdep(k+0.5) 158 !! e3t_1d(k) = dk(gdep)(k+0.5) = e3(k+0.5) 159 !! 160 !! ** Action : - gdept_1d, gdepw_1d : depth of T- and W-point (m) 161 !! - e3t_1d , e3w_1d : scale factors at T- and W-levels (m) 162 162 !! 163 163 !! Reference : Marti, Madec & Delecluse, 1992, JGR, 97, No8, 12,763-12,766. … … 229 229 zw = FLOAT( jk ) 230 230 zt = FLOAT( jk ) + 0.5_wp 231 gdepw_ 0(jk) = ( zw - 1 ) * za1232 gdept_ 0(jk) = ( zt - 1 ) * za1233 e3w_ 0(jk) = za1234 e3t_ 0(jk) = za1231 gdepw_1d(jk) = ( zw - 1 ) * za1 232 gdept_1d(jk) = ( zt - 1 ) * za1 233 e3w_1d (jk) = za1 234 e3t_1d (jk) = za1 235 235 END DO 236 236 ELSE ! Madec & Imbard 1996 function … … 239 239 zw = REAL( jk , wp ) 240 240 zt = REAL( jk , wp ) + 0.5_wp 241 gdepw_ 0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) ) )242 gdept_ 0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) ) )243 e3w_ 0(jk) = za0 + za1 * TANH( (zw-zkth) / zacr )244 e3t_ 0(jk) = za0 + za1 * TANH( (zt-zkth) / zacr )241 gdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) ) ) 242 gdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) ) ) 243 e3w_1d (jk) = za0 + za1 * TANH( (zw-zkth) / zacr ) 244 e3t_1d (jk) = za0 + za1 * TANH( (zt-zkth) / zacr ) 245 245 END DO 246 246 ELSE … … 249 249 zt = FLOAT( jk ) + 0.5_wp 250 250 ! Double tanh function 251 gdepw_ 0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth ) / zacr ) ) &252 & + za2 * zacr2* LOG ( COSH( (zw-zkth2) / zacr2 ) ) )253 gdept_ 0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth ) / zacr ) ) &254 & + za2 * zacr2* LOG ( COSH( (zt-zkth2) / zacr2 ) ) )255 e3w_ 0(jk) = za0 + za1 * TANH( (zw-zkth ) / zacr ) &256 & + za2 * TANH( (zw-zkth2) / zacr2 )257 e3t_ 0(jk) = za0 + za1 * TANH( (zt-zkth ) / zacr ) &258 & + za2 * TANH( (zt-zkth2) / zacr2 )251 gdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth ) / zacr ) ) & 252 & + za2 * zacr2* LOG ( COSH( (zw-zkth2) / zacr2 ) ) ) 253 gdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth ) / zacr ) ) & 254 & + za2 * zacr2* LOG ( COSH( (zt-zkth2) / zacr2 ) ) ) 255 e3w_1d (jk) = za0 + za1 * TANH( (zw-zkth ) / zacr ) & 256 & + za2 * TANH( (zw-zkth2) / zacr2 ) 257 e3t_1d (jk) = za0 + za1 * TANH( (zt-zkth ) / zacr ) & 258 & + za2 * TANH( (zt-zkth2) / zacr2 ) 259 259 END DO 260 260 ENDIF 261 gdepw_ 0(1) = 0._wp ! force first w-level to be exactly at zero261 gdepw_1d(1) = 0._wp ! force first w-level to be exactly at zero 262 262 ENDIF 263 263 264 264 !!gm BUG in s-coordinate this does not work! 265 265 ! deepest/shallowest W level Above/Below ~10m 266 zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_ 0 )! ref. depth with tolerance (10% of minimum layer thickness)267 nlb10 = MINLOC( gdepw_ 0, mask = gdepw_0> zrefdep, dim = 1 ) ! shallowest W level Below ~10m268 nla10 = nlb10 - 1 ! deepest W level Above ~10m266 zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_1d ) ! ref. depth with tolerance (10% of minimum layer thickness) 267 nlb10 = MINLOC( gdepw_1d, mask = gdepw_1d > zrefdep, dim = 1 ) ! shallowest W level Below ~10m 268 nla10 = nlb10 - 1 ! deepest W level Above ~10m 269 269 !!gm end bug 270 270 … … 272 272 WRITE(numout,*) 273 273 WRITE(numout,*) ' Reference z-coordinate depth and scale factors:' 274 WRITE(numout, "(9x,' level gdept gdepw e3t e3w')" )275 WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_ 0(jk), gdepw_0(jk), e3t_0(jk), e3w_0(jk), jk = 1, jpk )274 WRITE(numout, "(9x,' level gdept_1d gdepw_1d e3t_1d e3w_1d ')" ) 275 WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_1d(jk), gdepw_1d(jk), e3t_1d(jk), e3w_1d(jk), jk = 1, jpk ) 276 276 ENDIF 277 277 DO jk = 1, jpk ! control positivity 278 IF( e3w_ 0 (jk) <= 0._wp .OR. e3t_0 (jk) <= 0._wp ) CALL ctl_stop( 'dom:zgr_z: e3w or e3t=< 0 ' )279 IF( gdepw_ 0(jk) < 0._wp .OR. gdept_0(jk) < 0._wp ) CALL ctl_stop( 'dom:zgr_z: gdepw or gdept< 0 ' )278 IF( e3w_1d (jk) <= 0._wp .OR. e3t_1d (jk) <= 0._wp ) CALL ctl_stop( 'dom:zgr_z: e3w_1d or e3t_1d =< 0 ' ) 279 IF( gdepw_1d(jk) < 0._wp .OR. gdept_1d(jk) < 0._wp ) CALL ctl_stop( 'dom:zgr_z: gdepw_1d or gdept_1d < 0 ' ) 280 280 END DO 281 281 ! … … 336 336 IF(lwp) WRITE(numout,*) ' bathymetry field: flat basin' 337 337 idta(:,:) = jpkm1 ! before last level 338 zdta(:,:) = gdepw_ 0(jpk)! last w-point depth339 h_oce = gdepw_ 0(jpk)338 zdta(:,:) = gdepw_1d(jpk) ! last w-point depth 339 h_oce = gdepw_1d(jpk) 340 340 ELSE ! bump centered in the basin 341 341 IF(lwp) WRITE(numout,*) … … 345 345 r_bump = 50000._wp ! bump radius (meters) 346 346 h_bump = 2700._wp ! bump height (meters) 347 h_oce = gdepw_ 0(jpk)! background ocean depth (meters)347 h_oce = gdepw_1d(jpk) ! background ocean depth (meters) 348 348 IF(lwp) WRITE(numout,*) ' bump characteristics: ' 349 349 IF(lwp) WRITE(numout,*) ' bump center (i,j) = ', ii_bump, ii_bump … … 365 365 idta(:,:) = jpkm1 366 366 DO jk = 1, jpkm1 367 WHERE( gdept_ 0(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_0(jk+1) ) idta(:,:) = jk367 WHERE( gdept_1d(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_1d(jk+1) ) idta(:,:) = jk 368 368 END DO 369 369 ENDIF … … 502 502 ! ! =========================== ! 503 503 IF ( .not. ln_sco ) THEN 504 IF( rn_hmin < 0._wp ) THEN ; ik = - INT( rn_hmin ) ! from a nb of level505 ELSE ; ik = MINLOC( gdepw_ 0, mask = gdepw_0> rn_hmin, dim = 1 ) ! from a depth504 IF( rn_hmin < 0._wp ) THEN ; ik = - INT( rn_hmin ) ! from a nb of level 505 ELSE ; ik = MINLOC( gdepw_1d, mask = gdepw_1d > rn_hmin, dim = 1 ) ! from a depth 506 506 ENDIF 507 zhmin = gdepw_ 0(ik+1)! minimum depth = ik+1 w-levels507 zhmin = gdepw_1d(ik+1) ! minimum depth = ik+1 w-levels 508 508 WHERE( bathy(:,:) <= 0._wp ) ; bathy(:,:) = 0._wp ! min=0 over the lands 509 509 ELSE WHERE ; bathy(:,:) = MAX( zhmin , bathy(:,:) ) ! min=zhmin over the oceans … … 762 762 ! 763 763 DO jk = 1, jpk 764 fsdept(:,:,jk) = gdept_0(jk)765 fsdepw(:,:,jk) = gdepw_0(jk)766 fsde3w(:,:,jk) = gdepw_0(jk)767 fse3t (:,:,jk) = e3t_0(jk)768 fse3u (:,:,jk) = e3t_0(jk)769 fse3v (:,:,jk) = e3t_0(jk)770 fse3f (:,:,jk) = e3t_0(jk)771 fse3w (:,:,jk) = e3w_0(jk)772 fse3uw(:,:,jk) = e3w_0(jk)773 fse3vw(:,:,jk) = e3w_0(jk)764 gdept_0 (:,:,jk) = gdept_1d(jk) 765 gdepw_0 (:,:,jk) = gdepw_1d(jk) 766 gdep3w_0(:,:,jk) = gdepw_1d(jk) 767 e3t_0 (:,:,jk) = e3t_1d (jk) 768 e3u_0 (:,:,jk) = e3t_1d (jk) 769 e3v_0 (:,:,jk) = e3t_1d (jk) 770 e3f_0 (:,:,jk) = e3t_1d (jk) 771 e3w_0 (:,:,jk) = e3w_1d (jk) 772 e3uw_0 (:,:,jk) = e3w_1d (jk) 773 e3vw_0 (:,:,jk) = e3w_1d (jk) 774 774 END DO 775 775 ! … … 794 794 !! with partial steps on 3d arrays ( i, j, k ). 795 795 !! 796 !! w-level: gdepw (i,j,k) = fsdep(k)797 !! e3w (i,j,k) = dk(fsdep)(k) = fse3(i,j,k)798 !! t-level: gdept (i,j,k) = fsdep(k+0.5)799 !! e3t (i,j,k) = dk(fsdep)(k+0.5) = fse3(i,j,k+0.5)796 !! w-level: gdepw_0(i,j,k) = gdep(k) 797 !! e3w_0(i,j,k) = dk(gdep)(k) = e3(i,j,k) 798 !! t-level: gdept_0(i,j,k) = gdep(k+0.5) 799 !! e3t_0(i,j,k) = dk(gdep)(k+0.5) = e3(i,j,k+0.5) 800 800 !! 801 801 !! With the help of the bathymetric file ( bathymetry_depth_ORCA_R2.nc), … … 805 805 !! - bathy = 0 => mbathy = 0 806 806 !! - 1 < mbathy < jpkm1 807 !! - bathy > gdepw (jpk) => mbathy = jpkm1807 !! - bathy > gdepw_0(jpk) => mbathy = jpkm1 808 808 !! 809 809 !! Then, for each case, we find the new depth at t- and w- levels … … 817 817 !! schemes. 818 818 !! 819 !! c a u t i o n : gdept_ 0, gdepw_0and e3._0 are positives820 !! - - - - - - - gdept , gdepwand e3. are positives819 !! c a u t i o n : gdept_1d, gdepw_1d and e3._0 are positives 820 !! - - - - - - - gdept_0, gdepw_0 and e3. are positives 821 821 !! 822 822 !! Reference : Pacanowsky & Gnanadesikan 1997, Mon. Wea. Rev., 126, 3248-3270. … … 855 855 ! bathymetry in level (from bathy_meter) 856 856 ! =================== 857 zmax = gdepw_ 0(jpk) + e3t_0(jpk) ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_0(jpkm1) )857 zmax = gdepw_1d(jpk) + e3t_1d(jpk) ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_1d(jpkm1) ) 858 858 bathy(:,:) = MIN( zmax , bathy(:,:) ) ! bounded value of bathy (min already set at the end of zgr_bat) 859 859 WHERE( bathy(:,:) == 0._wp ) ; mbathy(:,:) = 0 ! land : set mbathy to 0 … … 863 863 ! Compute mbathy for ocean points (i.e. the number of ocean levels) 864 864 ! find the number of ocean levels such that the last level thickness 865 ! is larger than the minimum of e3zps_min and e3zps_rat * e3t_ 0(where866 ! e3t_ 0is the reference level thickness865 ! is larger than the minimum of e3zps_min and e3zps_rat * e3t_1d (where 866 ! e3t_1d is the reference level thickness 867 867 DO jk = jpkm1, 1, -1 868 zdepth = gdepw_ 0(jk) + MIN( e3zps_min, e3t_0(jk)*e3zps_rat )868 zdepth = gdepw_1d(jk) + MIN( e3zps_min, e3t_1d(jk)*e3zps_rat ) 869 869 WHERE( 0._wp < bathy(:,:) .AND. bathy(:,:) <= zdepth ) mbathy(:,:) = jk-1 870 870 END DO … … 872 872 ! Scale factors and depth at T- and W-points 873 873 DO jk = 1, jpk ! intitialization to the reference z-coordinate 874 gdept (:,:,jk) = gdept_0(jk)875 gdepw (:,:,jk) = gdepw_0(jk)876 e3t (:,:,jk) = e3t_0(jk)877 e3w (:,:,jk) = e3w_0(jk)874 gdept_0(:,:,jk) = gdept_1d(jk) 875 gdepw_0(:,:,jk) = gdepw_1d(jk) 876 e3t_0 (:,:,jk) = e3t_1d (jk) 877 e3w_0 (:,:,jk) = e3w_1d (jk) 878 878 END DO 879 879 ! … … 885 885 IF( ik == jpkm1 ) THEN 886 886 zdepwp = bathy(ji,jj) 887 ze3tp = bathy(ji,jj) - gdepw_ 0(ik)888 ze3wp = 0.5_wp * e3w_ 0(ik) * ( 1._wp + ( ze3tp/e3t_0(ik) ) )889 e3t (ji,jj,ik ) = ze3tp890 e3t (ji,jj,ik+1) = ze3tp891 e3w (ji,jj,ik ) = ze3wp892 e3w (ji,jj,ik+1) = ze3tp893 gdepw (ji,jj,ik+1) = zdepwp894 gdept (ji,jj,ik ) = gdept_0(ik-1) + ze3wp895 gdept (ji,jj,ik+1) = gdept(ji,jj,ik) + ze3tp887 ze3tp = bathy(ji,jj) - gdepw_1d(ik) 888 ze3wp = 0.5_wp * e3w_1d(ik) * ( 1._wp + ( ze3tp/e3t_1d(ik) ) ) 889 e3t_0(ji,jj,ik ) = ze3tp 890 e3t_0(ji,jj,ik+1) = ze3tp 891 e3w_0(ji,jj,ik ) = ze3wp 892 e3w_0(ji,jj,ik+1) = ze3tp 893 gdepw_0(ji,jj,ik+1) = zdepwp 894 gdept_0(ji,jj,ik ) = gdept_1d(ik-1) + ze3wp 895 gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + ze3tp 896 896 ! 897 897 ELSE ! standard case 898 IF( bathy(ji,jj) <= gdepw_ 0(ik+1) ) THEN ; gdepw(ji,jj,ik+1) = bathy(ji,jj)899 ELSE ; gdepw(ji,jj,ik+1) = gdepw_0(ik+1)898 IF( bathy(ji,jj) <= gdepw_1d(ik+1) ) THEN ; gdepw_0(ji,jj,ik+1) = bathy(ji,jj) 899 ELSE ; gdepw_0(ji,jj,ik+1) = gdepw_1d(ik+1) 900 900 ENDIF 901 !gm Bug? check the gdepw_ 0901 !gm Bug? check the gdepw_1d 902 902 ! ... on ik 903 gdept (ji,jj,ik) = gdepw_0(ik) + ( gdepw (ji,jj,ik+1) - gdepw_0(ik) ) &904 & * ((gdept_0( ik ) - gdepw_0(ik) ) &905 & / ( gdepw_0( ik+1) - gdepw_0(ik) ))906 e3t (ji,jj,ik) = e3t_0 (ik) * ( gdepw (ji,jj,ik+1) - gdepw_0(ik) ) &907 & / ( gdepw_ 0( ik+1) - gdepw_0(ik) )908 e3w (ji,jj,ik) = 0.5_wp * ( gdepw(ji,jj,ik+1) + gdepw_0(ik+1) - 2._wp * gdepw_0(ik) ) &909 & * ( e3w_ 0(ik) / ( gdepw_0(ik+1) - gdepw_0(ik) ) )903 gdept_0(ji,jj,ik) = gdepw_1d(ik) + ( gdepw_0 (ji,jj,ik+1) - gdepw_1d(ik) ) & 904 & * ((gdept_1d( ik ) - gdepw_1d(ik) ) & 905 & / ( gdepw_1d( ik+1) - gdepw_1d(ik) )) 906 e3t_0(ji,jj,ik) = e3t_1d (ik) * ( gdepw_0 (ji,jj,ik+1) - gdepw_1d(ik) ) & 907 & / ( gdepw_1d( ik+1) - gdepw_1d(ik) ) 908 e3w_0(ji,jj,ik) = 0.5_wp * ( gdepw_0(ji,jj,ik+1) + gdepw_1d(ik+1) - 2._wp * gdepw_1d(ik) ) & 909 & * ( e3w_1d(ik) / ( gdepw_1d(ik+1) - gdepw_1d(ik) ) ) 910 910 ! ... on ik+1 911 e3w (ji,jj,ik+1) = e3t(ji,jj,ik)912 e3t (ji,jj,ik+1) = e3t(ji,jj,ik)913 gdept (ji,jj,ik+1) = gdept(ji,jj,ik) + e3t(ji,jj,ik)911 e3w_0 (ji,jj,ik+1) = e3t_0 (ji,jj,ik) 912 e3t_0 (ji,jj,ik+1) = e3t_0 (ji,jj,ik) 913 gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + e3t_0(ji,jj,ik) 914 914 ENDIF 915 915 ENDIF … … 922 922 ik = mbathy(ji,jj) 923 923 IF( ik > 0 ) THEN ! ocean point only 924 e3tp (ji,jj) = e3t (ji,jj,ik)925 e3wp (ji,jj) = e3w (ji,jj,ik)924 e3tp (ji,jj) = e3t_0(ji,jj,ik) 925 e3wp (ji,jj) = e3w_0(ji,jj,ik) 926 926 ! test 927 zdiff= gdepw (ji,jj,ik+1) - gdept(ji,jj,ik )927 zdiff= gdepw_0(ji,jj,ik+1) - gdept_0(ji,jj,ik ) 928 928 IF( zdiff <= 0._wp .AND. lwp ) THEN 929 929 it = it + 1 930 930 WRITE(numout,*) ' it = ', it, ' ik = ', ik, ' (i,j) = ', ji, jj 931 931 WRITE(numout,*) ' bathy = ', bathy(ji,jj) 932 WRITE(numout,*) ' gdept = ', gdept(ji,jj,ik), ' gdepw = ', gdepw(ji,jj,ik+1), ' zdiff = ', zdiff933 WRITE(numout,*) ' e3tp = ', e3t (ji,jj,ik), ' e3wp = ', e3w(ji,jj,ik )932 WRITE(numout,*) ' gdept_0 = ', gdept_0(ji,jj,ik), ' gdepw_0 = ', gdepw_0(ji,jj,ik+1), ' zdiff = ', zdiff 933 WRITE(numout,*) ' e3tp = ', e3t_0 (ji,jj,ik), ' e3wp = ', e3w_0 (ji,jj,ik ) 934 934 ENDIF 935 935 ENDIF … … 939 939 ! Scale factors and depth at U-, V-, UW and VW-points 940 940 DO jk = 1, jpk ! initialisation to z-scale factors 941 e3u (:,:,jk) = e3t_0(jk)942 e3v (:,:,jk) = e3t_0(jk)943 e3uw (:,:,jk) = e3w_0(jk)944 e3vw (:,:,jk) = e3w_0(jk)941 e3u_0 (:,:,jk) = e3t_1d(jk) 942 e3v_0 (:,:,jk) = e3t_1d(jk) 943 e3uw_0(:,:,jk) = e3w_1d(jk) 944 e3vw_0(:,:,jk) = e3w_1d(jk) 945 945 END DO 946 946 DO jk = 1,jpk ! Computed as the minimum of neighbooring scale factors 947 947 DO jj = 1, jpjm1 948 948 DO ji = 1, fs_jpim1 ! vector opt. 949 e3u (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji+1,jj,jk) )950 e3v (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji,jj+1,jk) )951 e3uw (ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji+1,jj,jk) )952 e3vw (ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji,jj+1,jk) )953 END DO 954 END DO 955 END DO 956 CALL lbc_lnk( e3u , 'U', 1._wp ) ; CALL lbc_lnk( e3uw, 'U', 1._wp ) ! lateral boundary conditions957 CALL lbc_lnk( e3v , 'V', 1._wp ) ; CALL lbc_lnk( e3vw, 'V', 1._wp )949 e3u_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji+1,jj,jk) ) 950 e3v_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji,jj+1,jk) ) 951 e3uw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji+1,jj,jk) ) 952 e3vw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji,jj+1,jk) ) 953 END DO 954 END DO 955 END DO 956 CALL lbc_lnk( e3u_0 , 'U', 1._wp ) ; CALL lbc_lnk( e3uw_0, 'U', 1._wp ) ! lateral boundary conditions 957 CALL lbc_lnk( e3v_0 , 'V', 1._wp ) ; CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 958 958 ! 959 959 DO jk = 1, jpk ! set to z-scale factor if zero (i.e. along closed boundaries) 960 WHERE( e3u (:,:,jk) == 0._wp ) e3u (:,:,jk) = e3t_0(jk)961 WHERE( e3v (:,:,jk) == 0._wp ) e3v (:,:,jk) = e3t_0(jk)962 WHERE( e3uw (:,:,jk) == 0._wp ) e3uw(:,:,jk) = e3w_0(jk)963 WHERE( e3vw (:,:,jk) == 0._wp ) e3vw(:,:,jk) = e3w_0(jk)960 WHERE( e3u_0 (:,:,jk) == 0._wp ) e3u_0 (:,:,jk) = e3t_1d(jk) 961 WHERE( e3v_0 (:,:,jk) == 0._wp ) e3v_0 (:,:,jk) = e3t_1d(jk) 962 WHERE( e3uw_0(:,:,jk) == 0._wp ) e3uw_0(:,:,jk) = e3w_1d(jk) 963 WHERE( e3vw_0(:,:,jk) == 0._wp ) e3vw_0(:,:,jk) = e3w_1d(jk) 964 964 END DO 965 965 966 966 ! Scale factor at F-point 967 967 DO jk = 1, jpk ! initialisation to z-scale factors 968 e3f (:,:,jk) = e3t_0(jk)968 e3f_0(:,:,jk) = e3t_1d(jk) 969 969 END DO 970 970 DO jk = 1, jpk ! Computed as the minimum of neighbooring V-scale factors 971 971 DO jj = 1, jpjm1 972 972 DO ji = 1, fs_jpim1 ! vector opt. 973 e3f (ji,jj,jk) = MIN( e3v(ji,jj,jk), e3v(ji+1,jj,jk) )974 END DO 975 END DO 976 END DO 977 CALL lbc_lnk( e3f , 'F', 1._wp ) ! Lateral boundary conditions973 e3f_0(ji,jj,jk) = MIN( e3v_0(ji,jj,jk), e3v_0(ji+1,jj,jk) ) 974 END DO 975 END DO 976 END DO 977 CALL lbc_lnk( e3f_0, 'F', 1._wp ) ! Lateral boundary conditions 978 978 ! 979 979 DO jk = 1, jpk ! set to z-scale factor if zero (i.e. along closed boundaries) 980 WHERE( e3f (:,:,jk) == 0._wp ) e3f(:,:,jk) = e3t_0(jk)980 WHERE( e3f_0(:,:,jk) == 0._wp ) e3f_0(:,:,jk) = e3t_1d(jk) 981 981 END DO 982 982 !!gm bug ? : must be a do loop with mj0,mj1 983 983 ! 984 e3t (:,mj0(1),:) = e3t(:,mj0(2),:) ! we duplicate factor scales for jj = 1 and jj = 2985 e3w (:,mj0(1),:) = e3w(:,mj0(2),:)986 e3u (:,mj0(1),:) = e3u(:,mj0(2),:)987 e3v (:,mj0(1),:) = e3v(:,mj0(2),:)988 e3f (:,mj0(1),:) = e3f(:,mj0(2),:)984 e3t_0(:,mj0(1),:) = e3t_0(:,mj0(2),:) ! we duplicate factor scales for jj = 1 and jj = 2 985 e3w_0(:,mj0(1),:) = e3w_0(:,mj0(2),:) 986 e3u_0(:,mj0(1),:) = e3u_0(:,mj0(2),:) 987 e3v_0(:,mj0(1),:) = e3v_0(:,mj0(2),:) 988 e3f_0(:,mj0(1),:) = e3f_0(:,mj0(2),:) 989 989 990 990 ! Control of the sign 991 IF( MINVAL( e3t (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3t<= 0' )992 IF( MINVAL( e3w (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3w<= 0' )993 IF( MINVAL( gdept (:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdepw< 0' )994 IF( MINVAL( gdepw (:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdepw< 0' )991 IF( MINVAL( e3t_0 (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3t_0 <= 0' ) 992 IF( MINVAL( e3w_0 (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3w_0 <= 0' ) 993 IF( MINVAL( gdept_0(:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdept_0 < 0' ) 994 IF( MINVAL( gdepw_0(:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdepw_0 < 0' ) 995 995 996 ! Compute gdep3w (vertical sum of e3w)997 gdep3w (:,:,1) = 0.5_wp * e3w(:,:,1)996 ! Compute gdep3w_0 (vertical sum of e3w) 997 gdep3w_0(:,:,1) = 0.5_wp * e3w_0(:,:,1) 998 998 DO jk = 2, jpk 999 gdep3w (:,:,jk) = gdep3w(:,:,jk-1) + e3w(:,:,jk)999 gdep3w_0(:,:,jk) = gdep3w_0(:,:,jk-1) + e3w_0(:,:,jk) 1000 1000 END DO 1001 1001 … … 1006 1006 DO ji = 1, jpi 1007 1007 ik = MAX( mbathy(ji,jj), 1 ) 1008 zprt(ji,jj,1) = e3t (ji,jj,ik)1009 zprt(ji,jj,2) = e3w (ji,jj,ik)1010 zprt(ji,jj,3) = e3u (ji,jj,ik)1011 zprt(ji,jj,4) = e3v (ji,jj,ik)1012 zprt(ji,jj,5) = e3f (ji,jj,ik)1013 zprt(ji,jj,6) = gdep3w (ji,jj,ik)1008 zprt(ji,jj,1) = e3t_0 (ji,jj,ik) 1009 zprt(ji,jj,2) = e3w_0 (ji,jj,ik) 1010 zprt(ji,jj,3) = e3u_0 (ji,jj,ik) 1011 zprt(ji,jj,4) = e3v_0 (ji,jj,ik) 1012 zprt(ji,jj,5) = e3f_0 (ji,jj,ik) 1013 zprt(ji,jj,6) = gdep3w_0(ji,jj,ik) 1014 1014 END DO 1015 1015 END DO … … 1025 1025 WRITE(numout,*) 'domzgr e3f(mbathy)' ; CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 1026 1026 WRITE(numout,*) 1027 WRITE(numout,*) 'domzgr gdep3w (mbathy)'; CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)1027 WRITE(numout,*) 'domzgr gdep3w_0(mbathy)' ; CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 1028 1028 ENDIF 1029 1029 ! … … 1392 1392 zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 1393 1393 zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 1394 gdept (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigt3(ji,jj,jk)+rn_hc*zcoeft )1395 gdepw (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigw3(ji,jj,jk)+rn_hc*zcoefw )1396 gdep3w (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsi3w3(ji,jj,jk)+rn_hc*zcoeft )1394 gdept_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigt3(ji,jj,jk)+rn_hc*zcoeft ) 1395 gdepw_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsigw3(ji,jj,jk)+rn_hc*zcoefw ) 1396 gdep3w_0(ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*gsi3w3(ji,jj,jk)+rn_hc*zcoeft ) 1397 1397 END DO 1398 1398 ! … … 1415 1415 & / ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 1416 1416 ! 1417 e3t (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigt3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1418 e3u (ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigtu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1419 e3v (ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigtv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1420 e3f (ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*esigtf3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1417 e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigt3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1418 e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigtu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1419 e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigtv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1420 e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*esigtf3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1421 1421 ! 1422 e3w (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigw3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1423 e3uw (ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigwu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1424 e3vw (ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigwv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) )1422 e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*esigw3 (ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1423 e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*esigwu3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1424 e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*esigwv3(ji,jj,jk) + rn_hc/FLOAT(jpkm1) ) 1425 1425 END DO 1426 1426 END DO 1427 1427 END DO 1428 1428 1429 CALL lbc_lnk( e3t , 'T', 1._wp )1430 CALL lbc_lnk( e3u , 'U', 1._wp )1431 CALL lbc_lnk( e3v , 'V', 1._wp )1432 CALL lbc_lnk( e3f , 'F', 1._wp )1433 CALL lbc_lnk( e3w , 'W', 1._wp )1434 CALL lbc_lnk( e3uw , 'U', 1._wp )1435 CALL lbc_lnk( e3vw , 'V', 1._wp )1429 CALL lbc_lnk( e3t_0 , 'T', 1._wp ) 1430 CALL lbc_lnk( e3u_0 , 'U', 1._wp ) 1431 CALL lbc_lnk( e3v_0 , 'V', 1._wp ) 1432 CALL lbc_lnk( e3f_0 , 'F', 1._wp ) 1433 CALL lbc_lnk( e3w_0 , 'W', 1._wp ) 1434 CALL lbc_lnk( e3uw_0, 'U', 1._wp ) 1435 CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 1436 1436 1437 1437 ! … … 1470 1470 zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 1471 1471 zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 1472 gdept (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigt(jk) + hift(:,:)*zcoeft )1473 gdepw (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigw(jk) + hift(:,:)*zcoefw )1474 gdep3w (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsi3w(jk) + hift(:,:)*zcoeft )1472 gdept_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigt(jk) + hift(:,:)*zcoeft ) 1473 gdepw_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsigw(jk) + hift(:,:)*zcoefw ) 1474 gdep3w_0(:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*gsi3w(jk) + hift(:,:)*zcoeft ) 1475 1475 END DO 1476 1476 !!gm: e3uw, e3vw can be suppressed (modif in dynzdf, dynzdf_iso, zdfbfr) (save 2 3D arrays) … … 1478 1478 DO ji = 1, jpi 1479 1479 DO jk = 1, jpk 1480 e3t (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) )1481 e3u (ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) )1482 e3v (ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) )1483 e3f (ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) )1480 e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 1481 e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 1482 e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 1483 e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) ) 1484 1484 ! 1485 e3w (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) )1486 e3uw (ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) )1487 e3vw (ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) )1485 e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 1486 e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 1487 e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 1488 1488 END DO 1489 1489 END DO … … 1492 1492 ENDIF ! ln_s_sigma 1493 1493 1494 1495 !1496 !! H. Liu, POL. April 2009. Added for passing the scale check for the new released vvl code.1497 1498 fsdept(:,:,:) = gdept (:,:,:)1499 fsdepw(:,:,:) = gdepw (:,:,:)1500 fsde3w(:,:,:) = gdep3w(:,:,:)1501 fse3t (:,:,:) = e3t (:,:,:)1502 fse3u (:,:,:) = e3u (:,:,:)1503 fse3v (:,:,:) = e3v (:,:,:)1504 fse3f (:,:,:) = e3f (:,:,:)1505 fse3w (:,:,:) = e3w (:,:,:)1506 fse3uw(:,:,:) = e3uw (:,:,:)1507 fse3vw(:,:,:) = e3vw (:,:,:)1508 !!1509 1494 ! HYBRID : 1510 1495 DO jj = 1, jpj 1511 1496 DO ji = 1, jpi 1512 1497 DO jk = 1, jpkm1 1513 IF( scobot(ji,jj) >= fsdept(ji,jj,jk) ) mbathy(ji,jj) = MAX( 2, jk )1514 IF( scobot(ji,jj) == 0._wp ) mbathy(ji,jj) = 01498 IF( scobot(ji,jj) >= gdept_0(ji,jj,jk) ) mbathy(ji,jj) = MAX( 2, jk ) 1499 IF( scobot(ji,jj) == 0._wp ) mbathy(ji,jj) = 0 1515 1500 END DO 1516 1501 END DO … … 1528 1513 ENDIF 1529 1514 IF( nprint == 1 .AND. lwp ) THEN ! min max values over the local domain 1530 WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) )1531 WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ), &1532 & ' w ', MINVAL( fsdepw(:,:,:) ), '3w ' , MINVAL( fsde3w(:,:,:) )1533 WRITE(numout,*) ' MIN val e3 t ', MINVAL( fse3t (:,:,:) ), ' f ' , MINVAL( fse3f(:,:,:) ), &1534 & ' u ', MINVAL( fse3u (:,:,:) ), ' u ' , MINVAL( fse3v(:,:,:) ), &1535 & ' uw', MINVAL( fse3uw(:,:,:) ), ' vw' , MINVAL( fse3vw(:,:,:) ), &1536 & ' w ', MINVAL( fse3w(:,:,:) )1537 1538 WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ), &1539 & ' w ', MAXVAL( fsdepw(:,:,:) ), '3w ' , MAXVAL( fsde3w(:,:,:) )1540 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( fse3t (:,:,:) ), ' f ' , MAXVAL( fse3f(:,:,:) ), &1541 & ' u ', MAXVAL( fse3u (:,:,:) ), ' u ' , MAXVAL( fse3v(:,:,:) ), &1542 & ' uw', MAXVAL( fse3uw(:,:,:) ), ' vw' , MAXVAL( fse3vw(:,:,:) ), &1543 & ' w ', MAXVAL( fse3w(:,:,:) )1515 WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 1516 WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ), & 1517 & ' w ', MINVAL( gdepw_0(:,:,:) ), '3w ' , MINVAL( gdep3w_0(:,:,:) ) 1518 WRITE(numout,*) ' MIN val e3 t ', MINVAL( e3t_0 (:,:,:) ), ' f ' , MINVAL( e3f_0 (:,:,:) ), & 1519 & ' u ', MINVAL( e3u_0 (:,:,:) ), ' u ' , MINVAL( e3v_0 (:,:,:) ), & 1520 & ' uw', MINVAL( e3uw_0 (:,:,:) ), ' vw' , MINVAL( e3vw_0 (:,:,:) ), & 1521 & ' w ', MINVAL( e3w_0 (:,:,:) ) 1522 1523 WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ), & 1524 & ' w ', MAXVAL( gdepw_0(:,:,:) ), '3w ' , MAXVAL( gdep3w_0(:,:,:) ) 1525 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( e3t_0 (:,:,:) ), ' f ' , MAXVAL( e3f_0 (:,:,:) ), & 1526 & ' u ', MAXVAL( e3u_0 (:,:,:) ), ' u ' , MAXVAL( e3v_0 (:,:,:) ), & 1527 & ' uw', MAXVAL( e3uw_0 (:,:,:) ), ' vw' , MAXVAL( e3vw_0 (:,:,:) ), & 1528 & ' w ', MAXVAL( e3w_0 (:,:,:) ) 1544 1529 ENDIF 1545 1530 ! … … 1548 1533 WRITE(numout,*) ' domzgr: vertical coordinates : point (1,1,k) bathy = ', bathy(1,1), hbatt(1,1) 1549 1534 WRITE(numout,*) ' ~~~~~~ --------------------' 1550 WRITE(numout,"(9x,' level gdept gdepw gde3w e3t e3w')")1551 WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(1,1,jk), fsdepw(1,1,jk), &1552 & fse3t (1,1,jk), fse3w (1,1,jk), jk=1,jpk )1535 WRITE(numout,"(9x,' level gdept_0 gdepw_0 e3t_0 e3w_0')") 1536 WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(1,1,jk), gdepw_0(1,1,jk), & 1537 & e3t_0 (1,1,jk) , e3w_0 (1,1,jk) , jk=1,jpk ) 1553 1538 DO jj = mj0(20), mj1(20) 1554 1539 DO ji = mi0(20), mi1(20) … … 1556 1541 WRITE(numout,*) ' domzgr: vertical coordinates : point (20,20,k) bathy = ', bathy(ji,jj), hbatt(ji,jj) 1557 1542 WRITE(numout,*) ' ~~~~~~ --------------------' 1558 WRITE(numout,"(9x,' level gdept gdepw gde3w e3t e3w')")1559 WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk), &1560 & fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk )1543 WRITE(numout,"(9x,' level gdept_0 gdepw_0 e3t_0 e3w_0')") 1544 WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk), & 1545 & e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 1561 1546 END DO 1562 1547 END DO … … 1566 1551 WRITE(numout,*) ' domzgr: vertical coordinates : point (100,74,k) bathy = ', bathy(ji,jj), hbatt(ji,jj) 1567 1552 WRITE(numout,*) ' ~~~~~~ --------------------' 1568 WRITE(numout,"(9x,' level gdept gdepw gde3w e3t e3w')")1569 WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk), &1570 & fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk )1553 WRITE(numout,"(9x,' level gdept_0 gdepw_0 e3t_0 e3w_0')") 1554 WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk), & 1555 & e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 1571 1556 END DO 1572 1557 END DO … … 1577 1562 DO jj = 1, jpj 1578 1563 DO ji = 1, jpi 1579 IF( fse3w(ji,jj,jk) <= 0._wp .OR. fse3t(ji,jj,jk) <= 0._wp ) THEN1580 WRITE(ctmp1,*) 'zgr_sco : e3w or e3t=< 0 at point (i,j,k)= ', ji, jj, jk1564 IF( e3w_0(ji,jj,jk) <= 0._wp .OR. e3t_0(ji,jj,jk) <= 0._wp ) THEN 1565 WRITE(ctmp1,*) 'zgr_sco : e3w_0 or e3t_0 =< 0 at point (i,j,k)= ', ji, jj, jk 1581 1566 CALL ctl_stop( ctmp1 ) 1582 1567 ENDIF 1583 IF( fsdepw(ji,jj,jk) < 0._wp .OR. fsdept(ji,jj,jk) < 0._wp ) THEN1584 WRITE(ctmp1,*) 'zgr_sco : gdepw or gdept=< 0 at point (i,j,k)= ', ji, jj, jk1568 IF( gdepw_0(ji,jj,jk) < 0._wp .OR. gdept_0(ji,jj,jk) < 0._wp ) THEN 1569 WRITE(ctmp1,*) 'zgr_sco : gdepw_0 or gdept_0≈s =< 0 at point (i,j,k)= ', ji, jj, jk 1585 1570 CALL ctl_stop( ctmp1 ) 1586 1571 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.