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 10946 for NEMO/branches/2019 – NEMO

Changeset 10946 for NEMO/branches/2019


Ignore:
Timestamp:
2019-05-08T10:56:14+02:00 (5 years ago)
Author:
acc
Message:

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : Convert STO, TRD and USR modules and all knock on effects of these conversions. Note change to USR module may have implications for the TEST CASES (not tested yet). Standard SETTE tested only

Location:
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src
Files:
51 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynadv_cen2.F90

    r10928 r10946  
    9292         zfu_uw(:,:,:) = puu(:,:,:,Krhs) - zfu_uw(:,:,:) 
    9393         zfv_vw(:,:,:) = pvv(:,:,:,Krhs) - zfv_vw(:,:,:) 
    94          CALL trd_dyn( zfu_uw, zfv_vw, jpdyn_keg, kt ) 
     94         CALL trd_dyn( zfu_uw, zfv_vw, jpdyn_keg, kt, Kmm ) 
    9595         zfu_t(:,:,:) = puu(:,:,:,Krhs) 
    9696         zfv_t(:,:,:) = pvv(:,:,:,Krhs) 
     
    138138         zfu_t(:,:,:) = puu(:,:,:,Krhs) - zfu_t(:,:,:) 
    139139         zfv_t(:,:,:) = pvv(:,:,:,Krhs) - zfv_t(:,:,:) 
    140          CALL trd_dyn( zfu_t, zfv_t, jpdyn_zad, kt ) 
     140         CALL trd_dyn( zfu_t, zfv_t, jpdyn_zad, kt, Kmm ) 
    141141      ENDIF 
    142142      !                                   ! Control print 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynadv_ubs.F90

    r10928 r10946  
    183183         zfu_uw(:,:,:) = puu(:,:,:,Krhs) - zfu_uw(:,:,:) 
    184184         zfv_vw(:,:,:) = pvv(:,:,:,Krhs) - zfv_vw(:,:,:) 
    185          CALL trd_dyn( zfu_uw, zfv_vw, jpdyn_keg, kt ) 
     185         CALL trd_dyn( zfu_uw, zfv_vw, jpdyn_keg, kt, Kmm ) 
    186186         zfu_t(:,:,:) = puu(:,:,:,Krhs) 
    187187         zfv_t(:,:,:) = pvv(:,:,:,Krhs) 
     
    231231         zfu_t(:,:,:) = puu(:,:,:,Krhs) - zfu_t(:,:,:) 
    232232         zfv_t(:,:,:) = pvv(:,:,:,Krhs) - zfv_t(:,:,:) 
    233          CALL trd_dyn( zfu_t, zfv_t, jpdyn_zad, kt ) 
     233         CALL trd_dyn( zfu_t, zfv_t, jpdyn_zad, kt, Kmm ) 
    234234      ENDIF 
    235235      !                                         ! Control print 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynhpg.F90

    r10928 r10946  
    118118         ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 
    119119         ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 
    120          CALL trd_dyn( ztrdu, ztrdv, jpdyn_hpg, kt ) 
     120         CALL trd_dyn( ztrdu, ztrdv, jpdyn_hpg, kt, Kmm ) 
    121121         DEALLOCATE( ztrdu , ztrdv ) 
    122122      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynkeg.F90

    r10928 r10946  
    183183         ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 
    184184         ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 
    185          CALL trd_dyn( ztrdu, ztrdv, jpdyn_keg, kt ) 
     185         CALL trd_dyn( ztrdu, ztrdv, jpdyn_keg, kt, Kmm ) 
    186186         DEALLOCATE( ztrdu , ztrdv ) 
    187187      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynldf.F90

    r10928 r10946  
    7878         ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 
    7979         ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 
    80          CALL trd_dyn( ztrdu, ztrdv, jpdyn_ldf, kt ) 
     80         CALL trd_dyn( ztrdu, ztrdv, jpdyn_ldf, kt, Kmm ) 
    8181         DEALLOCATE ( ztrdu , ztrdv ) 
    8282      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynnxt.F90

    r10799 r10946  
    6464CONTAINS 
    6565 
    66    SUBROUTINE dyn_nxt ( kt ) 
     66   SUBROUTINE dyn_nxt ( kt, Kmm ) 
    6767      !!---------------------------------------------------------------------- 
    6868      !!                  ***  ROUTINE dyn_nxt  *** 
     
    9393      !!---------------------------------------------------------------------- 
    9494      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
     95      INTEGER, INTENT( in ) ::   Kmm     ! time level index 
    9596      ! 
    9697      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     
    157158         ! 
    158159         !                                  ! Kinetic energy and Conversion 
    159          IF( ln_KE_trd  )   CALL trd_dyn( ua, va, jpdyn_ken, kt ) 
     160         IF( ln_KE_trd  )   CALL trd_dyn( ua, va, jpdyn_ken, kt, Kmm ) 
    160161         ! 
    161162         IF( ln_dyn_trd ) THEN              ! 3D output: total momentum trends 
     
    365366         zua(:,:,:) = ( ub(:,:,:) - zua(:,:,:) ) * z1_2dt 
    366367         zva(:,:,:) = ( vb(:,:,:) - zva(:,:,:) ) * z1_2dt 
    367          CALL trd_dyn( zua, zva, jpdyn_atf, kt ) 
     368         CALL trd_dyn( zua, zva, jpdyn_atf, kt, Kmm ) 
    368369      ENDIF 
    369370      ! 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynspg.F90

    r10928 r10946  
    171171         ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 
    172172         ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 
    173          CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt ) 
     173         CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt, Kmm ) 
    174174         DEALLOCATE( ztrdu , ztrdv )  
    175175      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynvor.F90

    r10928 r10946  
    135135         ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 
    136136         ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 
    137          CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 
     137         CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt, Kmm ) 
    138138         ! 
    139139         IF( n_dynadv /= np_LIN_dyn ) THEN   !* relative vorticity or metric trend (only in non-linear case) 
     
    149149            ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 
    150150            ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 
    151             CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 
     151            CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt, Kmm ) 
    152152         ENDIF 
    153153         ! 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynzad.F90

    r10928 r10946  
    112112         ztrdu(:,:,:) = puu(:,:,:,Krhs) - ztrdu(:,:,:) 
    113113         ztrdv(:,:,:) = pvv(:,:,:,Krhs) - ztrdv(:,:,:) 
    114          CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt ) 
     114         CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt, Kmm ) 
    115115         DEALLOCATE( ztrdu, ztrdv )  
    116116      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/dynzdf.F90

    r10928 r10946  
    9898      ! 
    9999      !                             !* explicit top/bottom drag case 
    100       IF( .NOT.ln_drgimp )   CALL zdf_drg_exp( kt, puu(:,:,:,Kbb), pvv(:,:,:,Kbb), puu(:,:,:,Krhs), pvv(:,:,:,Krhs) )  ! add top/bottom friction trend to (puu(:,:,:,Kaa),pvv(:,:,:,Kaa)) 
     100      IF( .NOT.ln_drgimp )   CALL zdf_drg_exp( kt, Kmm, puu(:,:,:,Kbb), pvv(:,:,:,Kbb), puu(:,:,:,Krhs), pvv(:,:,:,Krhs) )  ! add top/bottom friction trend to (puu(Kaa),pvv(Kaa)) 
    101101      ! 
    102102      ! 
     
    490490         ztrdu(:,:,:) = ( puu(:,:,:,Kaa) - puu(:,:,:,Kbb) ) / r2dt - ztrdu(:,:,:) 
    491491         ztrdv(:,:,:) = ( pvv(:,:,:,Kaa) - pvv(:,:,:,Kbb) ) / r2dt - ztrdv(:,:,:) 
    492          CALL trd_dyn( ztrdu, ztrdv, jpdyn_zdf, kt ) 
     492         CALL trd_dyn( ztrdu, ztrdv, jpdyn_zdf, kt, Kmm ) 
    493493         DEALLOCATE( ztrdu, ztrdv )  
    494494      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/LDF/ldftra.F90

    r10922 r10946  
    727727 
    728728 
    729    SUBROUTINE ldf_eiv_trp( kt, kit000, pu, pv, pw, cdtype, Kmm ) 
     729   SUBROUTINE ldf_eiv_trp( kt, kit000, pu, pv, pw, cdtype, Kmm, Krhs ) 
    730730      !!---------------------------------------------------------------------- 
    731731      !!                  ***  ROUTINE ldf_eiv_trp  *** 
     
    745745      !! ** Action  : pu, pv increased by the eiv transport 
    746746      !!---------------------------------------------------------------------- 
    747       INTEGER                         , INTENT(in   ) ::   kt       ! ocean time-step index 
    748       INTEGER                         , INTENT(in   ) ::   kit000   ! first time step index 
    749       INTEGER                         , INTENT(in   ) ::   Kmm      ! ocean time level indices 
    750       CHARACTER(len=3)                , INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
     747      INTEGER                         , INTENT(in   ) ::   kt        ! ocean time-step index 
     748      INTEGER                         , INTENT(in   ) ::   kit000    ! first time step index 
     749      INTEGER                         , INTENT(in   ) ::   Kmm, Krhs ! ocean time level indices 
     750      CHARACTER(len=3)                , INTENT(in   ) ::   cdtype    ! =TRA or TRC (tracer indicator) 
    751751      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pu      ! in : 3 ocean transport components   [m3/s] 
    752752      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pv      ! out: 3 ocean transport components   [m3/s] 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/SBC/sbcmod.F90

    r10927 r10946  
    422422      SELECT CASE( nsbc )                                ! Compute ocean surface boundary condition 
    423423      !                                                  ! (i.e. utau,vtau, qns, qsr, emp, sfx) 
    424       CASE( jp_usr   )     ;   CALL usrdef_sbc_oce( kt )                             ! user defined formulation  
     424      CASE( jp_usr   )     ;   CALL usrdef_sbc_oce( kt, Kbb )                        ! user defined formulation  
    425425      CASE( jp_flx     )   ;   CALL sbc_flx       ( kt )                             ! flux formulation 
    426426      CASE( jp_blk     ) 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv.F90

    r10922 r10946  
    127127      ! 
    128128      IF( ln_ldfeiv .AND. .NOT. ln_traldf_triad )   & 
    129          &              CALL ldf_eiv_trp( kt, nit000, zuu, zvv, zww, 'TRA', Kmm )   ! add the eiv transport (if necessary) 
     129         &              CALL ldf_eiv_trp( kt, nit000, zuu, zvv, zww, 'TRA', Kmm, Krhs )   ! add the eiv transport (if necessary) 
    130130      ! 
    131131      IF( ln_mle    )   CALL tra_mle_trp( kt, nit000, zuu, zvv, zww, 'TRA' )   ! add the mle transport (if necessary) 
     
    165165            ztrds(:,:,jk) = pts(:,:,jk,jp_sal,Krhs) - ztrds(:,:,jk) 
    166166         END DO 
    167          CALL trd_tra( kt, 'TRA', jp_tem, jptra_totad, ztrdt ) 
    168          CALL trd_tra( kt, 'TRA', jp_sal, jptra_totad, ztrds ) 
     167         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_totad, ztrdt ) 
     168         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_totad, ztrds ) 
    169169         DEALLOCATE( ztrdt, ztrds ) 
    170170      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_cen.F90

    r10893 r10946  
    191191         !                             ! trend diagnostics 
    192192         IF( l_trd ) THEN 
    193             CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kmm) ) 
    194             CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kmm) ) 
    195             CALL trd_tra( kt, cdtype, jn, jptra_zad, zwz, pW, pt(:,:,:,jn,Kmm) ) 
     193            CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kmm) ) 
     194            CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kmm) ) 
     195            CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_zad, zwz, pW, pt(:,:,:,jn,Kmm) ) 
    196196         END IF 
    197197         !                                 ! "Poleward" heat and salt transports  
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_fct.F90

    r10893 r10946  
    303303            ! 
    304304            IF( l_trd ) THEN              ! trend diagnostics 
    305                CALL trd_tra( kt, cdtype, jn, jptra_xad, ztrdx, pU, pt(:,:,:,jn,Kmm) ) 
    306                CALL trd_tra( kt, cdtype, jn, jptra_yad, ztrdy, pV, pt(:,:,:,jn,Kmm) ) 
    307                CALL trd_tra( kt, cdtype, jn, jptra_zad, ztrdz, pW, pt(:,:,:,jn,Kmm) ) 
     305               CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, ztrdx, pU, pt(:,:,:,jn,Kmm) ) 
     306               CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, ztrdy, pV, pt(:,:,:,jn,Kmm) ) 
     307               CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_zad, ztrdz, pW, pt(:,:,:,jn,Kmm) ) 
    308308            ENDIF 
    309309            !                             ! heat/salt transport 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_mus.F90

    r10893 r10946  
    201201         !                                ! trend diagnostics 
    202202         IF( l_trd )  THEN 
    203             CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kbb) ) 
    204             CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kbb) ) 
     203            CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kbb) ) 
     204            CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kbb) ) 
    205205         END IF 
    206206         !                                 ! "Poleward" heat and salt transports  
     
    268268         END DO 
    269269         !                                ! send trends for diagnostic 
    270          IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_zad, zwx, pW, pt(:,:,:,jn,Kbb) ) 
     270         IF( l_trd )  CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_zad, zwx, pW, pt(:,:,:,jn,Kbb) ) 
    271271         ! 
    272272      END DO                     ! end of tracer loop 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_qck.F90

    r10893 r10946  
    220220         END DO 
    221221         !                                 ! trend diagnostics 
    222          IF( l_trd )   CALL trd_tra( kt, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kmm) ) 
     222         IF( l_trd )   CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kmm) ) 
    223223         ! 
    224224      END DO 
     
    336336         END DO 
    337337         !                                 ! trend diagnostics 
    338          IF( l_trd )   CALL trd_tra( kt, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kmm) ) 
     338         IF( l_trd )   CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, zwy, pV, pt(:,:,:,jn,Kmm) ) 
    339339         !                                 ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
    340340         IF( l_ptr )   CALL dia_ptr_hst( jn, 'adv', zwy(:,:,:) ) 
     
    395395         END DO 
    396396         !                                 ! Send trends for diagnostic 
    397          IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_zad, zwz, pW, pt(:,:,:,jn,Kmm) ) 
     397         IF( l_trd )  CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_zad, zwz, pW, pt(:,:,:,jn,Kmm) ) 
    398398         ! 
    399399      END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traadv_ubs.F90

    r10893 r10946  
    177177         !                 
    178178         IF( l_trd ) THEN                  ! trend diagnostics 
    179              CALL trd_tra( kt, cdtype, jn, jptra_xad, ztu, pU, pt(:,:,:,jn,Kmm) ) 
    180              CALL trd_tra( kt, cdtype, jn, jptra_yad, ztv, pV, pt(:,:,:,jn,Kmm) ) 
     179             CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, ztu, pU, pt(:,:,:,jn,Kmm) ) 
     180             CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_yad, ztv, pV, pt(:,:,:,jn,Kmm) ) 
    181181         END IF 
    182182         !      
     
    273273               END DO 
    274274            END DO 
    275             CALL trd_tra( kt, cdtype, jn, jptra_zad, zltv ) 
     275            CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_zad, zltv ) 
    276276         ENDIF 
    277277         ! 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trabbc.F90

    r10874 r10946  
    5151CONTAINS 
    5252 
    53    SUBROUTINE tra_bbc( kt ) 
     53   SUBROUTINE tra_bbc( kt, Kmm, Krhs ) 
    5454      !!---------------------------------------------------------------------- 
    5555      !!                  ***  ROUTINE tra_bbc  *** 
     
    7474      !!---------------------------------------------------------------------- 
    7575      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     76      INTEGER, INTENT(in) ::   Kmm, Krhs  ! time level indices 
    7677      ! 
    7778      INTEGER  ::   ji, jj    ! dummy loop indices 
     
    9697      IF( l_trdtra ) THEN        ! Send the trend for diagnostics 
    9798         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    98          CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbc, ztrdt ) 
     99         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_bbc, ztrdt ) 
    99100         DEALLOCATE( ztrdt ) 
    100101      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trabbl.F90

    r10874 r10946  
    8989 
    9090 
    91    SUBROUTINE tra_bbl( kt ) 
     91   SUBROUTINE tra_bbl( kt, Kmm, Krhs ) 
    9292      !!---------------------------------------------------------------------- 
    9393      !!                  ***  ROUTINE bbl  *** 
     
    102102      !!---------------------------------------------------------------------- 
    103103      INTEGER, INTENT( in ) ::   kt   ! ocean time-step 
     104      INTEGER, INTENT( in ) ::   Kmm, Krhs  ! time level indices 
    104105      ! 
    105106      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt, ztrds 
     
    145146         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    146147         ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
    147          CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbl, ztrdt ) 
    148          CALL trd_tra( kt, 'TRA', jp_sal, jptra_bbl, ztrds ) 
     148         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_bbl, ztrdt ) 
     149         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_bbl, ztrds ) 
    149150         DEALLOCATE( ztrdt, ztrds ) 
    150151      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/tradmp.F90

    r10874 r10946  
    7272 
    7373 
    74    SUBROUTINE tra_dmp( kt ) 
     74   SUBROUTINE tra_dmp( kt, Kmm, Krhs ) 
    7575      !!---------------------------------------------------------------------- 
    7676      !!                   ***  ROUTINE tra_dmp  *** 
     
    9191      !!---------------------------------------------------------------------- 
    9292      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     93      INTEGER, INTENT(in) ::   Kmm, Krhs  ! time level indices 
    9394      ! 
    9495      INTEGER ::   ji, jj, jk, jn   ! dummy loop indices 
     
    151152      IF( l_trdtra )   THEN       ! trend diagnostic 
    152153         ztrdts(:,:,:,:) = tsa(:,:,:,:) - ztrdts(:,:,:,:) 
    153          CALL trd_tra( kt, 'TRA', jp_tem, jptra_dmp, ztrdts(:,:,:,jp_tem) ) 
    154          CALL trd_tra( kt, 'TRA', jp_sal, jptra_dmp, ztrdts(:,:,:,jp_sal) ) 
     154         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_dmp, ztrdts(:,:,:,jp_tem) ) 
     155         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_dmp, ztrdts(:,:,:,jp_sal) ) 
    155156         DEALLOCATE( ztrdts )  
    156157      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traldf.F90

    r10922 r10946  
    4747CONTAINS 
    4848 
    49    SUBROUTINE tra_ldf( kt, Kmm ) 
     49   SUBROUTINE tra_ldf( kt, Kmm, Krhs ) 
    5050      !!---------------------------------------------------------------------- 
    5151      !!                  ***  ROUTINE tra_ldf  *** 
     
    5454      !!---------------------------------------------------------------------- 
    5555      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    56       INTEGER, INTENT( in ) ::   Kmm  ! ocean time level indices 
     56      INTEGER, INTENT( in ) ::   Kmm, Krhs  ! ocean time level indices 
    5757      !! 
    5858      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt, ztrds 
     
    8181         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    8282         ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
    83          CALL trd_tra( kt, 'TRA', jp_tem, jptra_ldf, ztrdt ) 
    84          CALL trd_tra( kt, 'TRA', jp_sal, jptra_ldf, ztrds ) 
     83         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_ldf, ztrdt ) 
     84         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_ldf, ztrds ) 
    8585         DEALLOCATE( ztrdt, ztrds )  
    8686      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/tranpc.F90

    r10425 r10946  
    4242CONTAINS 
    4343 
    44    SUBROUTINE tra_npc( kt ) 
     44   SUBROUTINE tra_npc( kt, Kmm, Krhs ) 
    4545      !!---------------------------------------------------------------------- 
    4646      !!                  ***  ROUTINE tranpc  *** 
     
    5959      !!---------------------------------------------------------------------- 
    6060      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     61      INTEGER, INTENT(in) ::   Kmm, Krhs  ! time level indices 
    6162      ! 
    6263      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     
    304305            ztrdt(:,:,:) = ( tsa(:,:,:,jp_tem) - ztrdt(:,:,:) ) * z1_r2dt 
    305306            ztrds(:,:,:) = ( tsa(:,:,:,jp_sal) - ztrds(:,:,:) ) * z1_r2dt 
    306             CALL trd_tra( kt, 'TRA', jp_tem, jptra_npc, ztrdt ) 
    307             CALL trd_tra( kt, 'TRA', jp_sal, jptra_npc, ztrds ) 
     307            CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_npc, ztrdt ) 
     308            CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_npc, ztrds ) 
    308309            DEALLOCATE( ztrdt, ztrds ) 
    309310         ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/tranxt.F90

    r10425 r10946  
    6464CONTAINS 
    6565 
    66    SUBROUTINE tra_nxt( kt ) 
     66   SUBROUTINE tra_nxt( kt, Kmm, Krhs ) 
    6767      !!---------------------------------------------------------------------- 
    6868      !!                   ***  ROUTINE tranxt  *** 
     
    8787      !!---------------------------------------------------------------------- 
    8888      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
     89      INTEGER, INTENT(in) ::   Kmm, Krhs  ! time level indices 
    8990      !! 
    9091      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
     
    122123         ztrds(:,:,jpk) = 0._wp 
    123124         IF( ln_traldf_iso ) THEN              ! diagnose the "pure" Kz diffusive trend  
    124             CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdfp, ztrdt ) 
    125             CALL trd_tra( kt, 'TRA', jp_sal, jptra_zdfp, ztrds ) 
     125            CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_zdfp, ztrdt ) 
     126            CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_zdfp, ztrds ) 
    126127         ENDIF 
    127128         ! total trend for the non-time-filtered variables.  
     
    132133            ztrds(:,:,jk) = ( tsa(:,:,jk,jp_sal)*e3t_a(:,:,jk) / e3t_n(:,:,jk) - tsn(:,:,jk,jp_sal)) * zfact 
    133134         END DO 
    134          CALL trd_tra( kt, 'TRA', jp_tem, jptra_tot, ztrdt ) 
    135          CALL trd_tra( kt, 'TRA', jp_sal, jptra_tot, ztrds ) 
     135         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_tot, ztrdt ) 
     136         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_tot, ztrds ) 
    136137         IF( ln_linssh ) THEN       ! linear sea surface height only 
    137138            ! Store now fields before applying the Asselin filter  
     
    152153            ztrdt(:,:,:) = 0._wp 
    153154            ztrds(:,:,:) = 0._wp 
    154             CALL trd_tra( kt, 'TRA', jp_tem, jptra_atf, ztrdt ) 
    155             CALL trd_tra( kt, 'TRA', jp_sal, jptra_atf, ztrds ) 
     155            CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_atf, ztrdt ) 
     156            CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_atf, ztrds ) 
    156157         END IF 
    157158         ! 
     
    159160         ! 
    160161         IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nit000,      'TRA', tsb, tsn, tsa, jpts )  ! linear free surface  
    161          ELSE                   ;   CALL tra_nxt_vvl( kt, nit000, rdt, 'TRA', tsb, tsn, tsa,   & 
     162         ELSE                   ;   CALL tra_nxt_vvl( kt, Kmm, Krhs, nit000, rdt, 'TRA', tsb, tsn, tsa,   & 
    162163           &                                                                sbc_tsc, sbc_tsc_b, jpts )  ! non-linear free surface 
    163164         ENDIF 
     
    175176            ztrds(:,:,jk) = ( tsb(:,:,jk,jp_sal) - ztrds(:,:,jk) ) * zfact 
    176177         END DO 
    177          CALL trd_tra( kt, 'TRA', jp_tem, jptra_atf, ztrdt ) 
    178          CALL trd_tra( kt, 'TRA', jp_sal, jptra_atf, ztrds ) 
     178         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_atf, ztrdt ) 
     179         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_atf, ztrds ) 
    179180      END IF 
    180181      IF( l_trdtra )   DEALLOCATE( ztrdt , ztrds ) 
     
    238239 
    239240 
    240    SUBROUTINE tra_nxt_vvl( kt, kit000, p2dt, cdtype, ptb, ptn, pta, psbc_tc, psbc_tc_b, kjpt ) 
     241   SUBROUTINE tra_nxt_vvl( kt, Kmm, Krhs, kit000, p2dt, cdtype, ptb, ptn, pta, psbc_tc, psbc_tc_b, kjpt ) 
    241242      !!---------------------------------------------------------------------- 
    242243      !!                   ***  ROUTINE tra_nxt_vvl  *** 
     
    254255      !!---------------------------------------------------------------------- 
    255256      INTEGER                              , INTENT(in   ) ::  kt        ! ocean time-step index 
     257      INTEGER                              , INTENT(in   ) ::  Kmm, Krhs ! time level indices 
    256258      INTEGER                              , INTENT(in   ) ::  kit000    ! first time step index 
    257259      REAL(wp)                             , INTENT(in   ) ::  p2dt      ! time-step 
     
    367369      IF( ( l_trdtra .AND. cdtype == 'TRA' ) .OR. ( l_trdtrc .AND. cdtype == 'TRC' ) )   THEN 
    368370         IF( l_trdtra .AND. cdtype == 'TRA' ) THEN  
    369             CALL trd_tra( kt, cdtype, jp_tem, jptra_atf, ztrd_atf(:,:,:,jp_tem) ) 
    370             CALL trd_tra( kt, cdtype, jp_sal, jptra_atf, ztrd_atf(:,:,:,jp_sal) ) 
     371            CALL trd_tra( kt, Kmm, Krhs, cdtype, jp_tem, jptra_atf, ztrd_atf(:,:,:,jp_tem) ) 
     372            CALL trd_tra( kt, Kmm, Krhs, cdtype, jp_sal, jptra_atf, ztrd_atf(:,:,:,jp_sal) ) 
    371373         ENDIF 
    372374         IF( l_trdtrc .AND. cdtype == 'TRC' ) THEN 
    373375            DO jn = 1, kjpt 
    374                CALL trd_tra( kt, cdtype, jn, jptra_atf, ztrd_atf(:,:,:,jn) ) 
     376               CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_atf, ztrd_atf(:,:,:,jn) ) 
    375377            END DO 
    376378         ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/traqsr.F90

    r10874 r10946  
    7575CONTAINS 
    7676 
    77    SUBROUTINE tra_qsr( kt ) 
     77   SUBROUTINE tra_qsr( kt, Kmm, Krhs ) 
    7878      !!---------------------------------------------------------------------- 
    7979      !!                  ***  ROUTINE tra_qsr  *** 
     
    102102      !!---------------------------------------------------------------------- 
    103103      INTEGER, INTENT(in) ::   kt     ! ocean time-step 
     104      INTEGER, INTENT(in) ::   Kmm, Krhs     ! time level indices 
    104105      ! 
    105106      INTEGER  ::   ji, jj, jk               ! dummy loop indices 
     
    296297      IF( l_trdtra ) THEN     ! qsr tracers trends saved for diagnostics 
    297298         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    298          CALL trd_tra( kt, 'TRA', jp_tem, jptra_qsr, ztrdt ) 
     299         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_qsr, ztrdt ) 
    299300         DEALLOCATE( ztrdt )  
    300301      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trasbc.F90

    r10874 r10946  
    5151CONTAINS 
    5252 
    53    SUBROUTINE tra_sbc ( kt ) 
     53   SUBROUTINE tra_sbc ( kt, Kmm, Krhs ) 
    5454      !!---------------------------------------------------------------------- 
    5555      !!                  ***  ROUTINE tra_sbc  *** 
     
    7373      !!---------------------------------------------------------------------- 
    7474      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     75      INTEGER, INTENT(in) ::   Kmm, Krhs  ! time level indices 
    7576      ! 
    7677      INTEGER  ::   ji, jj, jk, jn              ! dummy loop indices   
     
    261262         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    262263         ztrds(:,:,:) = tsa(:,:,:,jp_sal) - ztrds(:,:,:) 
    263          CALL trd_tra( kt, 'TRA', jp_tem, jptra_nsr, ztrdt ) 
    264          CALL trd_tra( kt, 'TRA', jp_sal, jptra_nsr, ztrds ) 
     264         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_nsr, ztrdt ) 
     265         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_nsr, ztrds ) 
    265266         DEALLOCATE( ztrdt , ztrds )  
    266267      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRA/trazdf.F90

    r10893 r10946  
    9696         CALL lbc_lnk_multi( 'trazdf', ztrdt, 'T', 1. , ztrds, 'T', 1. ) 
    9797!!gm 
    98          CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdf, ztrdt ) 
    99          CALL trd_tra( kt, 'TRA', jp_sal, jptra_zdf, ztrds ) 
     98         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_zdf, ztrdt ) 
     99         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_zdf, ztrds ) 
    100100         DEALLOCATE( ztrdt , ztrds ) 
    101101      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRD/trddyn.F90

    r10425 r10946  
    4444CONTAINS 
    4545 
    46    SUBROUTINE trd_dyn( putrd, pvtrd, ktrd, kt ) 
     46   SUBROUTINE trd_dyn( putrd, pvtrd, ktrd, kt, Kmm ) 
    4747      !!--------------------------------------------------------------------- 
    4848      !!                  ***  ROUTINE trd_mod  *** 
     
    5555      INTEGER                   , INTENT(in   ) ::   ktrd           ! trend index 
    5656      INTEGER                   , INTENT(in   ) ::   kt             ! time step 
     57      INTEGER                   , INTENT(in   ) ::   Kmm            ! time level index 
    5758      !!---------------------------------------------------------------------- 
    5859      ! 
     
    6667      !   3D output of momentum and/or tracers trends using IOM interface 
    6768      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    68       IF( ln_dyn_trd )   CALL trd_dyn_iom( putrd, pvtrd, ktrd, kt ) 
     69      IF( ln_dyn_trd )   CALL trd_dyn_iom( putrd, pvtrd, ktrd, kt, Kmm ) 
    6970          
    7071      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    7172      !  Integral Constraints Properties for momentum and/or tracers trends 
    7273      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    73       IF( ln_glo_trd )   CALL trd_glo( putrd, pvtrd, ktrd, 'DYN', kt ) 
     74      IF( ln_glo_trd )   CALL trd_glo( putrd, pvtrd, ktrd, 'DYN', kt, Kmm ) 
    7475 
    7576      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    7677      !  Kinetic Energy trends 
    7778      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    78       IF( ln_KE_trd  )   CALL trd_ken( putrd, pvtrd, ktrd, kt ) 
     79      IF( ln_KE_trd  )   CALL trd_ken( putrd, pvtrd, ktrd, kt, Kmm ) 
    7980 
    8081      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    8182      !  Vorticity trends 
    8283      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    83       IF( ln_vor_trd )   CALL trd_vor( putrd, pvtrd, ktrd, kt ) 
     84      IF( ln_vor_trd )   CALL trd_vor( putrd, pvtrd, ktrd, kt, Kmm ) 
    8485 
    8586      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    9192 
    9293 
    93    SUBROUTINE trd_dyn_iom( putrd, pvtrd, ktrd, kt ) 
     94   SUBROUTINE trd_dyn_iom( putrd, pvtrd, ktrd, kt, Kmm ) 
    9495      !!--------------------------------------------------------------------- 
    9596      !!                  ***  ROUTINE trd_dyn_iom  *** 
     
    100101      INTEGER                   , INTENT(in   ) ::   ktrd           ! trend index 
    101102      INTEGER                   , INTENT(in   ) ::   kt             ! time step 
     103      INTEGER                   , INTENT(in   ) ::   Kmm            ! time level index 
    102104      ! 
    103105      INTEGER ::   ji, jj, jk   ! dummy loop indices 
     
    124126                                 DO jj = 2, jpjm1 
    125127                                    DO ji = 2, jpim1 
    126                                        z3dx(ji,jj,jk) = un(ji,jj,jk) * ( un(ji+1,jj,jk) - un(ji-1,jj,jk) ) / ( 2._wp * e1u(ji,jj) ) 
    127                                        z3dy(ji,jj,jk) = vn(ji,jj,jk) * ( vn(ji,jj+1,jk) - vn(ji,jj-1,jk) ) / ( 2._wp * e2v(ji,jj) ) 
     128                                       z3dx(ji,jj,jk) = uu(ji,jj,jk,Kmm) * ( uu(ji+1,jj,jk,Kmm) - uu(ji-1,jj,jk,Kmm) ) / ( 2._wp * e1u(ji,jj) ) 
     129                                       z3dy(ji,jj,jk) = vv(ji,jj,jk,Kmm) * ( vv(ji,jj+1,jk,Kmm) - vv(ji,jj-1,jk,Kmm) ) / ( 2._wp * e2v(ji,jj) ) 
    128130                                    END DO 
    129131                                 END DO 
     
    142144                              !                                    ! wind stress trends 
    143145                              ALLOCATE( z2dx(jpi,jpj) , z2dy(jpi,jpj) ) 
    144                               z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u_n(:,:,1) * rau0 ) 
    145                               z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v_n(:,:,1) * rau0 ) 
     146                              z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u(:,:,1,Kmm) * rau0 ) 
     147                              z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v(:,:,1,Kmm) * rau0 ) 
    146148                              CALL iom_put( "utrd_tau", z2dx ) 
    147149                              CALL iom_put( "vtrd_tau", z2dy ) 
     
    159161!                                          ikbv = mbkv(ji,jj) 
    160162!                                          z3dx(ji,jj,jk) = 0.5 * ( rCdU_bot(ji+1,jj) + rCdU_bot(ji,jj) ) &  
    161 !                                               &         * un(ji,jj,ikbu) / e3u_n(ji,jj,ikbu) 
     163!                                               &         * uu(ji,jj,ikbu,Kmm) / e3u(ji,jj,ikbu,Kmm) 
    162164!                                          z3dy(ji,jj,jk) = 0.5 * ( rCdU_bot(ji,jj+1) + rCdU_bot(ji,jj) ) & 
    163 !                                               &         * vn(ji,jj,ikbv) / e3v_n(ji,jj,ikbv) 
     165!                                               &         * vv(ji,jj,ikbv,Kmm) / e3v(ji,jj,ikbv,Kmm) 
    164166!                                    END DO 
    165167!                                 END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRD/trdglo.F90

    r10425 r10946  
    5959CONTAINS 
    6060 
    61    SUBROUTINE trd_glo( ptrdx, ptrdy, ktrd, ctype, kt ) 
     61   SUBROUTINE trd_glo( ptrdx, ptrdy, ktrd, ctype, kt, Kmm ) 
    6262      !!--------------------------------------------------------------------- 
    6363      !!                  ***  ROUTINE trd_glo  *** 
     
    7272      CHARACTER(len=3)          , INTENT(in   ) ::   ctype   ! momentum or tracers trends type (='DYN'/'TRA') 
    7373      INTEGER                   , INTENT(in   ) ::   kt      ! time step 
     74      INTEGER                   , INTENT(in   ) ::   Kmm     ! time level index 
    7475      !! 
    7576      INTEGER ::   ji, jj, jk      ! dummy loop indices 
     
    8788               DO jj = 1, jpj 
    8889                  DO ji = 1, jpi         
    89                      zvm = e1e2t(ji,jj) * e3t_n(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
     90                     zvm = e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    9091                     zvt = ptrdx(ji,jj,jk) * zvm 
    9192                     zvs = ptrdy(ji,jj,jk) * zvm 
    9293                     tmo(ktrd) = tmo(ktrd) + zvt    
    9394                     smo(ktrd) = smo(ktrd) + zvs 
    94                      t2 (ktrd) = t2(ktrd)  + zvt * tsn(ji,jj,jk,jp_tem) 
    95                      s2 (ktrd) = s2(ktrd)  + zvs * tsn(ji,jj,jk,jp_sal) 
     95                     t2 (ktrd) = t2(ktrd)  + zvt * ts(ji,jj,jk,jp_tem,Kmm) 
     96                     s2 (ktrd) = s2(ktrd)  + zvs * ts(ji,jj,jk,jp_sal,Kmm) 
    9697                  END DO 
    9798               END DO 
     
    99100            !                       ! linear free surface: diagnose advective flux trough the fixed k=1 w-surface 
    100101            IF( ln_linssh .AND. ktrd == jptra_zad ) THEN   
    101                tmo(jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_tem) * e1e2t(:,:) * tmask_i(:,:) ) 
    102                smo(jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_sal) * e1e2t(:,:) * tmask_i(:,:)  ) 
    103                t2 (jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_tem) * tsn(:,:,1,jp_tem) * e1e2t(:,:) * tmask_i(:,:)  ) 
    104                s2 (jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_sal) * tsn(:,:,1,jp_sal) * e1e2t(:,:) * tmask_i(:,:)  ) 
     102               tmo(jptra_sad) = SUM( ww(:,:,1) * ts(:,:,1,jp_tem,Kmm) * e1e2t(:,:) * tmask_i(:,:) ) 
     103               smo(jptra_sad) = SUM( ww(:,:,1) * ts(:,:,1,jp_sal,Kmm) * e1e2t(:,:) * tmask_i(:,:)  ) 
     104               t2 (jptra_sad) = SUM( ww(:,:,1) * ts(:,:,1,jp_tem,Kmm) * ts(:,:,1,jp_tem,Kmm) * e1e2t(:,:) * tmask_i(:,:)  ) 
     105               s2 (jptra_sad) = SUM( ww(:,:,1) * ts(:,:,1,jp_sal,Kmm) * ts(:,:,1,jp_sal,Kmm) * e1e2t(:,:) * tmask_i(:,:)  ) 
    105106            ENDIF 
    106107            ! 
     
    121122                  DO ji = 1, jpim1 
    122123                     zvt = ptrdx(ji,jj,jk) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk)   & 
    123                         &                                     * e1e2u  (ji,jj) * e3u_n(ji,jj,jk) 
     124                        &                                     * e1e2u  (ji,jj) * e3u(ji,jj,jk,Kmm) 
    124125                     zvs = ptrdy(ji,jj,jk) * tmask_i(ji,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk)   & 
    125                         &                                     * e1e2v  (ji,jj) * e3u_n(ji,jj,jk) 
     126                        &                                     * e1e2v  (ji,jj) * e3u(ji,jj,jk,Kmm) 
    126127                     umo(ktrd) = umo(ktrd) + zvt 
    127128                     vmo(ktrd) = vmo(ktrd) + zvs 
    128                      hke(ktrd) = hke(ktrd) + un(ji,jj,jk) * zvt + vn(ji,jj,jk) * zvs 
     129                     hke(ktrd) = hke(ktrd) + uu(ji,jj,jk,Kmm) * zvt + vv(ji,jj,jk,Kmm) * zvs 
    129130                  END DO 
    130131               END DO 
     
    141142                     umo(jpdyn_tau) = umo(jpdyn_tau) + zvt 
    142143                     vmo(jpdyn_tau) = vmo(jpdyn_tau) + zvs 
    143                      hke(jpdyn_tau) = hke(jpdyn_tau) + un(ji,jj,1) * zvt + vn(ji,jj,1) * zvs 
     144                     hke(jpdyn_tau) = hke(jpdyn_tau) + uu(ji,jj,1,Kmm) * zvt + vv(ji,jj,1,Kmm) * zvs 
    144145                  END DO 
    145146               END DO 
     
    155156!                        ikbu = mbku(ji,jj)                  ! deepest ocean u- & v-levels 
    156157!                        ikbv = mbkv(ji,jj) 
    157 !                        zvt = 0.5*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) * un(ji,jj,ikbu) * e1e2u(ji,jj) 
    158 !                        zvs = 0.5*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) * vn(ji,jj,ikbv) * e1e2v(ji,jj) 
     158!                        zvt = 0.5*( rCdU_bot(ji+1,jj)+rCdU_bot(ji,jj) ) * uu(ji,jj,ikbu,Kmm) * e1e2u(ji,jj) 
     159!                        zvs = 0.5*( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj) ) * vv(ji,jj,ikbv,Kmm) * e1e2v(ji,jj) 
    159160!                        umo(jpdyn_bfri) = umo(jpdyn_bfri) + zvt 
    160161!                        vmo(jpdyn_bfri) = vmo(jpdyn_bfri) + zvs 
    161 !                        hke(jpdyn_bfri) = hke(jpdyn_bfri) + un(ji,jj,ikbu) * zvt + vn(ji,jj,ikbv) * zvs 
     162!                        hke(jpdyn_bfri) = hke(jpdyn_bfri) + uu(ji,jj,ikbu,Kmm) * zvt + vv(ji,jj,ikbv,Kmm) * zvs 
    162163!                     END DO 
    163164!                  END DO 
     
    183184 
    184185 
    185    SUBROUTINE glo_dyn_wri( kt ) 
     186   SUBROUTINE glo_dyn_wri( kt, Kmm ) 
    186187      !!--------------------------------------------------------------------- 
    187188      !!                  ***  ROUTINE glo_dyn_wri  *** 
     
    190191      !!---------------------------------------------------------------------- 
    191192      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     193      INTEGER, INTENT(in) ::   Kmm  ! time level index 
    192194      ! 
    193195      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     
    209211         zkepe(:,:,:) = 0._wp 
    210212    
    211          CALL eos( tsn, rhd, rhop )       ! now potential density 
     213         CALL eos( ts(:,:,:,:,Kmm), rhd, rhop )       ! now potential density 
    212214 
    213215         zcof = 0.5_wp / rau0             ! Density flux at w-point 
    214216         zkz(:,:,1) = 0._wp 
    215217         DO jk = 2, jpk 
    216             zkz(:,:,jk) = zcof * e1e2t(:,:) * wn(:,:,jk) * ( rhop(:,:,jk) + rhop(:,:,jk-1) ) * tmask_i(:,:) 
     218            zkz(:,:,jk) = zcof * e1e2t(:,:) * ww(:,:,jk) * ( rhop(:,:,jk) + rhop(:,:,jk-1) ) * tmask_i(:,:) 
    217219         END DO 
    218220          
     
    221223            DO jj = 1, jpjm1 
    222224               DO ji = 1, jpim1 
    223                   zkx(ji,jj,jk) = zcof * e2u(ji,jj) * e3u_n(ji,jj,jk) * un(ji,jj,jk) * ( rhop(ji,jj,jk) + rhop(ji+1,jj,jk) ) 
    224                   zky(ji,jj,jk) = zcof * e1v(ji,jj) * e3v_n(ji,jj,jk) * vn(ji,jj,jk) * ( rhop(ji,jj,jk) + rhop(ji,jj+1,jk) ) 
     225                  zkx(ji,jj,jk) = zcof * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Kmm) * ( rhop(ji,jj,jk) + rhop(ji+1,jj,jk) ) 
     226                  zky(ji,jj,jk) = zcof * e1v(ji,jj) * e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Kmm) * ( rhop(ji,jj,jk) + rhop(ji,jj+1,jk) ) 
    225227               END DO 
    226228            END DO 
     
    233235                     &                 + zkx(ji,jj,jk) - zkx(ji-1,jj  ,jk  )               & 
    234236                     &                 + zky(ji,jj,jk) - zky(ji  ,jj-1,jk  )   )           & 
    235                      &              / ( e1e2t(ji,jj) * e3t_n(ji,jj,jk) ) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
     237                     &              / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    236238               END DO 
    237239            END DO 
     
    242244         peke = 0._wp 
    243245         DO jk = 1, jpkm1 
    244             peke = peke + SUM( zkepe(:,:,jk) * gdept_n(:,:,jk) * e1e2t(:,:) * e3t_n(:,:,jk) ) 
     246            peke = peke + SUM( zkepe(:,:,jk) * gdept(:,:,jk,Kmm) * e1e2t(:,:) * e3t(:,:,jk,Kmm) ) 
    245247         END DO 
    246248         peke = grav * peke 
     
    506508 
    507509 
    508    SUBROUTINE trd_glo_init 
     510   SUBROUTINE trd_glo_init( Kmm ) 
    509511      !!--------------------------------------------------------------------- 
    510512      !!                  ***  ROUTINE trd_glo_init  *** 
     
    512514      !! ** Purpose :   Read the namtrd namelist 
    513515      !!---------------------------------------------------------------------- 
     516      INTEGER, INTENT(in) ::   Kmm   ! time level index 
    514517      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    515518      !!---------------------------------------------------------------------- 
     
    524527      tvolt = 0._wp 
    525528      DO jk = 1, jpkm1 
    526          tvolt = tvolt + SUM( e1e2t(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) ) 
     529         tvolt = tvolt + SUM( e1e2t(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk) * tmask_i(:,:) ) 
    527530      END DO 
    528531      CALL mpp_sum( 'trdglo', tvolt )   ! sum over the global domain 
     
    541544         DO jj = 2, jpjm1 
    542545            DO ji = fs_2, fs_jpim1   ! vector opt. 
    543                tvolu = tvolu + e1u(ji,jj) * e2u(ji,jj) * e3u_n(ji,jj,jk) * tmask_i(ji+1,jj  ) * tmask_i(ji,jj) * umask(ji,jj,jk) 
    544                tvolv = tvolv + e1v(ji,jj) * e2v(ji,jj) * e3v_n(ji,jj,jk) * tmask_i(ji  ,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) 
     546               tvolu = tvolu + e1u(ji,jj) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * tmask_i(ji+1,jj  ) * tmask_i(ji,jj) * umask(ji,jj,jk) 
     547               tvolv = tvolv + e1v(ji,jj) * e2v(ji,jj) * e3v(ji,jj,jk,Kmm) * tmask_i(ji  ,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) 
    545548            END DO 
    546549         END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRD/trdini.F90

    r10068 r10946  
    3434CONTAINS 
    3535 
    36    SUBROUTINE trd_init 
     36   SUBROUTINE trd_init( Kmm ) 
    3737      !!---------------------------------------------------------------------- 
    3838      !!                  ***  ROUTINE trd_init  *** 
     
    4040      !! ** Purpose :   Initialization of trend diagnostics 
    4141      !!---------------------------------------------------------------------- 
     42      INTEGER, INTENT(in) ::   Kmm  ! time level index 
    4243      INTEGER ::   ios   ! local integer 
    4344      !! 
     
    9697 
    9798      !                             ! diagnostic initialization   
    98       IF( ln_glo_trd )   CALL trd_glo_init      ! global domain averaged trends 
     99      IF( ln_glo_trd )   CALL trd_glo_init( Kmm )      ! global domain averaged trends 
    99100      IF( ln_tra_mxl )   CALL trd_mxl_init      ! mixed-layer          trends   
    100101      IF( ln_vor_trd )   CALL trd_vor_init      ! barotropic vorticity trends 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRD/trdken.F90

    r10425 r10946  
    5959 
    6060 
    61    SUBROUTINE trd_ken( putrd, pvtrd, ktrd, kt ) 
     61   SUBROUTINE trd_ken( putrd, pvtrd, ktrd, kt, Kmm ) 
    6262      !!--------------------------------------------------------------------- 
    6363      !!                  ***  ROUTINE trd_ken  *** 
     
    6767      !! ** Method  : - apply lbc to the input masked velocity trends  
    6868      !!              - compute the associated KE trend: 
    69       !!          zke = 0.5 * (  mi-1[ un * putrd * bu ] + mj-1[ vn * pvtrd * bv]  ) / bt 
     69      !!          zke = 0.5 * (  mi-1[ uu(Kmm) * putrd * bu ] + mj-1[ vv(Kmm) * pvtrd * bv]  ) / bt 
    7070      !!      where bu, bv, bt are the volume of u-, v- and t-boxes.  
    7171      !!              - vertical diffusion case (jpdyn_zdf):  
     
    8080      INTEGER                   , INTENT(in   ) ::   ktrd           ! trend index 
    8181      INTEGER                   , INTENT(in   ) ::   kt             ! time step 
     82      INTEGER                   , INTENT(in   ) ::   Kmm            ! time level index 
    8283      ! 
    8384      INTEGER ::   ji, jj, jk       ! dummy loop indices 
     
    9293      nkstp = kt 
    9394      DO jk = 1, jpkm1 
    94          bu   (:,:,jk) =    e1e2u(:,:) * e3u_n(:,:,jk) 
    95          bv   (:,:,jk) =    e1e2v(:,:) * e3v_n(:,:,jk) 
    96          r1_bt(:,:,jk) = r1_e1e2t(:,:) / e3t_n(:,:,jk) * tmask(:,:,jk) 
     95         bu   (:,:,jk) =    e1e2u(:,:) * e3u(:,:,jk,Kmm) 
     96         bv   (:,:,jk) =    e1e2v(:,:) * e3v(:,:,jk,Kmm) 
     97         r1_bt(:,:,jk) = r1_e1e2t(:,:) / e3t(:,:,jk,Kmm) * tmask(:,:,jk) 
    9798      END DO 
    9899      ! 
     
    103104         DO jj = 2, jpj 
    104105            DO ji = 2, jpi 
    105                zke(ji,jj,jk) = 0.5_wp * rau0 *( un(ji  ,jj,jk) * putrd(ji  ,jj,jk) * bu(ji  ,jj,jk)  & 
    106                   &                           + un(ji-1,jj,jk) * putrd(ji-1,jj,jk) * bu(ji-1,jj,jk)  & 
    107                   &                           + vn(ji,jj  ,jk) * pvtrd(ji,jj  ,jk) * bv(ji,jj  ,jk)  & 
    108                   &                           + vn(ji,jj-1,jk) * pvtrd(ji,jj-1,jk) * bv(ji,jj-1,jk)  ) * r1_bt(ji,jj,jk) 
     106               zke(ji,jj,jk) = 0.5_wp * rau0 *( uu(ji  ,jj,jk,Kmm) * putrd(ji  ,jj,jk) * bu(ji  ,jj,jk)  & 
     107                  &                           + uu(ji-1,jj,jk,Kmm) * putrd(ji-1,jj,jk) * bu(ji-1,jj,jk)  & 
     108                  &                           + vv(ji,jj  ,jk,Kmm) * pvtrd(ji,jj  ,jk) * bv(ji,jj  ,jk)  & 
     109                  &                           + vv(ji,jj-1,jk,Kmm) * pvtrd(ji,jj-1,jk) * bv(ji,jj-1,jk)  ) * r1_bt(ji,jj,jk) 
    109110            END DO 
    110111         END DO 
     
    122123         !                   !                                          ! wind stress trends 
    123124                                 ALLOCATE( z2dx(jpi,jpj) , z2dy(jpi,jpj) , zke2d(jpi,jpj) ) 
    124                            z2dx(:,:) = un(:,:,1) * ( utau_b(:,:) + utau(:,:) ) * e1e2u(:,:) * umask(:,:,1) 
    125                            z2dy(:,:) = vn(:,:,1) * ( vtau_b(:,:) + vtau(:,:) ) * e1e2v(:,:) * vmask(:,:,1) 
     125                           z2dx(:,:) = uu(:,:,1,Kmm) * ( utau_b(:,:) + utau(:,:) ) * e1e2u(:,:) * umask(:,:,1) 
     126                           z2dy(:,:) = vv(:,:,1,Kmm) * ( vtau_b(:,:) + vtau(:,:) ) * e1e2v(:,:) * vmask(:,:,1) 
    126127                           zke2d(1,:) = 0._wp   ;   zke2d(:,1) = 0._wp 
    127128                           DO jj = 2, jpj 
     
    141142!                  ikbu = mbku(ji,jj)         ! deepest ocean u- & v-levels 
    142143!                  ikbv = mbkv(ji,jj)    
    143 !                  z2dx(ji,jj) = un(ji,jj,ikbu) * bfrua(ji,jj) * un(ji,jj,ikbu) 
    144 !                  z2dy(ji,jj) = vn(ji,jj,ikbu) * bfrva(ji,jj) * vn(ji,jj,ikbv) 
     144!                  z2dx(ji,jj) = uu(ji,jj,ikbu,Kmm) * bfrua(ji,jj) * uu(ji,jj,ikbu,Kmm) 
     145!                  z2dy(ji,jj) = vv(ji,jj,ikbu,Kmm) * bfrva(ji,jj) * vv(ji,jj,ikbv,Kmm) 
    145146!               END DO 
    146147!            END DO 
     
    157158         CASE( jpdyn_atf )   ;   CALL iom_put( "ketrd_atf"   , zke )    ! asselin filter trends  
    158159!! a faire !!!!  idee changer dynnxt pour avoir un appel a jpdyn_bfr avant le swap !!! 
    159 !! reflechir a une possible sauvegarde du "vrai" un,vn pour le calcul de atf.... 
     160!! reflechir a une possible sauvegarde du "vrai" uu(Kmm),vv(Kmm) pour le calcul de atf.... 
    160161! 
    161162!         IF( ln_drgimp ) THEN                                          ! bottom friction (implicit case) 
     
    164165!                  ikbu = mbku(ji,jj)          ! deepest ocean u- & v-levels 
    165166!                  ikbv = mbkv(ji,jj) 
    166 !                  z2dx(ji,jj) = un(ji,jj,ikbu) * bfrua(ji,jj) * un(ji,jj,ikbu) / e3u_n(ji,jj,ikbu) 
    167 !                  z2dy(ji,jj) = un(ji,jj,ikbu) * bfrva(ji,jj) * vn(ji,jj,ikbv) / e3v_n(ji,jj,ikbv) 
     167!                  z2dx(ji,jj) = uu(ji,jj,ikbu,Kmm) * bfrua(ji,jj) * uu(ji,jj,ikbu,Kmm) / e3u(ji,jj,ikbu,Kmm) 
     168!                  z2dy(ji,jj) = uu(ji,jj,ikbu,Kmm) * bfrva(ji,jj) * vv(ji,jj,ikbv,Kmm) / e3v(ji,jj,ikbv,Kmm) 
    168169!               END DO 
    169170!            END DO 
     
    179180        CASE( jpdyn_ken )   ;   ! kinetic energy 
    180181                    ! called in dynnxt.F90 before asselin time filter 
    181                     ! with putrd=ua and pvtrd=va 
     182                    ! with putrd=uu(Krhs) and pvtrd=vv(Krhs) 
    182183                    zke(:,:,:) = 0.5_wp * zke(:,:,:) 
    183184                    CALL iom_put( "KE", zke ) 
    184185                    ! 
    185                     CALL ken_p2k( kt , zke ) 
     186                    CALL ken_p2k( kt , zke, Kmm ) 
    186187                      CALL iom_put( "ketrd_convP2K", zke )     ! conversion -rau*g*w 
    187188         ! 
     
    191192 
    192193 
    193    SUBROUTINE ken_p2k( kt , pconv ) 
     194   SUBROUTINE ken_p2k( kt , pconv, Kmm ) 
    194195      !!--------------------------------------------------------------------- 
    195196      !!                 ***  ROUTINE ken_p2k  *** 
     
    202203      !!----------------------------------------------------------------------  
    203204      INTEGER                   , INTENT(in   ) ::   kt      ! ocean time-step index 
     205      INTEGER                   , INTENT(in   ) ::   Kmm     ! time level index 
    204206      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   pconv   !  
    205207      ! 
     
    214216       
    215217      !  Surface value (also valid in partial step case) 
    216       zconv(:,:,1) = zcoef * ( 2._wp * rhd(:,:,1) ) * wn(:,:,1) * e3w_n(:,:,1) 
     218      zconv(:,:,1) = zcoef * ( 2._wp * rhd(:,:,1) ) * ww(:,:,1) * e3w(:,:,1,Kmm) 
    217219 
    218220      ! interior value (2=<jk=<jpkm1) 
    219221      DO jk = 2, jpk 
    220          zconv(:,:,jk) = zcoef * ( rhd(:,:,jk) + rhd(:,:,jk-1) ) * wn(:,:,jk) * e3w_n(:,:,jk) 
     222         zconv(:,:,jk) = zcoef * ( rhd(:,:,jk) + rhd(:,:,jk-1) ) * ww(:,:,jk) * e3w(:,:,jk,Kmm) 
    221223      END DO 
    222224 
     
    225227         DO jj = 1, jpj 
    226228            DO ji = 1, jpi 
    227                zcoef = 0.5_wp / e3t_n(ji,jj,jk) 
     229               zcoef = 0.5_wp / e3t(ji,jj,jk,Kmm) 
    228230               pconv(ji,jj,jk) = zcoef * ( zconv(ji,jj,jk) + zconv(ji,jj,jk+1) ) * tmask(ji,jj,jk) 
    229231            END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRD/trdmxl.F90

    r10425 r10946  
    8686 
    8787 
    88    SUBROUTINE trd_tra_mxl( ptrdx, ptrdy, ktrd, kt, p2dt, kmxln ) 
     88   SUBROUTINE trd_tra_mxl( ptrdx, ptrdy, ktrd, kt, p2dt, kmxln, Kmm ) 
    8989      !!---------------------------------------------------------------------- 
    9090      !!                  ***  ROUTINE trd_tra_mng  *** 
     
    9898      INTEGER                   , INTENT(in   ) ::   ktrd    ! tracer trend index 
    9999      INTEGER                   , INTENT(in   ) ::   kt      ! time step index 
     100      INTEGER                   , INTENT(in   ) ::   Kmm     ! time level index 
    100101      REAL(wp)                  , INTENT(in   ) ::   p2dt    ! time step  [s] 
    101102      REAL(wp), DIMENSION(:,:)  , INTENT(in   ) ::   kmxln   ! number of t-box for the vertical average  
     
    119120            DO jj = 1,jpj 
    120121               DO ji = 1,jpi 
    121                   IF( jk - kmxln(ji,jj) < 0 )   wkx(ji,jj,jk) = e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
     122                  IF( jk - kmxln(ji,jj) < 0 )   wkx(ji,jj,jk) = e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 
    122123               END DO 
    123124            END DO 
     
    136137         tml(:,:) = 0._wp   ;   sml(:,:) = 0._wp 
    137138         DO jk = 1, jpktrd 
    138             tml(:,:) = tml(:,:) + wkx(:,:,jk) * tsn(:,:,jk,jp_tem) 
    139             sml(:,:) = sml(:,:) + wkx(:,:,jk) * tsn(:,:,jk,jp_sal) 
     139            tml(:,:) = tml(:,:) + wkx(:,:,jk) * ts(:,:,jk,jp_tem,Kmm) 
     140            sml(:,:) = sml(:,:) + wkx(:,:,jk) * ts(:,:,jk,jp_sal,Kmm) 
    140141         END DO 
    141142         ! 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRD/trdpen.F90

    r10425 r10946  
    5555 
    5656 
    57    SUBROUTINE trd_pen( ptrdx, ptrdy, ktrd, kt, pdt ) 
     57   SUBROUTINE trd_pen( ptrdx, ptrdy, ktrd, kt, pdt, Kmm ) 
    5858      !!--------------------------------------------------------------------- 
    5959      !!                  ***  ROUTINE trd_tra_mng  *** 
     
    6666      INTEGER                   , INTENT(in) ::   ktrd           ! tracer trend index 
    6767      INTEGER                   , INTENT(in) ::   kt             ! time step index 
     68      INTEGER                   , INTENT(in) ::   Kmm            ! time level index 
    6869      REAL(wp)                  , INTENT(in) ::   pdt            ! time step [s] 
    6970      ! 
     
    7778      IF( kt /= nkstp ) THEN     ! full eos: set partial derivatives at the 1st call of kt time step 
    7879         nkstp = kt 
    79          CALL eos_pen( tsn, rab_PE, zpe ) 
     80         CALL eos_pen( ts(:,:,:,:,Kmm), rab_PE, zpe ) 
    8081         CALL iom_put( "alphaPE", rab_pe(:,:,:,jp_tem) ) 
    8182         CALL iom_put( "betaPE" , rab_pe(:,:,:,jp_sal) ) 
     
    9596                                IF( ln_linssh ) THEN                   ! cst volume : adv flux through z=0 surface 
    9697                                   ALLOCATE( z2d(jpi,jpj) ) 
    97                                    z2d(:,:) = wn(:,:,1) * ( & 
    98                                      &   - ( rab_n(:,:,1,jp_tem) + rab_pe(:,:,1,jp_tem) ) * tsn(:,:,1,jp_tem)    & 
    99                                      &   + ( rab_n(:,:,1,jp_sal) + rab_pe(:,:,1,jp_sal) ) * tsn(:,:,1,jp_sal)    & 
    100                                      & ) / e3t_n(:,:,1) 
     98                                   z2d(:,:) = ww(:,:,1) * ( & 
     99                                     &   - ( rab_n(:,:,1,jp_tem) + rab_pe(:,:,1,jp_tem) ) * ts(:,:,1,jp_tem,Kmm)    & 
     100                                     &   + ( rab_n(:,:,1,jp_sal) + rab_pe(:,:,1,jp_sal) ) * ts(:,:,1,jp_sal,Kmm)    & 
     101                                     & ) / e3t(:,:,1,Kmm) 
    101102                                   CALL iom_put( "petrd_sad" , z2d ) 
    102103                                   DEALLOCATE( z2d ) 
     
    112113      CASE ( jptra_bbc  )   ;   CALL iom_put( "petrd_bbc" , zpe )   ! bottom bound cond (geoth flux) 
    113114      CASE ( jptra_atf  )   ;   CALL iom_put( "petrd_atf" , zpe )   ! asselin time filter (last trend) 
    114                                 !IF( ln_linssh ) THEN                   ! cst volume : ssh term (otherwise include in e3t variation) 
    115                                 !   ALLOCATE( z2d(jpi,jpj) ) 
    116                                 !   z2d(:,:) = ( ssha(:,:) - sshb(:,:) )                 & 
    117                                 !      &     * (   dPE_dt(:,:,1) * tsn(:,:,1,jp_tem)    & 
    118                                 !      &         + dPE_ds(:,:,1) * tsn(:,:,1,jp_sal)  ) / ( e3t_n(:,:,1) * pdt ) 
    119                                 !   CALL iom_put( "petrd_sad" , z2d ) 
    120                                 !   DEALLOCATE( z2d ) 
    121                                 !ENDIF 
    122115         ! 
    123116      END SELECT 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRD/trdtra.F90

    r10425 r10946  
    6060 
    6161 
    62    SUBROUTINE trd_tra( kt, ctype, ktra, ktrd, ptrd, pun, ptra ) 
     62   SUBROUTINE trd_tra( kt, Kmm, Krhs, ctype, ktra, ktrd, ptrd, pu, ptra ) 
    6363      !!--------------------------------------------------------------------- 
    6464      !!                  ***  ROUTINE trd_tra  *** 
     
    7777      INTEGER                         , INTENT(in)           ::   ktra    ! tracer index 
    7878      INTEGER                         , INTENT(in)           ::   ktrd    ! tracer trend index 
     79      INTEGER                         , INTENT(in)           ::   Kmm, Krhs ! time level indices 
    7980      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in)           ::   ptrd    ! tracer trend  or flux 
    80       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in), OPTIONAL ::   pun     ! now velocity  
     81      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in), OPTIONAL ::   pu      ! now velocity  
    8182      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in), OPTIONAL ::   ptra    ! now tracer variable 
    8283      ! 
     
    9495         SELECT CASE( ktrd ) 
    9596         !                            ! advection: transform the advective flux into a trend 
    96          CASE( jptra_xad )   ;   CALL trd_tra_adv( ptrd, pun, ptra, 'X', trdtx )  
    97          CASE( jptra_yad )   ;   CALL trd_tra_adv( ptrd, pun, ptra, 'Y', trdty )  
    98          CASE( jptra_zad )   ;   CALL trd_tra_adv( ptrd, pun, ptra, 'Z', trdt  )  
     97         CASE( jptra_xad )   ;   CALL trd_tra_adv( ptrd, pu, ptra, 'X', trdtx, Kmm )  
     98         CASE( jptra_yad )   ;   CALL trd_tra_adv( ptrd, pu, ptra, 'Y', trdty, Kmm )  
     99         CASE( jptra_zad )   ;   CALL trd_tra_adv( ptrd, pu, ptra, 'Z', trdt, Kmm ) 
    99100         CASE( jptra_bbc,    &        ! qsr, bbc: on temperature only, send to trd_tra_mng 
    100101            &  jptra_qsr )   ;   trdt(:,:,:) = ptrd(:,:,:) * tmask(:,:,:) 
    101102                                 ztrds(:,:,:) = 0._wp 
    102                                  CALL trd_tra_mng( trdt, ztrds, ktrd, kt ) 
     103                                 CALL trd_tra_mng( trdt, ztrds, ktrd, kt, Kmm ) 
    103104 !!gm Gurvan, verify the jptra_evd trend please ! 
    104105         CASE( jptra_evd )   ;   avt_evd(:,:,:) = ptrd(:,:,:) * tmask(:,:,:) 
     
    114115         !                            ! advection: transform the advective flux into a trend 
    115116         !                            !            and send T & S trends to trd_tra_mng 
    116          CASE( jptra_xad  )   ;   CALL trd_tra_adv( ptrd , pun  , ptra, 'X'  , ztrds )  
    117                                   CALL trd_tra_mng( trdtx, ztrds, ktrd, kt   ) 
    118          CASE( jptra_yad  )   ;   CALL trd_tra_adv( ptrd , pun  , ptra, 'Y'  , ztrds )  
    119                                   CALL trd_tra_mng( trdty, ztrds, ktrd, kt   ) 
    120          CASE( jptra_zad  )   ;   CALL trd_tra_adv( ptrd , pun  , ptra, 'Z'  , ztrds )  
    121                                   CALL trd_tra_mng( trdt , ztrds, ktrd, kt   ) 
     117         CASE( jptra_xad  )   ;   CALL trd_tra_adv( ptrd , pu  , ptra, 'X'  , ztrds, Kmm )  
     118                                  CALL trd_tra_mng( trdtx, ztrds, ktrd, kt, Kmm   ) 
     119         CASE( jptra_yad  )   ;   CALL trd_tra_adv( ptrd , pu  , ptra, 'Y'  , ztrds, Kmm )  
     120                                  CALL trd_tra_mng( trdty, ztrds, ktrd, kt, Kmm   ) 
     121         CASE( jptra_zad  )   ;   CALL trd_tra_adv( ptrd , pu  , ptra, 'Z'  , ztrds, Kmm )  
     122                                  CALL trd_tra_mng( trdt , ztrds, ktrd, kt, Kmm   ) 
    122123         CASE( jptra_zdfp )           ! diagnose the "PURE" Kz trend (here: just before the swap) 
    123124            !                         ! iso-neutral diffusion case otherwise jptra_zdf is "PURE" 
     
    127128            zwt(:,:,jpk) = 0._wp   ;   zws(:,:,jpk) = 0._wp 
    128129            DO jk = 2, jpk 
    129                zwt(:,:,jk) = avt(:,:,jk) * ( tsa(:,:,jk-1,jp_tem) - tsa(:,:,jk,jp_tem) ) / e3w_n(:,:,jk) * tmask(:,:,jk) 
    130                zws(:,:,jk) = avs(:,:,jk) * ( tsa(:,:,jk-1,jp_sal) - tsa(:,:,jk,jp_sal) ) / e3w_n(:,:,jk) * tmask(:,:,jk) 
     130               zwt(:,:,jk) = avt(:,:,jk) * ( ts(:,:,jk-1,jp_tem,Krhs) - ts(:,:,jk,jp_tem,Krhs) ) / e3w(:,:,jk,Kmm) * tmask(:,:,jk) 
     131               zws(:,:,jk) = avs(:,:,jk) * ( ts(:,:,jk-1,jp_sal,Krhs) - ts(:,:,jk,jp_sal,Krhs) ) / e3w(:,:,jk,Kmm) * tmask(:,:,jk) 
    131132            END DO 
    132133            ! 
    133134            ztrdt(:,:,jpk) = 0._wp   ;   ztrds(:,:,jpk) = 0._wp 
    134135            DO jk = 1, jpkm1 
    135                ztrdt(:,:,jk) = ( zwt(:,:,jk) - zwt(:,:,jk+1) ) / e3t_n(:,:,jk) 
    136                ztrds(:,:,jk) = ( zws(:,:,jk) - zws(:,:,jk+1) ) / e3t_n(:,:,jk)  
    137             END DO 
    138             CALL trd_tra_mng( ztrdt, ztrds, jptra_zdfp, kt 
     136               ztrdt(:,:,jk) = ( zwt(:,:,jk) - zwt(:,:,jk+1) ) / e3t(:,:,jk,Kmm) 
     137               ztrds(:,:,jk) = ( zws(:,:,jk) - zws(:,:,jk+1) ) / e3t(:,:,jk,Kmm)  
     138            END DO 
     139            CALL trd_tra_mng( ztrdt, ztrds, jptra_zdfp, kt, Kmm 
    139140            ! 
    140141            !                         ! Also calculate EVD trend at this point.  
    141142            zwt(:,:,:) = 0._wp   ;   zws(:,:,:) = 0._wp            ! vertical diffusive fluxes 
    142143            DO jk = 2, jpk 
    143                zwt(:,:,jk) = avt_evd(:,:,jk) * ( tsa(:,:,jk-1,jp_tem) - tsa(:,:,jk,jp_tem) ) / e3w_n(:,:,jk) * tmask(:,:,jk) 
    144                zws(:,:,jk) = avt_evd(:,:,jk) * ( tsa(:,:,jk-1,jp_sal) - tsa(:,:,jk,jp_sal) ) / e3w_n(:,:,jk) * tmask(:,:,jk) 
     144               zwt(:,:,jk) = avt_evd(:,:,jk) * ( ts(:,:,jk-1,jp_tem,Krhs) - ts(:,:,jk,jp_tem,Krhs) ) / e3w(:,:,jk,Kmm) * tmask(:,:,jk) 
     145               zws(:,:,jk) = avt_evd(:,:,jk) * ( ts(:,:,jk-1,jp_sal,Krhs) - ts(:,:,jk,jp_sal,Krhs) ) / e3w(:,:,jk,Kmm) * tmask(:,:,jk) 
    145146            END DO 
    146147            ! 
    147148            ztrdt(:,:,jpk) = 0._wp   ;   ztrds(:,:,jpk) = 0._wp 
    148149            DO jk = 1, jpkm1 
    149                ztrdt(:,:,jk) = ( zwt(:,:,jk) - zwt(:,:,jk+1) ) / e3t_n(:,:,jk) 
    150                ztrds(:,:,jk) = ( zws(:,:,jk) - zws(:,:,jk+1) ) / e3t_n(:,:,jk)  
    151             END DO 
    152             CALL trd_tra_mng( ztrdt, ztrds, jptra_evd, kt 
     150               ztrdt(:,:,jk) = ( zwt(:,:,jk) - zwt(:,:,jk+1) ) / e3t(:,:,jk,Kmm) 
     151               ztrds(:,:,jk) = ( zws(:,:,jk) - zws(:,:,jk+1) ) / e3t(:,:,jk,Kmm)  
     152            END DO 
     153            CALL trd_tra_mng( ztrdt, ztrds, jptra_evd, kt, Kmm 
    153154            ! 
    154155            DEALLOCATE( zwt, zws, ztrdt ) 
     
    156157         CASE DEFAULT                 ! other trends: mask and send T & S trends to trd_tra_mng 
    157158            ztrds(:,:,:) = ptrd(:,:,:) * tmask(:,:,:) 
    158             CALL trd_tra_mng( trdt, ztrds, ktrd, kt 
     159            CALL trd_tra_mng( trdt, ztrds, ktrd, kt, Kmm 
    159160         END SELECT 
    160161      ENDIF 
     
    164165         SELECT CASE( ktrd ) 
    165166         !                            ! advection: transform the advective flux into a masked trend 
    166          CASE( jptra_xad )   ;   CALL trd_tra_adv( ptrd , pun , ptra, 'X', ztrds )  
    167          CASE( jptra_yad )   ;   CALL trd_tra_adv( ptrd , pun , ptra, 'Y', ztrds )  
    168          CASE( jptra_zad )   ;   CALL trd_tra_adv( ptrd , pun , ptra, 'Z', ztrds )  
     167         CASE( jptra_xad )   ;   CALL trd_tra_adv( ptrd , pu , ptra, 'X', ztrds, Kmm )  
     168         CASE( jptra_yad )   ;   CALL trd_tra_adv( ptrd , pu , ptra, 'Y', ztrds, Kmm )  
     169         CASE( jptra_zad )   ;   CALL trd_tra_adv( ptrd , pu , ptra, 'Z', ztrds, Kmm )  
    169170         CASE DEFAULT                 ! other trends: just masked  
    170171                                 ztrds(:,:,:) = ptrd(:,:,:) * tmask(:,:,:) 
     
    178179 
    179180 
    180    SUBROUTINE trd_tra_adv( pf, pun, ptn, cdir, ptrd ) 
     181   SUBROUTINE trd_tra_adv( pf, pu, pt, cdir, ptrd, Kmm ) 
    181182      !!--------------------------------------------------------------------- 
    182183      !!                  ***  ROUTINE trd_tra_adv  *** 
     
    191192      !!---------------------------------------------------------------------- 
    192193      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   pf      ! advective flux in one direction 
    193       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   pun     ! now velocity   in one direction 
    194       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   ptn     ! now or before tracer  
     194      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   pu      ! now velocity   in one direction 
     195      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) ::   pt      ! now or before tracer  
    195196      CHARACTER(len=1)                , INTENT(in   ) ::   cdir    ! X/Y/Z direction 
    196197      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(  out) ::   ptrd    ! advective trend in one direction 
     198      INTEGER,  INTENT(in)                            ::   Kmm     ! time level index 
    197199      ! 
    198200      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     
    215217            DO ji = fs_2, fs_jpim1   ! vector opt. 
    216218               ptrd(ji,jj,jk) = - (     pf (ji,jj,jk) - pf (ji-ii,jj-ij,jk-ik)                        & 
    217                  &                  - ( pun(ji,jj,jk) - pun(ji-ii,jj-ij,jk-ik) ) * ptn(ji,jj,jk)  )   & 
    218                  &              * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) * tmask(ji,jj,jk) 
     219                 &                  - ( pu(ji,jj,jk) - pu(ji-ii,jj-ij,jk-ik) ) * pt(ji,jj,jk)  )   & 
     220                 &              * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 
    219221            END DO 
    220222         END DO 
     
    224226 
    225227 
    226    SUBROUTINE trd_tra_mng( ptrdx, ptrdy, ktrd, kt ) 
     228   SUBROUTINE trd_tra_mng( ptrdx, ptrdy, ktrd, kt, Kmm ) 
    227229      !!--------------------------------------------------------------------- 
    228230      !!                  ***  ROUTINE trd_tra_mng  *** 
     
    236238      INTEGER                   , INTENT(in   ) ::   ktrd    ! tracer trend index 
    237239      INTEGER                   , INTENT(in   ) ::   kt      ! time step 
     240      INTEGER                   , INTENT(in   ) ::   Kmm     ! time level index 
    238241      !!---------------------------------------------------------------------- 
    239242 
     
    243246 
    244247      !                   ! 3D output of tracers trends using IOM interface 
    245       IF( ln_tra_trd )   CALL trd_tra_iom ( ptrdx, ptrdy, ktrd, kt ) 
     248      IF( ln_tra_trd )   CALL trd_tra_iom ( ptrdx, ptrdy, ktrd, kt, Kmm ) 
    246249 
    247250      !                   ! Integral Constraints Properties for tracers trends                                       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    248       IF( ln_glo_trd )   CALL trd_glo( ptrdx, ptrdy, ktrd, 'TRA', kt ) 
     251      IF( ln_glo_trd )   CALL trd_glo( ptrdx, ptrdy, ktrd, 'TRA', kt, Kmm ) 
    249252 
    250253      !                   ! Potential ENergy trends 
    251       IF( ln_PE_trd  )   CALL trd_pen( ptrdx, ptrdy, ktrd, kt, r2dt ) 
     254      IF( ln_PE_trd  )   CALL trd_pen( ptrdx, ptrdy, ktrd, kt, r2dt, Kmm ) 
    252255 
    253256      !                   ! Mixed layer trends for active tracers 
     
    290293 
    291294 
    292    SUBROUTINE trd_tra_iom( ptrdx, ptrdy, ktrd, kt ) 
     295   SUBROUTINE trd_tra_iom( ptrdx, ptrdy, ktrd, kt, Kmm ) 
    293296      !!--------------------------------------------------------------------- 
    294297      !!                  ***  ROUTINE trd_tra_iom  *** 
     
    300303      INTEGER                   , INTENT(in   ) ::   ktrd    ! tracer trend index 
    301304      INTEGER                   , INTENT(in   ) ::   kt      ! time step 
     305      INTEGER                   , INTENT(in   ) ::   Kmm     ! time level index 
    302306      !! 
    303307      INTEGER ::   ji, jj, jk   ! dummy loop indices 
     
    326330                                  IF( ln_linssh ) THEN                   ! cst volume : adv flux through z=0 surface 
    327331                                     ALLOCATE( z2dx(jpi,jpj), z2dy(jpi,jpj) ) 
    328                                      z2dx(:,:) = wn(:,:,1) * tsn(:,:,1,jp_tem) / e3t_n(:,:,1) 
    329                                      z2dy(:,:) = wn(:,:,1) * tsn(:,:,1,jp_sal) / e3t_n(:,:,1) 
     332                                     z2dx(:,:) = ww(:,:,1) * ts(:,:,1,jp_tem,Kmm) / e3t(:,:,1,Kmm) 
     333                                     z2dy(:,:) = ww(:,:,1) * ts(:,:,1,jp_sal,Kmm) / e3t(:,:,1,Kmm) 
    330334                                     CALL iom_put( "ttrd_sad", z2dx ) 
    331335                                     CALL iom_put( "strd_sad", z2dy ) 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/TRD/trdvor.F90

    r10425 r10946  
    7878 
    7979 
    80    SUBROUTINE trd_vor( putrd, pvtrd, ktrd, kt ) 
     80   SUBROUTINE trd_vor( putrd, pvtrd, ktrd, kt, Kmm ) 
    8181      !!---------------------------------------------------------------------- 
    8282      !!                  ***  ROUTINE trd_vor  *** 
     
    8888      INTEGER                   , INTENT(in   ) ::   ktrd           ! trend index 
    8989      INTEGER                   , INTENT(in   ) ::   kt             ! time step 
     90      INTEGER                   , INTENT(in   ) ::   Kmm            ! time level index 
    9091      ! 
    9192      INTEGER ::   ji, jj   ! dummy loop indices 
     
    9495 
    9596      SELECT CASE( ktrd )  
    96       CASE( jpdyn_hpg )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_prg )   ! Hydrostatique Pressure Gradient  
    97       CASE( jpdyn_keg )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_keg )   ! KE Gradient  
    98       CASE( jpdyn_rvo )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_rvo )   ! Relative Vorticity  
    99       CASE( jpdyn_pvo )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_pvo )   ! Planetary Vorticity Term  
    100       CASE( jpdyn_ldf )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_ldf )   ! Horizontal Diffusion  
    101       CASE( jpdyn_zad )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_zad )   ! Vertical Advection  
    102       CASE( jpdyn_spg )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_spg )   ! Surface Pressure Grad.  
     97      CASE( jpdyn_hpg )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_prg, Kmm )   ! Hydrostatique Pressure Gradient  
     98      CASE( jpdyn_keg )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_keg, Kmm )   ! KE Gradient  
     99      CASE( jpdyn_rvo )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_rvo, Kmm )   ! Relative Vorticity  
     100      CASE( jpdyn_pvo )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_pvo, Kmm )   ! Planetary Vorticity Term  
     101      CASE( jpdyn_ldf )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_ldf, Kmm )   ! Horizontal Diffusion  
     102      CASE( jpdyn_zad )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_zad, Kmm )   ! Vertical Advection  
     103      CASE( jpdyn_spg )   ;   CALL trd_vor_zint( putrd, pvtrd, jpvor_spg, Kmm )   ! Surface Pressure Grad.  
    103104      CASE( jpdyn_zdf )                                                      ! Vertical Diffusion  
    104105         ztswu(:,:) = 0.e0   ;   ztswv(:,:) = 0.e0 
    105106         DO jj = 2, jpjm1                                                             ! wind stress trends 
    106107            DO ji = fs_2, fs_jpim1   ! vector opt. 
    107                ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u_n(ji,jj,1) * rau0 ) 
    108                ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v_n(ji,jj,1) * rau0 ) 
     108               ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u(ji,jj,1,Kmm) * rau0 ) 
     109               ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v(ji,jj,1,Kmm) * rau0 ) 
    109110            END DO 
    110111         END DO 
    111112         ! 
    112          CALL trd_vor_zint( putrd, pvtrd, jpvor_zdf )                             ! zdf trend including surf./bot. stresses  
    113          CALL trd_vor_zint( ztswu, ztswv, jpvor_swf )                             ! surface wind stress  
     113         CALL trd_vor_zint( putrd, pvtrd, jpvor_zdf, Kmm )                             ! zdf trend including surf./bot. stresses  
     114         CALL trd_vor_zint( ztswu, ztswv, jpvor_swf, Kmm )                             ! surface wind stress  
    114115      CASE( jpdyn_bfr ) 
    115          CALL trd_vor_zint( putrd, pvtrd, jpvor_bfr )                             ! Bottom stress 
     116         CALL trd_vor_zint( putrd, pvtrd, jpvor_bfr, Kmm )                             ! Bottom stress 
    116117         ! 
    117118      CASE( jpdyn_atf )       ! last trends: perform the output of 2D vorticity trends 
    118          CALL trd_vor_iom( kt ) 
     119         CALL trd_vor_iom( kt, Kmm ) 
    119120      END SELECT 
    120121      ! 
     
    122123 
    123124 
    124    SUBROUTINE trd_vor_zint_2d( putrdvor, pvtrdvor, ktrd ) 
     125   SUBROUTINE trd_vor_zint_2d( putrdvor, pvtrdvor, ktrd, Kmm ) 
    125126      !!---------------------------------------------------------------------------- 
    126127      !!                  ***  ROUTINE trd_vor_zint  *** 
     
    150151      !!---------------------------------------------------------------------- 
    151152      INTEGER                     , INTENT(in   ) ::   ktrd       ! ocean trend index 
     153      INTEGER                     , INTENT(in   ) ::   Kmm        ! time level index 
    152154      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   putrdvor   ! u vorticity trend  
    153155      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   pvtrdvor   ! v vorticity trend 
     
    175177               ikbu = mbkv(ji,jj) 
    176178               ikbv = mbkv(ji,jj)             
    177                zudpvor(ji,jj) = putrdvor(ji,jj) * e3u_n(ji,jj,ikbu) * e1u(ji,jj) * umask(ji,jj,ikbu) 
    178                zvdpvor(ji,jj) = pvtrdvor(ji,jj) * e3v_n(ji,jj,ikbv) * e2v(ji,jj) * vmask(ji,jj,ikbv) 
     179               zudpvor(ji,jj) = putrdvor(ji,jj) * e3u(ji,jj,ikbu,Kmm) * e1u(ji,jj) * umask(ji,jj,ikbu) 
     180               zvdpvor(ji,jj) = pvtrdvor(ji,jj) * e3v(ji,jj,ikbv,Kmm) * e2v(ji,jj) * vmask(ji,jj,ikbv) 
    179181            END DO 
    180182         END DO 
    181183         ! 
    182184      CASE( jpvor_swf )        ! wind stress 
    183          zudpvor(:,:) = putrdvor(:,:) * e3u_n(:,:,1) * e1u(:,:) * umask(:,:,1) 
    184          zvdpvor(:,:) = pvtrdvor(:,:) * e3v_n(:,:,1) * e2v(:,:) * vmask(:,:,1) 
     185         zudpvor(:,:) = putrdvor(:,:) * e3u(:,:,1,Kmm) * e1u(:,:) * umask(:,:,1) 
     186         zvdpvor(:,:) = pvtrdvor(:,:) * e3v(:,:,1,Kmm) * e2v(:,:) * vmask(:,:,1) 
    185187         ! 
    186188      END SELECT 
     
    207209 
    208210 
    209    SUBROUTINE trd_vor_zint_3d( putrdvor, pvtrdvor, ktrd ) 
     211   SUBROUTINE trd_vor_zint_3d( putrdvor, pvtrdvor, ktrd , Kmm ) 
    210212      !!---------------------------------------------------------------------------- 
    211213      !!                  ***  ROUTINE trd_vor_zint  *** 
     
    236238      ! 
    237239      INTEGER                         , INTENT(in   ) ::   ktrd       ! ocean trend index 
     240      INTEGER                         , INTENT(in   ) ::   Kmm        ! time level index 
    238241      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   putrdvor   ! u vorticity trend  
    239242      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pvtrdvor   ! v vorticity trend 
     
    257260      ! putrdvor and pvtrdvor terms 
    258261      DO jk = 1,jpk 
    259         zudpvor(:,:) = zudpvor(:,:) + putrdvor(:,:,jk) * e3u_n(:,:,jk) * e1u(:,:) * umask(:,:,jk) 
    260         zvdpvor(:,:) = zvdpvor(:,:) + pvtrdvor(:,:,jk) * e3v_n(:,:,jk) * e2v(:,:) * vmask(:,:,jk) 
     262        zudpvor(:,:) = zudpvor(:,:) + putrdvor(:,:,jk) * e3u(:,:,jk,Kmm) * e1u(:,:) * umask(:,:,jk) 
     263        zvdpvor(:,:) = zvdpvor(:,:) + pvtrdvor(:,:,jk) * e3v(:,:,jk,Kmm) * e2v(:,:) * vmask(:,:,jk) 
    261264      END DO 
    262265 
     
    298301 
    299302 
    300    SUBROUTINE trd_vor_iom( kt ) 
     303   SUBROUTINE trd_vor_iom( kt , Kmm ) 
    301304      !!---------------------------------------------------------------------- 
    302305      !!                  ***  ROUTINE trd_vor  *** 
     
    306309      !!---------------------------------------------------------------------- 
    307310      INTEGER                   , INTENT(in   ) ::   kt             ! time step 
     311      INTEGER                   , INTENT(in   ) ::   Kmm            ! time level index 
    308312      ! 
    309313      INTEGER  ::   ji, jj, jk, jl   ! dummy loop indices 
    310314      INTEGER  ::   it, itmod        ! local integers 
    311315      REAL(wp) ::   zmean            ! local scalars 
    312       REAL(wp), DIMENSION(jpi,jpj) :: zun, zvn 
     316      REAL(wp), DIMENSION(jpi,jpj) :: zuu, zvv 
    313317      !!---------------------------------------------------------------------- 
    314318 
     
    327331 
    328332      vor_avr   (:,:) = 0._wp 
    329       zun       (:,:) = 0._wp 
    330       zvn       (:,:) = 0._wp 
     333      zuu       (:,:) = 0._wp 
     334      zvv       (:,:) = 0._wp 
    331335      vor_avrtot(:,:) = 0._wp 
    332336      vor_avrres(:,:) = 0._wp 
     
    334338      ! Vertically averaged velocity 
    335339      DO jk = 1, jpk - 1 
    336          zun(:,:) = zun(:,:) + e1u(:,:) * un(:,:,jk) * e3u_n(:,:,jk) 
    337          zvn(:,:) = zvn(:,:) + e2v(:,:) * vn(:,:,jk) * e3v_n(:,:,jk) 
     340         zuu(:,:) = zuu(:,:) + e1u(:,:) * uu(:,:,jk,Kmm) * e3u(:,:,jk,Kmm) 
     341         zvv(:,:) = zvv(:,:) + e2v(:,:) * vv(:,:,jk,Kmm) * e3v(:,:,jk,Kmm) 
    338342      END DO 
    339343  
    340       zun(:,:) = zun(:,:) * r1_hu_n(:,:) 
    341       zvn(:,:) = zvn(:,:) * r1_hv_n(:,:) 
     344      zuu(:,:) = zuu(:,:) * r1_hu_n(:,:) 
     345      zvv(:,:) = zvv(:,:) * r1_hv_n(:,:) 
    342346 
    343347      ! Curl 
    344348      DO ji = 1, jpim1 
    345349         DO jj = 1, jpjm1 
    346             vor_avr(ji,jj) = (  ( zvn(ji+1,jj) - zvn(ji,jj) )    & 
    347                &              - ( zun(ji,jj+1) - zun(ji,jj) ) ) / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1) 
     350            vor_avr(ji,jj) = (  ( zvv(ji+1,jj) - zvv(ji,jj) )    & 
     351               &              - ( zuu(ji,jj+1) - zuu(ji,jj) ) ) / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1) 
    348352         END DO 
    349353      END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/USR/usrdef_sbc.F90

    r10425 r10946  
    3939CONTAINS 
    4040 
    41    SUBROUTINE usrdef_sbc_oce( kt ) 
     41   SUBROUTINE usrdef_sbc_oce( kt, Kbb ) 
    4242      !!--------------------------------------------------------------------- 
    4343      !!                    ***  ROUTINE usrdef_sbc  *** 
     
    5555      !!---------------------------------------------------------------------- 
    5656      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     57      INTEGER, INTENT(in) ::   Kbb  ! ocean time index 
    5758      !! 
    5859      INTEGER  ::   ji, jj                 ! dummy loop indices 
     
    119120            ! 23.5 deg : tropics 
    120121            qsr (ji,jj) =  230 * COS( 3.1415 * ( gphit(ji,jj) - 23.5 * zcos_sais1 ) / ( 0.9 * 180 ) ) 
    121             qns (ji,jj) = ztrp * ( tsb(ji,jj,1,jp_tem) - t_star ) - qsr(ji,jj) 
     122            qns (ji,jj) = ztrp * ( ts(ji,jj,1,jp_tem,Kbb) - t_star ) - qsr(ji,jj) 
    122123            IF( gphit(ji,jj) >= 14.845 .AND. 37.2 >= gphit(ji,jj) ) THEN    ! zero at 37.8 deg, max at 24.6 deg 
    123124               emp  (ji,jj) =   zemp_S * zconv   & 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfdrg.F90

    r10069 r10946  
    144144 
    145145 
    146    SUBROUTINE zdf_drg_exp( kt, pub, pvb, pua, pva ) 
     146   SUBROUTINE zdf_drg_exp( kt, Kmm, pub, pvb, pua, pva ) 
    147147      !!---------------------------------------------------------------------- 
    148148      !!                  ***  ROUTINE zdf_drg_exp  *** 
     
    157157      !!--------------------------------------------------------------------- 
    158158      INTEGER                         , INTENT(in   ) ::   kt         ! ocean time-step index 
     159      INTEGER                         , INTENT(in   ) ::   Kmm        ! time level indices 
    159160      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pub, pvb   ! the two components of the before velocity 
    160161      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pua, pva   ! the two components of the velocity tendency 
     
    209210         ztrdu(:,:,:) = pua(:,:,:) - ztrdu(:,:,:) 
    210211         ztrdv(:,:,:) = pva(:,:,:) - ztrdv(:,:,:) 
    211          CALL trd_dyn( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_bfr, kt ) 
     212         CALL trd_dyn( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_bfr, kt, Kmm ) 
    212213         DEALLOCATE( ztrdu, ztrdv ) 
    213214      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfevd.F90

    r10068 r10946  
    3838CONTAINS 
    3939 
    40    SUBROUTINE zdf_evd( kt, p_avm, p_avt ) 
     40   SUBROUTINE zdf_evd( kt, Kmm, Krhs, p_avm, p_avt ) 
    4141      !!---------------------------------------------------------------------- 
    4242      !!                  ***  ROUTINE zdf_evd  *** 
     
    5656      !!---------------------------------------------------------------------- 
    5757      INTEGER                    , INTENT(in   ) ::   kt             ! ocean time-step indexocean time step 
     58      INTEGER                    , INTENT(in   ) ::   Kmm, Krhs      ! time level indices 
    5859      REAL(wp), DIMENSION(:,:,:) , INTENT(inout) ::   p_avm, p_avt   !  momentum and tracer Kz (w-points) 
    5960      ! 
     
    117118      zavt_evd(:,:,:) = p_avt(:,:,:) - zavt_evd(:,:,:)   ! change in avt due to evd 
    118119      CALL iom_put( "avt_evd", zavt_evd )              ! output this change 
    119       IF( l_trdtra ) CALL trd_tra( kt, 'TRA', jp_tem, jptra_evd, zavt_evd ) 
     120      IF( l_trdtra ) CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_evd, zavt_evd ) 
    120121      ! 
    121122   END SUBROUTINE zdf_evd 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfosm.F90

    r10883 r10946  
    122122 
    123123 
    124    SUBROUTINE zdf_osm( kt, Kbb, Kmm, p_avm, p_avt ) 
     124   SUBROUTINE zdf_osm( kt, Kbb, Kmm, Krhs, p_avm, p_avt ) 
    125125      !!---------------------------------------------------------------------- 
    126126      !!                   ***  ROUTINE zdf_osm  *** 
     
    158158      !!---------------------------------------------------------------------- 
    159159      INTEGER                   , INTENT(in   ) ::  kt             ! ocean time step 
    160       INTEGER                   , INTENT(in   ) ::  Kbb, Kmm      ! ocean time level indices 
     160      INTEGER                   , INTENT(in   ) ::  Kbb, Kmm, Krhs ! ocean time level indices 
    161161      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::  p_avm, p_avt   ! momentum and tracer Kz (w-points) 
    162162      !! 
     
    16611661         ztrds(:,:,:) = pts(:,:,:,jp_sal,Krhs) - ztrds(:,:,:) 
    16621662!!bug gm jpttdzdf ==> jpttosm 
    1663          CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdf, ztrdt ) 
    1664          CALL trd_tra( kt, 'TRA', jp_sal, jptra_zdf, ztrds ) 
     1663         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_zdf, ztrdt ) 
     1664         CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_zdf, ztrds ) 
    16651665         DEALLOCATE( ztrdt )      ;     DEALLOCATE( ztrds ) 
    16661666      ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ZDF/zdfphy.F90

    r10883 r10946  
    220220 
    221221 
    222    SUBROUTINE zdf_phy( kt, Kbb, Kmm ) 
     222   SUBROUTINE zdf_phy( kt, Kbb, Kmm, Krhs ) 
    223223      !!---------------------------------------------------------------------- 
    224224      !!                     ***  ROUTINE zdf_phy  *** 
     
    233233      !!---------------------------------------------------------------------- 
    234234      INTEGER, INTENT(in) ::   kt         ! ocean time-step index 
    235       INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices 
     235      INTEGER, INTENT(in) ::   Kbb, Kmm, Krhs   ! ocean time level indices 
    236236      ! 
    237237      INTEGER ::   ji, jj, jk   ! dummy loop indice 
     
    264264      CASE( np_TKE )   ;   CALL zdf_tke( kt, Kbb, Kmm, zsh2, avm_k, avt_k )    ! TKE closure scheme for Kz 
    265265      CASE( np_GLS )   ;   CALL zdf_gls( kt, Kbb, Kmm, zsh2, avm_k, avt_k )    ! GLS closure scheme for Kz 
    266       CASE( np_OSM )   ;   CALL zdf_osm( kt, Kbb, Kmm      , avm_k, avt_k )    ! OSMOSIS closure scheme for Kz 
     266      CASE( np_OSM )   ;   CALL zdf_osm( kt, Kbb, Kmm, Krhs, avm_k, avt_k )    ! OSMOSIS closure scheme for Kz 
    267267!     CASE( np_CST )                                  ! Constant Kz (reset avt, avm to the background value) 
    268268!         ! avt_k and avm_k set one for all at initialisation phase 
     
    283283      ENDIF 
    284284      ! 
    285       IF( ln_zdfevd )   CALL zdf_evd( kt, avm, avt )  !* convection: enhanced vertical eddy diffusivity 
     285      IF( ln_zdfevd )   CALL zdf_evd( kt, Kmm, Krhs, avm, avt )  !* convection: enhanced vertical eddy diffusivity 
    286286      ! 
    287287      !                                         !* double diffusive mixing 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/nemogcm.F90

    r10928 r10946  
    490490      IF( lk_diadct    )   CALL dia_dct_init    ! Sections tranports 
    491491                           CALL dia_hsb_init    ! heat content, salt content and volume budgets 
    492                            CALL     trd_init    ! Mixed-layer/Vorticity/Integral constraints trends 
    493                            CALL dia_obs_init( Nnn )        ! Initialize observational data 
     492                           CALL     trd_init( Nnn )    ! Mixed-layer/Vorticity/Integral constraints trends 
     493                           CALL dia_obs_init( Nnn )    ! Initialize observational data 
    494494                           CALL dia_tmb_init    ! TMB outputs 
    495495                           CALL dia_25h_init    ! 25h mean  outputs 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90

    r10928 r10946  
    137137 
    138138      !  VERTICAL PHYSICS 
    139                          CALL zdf_phy( kstp, Nbb, Nnn )   ! vertical physics update (top/bot drag, avt, avs, avm + MLD) 
     139                         CALL zdf_phy( kstp, Nbb, Nnn, Nrhs )   ! vertical physics update (top/bot drag, avt, avs, avm + MLD) 
    140140 
    141141      !  LATERAL  PHYSICS 
     
    197197                         CALL dyn_ldf( kstp, Nbb, Nnn      , uu, vv, Nrhs )  ! lateral mixing 
    198198      IF( ln_zdfosm  )   CALL dyn_osm( kstp,      Nnn      , uu, vv, Nrhs )  ! OSMOSIS non-local velocity fluxes ==> RHS 
    199                          CALL dyn_hpg( kstp,      Nnn,      uu, vv, Nrhs )  ! horizontal gradient of Hydrostatic pressure 
     199                         CALL dyn_hpg( kstp,      Nnn      , uu, vv, Nrhs )  ! horizontal gradient of Hydrostatic pressure 
    200200                         CALL dyn_spg( kstp, Nbb, Nnn, Nrhs, uu, vv, ssh, uu_b, vv_b, Naa )  ! surface pressure gradient 
    201201 
     
    242242      IF(  lk_asminc .AND. ln_asmiau .AND. & 
    243243         & ln_trainc )   CALL tra_asm_inc   ( kstp )  ! apply tracer assimilation increment 
    244                          CALL tra_sbc       ( kstp )  ! surface boundary condition 
    245       IF( ln_traqsr  )   CALL tra_qsr       ( kstp )  ! penetrative solar radiation qsr 
    246       IF( ln_trabbc  )   CALL tra_bbc       ( kstp )  ! bottom heat flux 
    247       IF( ln_trabbl  )   CALL tra_bbl       ( kstp )  ! advective (and/or diffusive) bottom boundary layer scheme 
    248       IF( ln_tradmp  )   CALL tra_dmp       ( kstp )  ! internal damping trends 
     244                         CALL tra_sbc       ( kstp, Nnn, Nrhs )  ! surface boundary condition 
     245      IF( ln_traqsr  )   CALL tra_qsr       ( kstp, Nnn, Nrhs )  ! penetrative solar radiation qsr 
     246      IF( ln_trabbc  )   CALL tra_bbc       ( kstp, Nnn, Nrhs )  ! bottom heat flux 
     247      IF( ln_trabbl  )   CALL tra_bbl       ( kstp, Nnn, Nrhs )  ! advective (and/or diffusive) bottom boundary layer scheme 
     248      IF( ln_tradmp  )   CALL tra_dmp       ( kstp, Nnn, Nrhs )  ! internal damping trends 
    249249      IF( ln_bdy     )   CALL bdy_tra_dmp   ( kstp )  ! bdy damping trends 
    250250#if defined key_agrif 
     
    256256      IF( lrst_oce .AND. ln_zdfosm ) & 
    257257           &             CALL osm_rst( kstp, Nnn, 'WRITE' )! write OSMOSIS outputs + wn (so must do here) to restarts 
    258                          CALL tra_ldf       ( kstp, Nnn )  ! lateral mixing 
     258                         CALL tra_ldf( kstp, Nnn, Nrhs )   ! lateral mixing 
    259259 
    260260!!gm : why CALL to dia_ptr has been moved here??? (use trends info?) 
     
    262262!!gm 
    263263                         CALL tra_zdf( kstp, Nbb, Nnn, Nrhs, ts, Naa  )  ! vert. mixing & after tracer   ==> after 
    264       IF( ln_zdfnpc  )   CALL tra_npc       ( kstp )  ! update after fields by non-penetrative convection 
     264      IF( ln_zdfnpc  )   CALL tra_npc( kstp,      Nnn, Nrhs          )  ! update after fields by non-penetrative convection 
    265265 
    266266      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    281281!!  
    282282!!jc2: dynnxt must be the latest call. e3t_b are indeed updated in that routine 
    283                          CALL tra_nxt       ( kstp )  ! finalize (bcs) tracer fields at next time step and swap 
    284                          CALL dyn_nxt       ( kstp )  ! finalize (bcs) velocities at next time step and swap (always called after tra_nxt) 
     283                         CALL tra_nxt       ( kstp, Nnn, Nrhs )  ! finalize (bcs) tracer fields at next time step and swap 
     284                         CALL dyn_nxt       ( kstp, Nnn )        ! finalize (bcs) velocities at next time step and swap (always called after tra_nxt) 
    285285                         CALL ssh_swp       ( kstp )  ! swap of sea surface height 
    286286      IF(.NOT.ln_linssh) CALL dom_vvl_sf_swp( kstp )  ! swap of vertical scale factors 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcadv.F90

    r10922 r10946  
    116116         ! 
    117117         IF( ln_ldfeiv .AND. .NOT. ln_traldf_triad )   &  
    118             &              CALL ldf_eiv_trp( kt, nittrc000, zun, zvn, zwn, 'TRC', Kmm )  ! add the eiv transport 
     118            &              CALL ldf_eiv_trp( kt, nittrc000, zun, zvn, zwn, 'TRC', Kmm, Krhs )  ! add the eiv transport 
    119119         ! 
    120120         IF( ln_mle    )   CALL tra_mle_trp( kt, nittrc000, zun, zvn, zwn, 'TRC' )  ! add the mle transport 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcbbl.F90

    r10068 r10946  
    3636CONTAINS 
    3737 
    38    SUBROUTINE trc_bbl( kt ) 
     38   SUBROUTINE trc_bbl( kt, Kmm, Krhs ) 
    3939      !!---------------------------------------------------------------------- 
    4040      !!                  ***  ROUTINE bbl  *** 
     
    4646      !!----------------------------------------------------------------------   
    4747      INTEGER, INTENT( in ) ::   kt   ! ocean time-step  
     48      INTEGER, INTENT( in ) ::   Kmm, Krhs  ! time level indices 
    4849      INTEGER :: jn                   ! loop index 
    4950      CHARACTER (len=22) :: charout 
     
    8889        DO jn = 1, jptra 
    8990           ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn) 
    90            CALL trd_tra( kt, 'TRC', jn, jptra_bbl, ztrtrd(:,:,:,jn) ) 
     91           CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_bbl, ztrtrd(:,:,:,jn) ) 
    9192        END DO 
    9293        DEALLOCATE( ztrtrd ) ! temporary save of trends 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcdmp.F90

    r10351 r10946  
    6363 
    6464 
    65    SUBROUTINE trc_dmp( kt ) 
     65   SUBROUTINE trc_dmp( kt, Kmm, Krhs ) 
    6666      !!---------------------------------------------------------------------- 
    6767      !!                   ***  ROUTINE trc_dmp  *** 
     
    8383      !!---------------------------------------------------------------------- 
    8484      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     85      INTEGER, INTENT(in) ::   Kmm, Krhs  ! time level indices 
    8586      ! 
    8687      INTEGER ::   ji, jj, jk, jn, jl   ! dummy loop indices 
     
    146147            IF( l_trdtrc ) THEN 
    147148               ztrtrd(:,:,:) = tra(:,:,:,jn) -  ztrtrd(:,:,:) 
    148                CALL trd_tra( kt, 'TRC', jn, jptra_dmp, ztrtrd ) 
     149               CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_dmp, ztrtrd ) 
    149150            END IF 
    150151            !                                                       ! =========== 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcldf.F90

    r10922 r10946  
    5151CONTAINS 
    5252 
    53    SUBROUTINE trc_ldf( kt, Kmm ) 
     53   SUBROUTINE trc_ldf( kt, Kmm, Krhs ) 
    5454      !!---------------------------------------------------------------------- 
    5555      !!                  ***  ROUTINE tra_ldf  *** 
     
    5959      !!---------------------------------------------------------------------- 
    6060      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    61       INTEGER, INTENT( in ) ::   Kmm  ! ocean time-level index 
     61      INTEGER, INTENT( in ) ::   Kmm, Krhs  ! ocean time-level index 
    6262      ! 
    6363      INTEGER            :: ji, jj, jk, jn 
     
    106106        DO jn = 1, jptra 
    107107           ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn) 
    108            CALL trd_tra( kt, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 
     108           CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 
    109109        END DO 
    110110        DEALLOCATE( ztrtrd ) 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcnxt.F90

    r10425 r10946  
    5454CONTAINS 
    5555 
    56    SUBROUTINE trc_nxt( kt ) 
     56   SUBROUTINE trc_nxt( kt, Kmm, Krhs ) 
    5757      !!---------------------------------------------------------------------- 
    5858      !!                   ***  ROUTINE trcnxt  *** 
     
    7979      !!---------------------------------------------------------------------- 
    8080      INTEGER, INTENT( in ) ::   kt     ! ocean time-step index 
     81      INTEGER, INTENT( in ) ::   Kmm, Krhs  ! time level indices 
    8182      ! 
    8283      INTEGER  ::   jk, jn   ! dummy loop indices 
     
    106107         IF( ln_traldf_iso ) THEN                       ! diagnose the "pure" Kz diffusive trend  
    107108            DO jn = 1, jptra 
    108                CALL trd_tra( kt, 'TRC', jn, jptra_zdfp, ztrdt(:,:,:,jn) ) 
     109               CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_zdfp, ztrdt(:,:,:,jn) ) 
    109110            ENDDO 
    110111         ENDIF 
     
    128129         ! 
    129130         DO jn = 1, jptra 
    130             CALL trd_tra( kt, 'TRC', jn, jptra_tot, ztrdt(:,:,:,jn) ) 
     131            CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_tot, ztrdt(:,:,:,jn) ) 
    131132         ENDDO 
    132133         ! 
     
    150151            ztrdt(:,:,:,:) = 0._wp             
    151152            DO jn = 1, jptra 
    152                CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) ) 
     153               CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) ) 
    153154            ENDDO 
    154155         END IF 
     
    157158         IF( .NOT. l_offline ) THEN ! Leap-Frog + Asselin filter time stepping 
    158159            IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nittrc000,         'TRC', trb, trn, tra, jptra )  !     linear ssh 
    159             ELSE                   ;   CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra,      & 
     160            ELSE                   ;   CALL tra_nxt_vvl( kt, Kmm, Krhs, nittrc000, rdttrc, 'TRC', trb, trn, tra,      & 
    160161              &                                                                   sbc_trc, sbc_trc_b, jptra )  ! non-linear ssh 
    161162            ENDIF 
     
    173174               ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact  
    174175            END DO 
    175             CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) ) 
     176            CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) ) 
    176177         END DO 
    177178      END IF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcrad.F90

    r10425 r10946  
    3737CONTAINS 
    3838 
    39    SUBROUTINE trc_rad( kt ) 
     39   SUBROUTINE trc_rad( kt, Kmm, Krhs ) 
    4040      !!---------------------------------------------------------------------- 
    4141      !!                  ***  ROUTINE trc_rad  *** 
     
    5353      !!---------------------------------------------------------------------- 
    5454      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     55      INTEGER, INTENT(in) ::   Kmm, Krhs  ! time level indices 
    5556      ! 
    5657      CHARACTER (len=22) :: charout 
     
    5960      IF( ln_timing )   CALL timing_start('trc_rad') 
    6061      ! 
    61       IF( ln_age     )   CALL trc_rad_sms( kt, trb, trn, jp_age , jp_age                )  !  AGE 
    62       IF( ll_cfc     )   CALL trc_rad_sms( kt, trb, trn, jp_cfc0, jp_cfc1               )  !  CFC model 
    63       IF( ln_c14     )   CALL trc_rad_sms( kt, trb, trn, jp_c14 , jp_c14                )  !  C14 
    64       IF( ln_pisces  )   CALL trc_rad_sms( kt, trb, trn, jp_pcs0, jp_pcs1, cpreserv='Y' )  !  PISCES model 
    65       IF( ln_my_trc  )   CALL trc_rad_sms( kt, trb, trn, jp_myt0, jp_myt1               )  !  MY_TRC model 
     62      IF( ln_age     )   CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_age , jp_age                )  !  AGE 
     63      IF( ll_cfc     )   CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_cfc0, jp_cfc1               )  !  CFC model 
     64      IF( ln_c14     )   CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_c14 , jp_c14                )  !  C14 
     65      IF( ln_pisces  )   CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_pcs0, jp_pcs1, cpreserv='Y' )  !  PISCES model 
     66      IF( ln_my_trc  )   CALL trc_rad_sms( kt, Kmm, Krhs, trb, trn, jp_myt0, jp_myt1               )  !  MY_TRC model 
    6667      ! 
    6768      IF(ln_ctl) THEN      ! print mean trends (used for debugging) 
     
    113114 
    114115 
    115    SUBROUTINE trc_rad_sms( kt, ptrb, ptrn, jp_sms0, jp_sms1, cpreserv ) 
     116   SUBROUTINE trc_rad_sms( kt, Kmm, Krhs, ptrb, ptrn, jp_sms0, jp_sms1, cpreserv ) 
    116117      !!----------------------------------------------------------------------------- 
    117118      !!                  ***  ROUTINE trc_rad_sms  *** 
     
    130131      !!-------------------------------------------------------------------------------- 
    131132      INTEGER                                , INTENT(in   ) ::   kt                 ! ocean time-step index 
     133      INTEGER                                , INTENT(in   ) ::   Kmm, Krhs          ! time level indices 
    132134      INTEGER                                , INTENT(in   ) ::   jp_sms0, jp_sms1   ! First & last index of the passive tracer model 
    133135      REAL(wp), DIMENSION (jpi,jpj,jpk,jptra), INTENT(inout) ::   ptrb    , ptrn     ! before and now traceur concentration 
     
    183185            IF( l_trdtrc ) THEN 
    184186               ztrtrd(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrd(:,:,:) ) * zs2rdt 
    185                CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrd )       ! Asselin-like trend handling 
     187               CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_radb, ztrtrd )       ! Asselin-like trend handling 
    186188            ENDIF 
    187189            ! 
     
    233235            IF( l_trdtrc ) THEN 
    234236               ztrtrd(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrd(:,:,:) ) * zs2rdt 
    235                CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrd )       ! standard     trend handling 
     237               CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_radn, ztrtrd )       ! standard     trend handling 
    236238            ENDIF 
    237239            ! 
     
    261263            IF( l_trdtrc ) THEN 
    262264               ztrtrd(:,:,:) = ( ptrb(:,:,:,jn) - ztrtrd(:,:,:) ) * zs2rdt 
    263                CALL trd_tra( kt, 'TRC', jn, jptra_radb, ztrtrd )       ! Asselin-like trend handling 
     265               CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_radb, ztrtrd )       ! Asselin-like trend handling 
    264266            ENDIF 
    265267            ! 
     
    270272            IF( l_trdtrc ) THEN 
    271273               ztrtrd(:,:,:) = ( ptrn(:,:,:,jn) - ztrtrd(:,:,:) ) * zs2rdt 
    272                CALL trd_tra( kt, 'TRC', jn, jptra_radn, ztrtrd )       ! standard     trend handling 
     274               CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_radn, ztrtrd )       ! standard     trend handling 
    273275            ENDIF 
    274276            ! 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcsbc.F90

    r10425 r10946  
    3737CONTAINS 
    3838 
    39    SUBROUTINE trc_sbc ( kt ) 
     39   SUBROUTINE trc_sbc ( kt, Kmm, Krhs ) 
    4040      !!---------------------------------------------------------------------- 
    4141      !!                  ***  ROUTINE trc_sbc  *** 
     
    5959      !!---------------------------------------------------------------------- 
    6060      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     61      INTEGER, INTENT(in) ::   Kmm, Krhs  ! time level indices 
    6162      ! 
    6263      INTEGER  ::   ji, jj, jn                      ! dummy loop indices 
     
    163164         IF( l_trdtrc ) THEN 
    164165            ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:) 
    165             CALL trd_tra( kt, 'TRC', jn, jptra_nsr, ztrtrd ) 
     166            CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_nsr, ztrtrd ) 
    166167         END IF 
    167168         !                                                       ! =========== 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trctrp.F90

    r10922 r10946  
    6161      IF( .NOT. lk_c1d ) THEN 
    6262         ! 
    63                                 CALL trc_sbc    ( kt )      ! surface boundary condition 
    64          IF( ln_trabbl )        CALL trc_bbl    ( kt )      ! advective (and/or diffusive) bottom boundary layer scheme 
    65          IF( ln_trcdmp )        CALL trc_dmp    ( kt )      ! internal damping trends 
    66          IF( ln_bdy )           CALL trc_bdy_dmp( kt )      ! BDY damping trends 
     63                                CALL trc_sbc    ( kt, Kmm, Krhs )      ! surface boundary condition 
     64         IF( ln_trabbl )        CALL trc_bbl    ( kt, Kmm, Krhs )      ! advective (and/or diffusive) bottom boundary layer scheme 
     65         IF( ln_trcdmp )        CALL trc_dmp    ( kt, Kmm, Krhs )      ! internal damping trends 
     66         IF( ln_bdy )           CALL trc_bdy_dmp( kt )                 ! BDY damping trends 
    6767                                CALL trc_adv    ( kt, Kbb, Kmm, tr, Krhs )      ! horizontal & vertical advection  
    68          !                                                         ! Partial top/bottom cell: GRADh( trb )   
     68         !                                                             ! Partial top/bottom cell: GRADh( trb )   
    6969         IF( ln_zps ) THEN 
    7070           IF( ln_isfcav ) THEN ; CALL zps_hde_isf( kt, jptra, trb, pgtu=gtru, pgtv=gtrv, pgtui=gtrui, pgtvi=gtrvi )  ! both top & bottom 
     
    7373         ENDIF 
    7474         !                                                       
    75                                 CALL trc_ldf    ( kt, Kmm ) ! lateral mixing 
     75                                CALL trc_ldf    ( kt, Kmm, Krhs ) ! lateral mixing 
    7676#if defined key_agrif 
    7777         IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_trc       ! tracers sponge 
    7878#endif 
    7979                                CALL trc_zdf( kt, Kbb, Kmm, Krhs, tr, Kaa  )  ! vert. mixing & after tracer ==> after 
    80                                 CALL trc_nxt    ( kt )      ! tracer fields at next time step      
    81          IF( ln_trcrad )        CALL trc_rad    ( kt )      ! Correct artificial negative concentrations 
    82          IF( ln_trcdmp_clo )    CALL trc_dmp_clo( kt )      ! internal damping trends on closed seas only 
     80                                CALL trc_nxt    ( kt, Kmm, Krhs )        ! tracer fields at next time step      
     81         IF( ln_trcrad )        CALL trc_rad    ( kt, Kmm, Krhs )        ! Correct artificial negative concentrations 
     82         IF( ln_trcdmp_clo )    CALL trc_dmp_clo( kt )                   ! internal damping trends on closed seas only 
    8383 
    8484         ! 
    8585      ELSE                                               ! 1D vertical configuration 
    86                                 CALL trc_sbc( kt )            ! surface boundary condition 
    87          IF( ln_trcdmp )        CALL trc_dmp( kt )            ! internal damping trends 
     86                                CALL trc_sbc( kt, Kmm, Krhs )            ! surface boundary condition 
     87         IF( ln_trcdmp )        CALL trc_dmp( kt, Kmm, Krhs )            ! internal damping trends 
    8888                                CALL trc_zdf( kt, Kbb, Kmm, Krhs, tr, Kaa  )  ! vert. mixing & after tracer ==> after 
    89                                 CALL trc_nxt( kt )            ! tracer fields at next time step      
    90           IF( ln_trcrad )       CALL trc_rad( kt )            ! Correct artificial negative concentrations 
     89                                CALL trc_nxt( kt, Kmm, Krhs )            ! tracer fields at next time step      
     90          IF( ln_trcrad )       CALL trc_rad( kt, Kmm, Krhs )            ! Correct artificial negative concentrations 
    9191         ! 
    9292      END IF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trczdf.F90

    r10893 r10946  
    6363               ztrtrd(:,:,jk,jn) = ( ( ptr(:,:,jk,jn,Kaa) - ptr(:,:,jk,jn,Kbb) ) / r2dttrc ) - ztrtrd(:,:,jk,jn) 
    6464            END DO 
    65             CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) 
     65            CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) ) 
    6666         END DO 
    6767      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.