Changeset 12377 for NEMO/trunk/src/OCE/DIA/diadct.F90
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/OCE/DIA/diadct.F90
r11536 r12377 123 123 !!--------------------------------------------------------------------- 124 124 125 REWIND( numnam_ref ) ! Namelist nam_diadct in reference namelist : Diagnostic: transport through sections126 125 READ ( numnam_ref, nam_diadct, IOSTAT = ios, ERR = 901) 127 126 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diadct in reference namelist' ) 128 127 129 REWIND( numnam_cfg ) ! Namelist nam_diadct in configuration namelist : Diagnostic: transport through sections130 128 READ ( numnam_cfg, nam_diadct, IOSTAT = ios, ERR = 902 ) 131 129 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_diadct in configuration namelist' ) … … 175 173 176 174 177 SUBROUTINE dia_dct( kt )175 SUBROUTINE dia_dct( kt, Kmm ) 178 176 !!--------------------------------------------------------------------- 179 177 !! *** ROUTINE diadct *** … … 192 190 !! Reinitialise all relevant arrays to zero 193 191 !!--------------------------------------------------------------------- 194 INTEGER, INTENT(in) :: kt 192 INTEGER, INTENT(in) :: kt ! ocean time step 193 INTEGER, INTENT(in) :: Kmm ! time level index 195 194 ! 196 195 INTEGER :: jsec ! loop on sections … … 232 231 233 232 !Compute transport through section 234 CALL transport( secs(jsec),lldebug,jsec)233 CALL transport(Kmm,secs(jsec),lldebug,jsec) 235 234 236 235 ENDDO … … 246 245 ! Sum over each class 247 246 DO jsec=1,nb_sec 248 CALL dia_dct_sum( secs(jsec),jsec)247 CALL dia_dct_sum(Kmm,secs(jsec),jsec) 249 248 ENDDO 250 249 … … 558 557 559 558 560 SUBROUTINE transport( sec,ld_debug,jsec)559 SUBROUTINE transport(Kmm,sec,ld_debug,jsec) 561 560 !!------------------------------------------------------------------------------------------- 562 561 !! *** ROUTINE transport *** … … 578 577 !! 579 578 !!------------------------------------------------------------------------------------------- 579 INTEGER ,INTENT(IN) :: Kmm ! time level index 580 580 TYPE(SECTION),INTENT(INOUT) :: sec 581 581 LOGICAL ,INTENT(IN) :: ld_debug … … 673 673 SELECT CASE( sec%direction(jseg) ) 674 674 CASE(0,1) 675 ztn = interp( k%I,k%J,jk,'V',tsn(:,:,:,jp_tem) )676 zsn = interp( k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )677 zrhop = interp( k%I,k%J,jk,'V',rhop)678 zrhoi = interp( k%I,k%J,jk,'V',rhd*rau0+rau0)679 zsshn = 0.5*( ssh n(k%I,k%J) + sshn(k%I,k%J+1) ) * vmask(k%I,k%J,1)675 ztn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_tem,Kmm) ) 676 zsn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) ) 677 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop) 678 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rau0+rau0) 679 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I,k%J+1,Kmm) ) * vmask(k%I,k%J,1) 680 680 CASE(2,3) 681 ztn = interp( k%I,k%J,jk,'U',tsn(:,:,:,jp_tem) )682 zsn = interp( k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )683 zrhop = interp( k%I,k%J,jk,'U',rhop)684 zrhoi = interp( k%I,k%J,jk,'U',rhd*rau0+rau0)685 zsshn = 0.5*( ssh n(k%I,k%J) + sshn(k%I+1,k%J) ) * umask(k%I,k%J,1)681 ztn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_tem,Kmm) ) 682 zsn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) ) 683 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop) 684 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rau0+rau0) 685 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm) ) * umask(k%I,k%J,1) 686 686 END SELECT 687 687 ! 688 zdep= gdept _n(k%I,k%J,jk)688 zdep= gdept(k%I,k%J,jk,Kmm) 689 689 690 690 SELECT CASE( sec%direction(jseg) ) !compute velocity with the correct direction 691 691 CASE(0,1) 692 692 zumid=0._wp 693 zvmid=isgnv*v n(k%I,k%J,jk)*vmask(k%I,k%J,jk)693 zvmid=isgnv*vv(k%I,k%J,jk,Kmm)*vmask(k%I,k%J,jk) 694 694 CASE(2,3) 695 zumid=isgnu*u n(k%I,k%J,jk)*umask(k%I,k%J,jk)695 zumid=isgnu*uu(k%I,k%J,jk,Kmm)*umask(k%I,k%J,jk) 696 696 zvmid=0._wp 697 697 END SELECT … … 699 699 !zTnorm=transport through one cell; 700 700 !velocity* cell's length * cell's thickness 701 zTnorm = zumid*e2u(k%I,k%J) * e3u _n(k%I,k%J,jk) &702 & + zvmid*e1v(k%I,k%J) * e3v _n(k%I,k%J,jk)701 zTnorm = zumid*e2u(k%I,k%J) * e3u(k%I,k%J,jk,Kmm) & 702 & + zvmid*e1v(k%I,k%J) * e3v(k%I,k%J,jk,Kmm) 703 703 704 704 !!gm THIS is WRONG no transport due to ssh in linear free surface case !!!!! … … 765 765 766 766 767 SUBROUTINE dia_dct_sum( sec,jsec)767 SUBROUTINE dia_dct_sum(Kmm,sec,jsec) 768 768 !!------------------------------------------------------------- 769 769 !! Purpose: Average the transport over nn_dctwri time steps … … 784 784 !! 785 785 !!------------------------------------------------------------- 786 INTEGER ,INTENT(IN) :: Kmm ! time level index 786 787 TYPE(SECTION),INTENT(INOUT) :: sec 787 788 INTEGER ,INTENT(IN) :: jsec ! numeric identifier of section … … 845 846 SELECT CASE( sec%direction(jseg) ) 846 847 CASE(0,1) 847 ztn = interp( k%I,k%J,jk,'V',tsn(:,:,:,jp_tem) )848 zsn = interp( k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )849 zrhop = interp( k%I,k%J,jk,'V',rhop)850 zrhoi = interp( k%I,k%J,jk,'V',rhd*rau0+rau0)848 ztn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_tem,Kmm) ) 849 zsn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) ) 850 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop) 851 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rau0+rau0) 851 852 852 853 CASE(2,3) 853 ztn = interp( k%I,k%J,jk,'U',tsn(:,:,:,jp_tem) )854 zsn = interp( k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )855 zrhop = interp( k%I,k%J,jk,'U',rhop)856 zrhoi = interp( k%I,k%J,jk,'U',rhd*rau0+rau0)857 zsshn = 0.5*( ssh n(k%I,k%J) + sshn(k%I+1,k%J) ) * umask(k%I,k%J,1)854 ztn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_tem,Kmm) ) 855 zsn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) ) 856 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop) 857 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rau0+rau0) 858 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm) ) * umask(k%I,k%J,1) 858 859 END SELECT 859 860 860 zdep= gdept _n(k%I,k%J,jk)861 zdep= gdept(k%I,k%J,jk,Kmm) 861 862 862 863 !------------------------------- … … 1101 1102 1102 1103 1103 FUNCTION interp( ki, kj, kk, cd_point, ptab)1104 FUNCTION interp(Kmm, ki, kj, kk, cd_point, ptab) 1104 1105 !!---------------------------------------------------------------------- 1105 1106 !! … … 1162 1163 !!---------------------------------------------------------------------- 1163 1164 !*arguments 1165 INTEGER, INTENT(IN) :: Kmm ! time level index 1164 1166 INTEGER, INTENT(IN) :: ki, kj, kk ! coordinate of point 1165 1167 CHARACTER(len=1), INTENT(IN) :: cd_point ! type of point (U, V) … … 1196 1198 IF( ln_sco )THEN ! s-coordinate case 1197 1199 1198 zdepu = ( gdept _n(ii1,ij1,kk) + gdept_n(ii2,ij2,kk) ) * 0.5_wp1199 zdep1 = gdept _n(ii1,ij1,kk) - zdepu1200 zdep2 = gdept _n(ii2,ij2,kk) - zdepu1200 zdepu = ( gdept(ii1,ij1,kk,Kmm) + gdept(ii2,ij2,kk,Kmm) ) * 0.5_wp 1201 zdep1 = gdept(ii1,ij1,kk,Kmm) - zdepu 1202 zdep2 = gdept(ii2,ij2,kk,Kmm) - zdepu 1201 1203 1202 1204 ! weights … … 1210 1212 ELSE ! full step or partial step case 1211 1213 1212 ze3t = e3t _n(ii2,ij2,kk) - e3t_n(ii1,ij1,kk)1213 zwgt1 = ( e3w _n(ii2,ij2,kk) - e3w_n(ii1,ij1,kk) ) / e3w_n(ii2,ij2,kk)1214 zwgt2 = ( e3w _n(ii1,ij1,kk) - e3w_n(ii2,ij2,kk) ) / e3w_n(ii1,ij1,kk)1214 ze3t = e3t(ii2,ij2,kk,Kmm) - e3t(ii1,ij1,kk,Kmm) 1215 zwgt1 = ( e3w(ii2,ij2,kk,Kmm) - e3w(ii1,ij1,kk,Kmm) ) / e3w(ii2,ij2,kk,Kmm) 1216 zwgt2 = ( e3w(ii1,ij1,kk,Kmm) - e3w(ii2,ij2,kk,Kmm) ) / e3w(ii1,ij1,kk,Kmm) 1215 1217 1216 1218 IF(kk .NE. 1)THEN … … 1245 1247 IMPLICIT NONE 1246 1248 END SUBROUTINE dia_dct_init 1247 SUBROUTINE dia_dct( kt ) 1249 1250 SUBROUTINE dia_dct( kt, Kmm ) ! Dummy routine 1248 1251 IMPLICIT NONE 1249 INTEGER, INTENT(in) :: kt 1252 INTEGER, INTENT( in ) :: kt ! ocean time-step index 1253 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 1254 WRITE(*,*) 'dia_dct: You should not have seen this print! error?', kt 1250 1255 END SUBROUTINE dia_dct 1251 1256 !
Note: See TracChangeset
for help on using the changeset viewer.