New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 12377 for NEMO/trunk/src/OCE/DIA/diadct.F90 – NEMO

Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (4 years ago)
Author:
acc
Message:

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

Location:
NEMO/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
  • NEMO/trunk/src/OCE/DIA/diadct.F90

    r11536 r12377  
    123123      !!--------------------------------------------------------------------- 
    124124 
    125      REWIND( numnam_ref )              ! Namelist nam_diadct in reference namelist : Diagnostic: transport through sections 
    126125     READ  ( numnam_ref, nam_diadct, IOSTAT = ios, ERR = 901) 
    127126901  IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diadct in reference namelist' ) 
    128127 
    129      REWIND( numnam_cfg )              ! Namelist nam_diadct in configuration namelist : Diagnostic: transport through sections 
    130128     READ  ( numnam_cfg, nam_diadct, IOSTAT = ios, ERR = 902 ) 
    131129902  IF( ios >  0 ) CALL ctl_nam ( ios , 'nam_diadct in configuration namelist' ) 
     
    175173  
    176174  
    177   SUBROUTINE dia_dct( kt ) 
     175  SUBROUTINE dia_dct( kt, Kmm ) 
    178176     !!--------------------------------------------------------------------- 
    179177     !!               ***  ROUTINE diadct  ***   
     
    192190     !!               Reinitialise all relevant arrays to zero  
    193191     !!--------------------------------------------------------------------- 
    194      INTEGER, INTENT(in) ::   kt 
     192     INTEGER, INTENT(in) ::   kt    ! ocean time step 
     193     INTEGER, INTENT(in) ::   Kmm   ! time level index 
    195194     ! 
    196195     INTEGER ::   jsec              ! loop on sections 
     
    232231 
    233232           !Compute transport through section   
    234            CALL transport(secs(jsec),lldebug,jsec)  
     233           CALL transport(Kmm,secs(jsec),lldebug,jsec)  
    235234 
    236235        ENDDO 
     
    246245           ! Sum over each class  
    247246           DO jsec=1,nb_sec  
    248               CALL dia_dct_sum(secs(jsec),jsec)  
     247              CALL dia_dct_sum(Kmm,secs(jsec),jsec)  
    249248           ENDDO  
    250249 
     
    558557 
    559558 
    560    SUBROUTINE transport(sec,ld_debug,jsec) 
     559   SUBROUTINE transport(Kmm,sec,ld_debug,jsec) 
    561560     !!------------------------------------------------------------------------------------------- 
    562561     !!                     ***  ROUTINE transport  *** 
     
    578577     !! 
    579578     !!------------------------------------------------------------------------------------------- 
     579     INTEGER      ,INTENT(IN)    :: Kmm         ! time level index 
    580580     TYPE(SECTION),INTENT(INOUT) :: sec 
    581581     LOGICAL      ,INTENT(IN)    :: ld_debug 
     
    673673            SELECT CASE( sec%direction(jseg) ) 
    674674               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*( sshn(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)  
    680680               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*( sshn(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)   
    686686               END SELECT  
    687687               ! 
    688                zdep= gdept_n(k%I,k%J,jk)  
     688               zdep= gdept(k%I,k%J,jk,Kmm)  
    689689   
    690690               SELECT CASE( sec%direction(jseg) )                !compute velocity with the correct direction  
    691691               CASE(0,1)    
    692692                  zumid=0._wp 
    693                   zvmid=isgnv*vn(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)  
    694694               CASE(2,3)  
    695                   zumid=isgnu*un(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)  
    696696                  zvmid=0._wp 
    697697               END SELECT  
     
    699699               !zTnorm=transport through one cell;  
    700700               !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)  
    703703 
    704704!!gm  THIS is WRONG  no transport due to ssh in linear free surface case !!!!! 
     
    765765 
    766766 
    767   SUBROUTINE dia_dct_sum(sec,jsec)  
     767  SUBROUTINE dia_dct_sum(Kmm,sec,jsec)  
    768768     !!-------------------------------------------------------------  
    769769     !! Purpose: Average the transport over nn_dctwri time steps   
     
    784784     !!  
    785785     !!-------------------------------------------------------------  
     786     INTEGER      ,INTENT(IN)    :: Kmm         ! time level index 
    786787     TYPE(SECTION),INTENT(INOUT) :: sec  
    787788     INTEGER      ,INTENT(IN)    :: jsec        ! numeric identifier of section  
     
    845846              SELECT CASE( sec%direction(jseg) )  
    846847              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)  
    851852 
    852853              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*( sshn(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)   
    858859              END SELECT  
    859860  
    860               zdep= gdept_n(k%I,k%J,jk)  
     861              zdep= gdept(k%I,k%J,jk,Kmm)  
    861862   
    862863              !-------------------------------  
     
    11011102 
    11021103 
    1103    FUNCTION interp(ki, kj, kk, cd_point, ptab) 
     1104   FUNCTION interp(Kmm, ki, kj, kk, cd_point, ptab) 
    11041105  !!---------------------------------------------------------------------- 
    11051106  !! 
     
    11621163  !!---------------------------------------------------------------------- 
    11631164  !*arguments 
     1165  INTEGER, INTENT(IN)                          :: Kmm          ! time level index 
    11641166  INTEGER, INTENT(IN)                          :: ki, kj, kk   ! coordinate of point 
    11651167  CHARACTER(len=1), INTENT(IN)                 :: cd_point     ! type of point (U, V) 
     
    11961198  IF( ln_sco )THEN   ! s-coordinate case 
    11971199 
    1198      zdepu = ( gdept_n(ii1,ij1,kk) +  gdept_n(ii2,ij2,kk) ) * 0.5_wp  
    1199      zdep1 = gdept_n(ii1,ij1,kk) - zdepu 
    1200      zdep2 = gdept_n(ii2,ij2,kk) - zdepu 
     1200     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 
    12011203 
    12021204     ! weights 
     
    12101212  ELSE       ! full step or partial step case  
    12111213 
    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) 
    12151217 
    12161218     IF(kk .NE. 1)THEN 
     
    12451247      IMPLICIT NONE 
    12461248   END SUBROUTINE dia_dct_init 
    1247    SUBROUTINE dia_dct( kt ) 
     1249 
     1250   SUBROUTINE dia_dct( kt, Kmm )         ! Dummy routine 
    12481251      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 
    12501255   END SUBROUTINE dia_dct 
    12511256   ! 
Note: See TracChangeset for help on using the changeset viewer.