- Timestamp:
- 2013-04-09T18:34:38+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r3862 r3865 146 146 IF( nprint == 1 .AND. lwp ) THEN 147 147 WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 148 WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ), &149 & ' w ', MINVAL( fsdepw(:,:,:) ), '3w ', MINVAL( fsde3w(:,:,:) )150 WRITE(numout,*) ' MIN val e3 t ', MINVAL( fse3t(:,:,:) ), ' f ', MINVAL( fse3f(:,:,:) ), &151 & ' u ', MINVAL( fse3u(:,:,:) ), ' u ', MINVAL( fse3v(:,:,:) ), &152 & ' uw', MINVAL( fse3uw(:,:,:)), ' vw', MINVAL( fse3vw(:,:,:)), &153 & ' w ', MINVAL( fse3w(:,:,:) )154 155 WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ), &156 & ' w ', MAXVAL( fsdepw(:,:,:) ), '3w ', MAXVAL( fsde3w(:,:,:) )157 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( fse3t(:,:,:) ), ' f ', MAXVAL( fse3f(:,:,:) ), &158 & ' u ', MAXVAL( fse3u(:,:,:) ), ' u ', MAXVAL( fse3v(:,:,:) ), &159 & ' uw', MAXVAL( fse3uw(:,:,:)), ' vw', MAXVAL( fse3vw(:,:,:)), &160 & ' w ', MAXVAL( fse3w(:,:,:) )148 WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ), & 149 & ' w ', MINVAL( gdepw_0(:,:,:) ), '3w ', MINVAL( gdep3w_0(:,:,:) ) 150 WRITE(numout,*) ' MIN val e3 t ', MINVAL( e3t_0(:,:,:) ), ' f ', MINVAL( e3f_0(:,:,:) ), & 151 & ' u ', MINVAL( e3u_0(:,:,:) ), ' u ', MINVAL( e3v_0(:,:,:) ), & 152 & ' uw', MINVAL( e3uw_0(:,:,:)), ' vw', MINVAL( e3vw_0(:,:,:)), & 153 & ' w ', MINVAL( e3w_0(:,:,:) ) 154 155 WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ), & 156 & ' w ', MAXVAL( gdepw_0(:,:,:) ), '3w ', MAXVAL( gdep3w_0(:,:,:) ) 157 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( e3t_0(:,:,:) ), ' f ', MAXVAL( e3f_0(:,:,:) ), & 158 & ' u ', MAXVAL( e3u_0(:,:,:) ), ' u ', MAXVAL( e3v_0(:,:,:) ), & 159 & ' uw', MAXVAL( e3uw_0(:,:,:)), ' vw', MAXVAL( e3vw_0(:,:,:)), & 160 & ' w ', MAXVAL( e3w_0(:,:,:) ) 161 161 ENDIF 162 162 ! … … 177 177 !! function the derivative of which gives the scale factors. 178 178 !! both depth and scale factors only depend on k (1d arrays). 179 !! w-level: gdepw_1d = fsdep(k)180 !! e3w_1d(k) = dk( fsdep)(k) = fse3(k)181 !! t-level: gdept_1d = fsdep(k+0.5)182 !! e3t_1d(k) = dk( fsdep)(k+0.5) = fse3(k+0.5)179 !! w-level: gdepw_1d = gdep(k) 180 !! e3w_1d(k) = dk(gdep)(k) = e3(k) 181 !! t-level: gdept_1d = gdep(k+0.5) 182 !! e3t_1d(k) = dk(gdep)(k+0.5) = e3(k+0.5) 183 183 !! 184 184 !! ** Action : - gdept_1d, gdepw_1d : depth of T- and W-point (m) … … 298 298 WRITE(numout,*) 299 299 WRITE(numout,*) ' Reference z-coordinate depth and scale factors:' 300 WRITE(numout, "(9x,' level gdept gdepw e3t e3w')" )300 WRITE(numout, "(9x,' level gdept_1d gdepw_1d e3t_1d e3w_1d ')" ) 301 301 WRITE(numout, "(10x, i4, 4f9.2)" ) ( jk, gdept_1d(jk), gdepw_1d(jk), e3t_1d(jk), e3w_1d(jk), jk = 1, jpk ) 302 302 ENDIF 303 303 DO jk = 1, jpk ! control positivity 304 IF( e3w_1d (jk) <= 0._wp .OR. e3t_1d (jk) <= 0._wp ) CALL ctl_stop( 'dom:zgr_z: e3w or e3t=< 0 ' )305 IF( gdepw_1d(jk) < 0._wp .OR. gdept_1d(jk) < 0._wp ) CALL ctl_stop( 'dom:zgr_z: gdepw or gdept< 0 ' )304 IF( e3w_1d (jk) <= 0._wp .OR. e3t_1d (jk) <= 0._wp ) CALL ctl_stop( 'dom:zgr_z: e3w_1d or e3t_1d =< 0 ' ) 305 IF( gdepw_1d(jk) < 0._wp .OR. gdept_1d(jk) < 0._wp ) CALL ctl_stop( 'dom:zgr_z: gdepw_1d or gdept_1d < 0 ' ) 306 306 END DO 307 307 ! … … 369 369 IF(lwp) WRITE(numout,*) ' bathymetry field: flat basin' 370 370 idta(:,:) = jpkm1 ! before last level 371 zdta(:,:) = gdepw_1d(jpk) 371 zdta(:,:) = gdepw_1d(jpk) ! last w-point depth 372 372 h_oce = gdepw_1d(jpk) 373 373 ELSE ! bump centered in the basin … … 378 378 r_bump = 50000._wp ! bump radius (meters) 379 379 h_bump = 2700._wp ! bump height (meters) 380 h_oce = gdepw_1d(jpk) 380 h_oce = gdepw_1d(jpk) ! background ocean depth (meters) 381 381 IF(lwp) WRITE(numout,*) ' bump characteristics: ' 382 382 IF(lwp) WRITE(numout,*) ' bump center (i,j) = ', ii_bump, ii_bump … … 440 440 CALL iom_close( inum ) 441 441 mbathy(:,:) = INT( bathy(:,:) ) 442 ! 442 ! ! ===================== 443 443 IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN ! ORCA R2 configuration 444 ! 444 ! ! ===================== 445 445 IF( nn_cla == 0 ) THEN 446 446 ii0 = 140 ; ii1 = 140 ! Gibraltar Strait open … … 780 780 ! 781 781 DO jk = 1, jpk 782 gdept(:,:,jk) = gdept_1d(jk)783 gdepw(:,:,jk) = gdepw_1d(jk)784 gdep3w(:,:,jk) = gdepw_1d(jk)785 e3t (:,:,jk) = e3t_1d(jk)786 e3u (:,:,jk) = e3t_1d(jk)787 e3v (:,:,jk) = e3t_1d(jk)788 e3f (:,:,jk) = e3t_1d(jk)789 e3w (:,:,jk) = e3w_1d(jk)790 e3uw(:,:,jk) = e3w_1d(jk)791 e3vw(:,:,jk) = e3w_1d(jk)782 gdept_0 (:,:,jk) = gdept_1d(jk) 783 gdepw_0 (:,:,jk) = gdepw_1d(jk) 784 gdep3w_0(:,:,jk) = gdepw_1d(jk) 785 e3t_0 (:,:,jk) = e3t_1d (jk) 786 e3u_0 (:,:,jk) = e3t_1d (jk) 787 e3v_0 (:,:,jk) = e3t_1d (jk) 788 e3f_0 (:,:,jk) = e3t_1d (jk) 789 e3w_0 (:,:,jk) = e3w_1d (jk) 790 e3uw_0 (:,:,jk) = e3w_1d (jk) 791 e3vw_0 (:,:,jk) = e3w_1d (jk) 792 792 END DO 793 793 ! … … 814 814 !! with partial steps on 3d arrays ( i, j, k ). 815 815 !! 816 !! w-level: gdepw (i,j,k) = fsdep(k)817 !! e3w (i,j,k) = dk(fsdep)(k) = fse3(i,j,k)818 !! t-level: gdept (i,j,k) = fsdep(k+0.5)819 !! e3t (i,j,k) = dk(fsdep)(k+0.5) = fse3(i,j,k+0.5)816 !! w-level: gdepw_0(i,j,k) = gdep(k) 817 !! e3w_0(i,j,k) = dk(gdep)(k) = e3(i,j,k) 818 !! t-level: gdept_0(i,j,k) = gdep(k+0.5) 819 !! e3t_0(i,j,k) = dk(gdep)(k+0.5) = e3(i,j,k+0.5) 820 820 !! 821 821 !! With the help of the bathymetric file ( bathymetry_depth_ORCA_R2.nc), … … 825 825 !! - bathy = 0 => mbathy = 0 826 826 !! - 1 < mbathy < jpkm1 827 !! - bathy > gdepw (jpk) => mbathy = jpkm1827 !! - bathy > gdepw_0(jpk) => mbathy = jpkm1 828 828 !! 829 829 !! Then, for each case, we find the new depth at t- and w- levels … … 838 838 !! 839 839 !! c a u t i o n : gdept_1d, gdepw_1d and e3._1d are positives 840 !! - - - - - - - gdept , gdepwand e3. are positives840 !! - - - - - - - gdept_0, gdepw_0 and e3. are positives 841 841 !! 842 842 !! Reference : Pacanowsky & Gnanadesikan 1997, Mon. Wea. Rev., 126, 3248-3270. … … 891 891 ! Scale factors and depth at T- and W-points 892 892 DO jk = 1, jpk ! intitialization to the reference z-coordinate 893 gdept (:,:,jk) = gdept_1d(jk)894 gdepw (:,:,jk) = gdepw_1d(jk)895 e3t (:,:,jk) = e3t_1d (jk)896 e3w (:,:,jk) = e3w_1d (jk)893 gdept_0(:,:,jk) = gdept_1d(jk) 894 gdepw_0(:,:,jk) = gdepw_1d(jk) 895 e3t_0 (:,:,jk) = e3t_1d (jk) 896 e3w_0 (:,:,jk) = e3w_1d (jk) 897 897 END DO 898 898 ! … … 906 906 ze3tp = bathy(ji,jj) - gdepw_1d(ik) 907 907 ze3wp = 0.5_wp * e3w_1d(ik) * ( 1._wp + ( ze3tp/e3t_1d(ik) ) ) 908 e3t (ji,jj,ik ) = ze3tp909 e3t (ji,jj,ik+1) = ze3tp910 e3w (ji,jj,ik ) = ze3wp911 e3w (ji,jj,ik+1) = ze3tp912 gdepw (ji,jj,ik+1) = zdepwp913 gdept (ji,jj,ik ) = gdept_1d(ik-1) + ze3wp914 gdept (ji,jj,ik+1) = gdept(ji,jj,ik) + ze3tp908 e3t_0(ji,jj,ik ) = ze3tp 909 e3t_0(ji,jj,ik+1) = ze3tp 910 e3w_0(ji,jj,ik ) = ze3wp 911 e3w_0(ji,jj,ik+1) = ze3tp 912 gdepw_0(ji,jj,ik+1) = zdepwp 913 gdept_0(ji,jj,ik ) = gdept_1d(ik-1) + ze3wp 914 gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + ze3tp 915 915 ! 916 916 ELSE ! standard case 917 IF( bathy(ji,jj) <= gdepw_1d(ik+1) ) THEN ; gdepw (ji,jj,ik+1) = bathy(ji,jj)918 ELSE ; gdepw (ji,jj,ik+1) = gdepw_1d(ik+1)917 IF( bathy(ji,jj) <= gdepw_1d(ik+1) ) THEN ; gdepw_0(ji,jj,ik+1) = bathy(ji,jj) 918 ELSE ; gdepw_0(ji,jj,ik+1) = gdepw_1d(ik+1) 919 919 ENDIF 920 920 !gm Bug? check the gdepw_1d 921 921 ! ... on ik 922 gdept (ji,jj,ik) = gdepw_1d(ik) + ( gdepw(ji,jj,ik+1) - gdepw_1d(ik) ) &923 & * ((gdept_1d( ik ) - gdepw_1d(ik) ) &924 & / ( gdepw_1d( ik+1) - gdepw_1d(ik) ))925 e3t (ji,jj,ik) = e3t_1d (ik) * ( gdepw (ji,jj,ik+1) - gdepw_1d(ik) )&926 & 927 e3w (ji,jj,ik) = 0.5_wp * ( gdepw(ji,jj,ik+1) + gdepw_1d(ik+1) - 2._wp * gdepw_1d(ik) ) &922 gdept_0(ji,jj,ik) = gdepw_1d(ik) + ( gdepw_0 (ji,jj,ik+1) - gdepw_1d(ik) ) & 923 & * ((gdept_1d( ik ) - gdepw_1d(ik) ) & 924 & / ( gdepw_1d( ik+1) - gdepw_1d(ik) )) 925 e3t_0(ji,jj,ik) = e3t_1d (ik) * ( gdepw_0 (ji,jj,ik+1) - gdepw_1d(ik) ) & 926 & / ( gdepw_1d( ik+1) - gdepw_1d(ik) ) 927 e3w_0(ji,jj,ik) = 0.5_wp * ( gdepw_0(ji,jj,ik+1) + gdepw_1d(ik+1) - 2._wp * gdepw_1d(ik) ) & 928 928 & * ( e3w_1d(ik) / ( gdepw_1d(ik+1) - gdepw_1d(ik) ) ) 929 929 ! ... on ik+1 930 e3w (ji,jj,ik+1) = e3t(ji,jj,ik)931 e3t (ji,jj,ik+1) = e3t(ji,jj,ik)932 gdept (ji,jj,ik+1) = gdept(ji,jj,ik) + e3t(ji,jj,ik)930 e3w_0 (ji,jj,ik+1) = e3t_0 (ji,jj,ik) 931 e3t_0 (ji,jj,ik+1) = e3t_0 (ji,jj,ik) 932 gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + e3t_0(ji,jj,ik) 933 933 ENDIF 934 934 ENDIF … … 941 941 ik = mbathy(ji,jj) 942 942 IF( ik > 0 ) THEN ! ocean point only 943 e3tp (ji,jj) = e3t (ji,jj,ik)944 e3wp (ji,jj) = e3w (ji,jj,ik)943 e3tp (ji,jj) = e3t_0(ji,jj,ik) 944 e3wp (ji,jj) = e3w_0(ji,jj,ik) 945 945 ! test 946 zdiff= gdepw (ji,jj,ik+1) - gdept(ji,jj,ik )946 zdiff= gdepw_0(ji,jj,ik+1) - gdept_0(ji,jj,ik ) 947 947 IF( zdiff <= 0._wp .AND. lwp ) THEN 948 948 it = it + 1 949 949 WRITE(numout,*) ' it = ', it, ' ik = ', ik, ' (i,j) = ', ji, jj 950 950 WRITE(numout,*) ' bathy = ', bathy(ji,jj) 951 WRITE(numout,*) ' gdept = ', gdept(ji,jj,ik), ' gdepw = ', gdepw(ji,jj,ik+1), ' zdiff = ', zdiff952 WRITE(numout,*) ' e3tp = ', e3t (ji,jj,ik), ' e3wp = ', e3w(ji,jj,ik )951 WRITE(numout,*) ' gdept_0 = ', gdept_0(ji,jj,ik), ' gdepw_0 = ', gdepw_0(ji,jj,ik+1), ' zdiff = ', zdiff 952 WRITE(numout,*) ' e3tp = ', e3t_0 (ji,jj,ik), ' e3wp = ', e3w_0 (ji,jj,ik ) 953 953 ENDIF 954 954 ENDIF … … 958 958 ! Scale factors and depth at U-, V-, UW and VW-points 959 959 DO jk = 1, jpk ! initialisation to z-scale factors 960 e3u (:,:,jk) = e3t_1d(jk)961 e3v (:,:,jk) = e3t_1d(jk)962 e3uw (:,:,jk) = e3w_1d(jk)963 e3vw (:,:,jk) = e3w_1d(jk)960 e3u_0 (:,:,jk) = e3t_1d(jk) 961 e3v_0 (:,:,jk) = e3t_1d(jk) 962 e3uw_0(:,:,jk) = e3w_1d(jk) 963 e3vw_0(:,:,jk) = e3w_1d(jk) 964 964 END DO 965 965 DO jk = 1,jpk ! Computed as the minimum of neighbooring scale factors 966 966 DO jj = 1, jpjm1 967 967 DO ji = 1, fs_jpim1 ! vector opt. 968 e3u (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji+1,jj,jk) )969 e3v (ji,jj,jk) = MIN( e3t(ji,jj,jk), e3t(ji,jj+1,jk) )970 e3uw (ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji+1,jj,jk) )971 e3vw (ji,jj,jk) = MIN( e3w(ji,jj,jk), e3w(ji,jj+1,jk) )972 END DO 973 END DO 974 END DO 975 CALL lbc_lnk( e3u , 'U', 1._wp ) ; CALL lbc_lnk( e3uw, 'U', 1._wp ) ! lateral boundary conditions976 CALL lbc_lnk( e3v , 'V', 1._wp ) ; CALL lbc_lnk( e3vw, 'V', 1._wp )968 e3u_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji+1,jj,jk) ) 969 e3v_0 (ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji,jj+1,jk) ) 970 e3uw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji+1,jj,jk) ) 971 e3vw_0(ji,jj,jk) = MIN( e3w_0(ji,jj,jk), e3w_0(ji,jj+1,jk) ) 972 END DO 973 END DO 974 END DO 975 CALL lbc_lnk( e3u_0 , 'U', 1._wp ) ; CALL lbc_lnk( e3uw_0, 'U', 1._wp ) ! lateral boundary conditions 976 CALL lbc_lnk( e3v_0 , 'V', 1._wp ) ; CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 977 977 ! 978 978 DO jk = 1, jpk ! set to z-scale factor if zero (i.e. along closed boundaries) 979 WHERE( e3u (:,:,jk) == 0._wp ) e3u(:,:,jk) = e3t_1d(jk)980 WHERE( e3v (:,:,jk) == 0._wp ) e3v(:,:,jk) = e3t_1d(jk)981 WHERE( e3uw (:,:,jk) == 0._wp ) e3uw(:,:,jk) = e3w_1d(jk)982 WHERE( e3vw (:,:,jk) == 0._wp ) e3vw(:,:,jk) = e3w_1d(jk)979 WHERE( e3u_0 (:,:,jk) == 0._wp ) e3u_0 (:,:,jk) = e3t_1d(jk) 980 WHERE( e3v_0 (:,:,jk) == 0._wp ) e3v_0 (:,:,jk) = e3t_1d(jk) 981 WHERE( e3uw_0(:,:,jk) == 0._wp ) e3uw_0(:,:,jk) = e3w_1d(jk) 982 WHERE( e3vw_0(:,:,jk) == 0._wp ) e3vw_0(:,:,jk) = e3w_1d(jk) 983 983 END DO 984 984 985 985 ! Scale factor at F-point 986 986 DO jk = 1, jpk ! initialisation to z-scale factors 987 e3f (:,:,jk) = e3t_1d(jk)987 e3f_0(:,:,jk) = e3t_1d(jk) 988 988 END DO 989 989 DO jk = 1, jpk ! Computed as the minimum of neighbooring V-scale factors 990 990 DO jj = 1, jpjm1 991 991 DO ji = 1, fs_jpim1 ! vector opt. 992 e3f (ji,jj,jk) = MIN( e3v(ji,jj,jk), e3v(ji+1,jj,jk) )993 END DO 994 END DO 995 END DO 996 CALL lbc_lnk( e3f , 'F', 1._wp ) ! Lateral boundary conditions992 e3f_0(ji,jj,jk) = MIN( e3v_0(ji,jj,jk), e3v_0(ji+1,jj,jk) ) 993 END DO 994 END DO 995 END DO 996 CALL lbc_lnk( e3f_0, 'F', 1._wp ) ! Lateral boundary conditions 997 997 ! 998 998 DO jk = 1, jpk ! set to z-scale factor if zero (i.e. along closed boundaries) 999 WHERE( e3f (:,:,jk) == 0._wp ) e3f(:,:,jk) = e3t_1d(jk)999 WHERE( e3f_0(:,:,jk) == 0._wp ) e3f_0(:,:,jk) = e3t_1d(jk) 1000 1000 END DO 1001 1001 !!gm bug ? : must be a do loop with mj0,mj1 1002 1002 ! 1003 e3t (:,mj0(1),:) = e3t(:,mj0(2),:) ! we duplicate factor scales for jj = 1 and jj = 21004 e3w (:,mj0(1),:) = e3w(:,mj0(2),:)1005 e3u (:,mj0(1),:) = e3u(:,mj0(2),:)1006 e3v (:,mj0(1),:) = e3v(:,mj0(2),:)1007 e3f (:,mj0(1),:) = e3f(:,mj0(2),:)1003 e3t_0(:,mj0(1),:) = e3t_0(:,mj0(2),:) ! we duplicate factor scales for jj = 1 and jj = 2 1004 e3w_0(:,mj0(1),:) = e3w_0(:,mj0(2),:) 1005 e3u_0(:,mj0(1),:) = e3u_0(:,mj0(2),:) 1006 e3v_0(:,mj0(1),:) = e3v_0(:,mj0(2),:) 1007 e3f_0(:,mj0(1),:) = e3f_0(:,mj0(2),:) 1008 1008 1009 1009 ! Control of the sign 1010 IF( MINVAL( e3t (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3t<= 0' )1011 IF( MINVAL( e3w (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3w<= 0' )1012 IF( MINVAL( gdept (:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdepw< 0' )1013 IF( MINVAL( gdepw (:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdepw< 0' )1010 IF( MINVAL( e3t_0 (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3t_0 <= 0' ) 1011 IF( MINVAL( e3w_0 (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3w_0 <= 0' ) 1012 IF( MINVAL( gdept_0(:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdept_0 < 0' ) 1013 IF( MINVAL( gdepw_0(:,:,:) ) < 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r gdepw_0 < 0' ) 1014 1014 1015 ! Compute gdep3w (vertical sum of e3w)1016 gdep3w (:,:,1) = 0.5_wp * e3w(:,:,1)1015 ! Compute gdep3w_0 (vertical sum of e3w) 1016 gdep3w_0(:,:,1) = 0.5_wp * e3w_0(:,:,1) 1017 1017 DO jk = 2, jpk 1018 gdep3w (:,:,jk) = gdep3w(:,:,jk-1) + e3w(:,:,jk)1018 gdep3w_0(:,:,jk) = gdep3w_0(:,:,jk-1) + e3w_0(:,:,jk) 1019 1019 END DO 1020 1020 … … 1025 1025 DO ji = 1, jpi 1026 1026 ik = MAX( mbathy(ji,jj), 1 ) 1027 zprt(ji,jj,1) = e3t (ji,jj,ik)1028 zprt(ji,jj,2) = e3w (ji,jj,ik)1029 zprt(ji,jj,3) = e3u (ji,jj,ik)1030 zprt(ji,jj,4) = e3v (ji,jj,ik)1031 zprt(ji,jj,5) = e3f (ji,jj,ik)1032 zprt(ji,jj,6) = gdep3w (ji,jj,ik)1027 zprt(ji,jj,1) = e3t_0 (ji,jj,ik) 1028 zprt(ji,jj,2) = e3w_0 (ji,jj,ik) 1029 zprt(ji,jj,3) = e3u_0 (ji,jj,ik) 1030 zprt(ji,jj,4) = e3v_0 (ji,jj,ik) 1031 zprt(ji,jj,5) = e3f_0 (ji,jj,ik) 1032 zprt(ji,jj,6) = gdep3w_0(ji,jj,ik) 1033 1033 END DO 1034 1034 END DO … … 1356 1356 ENDIF 1357 1357 1358 CALL lbc_lnk( e3t , 'T', 1._wp )1359 CALL lbc_lnk( e3u , 'U', 1._wp )1360 CALL lbc_lnk( e3v , 'V', 1._wp )1361 CALL lbc_lnk( e3f , 'F', 1._wp )1362 CALL lbc_lnk( e3w , 'W', 1._wp )1363 CALL lbc_lnk( e3uw , 'U', 1._wp )1364 CALL lbc_lnk( e3vw , 'V', 1._wp )1365 1366 fsdepw(:,:,:) = gdepw (:,:,:)1367 fsde3w(:,:,:) = gdep3w (:,:,:)1368 ! 1369 where (e3t (:,:,:).eq.0.0) e3t(:,:,:) = 1.01370 where (e3u (:,:,:).eq.0.0) e3u(:,:,:) = 1.01371 where (e3v (:,:,:).eq.0.0) e3v(:,:,:) = 1.01372 where (e3f (:,:,:).eq.0.0) e3f(:,:,:) = 1.01373 where (e3w (:,:,:).eq.0.0) e3w(:,:,:) = 1.01374 where (e3uw (:,:,:).eq.0.0) e3uw(:,:,:) = 1.01375 where (e3vw (:,:,:).eq.0.0) e3vw(:,:,:) = 1.01376 1377 1378 fsdept(:,:,:) = gdept (:,:,:)1379 fsdepw(:,:,:) = gdepw (:,:,:)1380 fsde3w(:,:,:) = gdep3w (:,:,:)1381 fse3t (:,:,:) = e3t (:,:,:)1382 fse3u (:,:,:) = e3u (:,:,:)1383 fse3v (:,:,:) = e3v (:,:,:)1384 fse3f (:,:,:) = e3f (:,:,:)1385 fse3w (:,:,:) = e3w (:,:,:)1386 fse3uw(:,:,:) = e3uw (:,:,:)1387 fse3vw(:,:,:) = e3vw (:,:,:)1358 CALL lbc_lnk( e3t_0 , 'T', 1._wp ) 1359 CALL lbc_lnk( e3u_0 , 'U', 1._wp ) 1360 CALL lbc_lnk( e3v_0 , 'V', 1._wp ) 1361 CALL lbc_lnk( e3f_0 , 'F', 1._wp ) 1362 CALL lbc_lnk( e3w_0 , 'W', 1._wp ) 1363 CALL lbc_lnk( e3uw_0, 'U', 1._wp ) 1364 CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 1365 1366 fsdepw(:,:,:) = gdepw_0 (:,:,:) 1367 fsde3w(:,:,:) = gdep3w_0(:,:,:) 1368 ! 1369 where (e3t_0 (:,:,:).eq.0.0) e3t_0(:,:,:) = 1.0 1370 where (e3u_0 (:,:,:).eq.0.0) e3u_0(:,:,:) = 1.0 1371 where (e3v_0 (:,:,:).eq.0.0) e3v_0(:,:,:) = 1.0 1372 where (e3f_0 (:,:,:).eq.0.0) e3f_0(:,:,:) = 1.0 1373 where (e3w_0 (:,:,:).eq.0.0) e3w_0(:,:,:) = 1.0 1374 where (e3uw_0 (:,:,:).eq.0.0) e3uw_0(:,:,:) = 1.0 1375 where (e3vw_0 (:,:,:).eq.0.0) e3vw_0(:,:,:) = 1.0 1376 1377 1378 fsdept(:,:,:) = gdept_0 (:,:,:) 1379 fsdepw(:,:,:) = gdepw_0 (:,:,:) 1380 fsde3w(:,:,:) = gdep3w_0(:,:,:) 1381 fse3t (:,:,:) = e3t_0 (:,:,:) 1382 fse3u (:,:,:) = e3u_0 (:,:,:) 1383 fse3v (:,:,:) = e3v_0 (:,:,:) 1384 fse3f (:,:,:) = e3f_0 (:,:,:) 1385 fse3w (:,:,:) = e3w_0 (:,:,:) 1386 fse3uw(:,:,:) = e3uw_0 (:,:,:) 1387 fse3vw(:,:,:) = e3vw_0 (:,:,:) 1388 1388 !! 1389 1389 ! HYBRID : … … 1400 1400 1401 1401 IF( nprint == 1 .AND. lwp ) THEN ! min max values over the local domain 1402 WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) )1403 WRITE(numout,*) ' MIN val depth t ', MINVAL( fsdept(:,:,:) ), &1404 & ' w ', MINVAL( fsdepw(:,:,:) ), '3w ' , MINVAL( fsde3w(:,:,:) )1405 WRITE(numout,*) ' MIN val e3 t ', MINVAL( fse3t (:,:,:) ), ' f ' , MINVAL( fse3f(:,:,:) ), &1406 & ' u ', MINVAL( fse3u (:,:,:) ), ' u ' , MINVAL( fse3v(:,:,:) ), &1407 & ' uw', MINVAL( fse3uw(:,:,:) ), ' vw' , MINVAL( fse3vw(:,:,:) ), &1408 & ' w ', MINVAL( fse3w(:,:,:) )1409 1410 WRITE(numout,*) ' MAX val depth t ', MAXVAL( fsdept(:,:,:) ), &1411 & ' w ', MAXVAL( fsdepw(:,:,:) ), '3w ' , MAXVAL( fsde3w(:,:,:) )1412 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( fse3t (:,:,:) ), ' f ' , MAXVAL( fse3f(:,:,:) ), &1413 & ' u ', MAXVAL( fse3u (:,:,:) ), ' u ' , MAXVAL( fse3v(:,:,:) ), &1414 & ' uw', MAXVAL( fse3uw(:,:,:) ), ' vw' , MAXVAL( fse3vw(:,:,:) ), &1415 & ' w ', MAXVAL( fse3w(:,:,:) )1402 WRITE(numout,*) ' MIN val mbathy ', MINVAL( mbathy(:,:) ), ' MAX ', MAXVAL( mbathy(:,:) ) 1403 WRITE(numout,*) ' MIN val depth t ', MINVAL( gdept_0(:,:,:) ), & 1404 & ' w ', MINVAL( gdepw_0(:,:,:) ), '3w ' , MINVAL( gdep3w_0(:,:,:) ) 1405 WRITE(numout,*) ' MIN val e3 t ', MINVAL( e3t_0 (:,:,:) ), ' f ' , MINVAL( e3f_0 (:,:,:) ), & 1406 & ' u ', MINVAL( e3u_0 (:,:,:) ), ' u ' , MINVAL( e3v_0 (:,:,:) ), & 1407 & ' uw', MINVAL( e3uw_0 (:,:,:) ), ' vw' , MINVAL( e3vw_0 (:,:,:) ), & 1408 & ' w ', MINVAL( e3w_0 (:,:,:) ) 1409 1410 WRITE(numout,*) ' MAX val depth t ', MAXVAL( gdept_0(:,:,:) ), & 1411 & ' w ', MAXVAL( gdepw_0(:,:,:) ), '3w ' , MAXVAL( gdep3w_0(:,:,:) ) 1412 WRITE(numout,*) ' MAX val e3 t ', MAXVAL( e3t_0 (:,:,:) ), ' f ' , MAXVAL( e3f_0 (:,:,:) ), & 1413 & ' u ', MAXVAL( e3u_0 (:,:,:) ), ' u ' , MAXVAL( e3v_0 (:,:,:) ), & 1414 & ' uw', MAXVAL( e3uw_0 (:,:,:) ), ' vw' , MAXVAL( e3vw_0 (:,:,:) ), & 1415 & ' w ', MAXVAL( e3w_0 (:,:,:) ) 1416 1416 ENDIF 1417 1417 ! END DO … … 1420 1420 WRITE(numout,*) ' domzgr: vertical coordinates : point (1,1,k) bathy = ', bathy(1,1), hbatt(1,1) 1421 1421 WRITE(numout,*) ' ~~~~~~ --------------------' 1422 WRITE(numout,"(9x,' level gdept gdepw gde3w e3t e3w')")1423 WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(1,1,jk), fsdepw(1,1,jk), &1424 & fse3t (1,1,jk), fse3w (1,1,jk), jk=1,jpk )1422 WRITE(numout,"(9x,' level gdept_0 gdepw_0 e3t_0 e3w_0')") 1423 WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(1,1,jk), gdepw_0(1,1,jk), & 1424 & e3t_0 (1,1,jk) , e3w_0 (1,1,jk) , jk=1,jpk ) 1425 1425 DO jj = mj0(20), mj1(20) 1426 1426 DO ji = mi0(20), mi1(20) … … 1428 1428 WRITE(numout,*) ' domzgr: vertical coordinates : point (20,20,k) bathy = ', bathy(ji,jj), hbatt(ji,jj) 1429 1429 WRITE(numout,*) ' ~~~~~~ --------------------' 1430 WRITE(numout,"(9x,' level gdept gdepw gde3w e3t e3w')")1431 WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk), &1432 & fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk )1430 WRITE(numout,"(9x,' level gdept_0 gdepw_0 e3t_0 e3w_0')") 1431 WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk), & 1432 & e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 1433 1433 END DO 1434 1434 END DO … … 1438 1438 WRITE(numout,*) ' domzgr: vertical coordinates : point (100,74,k) bathy = ', bathy(ji,jj), hbatt(ji,jj) 1439 1439 WRITE(numout,*) ' ~~~~~~ --------------------' 1440 WRITE(numout,"(9x,' level gdept gdepw gde3w e3t e3w')")1441 WRITE(numout,"(10x,i4,4f9.2)") ( jk, fsdept(ji,jj,jk), fsdepw(ji,jj,jk), &1442 & fse3t (ji,jj,jk), fse3w (ji,jj,jk), jk=1,jpk )1440 WRITE(numout,"(9x,' level gdept_0 gdepw_0 e3t_0 e3w_0')") 1441 WRITE(numout,"(10x,i4,4f9.2)") ( jk, gdept_0(ji,jj,jk), gdepw_0(ji,jj,jk), & 1442 & e3t_0 (ji,jj,jk) , e3w_0 (ji,jj,jk) , jk=1,jpk ) 1443 1443 END DO 1444 1444 END DO … … 1558 1558 zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 1559 1559 zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 1560 gdept (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsigt3(ji,jj,jk)+rn_hc*zcoeft )1561 gdepw (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsigw3(ji,jj,jk)+rn_hc*zcoefw )1562 gdep3w (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsi3w3(ji,jj,jk)+rn_hc*zcoeft )1560 gdept_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsigt3(ji,jj,jk)+rn_hc*zcoeft ) 1561 gdepw_0 (ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsigw3(ji,jj,jk)+rn_hc*zcoefw ) 1562 gdep3w_0(ji,jj,jk) = ( scosrf(ji,jj) + (hbatt(ji,jj)-rn_hc)*z_gsi3w3(ji,jj,jk)+rn_hc*zcoeft ) 1563 1563 END DO 1564 1564 ! … … 1581 1581 & / ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 1582 1582 ! 1583 e3t (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigt3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) )1584 e3u (ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*z_esigtu3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) )1585 e3v (ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*z_esigtv3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) )1586 e3f (ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*z_esigtf3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) )1583 e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigt3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 1584 e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*z_esigtu3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 1585 e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*z_esigtv3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 1586 e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-rn_hc)*z_esigtf3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 1587 1587 ! 1588 e3w (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigw3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) )1589 e3uw (ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*z_esigwu3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) )1590 e3vw (ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*z_esigwv3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) )1588 e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-rn_hc)*z_esigw3 (ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 1589 e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-rn_hc)*z_esigwu3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 1590 e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-rn_hc)*z_esigwv3(ji,jj,jk) + rn_hc/REAL(jpkm1,wp) ) 1591 1591 END DO 1592 1592 END DO … … 1686 1686 1687 1687 DO jk = 1, jpk 1688 gdept (ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsigt3(ji,jj,jk)1689 gdepw (ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsigw3(ji,jj,jk)1690 gdep3w (ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsi3w3(ji,jj,jk)1688 gdept_0 (ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsigt3(ji,jj,jk) 1689 gdepw_0 (ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsigw3(ji,jj,jk) 1690 gdep3w_0(ji,jj,jk) = (scosrf(ji,jj)+hbatt(ji,jj))*z_gsi3w3(ji,jj,jk) 1691 1691 END DO 1692 1692 … … 1710 1710 ( hbatt(ji,jj)+hbatt(ji,jj+1) ) 1711 1711 1712 e3t (ji,jj,jk)=(scosrf(ji,jj)+hbatt(ji,jj))*z_esigt3(ji,jj,jk)1713 e3u (ji,jj,jk)=(scosrf(ji,jj)+hbatu(ji,jj))*z_esigtu3(ji,jj,jk)1714 e3v (ji,jj,jk)=(scosrf(ji,jj)+hbatv(ji,jj))*z_esigtv3(ji,jj,jk)1715 e3f (ji,jj,jk)=(scosrf(ji,jj)+hbatf(ji,jj))*z_esigtf3(ji,jj,jk)1712 e3t_0(ji,jj,jk)=(scosrf(ji,jj)+hbatt(ji,jj))*z_esigt3(ji,jj,jk) 1713 e3u_0(ji,jj,jk)=(scosrf(ji,jj)+hbatu(ji,jj))*z_esigtu3(ji,jj,jk) 1714 e3v_0(ji,jj,jk)=(scosrf(ji,jj)+hbatv(ji,jj))*z_esigtv3(ji,jj,jk) 1715 e3f_0(ji,jj,jk)=(scosrf(ji,jj)+hbatf(ji,jj))*z_esigtf3(ji,jj,jk) 1716 1716 ! 1717 e3w (ji,jj,jk)=hbatt(ji,jj)*z_esigw3(ji,jj,jk)1718 e3uw (ji,jj,jk)=hbatu(ji,jj)*z_esigwu3(ji,jj,jk)1719 e3vw (ji,jj,jk)=hbatv(ji,jj)*z_esigwv3(ji,jj,jk)1717 e3w_0(ji,jj,jk)=hbatt(ji,jj)*z_esigw3(ji,jj,jk) 1718 e3uw_0(ji,jj,jk)=hbatu(ji,jj)*z_esigwu3(ji,jj,jk) 1719 e3vw_0(ji,jj,jk)=hbatv(ji,jj)*z_esigwv3(ji,jj,jk) 1720 1720 END DO 1721 1721 … … 1723 1723 ENDDO 1724 1724 ! 1725 CALL lbc_lnk(e3t ,'T',1.) ; CALL lbc_lnk(e3u,'T',1.)1726 CALL lbc_lnk(e3v ,'T',1.) ; CALL lbc_lnk(e3f,'T',1.)1727 CALL lbc_lnk(e3w ,'T',1.)1728 CALL lbc_lnk(e3uw ,'T',1.) ; CALL lbc_lnk(e3vw,'T',1.)1725 CALL lbc_lnk(e3t_0 ,'T',1.) ; CALL lbc_lnk(e3u_0 ,'T',1.) 1726 CALL lbc_lnk(e3v_0 ,'T',1.) ; CALL lbc_lnk(e3f_0 ,'T',1.) 1727 CALL lbc_lnk(e3w_0 ,'T',1.) 1728 CALL lbc_lnk(e3uw_0,'T',1.) ; CALL lbc_lnk(e3vw_0,'T',1.) 1729 1729 ! 1730 1730 ! ! ============= … … 1784 1784 zcoeft = ( REAL(jk,wp) - 0.5_wp ) / REAL(jpkm1,wp) 1785 1785 zcoefw = ( REAL(jk,wp) - 1.0_wp ) / REAL(jpkm1,wp) 1786 gdept (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsigt(jk) + hift(:,:)*zcoeft )1787 gdepw (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsigw(jk) + hift(:,:)*zcoefw )1788 gdep3w (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsi3w(jk) + hift(:,:)*zcoeft )1786 gdept_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsigt(jk) + hift(:,:)*zcoeft ) 1787 gdepw_0 (:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsigw(jk) + hift(:,:)*zcoefw ) 1788 gdep3w_0(:,:,jk) = ( scosrf(:,:) + (hbatt(:,:)-hift(:,:))*z_gsi3w(jk) + hift(:,:)*zcoeft ) 1789 1789 END DO 1790 1790 !!gm: e3uw, e3vw can be suppressed (modif in dynzdf, dynzdf_iso, zdfbfr) (save 2 3D arrays) … … 1792 1792 DO ji = 1, jpi 1793 1793 DO jk = 1, jpk 1794 e3t (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*z_esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) )1795 e3u (ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*z_esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) )1796 e3v (ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*z_esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) )1797 e3f (ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*z_esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) )1794 e3t_0(ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*z_esigt(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 1795 e3u_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*z_esigt(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 1796 e3v_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*z_esigt(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 1797 e3f_0(ji,jj,jk) = ( (hbatf(ji,jj)-hiff(ji,jj))*z_esigt(jk) + hiff(ji,jj)/REAL(jpkm1,wp) ) 1798 1798 ! 1799 e3w (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*z_esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) )1800 e3uw (ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*z_esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) )1801 e3vw (ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*z_esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) )1799 e3w_0 (ji,jj,jk) = ( (hbatt(ji,jj)-hift(ji,jj))*z_esigw(jk) + hift(ji,jj)/REAL(jpkm1,wp) ) 1800 e3uw_0(ji,jj,jk) = ( (hbatu(ji,jj)-hifu(ji,jj))*z_esigw(jk) + hifu(ji,jj)/REAL(jpkm1,wp) ) 1801 e3vw_0(ji,jj,jk) = ( (hbatv(ji,jj)-hifv(ji,jj))*z_esigw(jk) + hifv(ji,jj)/REAL(jpkm1,wp) ) 1802 1802 END DO 1803 1803 END DO
Note: See TracChangeset
for help on using the changeset viewer.