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 13463 for NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/DIA/diadct.F90 – NEMO

Ignore:
Timestamp:
2020-09-14T17:40:34+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2195:update to trunk 13461

Location:
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS

    • 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_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@13382        sette 
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/DIA/diadct.F90

    r10425 r13463  
    1111   !!            3.4  ! 09/2011 (C Bricaud) 
    1212   !!---------------------------------------------------------------------- 
    13 #if defined key_diadct 
    14    !!---------------------------------------------------------------------- 
    15    !!   'key_diadct' : 
    16    !!---------------------------------------------------------------------- 
     13#if ! defined key_agrif 
     14   !!                        ==>>  CAUTION: does not work with agrif 
    1715   !!---------------------------------------------------------------------- 
    1816   !!   dia_dct      :  Compute the transport through a sec. 
     
    4240 
    4341   PUBLIC   dia_dct      ! routine called by step.F90 
    44    PUBLIC   dia_dct_init ! routine called by opa.F90 
    45    PUBLIC   diadct_alloc ! routine called by nemo_init in nemogcm.F90  
    46    PRIVATE  readsec 
    47    PRIVATE  removepoints 
    48    PRIVATE  transport 
    49    PRIVATE  dia_dct_wri 
    50  
    51    LOGICAL, PUBLIC, PARAMETER ::   lk_diadct = .TRUE.   !: model-data diagnostics flag 
    52  
    53    INTEGER :: nn_dct        ! Frequency of computation 
    54    INTEGER :: nn_dctwri     ! Frequency of output 
    55    INTEGER :: nn_secdebug   ! Number of the section to debug 
     42   PUBLIC   dia_dct_init ! routine called by nemogcm.F90 
     43 
     44   !                         !!** namelist variables ** 
     45   LOGICAL, PUBLIC ::   ln_diadct     !: Calculate transport thru a section or not 
     46   INTEGER         ::   nn_dct        !  Frequency of computation 
     47   INTEGER         ::   nn_dctwri     !  Frequency of output 
     48   INTEGER         ::   nn_secdebug   !  Number of the section to debug 
    5649    
    5750   INTEGER, PARAMETER :: nb_class_max  = 10 
     
    7366   TYPE SECTION 
    7467      CHARACTER(len=60)                            :: name              ! name of the sec 
    75       LOGICAL                                      :: llstrpond         ! true if you want the computation of salt and 
    76                                                                        ! heat transports 
     68      LOGICAL                                      :: llstrpond         ! true if you want the computation of salt and heat transports 
    7769      LOGICAL                                      :: ll_ice_section    ! ice surface and ice volume computation 
    7870      LOGICAL                                      :: ll_date_line      ! = T if the section crosses the date-line 
     
    8173      INTEGER, DIMENSION(nb_point_max)             :: direction         ! vector direction of the point in the section 
    8274      CHARACTER(len=40),DIMENSION(nb_class_max)    :: classname         ! characteristics of the class 
    83       REAL(wp), DIMENSION(nb_class_max)            :: zsigi           ,&! in-situ   density classes    (99 if you don't want) 
    84                                                       zsigp           ,&! potential density classes    (99 if you don't want) 
    85                                                       zsal            ,&! salinity classes   (99 if you don't want) 
    86                                                       ztem            ,&! temperature classes(99 if you don't want) 
    87                                                       zlay              ! level classes      (99 if you don't want) 
     75      REAL(wp), DIMENSION(nb_class_max)            :: zsigi             ! in-situ   density classes    (99 if you don't want) 
     76      REAL(wp), DIMENSION(nb_class_max)            :: zsigp             ! potential density classes    (99 if you don't want) 
     77      REAL(wp), DIMENSION(nb_class_max)            :: zsal              ! salinity classes   (99 if you don't want) 
     78      REAL(wp), DIMENSION(nb_class_max)            :: ztem              ! temperature classes(99 if you don't want) 
     79      REAL(wp), DIMENSION(nb_class_max)            :: zlay              ! level classes      (99 if you don't want) 
    8880      REAL(wp), DIMENSION(nb_type_class,nb_class_max)  :: transport     ! transport output 
    8981      REAL(wp)                                         :: slopeSection  ! slope of the section 
     
    9789   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   ::  transports_2d   
    9890 
     91 
     92   !! * Substitutions 
     93#  include "domzgr_substitute.h90" 
    9994   !!---------------------------------------------------------------------- 
    10095   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    10297   !! Software governed by the CeCILL license (see ./LICENSE) 
    10398   !!---------------------------------------------------------------------- 
     99 
    104100CONTAINS 
    105101  
    106   INTEGER FUNCTION diadct_alloc()  
    107      !!----------------------------------------------------------------------  
    108      !!                   ***  FUNCTION diadct_alloc  ***  
    109      !!----------------------------------------------------------------------  
    110      INTEGER :: ierr(2)  
    111      !!----------------------------------------------------------------------  
    112  
    113      ALLOCATE(transports_3d(nb_3d_vars,nb_sec_max,nb_point_max,jpk), STAT=ierr(1) )  
    114      ALLOCATE(transports_2d(nb_2d_vars,nb_sec_max,nb_point_max)    , STAT=ierr(2) )  
    115  
    116      diadct_alloc = MAXVAL( ierr )  
    117      IF( diadct_alloc /= 0 )   CALL ctl_stop( 'STOP', 'diadct_alloc: failed to allocate arrays' )  
    118   
    119   END FUNCTION diadct_alloc  
    120  
     102   INTEGER FUNCTION diadct_alloc()  
     103      !!----------------------------------------------------------------------  
     104      !!                   ***  FUNCTION diadct_alloc  ***  
     105      !!----------------------------------------------------------------------  
     106 
     107      ALLOCATE( transports_3d(nb_3d_vars,nb_sec_max,nb_point_max,jpk), & 
     108         &      transports_2d(nb_2d_vars,nb_sec_max,nb_point_max)    , STAT=diadct_alloc )  
     109 
     110      CALL mpp_sum( 'diadct', diadct_alloc )  
     111      IF( diadct_alloc /= 0 )   CALL ctl_stop( 'STOP', 'diadct_alloc: failed to allocate arrays' )  
     112 
     113   END FUNCTION diadct_alloc 
    121114 
    122115   SUBROUTINE dia_dct_init 
     
    130123      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    131124      !! 
    132       NAMELIST/namdct/nn_dct,nn_dctwri,nn_secdebug 
     125      NAMELIST/nam_diadct/ln_diadct, nn_dct, nn_dctwri, nn_secdebug 
    133126      !!--------------------------------------------------------------------- 
    134127 
    135      REWIND( numnam_ref )              ! Namelist namdct in reference namelist : Diagnostic: transport through sections 
    136      READ  ( numnam_ref, namdct, IOSTAT = ios, ERR = 901) 
    137 901  IF( ios /= 0 ) CALL ctl_nam ( ios , 'namdct in reference namelist', lwp ) 
    138  
    139      REWIND( numnam_cfg )              ! Namelist namdct in configuration namelist : Diagnostic: transport through sections 
    140      READ  ( numnam_cfg, namdct, IOSTAT = ios, ERR = 902 ) 
    141 902  IF( ios >  0 ) CALL ctl_nam ( ios , 'namdct in configuration namelist', lwp ) 
    142      IF(lwm) WRITE ( numond, namdct ) 
     128     READ  ( numnam_ref, nam_diadct, IOSTAT = ios, ERR = 901) 
     129901  IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diadct in reference namelist' ) 
     130 
     131     READ  ( numnam_cfg, nam_diadct, IOSTAT = ios, ERR = 902 ) 
     132902  IF( ios >  0 ) CALL ctl_nam ( ios , 'nam_diadct in configuration namelist' ) 
     133     IF(lwm) WRITE ( numond, nam_diadct ) 
    143134 
    144135     IF( lwp ) THEN 
     
    146137        WRITE(numout,*) "diadct_init: compute transports through sections " 
    147138        WRITE(numout,*) "~~~~~~~~~~~~~~~~~~~~~" 
    148         WRITE(numout,*) "       Frequency of computation: nn_dct    = ",nn_dct 
    149         WRITE(numout,*) "       Frequency of write:       nn_dctwri = ",nn_dctwri 
     139        WRITE(numout,*) "       Calculate transport thru sections: ln_diadct = ", ln_diadct 
     140        WRITE(numout,*) "       Frequency of computation:          nn_dct    = ", nn_dct 
     141        WRITE(numout,*) "       Frequency of write:                nn_dctwri = ", nn_dctwri 
    150142 
    151143        IF      ( nn_secdebug .GE. 1 .AND. nn_secdebug .LE. nb_sec_max )THEN 
     
    155147        ELSE                              ; WRITE(numout,*)"       Wrong value for nn_secdebug : ",nn_secdebug 
    156148        ENDIF 
    157  
     149     ENDIF 
     150 
     151     IF( ln_diadct ) THEN 
     152        ! control 
    158153        IF(nn_dct .GE. nn_dctwri .AND. MOD(nn_dct,nn_dctwri) .NE. 0)  & 
    159           &  CALL ctl_stop( 'diadct: nn_dct should be smaller and a multiple of nn_dctwri' ) 
    160  
     154           &  CALL ctl_stop( 'diadct: nn_dct should be smaller and a multiple of nn_dctwri' ) 
     155 
     156        ! allocate dia_dct arrays 
     157        IF( diadct_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'diadct_alloc: failed to allocate arrays' ) 
     158 
     159        !Read section_ijglobal.diadct 
     160        CALL readsec 
     161 
     162        !open output file 
     163        IF( lwm ) THEN 
     164           CALL ctl_opn( numdct_vol,  'volume_transport', 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout,  .FALSE. ) 
     165           CALL ctl_opn( numdct_heat, 'heat_transport'  , 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout,  .FALSE. ) 
     166           CALL ctl_opn( numdct_salt, 'salt_transport'  , 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout,  .FALSE. ) 
     167        ENDIF 
     168 
     169        ! Initialise arrays to zero  
     170        transports_3d(:,:,:,:)=0.0  
     171        transports_2d(:,:,:)  =0.0  
     172        ! 
    161173     ENDIF 
    162  
    163      !Read section_ijglobal.diadct 
    164      CALL readsec 
    165  
    166      !open output file 
    167      IF( lwm ) THEN 
    168         CALL ctl_opn( numdct_vol,  'volume_transport', 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout,  .FALSE. ) 
    169         CALL ctl_opn( numdct_heat, 'heat_transport'  , 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout,  .FALSE. ) 
    170         CALL ctl_opn( numdct_salt, 'salt_transport'  , 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout,  .FALSE. ) 
    171      ENDIF 
    172  
    173      ! Initialise arrays to zero  
    174      transports_3d(:,:,:,:)=0.0  
    175      transports_2d(:,:,:)  =0.0  
    176174     ! 
    177175  END SUBROUTINE dia_dct_init 
    178176  
    179177  
    180   SUBROUTINE dia_dct( kt ) 
     178  SUBROUTINE dia_dct( kt, Kmm ) 
    181179     !!--------------------------------------------------------------------- 
    182180     !!               ***  ROUTINE diadct  ***   
     
    195193     !!               Reinitialise all relevant arrays to zero  
    196194     !!--------------------------------------------------------------------- 
    197      INTEGER, INTENT(in) ::   kt 
     195     INTEGER, INTENT(in) ::   kt    ! ocean time step 
     196     INTEGER, INTENT(in) ::   Kmm   ! time level index 
    198197     ! 
    199198     INTEGER ::   jsec              ! loop on sections 
     
    235234 
    236235           !Compute transport through section   
    237            CALL transport(secs(jsec),lldebug,jsec)  
     236           CALL transport(Kmm,secs(jsec),lldebug,jsec)  
    238237 
    239238        ENDDO 
     
    249248           ! Sum over each class  
    250249           DO jsec=1,nb_sec  
    251               CALL dia_dct_sum(secs(jsec),jsec)  
     250              CALL dia_dct_sum(Kmm,secs(jsec),jsec)  
    252251           ENDDO  
    253252 
     
    413412              ijloc=ijglo-njmpp+1   !  " 
    414413 
    415               !verify if the point is on the local domain:(1,nlei)*(1,nlej) 
    416               IF( iiloc >= 1 .AND. iiloc <= nlei .AND. & 
    417                   ijloc >= 1 .AND. ijloc <= nlej       )THEN 
     414              !verify if the point is on the local domain:(1,Nie0)*(1,Nje0) 
     415              IF( iiloc >= 1 .AND. iiloc <= Nie0 .AND. & 
     416                  ijloc >= 1 .AND. ijloc <= Nje0       )THEN 
    418417                 iptloc = iptloc + 1                                                 ! count local points 
    419418                 secs(jsec)%listPoint(iptloc) = POINT_SECTION(mi0(iiglo),mj0(ijglo)) ! store local coordinates 
     
    520519  
    521520     !which coordinate shall we verify ? 
    522      IF      ( cdind=='I' )THEN   ; itest=nlei ; iind=1 
    523      ELSE IF ( cdind=='J' )THEN   ; itest=nlej ; iind=2 
     521     IF      ( cdind=='I' )THEN   ; itest=Nie0 ; iind=1 
     522     ELSE IF ( cdind=='J' )THEN   ; itest=Nje0 ; iind=2 
    524523     ELSE    ; CALL ctl_stop("removepoints :Wrong value for cdind")  
    525524     ENDIF 
     
    561560 
    562561 
    563    SUBROUTINE transport(sec,ld_debug,jsec) 
     562   SUBROUTINE transport(Kmm,sec,ld_debug,jsec) 
    564563     !!------------------------------------------------------------------------------------------- 
    565564     !!                     ***  ROUTINE transport  *** 
     
    581580     !! 
    582581     !!------------------------------------------------------------------------------------------- 
     582     INTEGER      ,INTENT(IN)    :: Kmm         ! time level index 
    583583     TYPE(SECTION),INTENT(INOUT) :: sec 
    584584     LOGICAL      ,INTENT(IN)    :: ld_debug 
     
    676676            SELECT CASE( sec%direction(jseg) ) 
    677677               CASE(0,1)  
    678                   ztn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_tem) )  
    679                   zsn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )  
    680                   zrhop = interp(k%I,k%J,jk,'V',rhop)  
    681                   zrhoi = interp(k%I,k%J,jk,'V',rhd*rau0+rau0)  
    682                   zsshn =  0.5*( sshn(k%I,k%J) + sshn(k%I,k%J+1)    ) * vmask(k%I,k%J,1)  
     678                  ztn   = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_tem,Kmm) )  
     679                  zsn   = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) )  
     680                  zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop)  
     681                  zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0)  
     682                  zsshn =  0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I,k%J+1,Kmm)    ) * vmask(k%I,k%J,1)  
    683683               CASE(2,3)  
    684                   ztn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_tem) )  
    685                   zsn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )  
    686                   zrhop = interp(k%I,k%J,jk,'U',rhop)  
    687                   zrhoi = interp(k%I,k%J,jk,'U',rhd*rau0+rau0)  
    688                   zsshn =  0.5*( sshn(k%I,k%J) + sshn(k%I+1,k%J)    ) * umask(k%I,k%J,1)   
     684                  ztn   = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_tem,Kmm) )  
     685                  zsn   = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) )  
     686                  zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop)  
     687                  zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0)  
     688                  zsshn =  0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm)    ) * umask(k%I,k%J,1)   
    689689               END SELECT  
    690690               ! 
    691                zdep= gdept_n(k%I,k%J,jk)  
     691               zdep= gdept(k%I,k%J,jk,Kmm)  
    692692   
    693693               SELECT CASE( sec%direction(jseg) )                !compute velocity with the correct direction  
    694694               CASE(0,1)    
    695695                  zumid=0._wp 
    696                   zvmid=isgnv*vn(k%I,k%J,jk)*vmask(k%I,k%J,jk)  
     696                  zvmid=isgnv*vv(k%I,k%J,jk,Kmm)*vmask(k%I,k%J,jk)  
    697697               CASE(2,3)  
    698                   zumid=isgnu*un(k%I,k%J,jk)*umask(k%I,k%J,jk)  
     698                  zumid=isgnu*uu(k%I,k%J,jk,Kmm)*umask(k%I,k%J,jk)  
    699699                  zvmid=0._wp 
    700700               END SELECT  
     
    702702               !zTnorm=transport through one cell;  
    703703               !velocity* cell's length * cell's thickness  
    704                zTnorm = zumid*e2u(k%I,k%J) * e3u_n(k%I,k%J,jk)     &  
    705                   &   + zvmid*e1v(k%I,k%J) * e3v_n(k%I,k%J,jk)  
     704               zTnorm = zumid*e2u(k%I,k%J) * e3u(k%I,k%J,jk,Kmm)     &  
     705                  &   + zvmid*e1v(k%I,k%J) * e3v(k%I,k%J,jk,Kmm)  
    706706 
    707707!!gm  THIS is WRONG  no transport due to ssh in linear free surface case !!!!! 
     
    768768 
    769769 
    770   SUBROUTINE dia_dct_sum(sec,jsec)  
     770  SUBROUTINE dia_dct_sum(Kmm,sec,jsec)  
    771771     !!-------------------------------------------------------------  
    772772     !! Purpose: Average the transport over nn_dctwri time steps   
     
    787787     !!  
    788788     !!-------------------------------------------------------------  
     789     INTEGER      ,INTENT(IN)    :: Kmm         ! time level index 
    789790     TYPE(SECTION),INTENT(INOUT) :: sec  
    790791     INTEGER      ,INTENT(IN)    :: jsec        ! numeric identifier of section  
     
    848849              SELECT CASE( sec%direction(jseg) )  
    849850              CASE(0,1)  
    850                  ztn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_tem) )  
    851                  zsn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )  
    852                  zrhop = interp(k%I,k%J,jk,'V',rhop)  
    853                  zrhoi = interp(k%I,k%J,jk,'V',rhd*rau0+rau0)  
     851                 ztn   = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_tem,Kmm) )  
     852                 zsn   = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) )  
     853                 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop)  
     854                 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0)  
    854855 
    855856              CASE(2,3)  
    856                  ztn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_tem) )  
    857                  zsn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )  
    858                  zrhop = interp(k%I,k%J,jk,'U',rhop)  
    859                  zrhoi = interp(k%I,k%J,jk,'U',rhd*rau0+rau0)  
    860                  zsshn =  0.5*( sshn(k%I,k%J)    + sshn(k%I+1,k%J)    ) * umask(k%I,k%J,1)   
     857                 ztn   = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_tem,Kmm) )  
     858                 zsn   = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) )  
     859                 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop)  
     860                 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0)  
     861                 zsshn =  0.5*( ssh(k%I,k%J,Kmm)    + ssh(k%I+1,k%J,Kmm)    ) * umask(k%I,k%J,1)   
    861862              END SELECT  
    862863  
    863               zdep= gdept_n(k%I,k%J,jk)  
     864              zdep= gdept(k%I,k%J,jk,Kmm)  
    864865   
    865866              !-------------------------------  
     
    11041105 
    11051106 
    1106    FUNCTION interp(ki, kj, kk, cd_point, ptab) 
     1107   FUNCTION interp(Kmm, ki, kj, kk, cd_point, ptab) 
    11071108  !!---------------------------------------------------------------------- 
    11081109  !! 
     
    11211122  !!    |               |                  |       interpolation between ptab(I,J,K) and ptab(I,J,K+1) 
    11221123  !!    |               |                  |       zbis =  
    1123   !!    |               |                  |      [ e3w(I+1,J,K)*ptab(I,J,K) + ( e3w(I,J,K) - e3w(I+1,J,K) ) * ptab(I,J,K-1) ] 
    1124   !!    |               |                  |      /[ e3w(I+1,J,K) + e3w(I,J,K) - e3w(I+1,J,K) ]  
     1124  !!    |               |                  |      [ e3w_n(I+1,J,K,NOW)*ptab(I,J,K) + ( e3w_n(I,J,K,NOW) - e3w_n(I+1,J,K,NOW) ) * ptab(I,J,K-1) ] 
     1125  !!    |               |                  |     /[ e3w_n(I+1,J,K,NOW)             +   e3w_n(I,J,K,NOW) - e3w_n(I+1,J,K,NOW) ]  
    11251126  !!    |               |                  |  
    11261127  !!    |               |                  |    2. Horizontal interpolation: compute value at U/V point 
     
    11651166  !!---------------------------------------------------------------------- 
    11661167  !*arguments 
     1168  INTEGER, INTENT(IN)                          :: Kmm          ! time level index 
    11671169  INTEGER, INTENT(IN)                          :: ki, kj, kk   ! coordinate of point 
    11681170  CHARACTER(len=1), INTENT(IN)                 :: cd_point     ! type of point (U, V) 
     
    11991201  IF( ln_sco )THEN   ! s-coordinate case 
    12001202 
    1201      zdepu = ( gdept_n(ii1,ij1,kk) +  gdept_n(ii2,ij2,kk) ) * 0.5_wp  
    1202      zdep1 = gdept_n(ii1,ij1,kk) - zdepu 
    1203      zdep2 = gdept_n(ii2,ij2,kk) - zdepu 
     1203     zdepu = ( gdept(ii1,ij1,kk,Kmm) +  gdept(ii2,ij2,kk,Kmm) ) * 0.5_wp  
     1204     zdep1 = gdept(ii1,ij1,kk,Kmm) - zdepu 
     1205     zdep2 = gdept(ii2,ij2,kk,Kmm) - zdepu 
    12041206 
    12051207     ! weights 
     
    12131215  ELSE       ! full step or partial step case  
    12141216 
    1215      ze3t  = e3t_n(ii2,ij2,kk) - e3t_n(ii1,ij1,kk)  
    1216      zwgt1 = ( e3w_n(ii2,ij2,kk) - e3w_n(ii1,ij1,kk) ) / e3w_n(ii2,ij2,kk) 
    1217      zwgt2 = ( e3w_n(ii1,ij1,kk) - e3w_n(ii2,ij2,kk) ) / e3w_n(ii1,ij1,kk) 
     1217     ze3t  = e3t(ii2,ij2,kk,Kmm) - e3t(ii1,ij1,kk,Kmm)  
     1218     zwgt1 = ( e3w(ii2,ij2,kk,Kmm) - e3w(ii1,ij1,kk,Kmm) )   & 
     1219        &    / e3w(ii2,ij2,kk,Kmm) 
     1220     zwgt2 = ( e3w(ii1,ij1,kk,Kmm) - e3w(ii2,ij2,kk,Kmm) )   & 
     1221        &    / e3w(ii1,ij1,kk,Kmm) 
    12181222 
    12191223     IF(kk .NE. 1)THEN 
     
    12411245#else 
    12421246   !!---------------------------------------------------------------------- 
    1243    !!   Default option :                                       Dummy module 
     1247   !!   Dummy module                                              
    12441248   !!---------------------------------------------------------------------- 
    1245    LOGICAL, PUBLIC, PARAMETER ::   lk_diadct = .FALSE.    !: diamht flag 
    1246    PUBLIC  
    1247    !! $Id$ 
     1249   LOGICAL, PUBLIC ::   ln_diadct = .FALSE. 
    12481250CONTAINS 
    1249  
    1250    SUBROUTINE dia_dct_init          ! Dummy routine 
     1251   SUBROUTINE dia_dct_init 
    12511252      IMPLICIT NONE 
    1252       WRITE(*,*) 'dia_dct_init: You should not have seen this print! error?' 
    12531253   END SUBROUTINE dia_dct_init 
    12541254 
    1255    SUBROUTINE dia_dct( kt )         ! Dummy routine 
     1255   SUBROUTINE dia_dct( kt, Kmm )         ! Dummy routine 
    12561256      IMPLICIT NONE 
    12571257      INTEGER, INTENT( in ) :: kt   ! ocean time-step index 
     1258      INTEGER, INTENT( in ) :: Kmm  ! ocean time level index 
    12581259      WRITE(*,*) 'dia_dct: You should not have seen this print! error?', kt 
    12591260   END SUBROUTINE dia_dct 
     1261   ! 
    12601262#endif 
    12611263 
Note: See TracChangeset for help on using the changeset viewer.