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 2910 – NEMO

Changeset 2910


Ignore:
Timestamp:
2011-10-13T11:41:49+02:00 (13 years ago)
Author:
kpedwards
Message:

Updates from Christian - use kit000 in local TRA code; plus a few style corrections in TRC code.

Location:
branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r2892 r2910  
    100100 
    101101      SELECT CASE ( nadv )                            !==  compute advection trend and add it to general trend  ==! 
    102       CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt,nit000, 'TRA',         zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  2nd order centered 
    103       CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  TVD  
    104       CASE ( 3 )   ;    CALL tra_adv_muscl ( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts )   !  MUSCL  
    105       CASE ( 4 )   ;    CALL tra_adv_muscl2( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  MUSCL2  
    106       CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  UBS  
    107       CASE ( 6 )   ;    CALL tra_adv_qck   ( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  QUICKEST  
     102      CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt, nit000, 'TRA',         zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  2nd order centered 
     103      CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  TVD  
     104      CASE ( 3 )   ;    CALL tra_adv_muscl ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts )   !  MUSCL  
     105      CASE ( 4 )   ;    CALL tra_adv_muscl2( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  MUSCL2  
     106      CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  UBS  
     107      CASE ( 6 )   ;    CALL tra_adv_qck   ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  QUICKEST  
    108108      ! 
    109109      CASE (-1 )                                      !==  esopa: test all possibility with control print  ==! 
    110          CALL tra_adv_cen2  ( kt,nit000, 'TRA',         zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     110         CALL tra_adv_cen2  ( kt, nit000, 'TRA',         zun, zvn, zwn, tsb, tsn, tsa, jpts )           
    111111         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv0 - Ta: ', mask1=tmask,               & 
    112112            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    113          CALL tra_adv_tvd   ( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     113         CALL tra_adv_tvd   ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )           
    114114         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv1 - Ta: ', mask1=tmask,               & 
    115115            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    116          CALL tra_adv_muscl ( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts )           
     116         CALL tra_adv_muscl ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts )           
    117117         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv3 - Ta: ', mask1=tmask,               & 
    118118            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    119          CALL tra_adv_muscl2( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     119         CALL tra_adv_muscl2( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )           
    120120         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv4 - Ta: ', mask1=tmask,               & 
    121121            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    122          CALL tra_adv_ubs   ( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     122         CALL tra_adv_ubs   ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )           
    123123         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv5 - Ta: ', mask1=tmask,               & 
    124124            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    125          CALL tra_adv_qck   ( kt,nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     125         CALL tra_adv_qck   ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )           
    126126         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv6 - Ta: ', mask1=tmask,               & 
    127127            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90

    r2892 r2910  
    5353CONTAINS 
    5454 
    55    SUBROUTINE tra_adv_cen2( kt,nit000, cdtype, pun, pvn, pwn,     & 
     55   SUBROUTINE tra_adv_cen2( kt, kit000, cdtype, pun, pvn, pwn,     & 
    5656      &                                 ptb, ptn, pta, kjpt   )  
    5757      !!---------------------------------------------------------------------- 
     
    116116      ! 
    117117      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    118       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     118      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    119119      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    120120      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
     
    136136      ENDIF 
    137137 
    138       IF( kt == nit000 )  THEN 
     138      IF( kt == kit000 )  THEN 
    139139         IF(lwp) WRITE(numout,*) 
    140140         IF(lwp) WRITE(numout,*) 'tra_adv_cen2 : 2nd order centered advection scheme on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90

    r2892 r2910  
    4545CONTAINS 
    4646 
    47    SUBROUTINE tra_adv_eiv( kt,nit000, pun, pvn, pwn, cdtype ) 
     47   SUBROUTINE tra_adv_eiv( kt, kit000, pun, pvn, pwn, cdtype ) 
    4848      !!---------------------------------------------------------------------- 
    4949      !!                  ***  ROUTINE tra_adv_eiv  *** 
     
    6969#endif 
    7070      INTEGER                         , INTENT(in   ) ::   kt       ! ocean time-step index 
    71       INTEGER                         , INTENT(in   ) ::   nit000   ! first time step index 
     71      INTEGER                         , INTENT(in   ) ::   kit000   ! first time step index 
    7272      CHARACTER(len=3)                , INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
    7373      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pun      ! in : 3 ocean velocity components  
     
    9191      ENDIF 
    9292 
    93       IF( kt == nit000 )  THEN 
     93      IF( kt == kit000 )  THEN 
    9494         IF(lwp) WRITE(numout,*) 
    9595         IF(lwp) WRITE(numout,*) 'tra_adv_eiv : eddy induced advection on ', cdtype,' :' 
     
    204204   !!---------------------------------------------------------------------- 
    205205CONTAINS 
    206    SUBROUTINE tra_adv_eiv( kt,nit000, pun, pvn, pwn, cdtype )              ! Empty routine 
     206   SUBROUTINE tra_adv_eiv( kt, kit000, pun, pvn, pwn, cdtype )              ! Empty routine 
    207207      INTEGER  ::   kt     
    208       INTEGER  ::   nit000     
     208      INTEGER  ::   kit000     
    209209      CHARACTER(len=3) ::   cdtype 
    210210      REAL, DIMENSION(:,:,:) ::   pun, pvn, pwn 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90

    r2892 r2910  
    4444CONTAINS 
    4545 
    46    SUBROUTINE tra_adv_muscl( kt,nit000,cdtype, p2dt, pun, pvn, pwn, & 
     46   SUBROUTINE tra_adv_muscl( kt, kit000, cdtype, p2dt, pun, pvn, pwn, & 
    4747      &                                        ptb, pta, kjpt ) 
    4848      !!---------------------------------------------------------------------- 
     
    6666      ! 
    6767      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    68       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     68      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    6969      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    7070      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
     
    8484      ENDIF 
    8585 
    86       IF( kt == nit000 )  THEN 
     86      IF( kt == kit000 )  THEN 
    8787         IF(lwp) WRITE(numout,*) 
    8888         IF(lwp) WRITE(numout,*) 'tra_adv : MUSCL advection scheme on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90

    r2892 r2910  
    4242CONTAINS 
    4343 
    44    SUBROUTINE tra_adv_muscl2( kt,nit000, cdtype, p2dt, pun, pvn, pwn,      & 
     44   SUBROUTINE tra_adv_muscl2( kt, kit000, cdtype, p2dt, pun, pvn, pwn,      & 
    4545      &                                         ptb, ptn, pta, kjpt ) 
    4646      !!---------------------------------------------------------------------- 
     
    6464      !! 
    6565      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    66       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     66      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    6767      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    6868      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
     
    8282      ENDIF 
    8383 
    84       IF( kt == nit000 )  THEN 
     84      IF( kt == kit000 )  THEN 
    8585         IF(lwp) WRITE(numout,*) 
    8686         IF(lwp) WRITE(numout,*) 'tra_adv_muscl2 : MUSCL2 advection scheme on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90

    r2892 r2910  
    4545CONTAINS 
    4646 
    47    SUBROUTINE tra_adv_qck ( kt, nit000, cdtype, p2dt, pun, pvn, pwn,      & 
     47   SUBROUTINE tra_adv_qck ( kt, kit000, cdtype, p2dt, pun, pvn, pwn,      & 
    4848      &                                       ptb, ptn, pta, kjpt ) 
    4949      !!---------------------------------------------------------------------- 
     
    8282      !!---------------------------------------------------------------------- 
    8383      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    84       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     84      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    8585      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    8686      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
     
    9191      !!---------------------------------------------------------------------- 
    9292 
    93       IF( kt == nit000 )  THEN 
     93      IF( kt == kit000 )  THEN 
    9494         IF(lwp) WRITE(numout,*) 
    9595         IF(lwp) WRITE(numout,*) 'tra_adv_qck : 3rd order quickest advection scheme on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90

    r2892 r2910  
    5151CONTAINS 
    5252 
    53    SUBROUTINE tra_adv_tvd ( kt,nit000, cdtype, p2dt, pun, pvn, pwn,      & 
     53   SUBROUTINE tra_adv_tvd ( kt, kit000, cdtype, p2dt, pun, pvn, pwn,      & 
    5454      &                                       ptb, ptn, pta, kjpt ) 
    5555      !!---------------------------------------------------------------------- 
     
    7171      ! 
    7272      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    73       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     73      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    7474      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    7575      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
     
    9090      ENDIF 
    9191 
    92       IF( kt == nit000 )  THEN 
     92      IF( kt == kit000 )  THEN 
    9393         IF(lwp) WRITE(numout,*) 
    9494         IF(lwp) WRITE(numout,*) 'tra_adv_tvd : TVD advection scheme on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90

    r2892 r2910  
    4040CONTAINS 
    4141 
    42    SUBROUTINE tra_adv_ubs ( kt, nit000, cdtype, p2dt, pun, pvn, pwn,      & 
     42   SUBROUTINE tra_adv_ubs ( kt, kit000, cdtype, p2dt, pun, pvn, pwn,      & 
    4343      &                                       ptb, ptn, pta, kjpt ) 
    4444      !!---------------------------------------------------------------------- 
     
    8080      ! 
    8181      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    82       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     82      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    8383      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    8484      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
     
    9898      ENDIF 
    9999 
    100       IF( kt == nit000 )  THEN 
     100      IF( kt == kit000 )  THEN 
    101101         IF(lwp) WRITE(numout,*) 
    102102         IF(lwp) WRITE(numout,*) 'tra_adv_ubs :  horizontal UBS advection scheme on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90

    r2892 r2910  
    311311 
    312312 
    313    SUBROUTINE bbl( kt, nit000, cdtype ) 
     313   SUBROUTINE bbl( kt, kit000, cdtype ) 
    314314      !!---------------------------------------------------------------------- 
    315315      !!                  ***  ROUTINE bbl  *** 
     
    343343      ! 
    344344      INTEGER         , INTENT(in   ) ::   kt       ! ocean time-step index 
    345       INTEGER         , INTENT(in   ) ::   nit000          ! first time step index 
     345      INTEGER         , INTENT(in   ) ::   kit000          ! first time step index 
    346346      CHARACTER(len=3), INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
    347347      !! 
     
    390390      ENDIF 
    391391      
    392       IF( kt == nit000 )  THEN 
     392      IF( kt == kit000 )  THEN 
    393393         IF(lwp)  WRITE(numout,*) 
    394394         IF(lwp)  WRITE(numout,*) 'trabbl:bbl : Compute bbl velocities and diffusive coefficients in ', cdtype 
     
    538538      !! 
    539539      !! ** Method  :   Read the nambbl namelist and check the parameters 
    540       !!              called by nemo_init at the first timestep (nit000) 
     540      !!              called by nemo_init at the first timestep (kit000) 
    541541      !!---------------------------------------------------------------------- 
    542542      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90

    r2892 r2910  
    6868 
    6969      SELECT CASE ( nldf )                       ! compute lateral mixing trend and add it to the general trend 
    70       CASE ( 0 )   ;   CALL tra_ldf_lap     ( kt,nit000, 'TRA', gtsu, gtsv, tsb, tsa, jpts        )  ! iso-level laplacian 
     70      CASE ( 0 )   ;   CALL tra_ldf_lap     ( kt, nit000, 'TRA', gtsu, gtsv, tsb, tsa, jpts        )  ! iso-level laplacian 
    7171      CASE ( 1 )                                                                              ! rotated laplacian 
    7272         IF( ln_traldf_grif ) THEN                                                           
     
    297297      ! Compute the ldf trends 
    298298      ! ---------------------- 
    299       CALL tra_ldf( nit000+1 )      ! horizontal components (+1: no more init) 
    300       CALL tra_zdf( nit000   )      ! vertical component (if necessary nit000 to performed the init) 
     299      CALL tra_ldf( nit000 + 1 )      ! horizontal components (+1: no more init) 
     300      CALL tra_zdf( nit000     )      ! vertical component (if necessary nit000 to performed the init) 
    301301 
    302302      ! finalise the computation and recover all arrays 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilap.F90

    r2892 r2910  
    4747CONTAINS 
    4848  
    49    SUBROUTINE tra_ldf_bilap( kt, nit000, cdtype, pgu, pgv,      & 
     49   SUBROUTINE tra_ldf_bilap( kt, kit000, cdtype, pgu, pgv,      & 
    5050      &                                  ptb, pta, kjpt )   
    5151      !!---------------------------------------------------------------------- 
     
    7979      !! 
    8080      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
    81       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     81      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    8282      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
    8383      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
     
    9494      ENDIF 
    9595 
    96       IF( kt == nit000 )  THEN 
     96      IF( kt == kit000 )  THEN 
    9797         IF(lwp) WRITE(numout,*) 
    9898         IF(lwp) WRITE(numout,*) 'tra_ldf_bilap : iso-level biharmonic operator on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90

    r2892 r2910  
    4242CONTAINS 
    4343 
    44    SUBROUTINE tra_ldf_bilapg( kt, nit000, cdtype, ptb, pta, kjpt ) 
     44   SUBROUTINE tra_ldf_bilapg( kt, kit000, cdtype, ptb, pta, kjpt ) 
    4545      !!---------------------------------------------------------------------- 
    4646      !!                 ***  ROUTINE tra_ldf_bilapg  *** 
     
    7070      ! 
    7171      INTEGER         , INTENT(in   )                      ::   kt       ! ocean time-step index 
    72       INTEGER         , INTENT(in   )                      ::   nit000   ! first time step index 
     72      INTEGER         , INTENT(in   )                      ::   kit000   ! first time step index 
    7373      CHARACTER(len=3), INTENT(in   )                      ::   cdtype   ! =TRA or TRC (tracer indicator) 
    7474      INTEGER         , INTENT(in   )                      ::   kjpt     ! number of tracers 
     
    8383      ENDIF 
    8484 
    85       IF( kt == nit000 )  THEN 
     85      IF( kt == kit000 )  THEN 
    8686         IF(lwp) WRITE(numout,*) 
    8787         IF(lwp) WRITE(numout,*) 'tra_ldf_bilapg : horizontal biharmonic operator in s-coordinate on ', cdtype 
     
    346346   !!---------------------------------------------------------------------- 
    347347CONTAINS 
    348    SUBROUTINE tra_ldf_bilapg( kt,nit000, cdtype, ptb, pta, kjpt )      ! Empty routine 
    349       INTEGER :: kt, nit000 
     348   SUBROUTINE tra_ldf_bilapg( kt, kit000, cdtype, ptb, pta, kjpt )      ! Empty routine 
     349      INTEGER :: kt, kit000 
    350350      CHARACTER(len=3) ::   cdtype 
    351351      REAL, DIMENSION(:,:,:,:) ::   ptb, pta 
    352       WRITE(*,*) 'tra_ldf_iso: You should not have seen this print! error?', kt, cdtype, ptb(1,1,1,1), pta(1,1,1,1), kjpt 
     352      WRITE(*,*) 'tra_ldf_iso: You should not have seen this print! error?', & 
     353        &         kt, kit000, cdtype, ptb(1,1,1,1), pta(1,1,1,1), kjpt 
    353354   END SUBROUTINE tra_ldf_bilapg 
    354355#endif 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90

    r2892 r2910  
    4949CONTAINS 
    5050 
    51    SUBROUTINE tra_ldf_iso( kt,nit000, cdtype, pgu, pgv,              & 
     51   SUBROUTINE tra_ldf_iso( kt, kit000, cdtype, pgu, pgv,              & 
    5252      &                                ptb, pta, kjpt, pahtb0 ) 
    5353      !!---------------------------------------------------------------------- 
     
    9696      ! 
    9797      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
    98       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     98      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    9999      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
    100100      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
     
    117117      ENDIF 
    118118 
    119       IF( kt == nit000 )  THEN 
     119      IF( kt == kit000 )  THEN 
    120120         IF(lwp) WRITE(numout,*) 
    121121         IF(lwp) WRITE(numout,*) 'tra_ldf_iso : rotated laplacian diffusion operator on ', cdtype 
     
    302302   !!---------------------------------------------------------------------- 
    303303CONTAINS 
    304    SUBROUTINE tra_ldf_iso( kt, nit000,cdtype, pgu, pgv, ptb, pta, kjpt, pahtb0 )      ! Empty routine 
    305       INTEGER:: kt, nit000 
     304   SUBROUTINE tra_ldf_iso( kt, kit000,cdtype, pgu, pgv, ptb, pta, kjpt, pahtb0 )      ! Empty routine 
     305      INTEGER:: kt, kit000 
    306306      CHARACTER(len=3) ::   cdtype 
    307307      REAL, DIMENSION(:,:,:) ::   pgu, pgv   ! tracer gradient at pstep levels 
    308308      REAL, DIMENSION(:,:,:,:) ::   ptb, pta 
    309       WRITE(*,*) 'tra_ldf_iso: You should not have seen this print! error?', kt, cdtype, pgu(1,1,1), pgv(1,1,1),   & 
    310          &                                                             ptb(1,1,1,1), pta(1,1,1,1), kjpt, pahtb0 
     309      WRITE(*,*) 'tra_ldf_iso: You should not have seen this print! error?', kt, kit000, cdtype,   & 
     310         &                       pgu(1,1,1), pgv(1,1,1), ptb(1,1,1,1), pta(1,1,1,1), kjpt, pahtb0 
    311311   END SUBROUTINE tra_ldf_iso 
    312312#endif 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90

    r2892 r2910  
    4848CONTAINS 
    4949 
    50   SUBROUTINE tra_ldf_iso_grif( kt, nit000, cdtype, pgu, pgv,              & 
     50  SUBROUTINE tra_ldf_iso_grif( kt, kit000, cdtype, pgu, pgv,              & 
    5151       &                                   ptb, pta, kjpt, pahtb0 ) 
    5252      !!---------------------------------------------------------------------- 
     
    9595      ! 
    9696      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
    97       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     97      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    9898      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
    9999      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
     
    128128      !zdkt(1:jpi,1:jpj,0:1) => wrk_3d_9(:,:,1:2) 
    129129 
    130       IF( kt == nit000 )  THEN 
     130      IF( kt == kit000 )  THEN 
    131131         IF(lwp) WRITE(numout,*) 
    132132         IF(lwp) WRITE(numout,*) 'tra_ldf_iso_grif : rotated laplacian diffusion operator on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap.F90

    r2892 r2910  
    4444CONTAINS 
    4545 
    46    SUBROUTINE tra_ldf_lap( kt, nit000, cdtype, pgu, pgv,      & 
     46   SUBROUTINE tra_ldf_lap( kt, kit000, cdtype, pgu, pgv,      & 
    4747      &                                ptb, pta, kjpt )  
    4848      !!---------------------------------------------------------------------- 
     
    6666      ! 
    6767      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
    68       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     68      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    6969      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
    7070      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
     
    7878      !!---------------------------------------------------------------------- 
    7979       
    80       IF( kt == nit000 )  THEN 
     80      IF( kt == kit000 )  THEN 
    8181         IF(lwp) WRITE(numout,*) 
    8282         IF(lwp) WRITE(numout,*) 'tra_ldf_lap : iso-level laplacian diffusion on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r2892 r2910  
    148148      ELSE                                            ! Leap-Frog + Asselin filter time stepping 
    149149         ! 
    150          IF( lk_vvl )  THEN   ;   CALL tra_nxt_vvl( kt,nit000, 'TRA', tsb, tsn, tsa, jpts )  ! variable volume level (vvl)      
    151          ELSE                 ;   CALL tra_nxt_fix( kt,nit000, 'TRA', tsb, tsn, tsa, jpts )  ! fixed    volume level  
     150         IF( lk_vvl )  THEN   ;   CALL tra_nxt_vvl( kt, nit000, 'TRA', tsb, tsn, tsa, jpts )  ! variable volume level (vvl)      
     151         ELSE                 ;   CALL tra_nxt_fix( kt, nit000, 'TRA', tsb, tsn, tsa, jpts )  ! fixed    volume level  
    152152         ENDIF 
    153153      ENDIF  
     
    179179 
    180180 
    181    SUBROUTINE tra_nxt_fix( kt, nit000, cdtype, ptb, ptn, pta, kjpt ) 
     181   SUBROUTINE tra_nxt_fix( kt, kit000, cdtype, ptb, ptn, pta, kjpt ) 
    182182      !!---------------------------------------------------------------------- 
    183183      !!                   ***  ROUTINE tra_nxt_fix  *** 
     
    203203      !!---------------------------------------------------------------------- 
    204204      INTEGER         , INTENT(in   )                               ::   kt       ! ocean time-step index 
    205       INTEGER         , INTENT(in   )                               ::   nit000   ! first time step index 
     205      INTEGER         , INTENT(in   )                               ::   kit000   ! first time step index 
    206206      CHARACTER(len=3), INTENT(in   )                               ::   cdtype   ! =TRA or TRC (tracer indicator) 
    207207      INTEGER         , INTENT(in   )                               ::   kjpt     ! number of tracers 
     
    215215      !!---------------------------------------------------------------------- 
    216216 
    217       IF( kt == nit000 )  THEN 
     217      IF( kt == kit000 )  THEN 
    218218         IF(lwp) WRITE(numout,*) 
    219219         IF(lwp) WRITE(numout,*) 'tra_nxt_fix : time stepping', cdtype 
     
    246246 
    247247 
    248    SUBROUTINE tra_nxt_vvl( kt, nit000, cdtype, ptb, ptn, pta, kjpt ) 
     248   SUBROUTINE tra_nxt_vvl( kt, kit000, cdtype, ptb, ptn, pta, kjpt ) 
    249249      !!---------------------------------------------------------------------- 
    250250      !!                   ***  ROUTINE tra_nxt_vvl  *** 
     
    271271      !!---------------------------------------------------------------------- 
    272272      INTEGER         , INTENT(in   )                               ::   kt       ! ocean time-step index 
    273       INTEGER         , INTENT(in   )                               ::   nit000   ! first time step index 
     273      INTEGER         , INTENT(in   )                               ::   kit000   ! first time step index 
    274274      CHARACTER(len=3), INTENT(in   )                               ::   cdtype   ! =TRA or TRC (tracer indicator) 
    275275      INTEGER         , INTENT(in   )                               ::   kjpt     ! number of tracers 
     
    284284      !!---------------------------------------------------------------------- 
    285285 
    286       IF( kt == nit000 )  THEN 
     286      IF( kt == kit000 )  THEN 
    287287         IF(lwp) WRITE(numout,*) 
    288288         IF(lwp) WRITE(numout,*) 'tra_nxt_vvl : time stepping', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90

    r2892 r2910  
    4848CONTAINS 
    4949 
    50    SUBROUTINE tra_zdf_exp( kt,nit000, cdtype, p2dt, kn_zdfexp,   & 
     50   SUBROUTINE tra_zdf_exp( kt, kit000, cdtype, p2dt, kn_zdfexp,   & 
    5151      &                                ptb , pta      , kjpt ) 
    5252      !!---------------------------------------------------------------------- 
     
    7777      ! 
    7878      INTEGER                              , INTENT(in   ) ::   kt          ! ocean time-step index 
    79       INTEGER                              , INTENT(in   ) ::   nit000      ! first time step index 
     79      INTEGER                              , INTENT(in   ) ::   kit000      ! first time step index 
    8080      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype      ! =TRA or TRC (tracer indicator) 
    8181      INTEGER                              , INTENT(in   ) ::   kjpt        ! number of tracers 
     
    9494      ENDIF 
    9595 
    96       IF( kt == nit000 )  THEN 
     96      IF( kt == kit000 )  THEN 
    9797         IF(lwp) WRITE(numout,*) 
    9898         IF(lwp) WRITE(numout,*) 'tra_zdf_exp : explicit vertical mixing on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r2892 r2910  
    5555CONTAINS 
    5656  
    57    SUBROUTINE tra_zdf_imp( kt,nit000, cdtype, p2dt, ptb, pta, kjpt )  
     57   SUBROUTINE tra_zdf_imp( kt, kit000, cdtype, p2dt, ptb, pta, kjpt )  
    5858      !!---------------------------------------------------------------------- 
    5959      !!                  ***  ROUTINE tra_zdf_imp  *** 
     
    7979      ! 
    8080      INTEGER                              , INTENT(in   ) ::   kt       ! ocean time-step index 
    81       INTEGER                              , INTENT(in   ) ::   nit000          ! first time step index 
     81      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    8282      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
    8383      INTEGER                              , INTENT(in   ) ::   kjpt     ! number of tracers 
     
    9494      ENDIF 
    9595 
    96       IF( kt == nit000 )  THEN 
     96      IF( kt == kit000 )  THEN 
    9797         IF(lwp)WRITE(numout,*) 
    9898         IF(lwp)WRITE(numout,*) 'tra_zdf_imp : implicit vertical mixing on ', cdtype 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r2892 r2910  
    103103   !! variables to average over physics over passive tracer sub-steps. 
    104104   !! ---------------------------------------------------------------- 
    105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::  un_tm      !: i-horizontal velocity average     [m/s] 
    106   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::  vn_tm      !: j-horizontal velocity average     [m/s] 
    107   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::  wn_tm      !: k-vertical velocity average       [m/s] 
    108   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::  avt_tm     !: vertical viscosity & diffusivity coeff. at  w-point   [m2/s] 
    109   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::    sshn_tm !: average ssh for the now step [m] 
    110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::    sshb_hold !:hold sshb from the beginning of each sub-stepping[m]   
    111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::    sshu_n_tm !: average ssh for the now step [m] 
    112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::    sshu_b_hold !:hold sshb from the beginning of each sub-stepping[m]   
    113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::    sshv_n_tm !: average ssh for the now step [m] 
    114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::    sshv_b_hold !:hold sshb from the beginning of each sub-stepping[m]   
     105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  un_tm       !: i-horizontal velocity average     [m/s] 
     106   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  vn_tm       !: j-horizontal velocity average     [m/s] 
     107   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  wn_tm       !: k-vertical velocity average       [m/s] 
     108   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  avt_tm      !: vertical viscosity & diffusivity coeff. at  w-point   [m2/s] 
     109   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshn_tm    !: average ssh for the now step [m] 
     110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshb_hold  !:hold sshb from the beginning of each sub-stepping[m]   
     111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshu_n_tm  !: average ssh for the now step [m] 
     112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshu_b_hold !:hold sshb from the beginning of each sub-stepping[m]   
     113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshv_n_tm  !: average ssh for the now step [m] 
     114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshv_b_hold !:hold sshb from the beginning of each sub-stepping[m]   
    115115#if defined key_ldfslp 
    116   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::   wslpi_tm !: i-direction slope at u-, w-points 
    117   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::   wslpj_tm !: j-direction slope at u-, w-points 
    118   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::   uslp_tm !: j-direction slope at u-, w-points 
    119   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::   vslp_tm !: j-direction slope at u-, w-points 
    120 #endif 
    121  
    122   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) :: tsn_tm      !: t/s average     [m/s] 
    123   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::     fr_i_tm    !: average ice fraction     [m/s] 
    124   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::     hmld_tm    !: mixed layer depth average [m] 
    125   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::     qsr_tm     !: solar radiation average [m] 
    126   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::     wndm_tm    !: 10m wind average [m] 
    127   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::     emp_tm     !: freshwater budget: volume flux [Kg/m2/s] 
    128   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::     emp_b_hold !:hold emp from the beginning of each sub-stepping[m]   
    129   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) ::    emps_tm    !: freshwater budget:concentration/dilution [Kg/m2/s] 
     116   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  wslpi_tm    !: i-direction slope at u-, w-points 
     117   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  wslpj_tm    !: j-direction slope at u-, w-points 
     118   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  uslp_tm     !: j-direction slope at u-, w-points 
     119   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  vslp_tm     !: j-direction slope at u-, w-points 
     120#endif 
     121 
     122   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  tsn_tm     !: t/s average     [m/s] 
     123   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  fr_i_tm    !: average ice fraction     [m/s] 
     124   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  hmld_tm    !: mixed layer depth average [m] 
     125   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  qsr_tm     !: solar radiation average [m] 
     126   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  wndm_tm    !: 10m wind average [m] 
     127   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  emp_tm     !: freshwater budget: volume flux [Kg/m2/s] 
     128   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  emp_b_hold !: hold emp from the beginning of each sub-stepping[m]   
     129   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  emps_tm    !: freshwater budget:concentration/dilution [Kg/m2/s] 
     130   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  rnf_tm     !: river runoff 
     131   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  h_rnf_tm   !: depth in metres to the bottom of the relevant grid box 
     132   ! 
    130133# if defined key_zdfddm 
    131   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::  avs_tm      !: salinity vertical diffusivity coeff. at w-point   [m/s] 
    132 # endif 
     134   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  avs_tm     !: salinity vertical diffusivity coeff. at w-point   [m/s] 
     135# endif 
     136   ! 
    133137#if defined key_traldf_c3d 
    134    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ahtt_tm, ahtu_tm, ahtv_tm, ahtw_tm   !: ** 3D coefficients ** at T-,U-,V-,W-points 
     138   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  ahtt_tm, ahtu_tm, ahtv_tm, ahtw_tm   !: ** 3D coefficients ** at T-,U-,V-,W-points 
    135139#elif defined key_traldf_c2d 
    136    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ahtt_tm, ahtu_tm, ahtv_tm, ahtw_tm   !: ** 2D coefficients ** at T-,U-,V-,W-points 
     140   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  ahtt_tm, ahtu_tm, ahtv_tm, ahtw_tm   !: ** 2D coefficients ** at T-,U-,V-,W-points 
    137141#elif defined key_traldf_c1d 
    138    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)     ::   ahtt_tm, ahtu_tm, ahtv_tm, ahtw_tm   !: ** 1D coefficients ** at T-,U-,V-,W-points 
     142   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::  ahtt_tm, ahtu_tm, ahtv_tm, ahtw_tm   !: ** 1D coefficients ** at T-,U-,V-,W-points 
    139143#else 
    140    REAL(wp), PUBLIC                                      ::   ahtt_tm, ahtu_tm, ahtv_tm, ahtw_tm   !: ** 0D coefficients ** at T-,U-,V-,W-points 
    141 #endif 
     144   REAL(wp), PUBLIC                                        ::  ahtt_tm, ahtu_tm, ahtv_tm, ahtw_tm   !: ** 0D coefficients ** at T-,U-,V-,W-points 
     145#endif 
     146   ! 
     147#if defined key_traldf_eiv 
     148#  if defined key_traldf_c3d 
     149   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  aeiu_tm , aeiv_tm , aeiw_tm   !: ** 3D coefficients ** 
     150#  elif defined key_traldf_c2d 
     151   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  aeiu_tm , aeiv_tm , aeiw_tm   !: ** 2D coefficients ** 
     152#  elif defined key_traldf_c1d 
     153   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::  aeiu_tm , aeiv_tm, aeiw_tm   !: ** 1D coefficients ** 
     154#  else 
     155   REAL(wp), PUBLIC                                        ::  aeiu_tm , aeiv_tm , aeiw_tm   !: ** 0D coefficients ** 
     156#  endif 
     157#endif 
     158 
     159   ! Temporary physical arrays for sub_stepping 
     160   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  tsn_temp 
     161   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  un_temp,vn_temp,wn_temp     !: hold current values of avt, un, vn, wn 
     162   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  avt_temp     !: hold current values of avt, un, vn, wn 
     163   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  e3t_temp,e3u_temp,e3v_temp,e3w_temp     !: hold current values 
     164   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshn_temp, sshb_temp, ssha_temp, rnf_temp,h_rnf_temp 
     165   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshu_n_temp, sshu_b_temp, sshu_a_temp 
     166   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshf_n_temp, sshf_b_temp, sshf_a_temp 
     167   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  sshv_n_temp, sshv_b_temp, sshv_a_temp 
     168   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  hu_temp, hv_temp, hur_temp, hvr_temp 
     169   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  hdivn_temp, rotn_temp 
     170   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  hdivb_temp, rotb_temp 
     171   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  hmld_temp, qsr_temp, fr_i_temp,wndm_temp 
     172   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  emp_temp, emps_temp, emp_b_temp 
     173   ! 
     174#if defined key_ldfslp 
     175   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  wslpi_temp, wslpj_temp, uslp_temp, vslp_temp    !: hold current values  
     176#endif 
     177   !  
     178# if defined key_zdfddm 
     179   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  avs_temp      !: salinity vertical diffusivity coeff. at w-point   [m/s] 
     180# endif 
     181   ! 
     182#if defined key_traldf_c3d 
     183   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  ahtt_temp, ahtu_temp, ahtv_temp, ahtw_temp    
     184#elif defined key_traldf_c2d 
     185   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  ahtt_temp, ahtu_temp, ahtv_temp, ahtw_temp   
     186#elif defined key_traldf_c1d 
     187   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::  ahtt_temp, ahtu_temp, ahtv_temp, ahtw_temp  
     188#else 
     189   REAL(wp), PUBLIC                                        ::  ahtt_temp, ahtu_temp, ahtv_temp, ahtw_temp 
     190#endif 
     191   ! 
    142192#if defined key_traldf_eiv 
    143193# if defined key_traldf_c3d 
    144    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aeiu_tm , aeiv_tm , aeiw_tm   !: ** 3D coefficients ** 
     194   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::  aeiu_temp , aeiv_temp , aeiw_temp   !: ** 3D coefficients ** 
    145195# elif defined key_traldf_c2d 
    146    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   aeiu_tm , aeiv_tm , aeiw_tm   !: ** 2D coefficients ** 
     196   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::  aeiu_temp , aeiv_temp , aeiw_temp   !: ** 2D coefficients ** 
    147197# elif defined key_traldf_c1d 
    148    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)     ::   aeiu_tm , aeiv_tm, aeiw_tm   !: ** 1D coefficients ** 
     198   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)       ::  aeiu_temp , aeiv_temp, aeiw_temp   !: ** 1D coefficients ** 
    149199# else 
    150    REAL(wp), PUBLIC                                      ::   aeiu_tm , aeiv_tm , aeiw_tm   !: ** 0D coefficients ** 
    151 # endif 
    152 # endif 
    153  
    154   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:)  ::   rnf_tm !: river runoff 
    155   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:)  ::   h_rnf_tm !: depth in metres to the bottom of the relevant grid box 
    156   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    avt_temp,un_temp,vn_temp,wn_temp     !: hold current values of avt, un, vn, wn 
    157 #if defined key_ldfslp 
    158   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    wslpi_temp,wslpj_temp, uslp_temp, vslp_temp    !: hold current values  
    159 #endif 
    160   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::    e3t_temp,e3u_temp,e3v_temp,e3w_temp     !: hold current values 
    161   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:)::       sshn_temp, sshb_temp, ssha_temp, rnf_temp,h_rnf_temp 
    162   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:)::       sshu_n_temp, sshu_b_temp, sshu_a_temp 
    163   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:)::       sshf_n_temp, sshf_b_temp, sshf_a_temp 
    164   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:)::       sshv_n_temp, sshv_b_temp, sshv_a_temp 
    165   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:)::       hu_temp, hv_temp, hur_temp, hvr_temp 
    166   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:,:)::     hdivn_temp, rotn_temp 
    167   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:,:)::     hdivb_temp, rotb_temp 
    168   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  tsn_temp 
    169   REAL(wp), PUBLIC,ALLOCATABLE, SAVE, DIMENSION(:,:)::       hmld_temp, qsr_temp, emp_temp, emps_temp,fr_i_temp,wndm_temp,emp_b_temp 
    170 # if defined key_zdfddm 
    171   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:) ::  avs_temp      !: salinity vertical diffusivity coeff. at w-point   [m/s] 
    172 # endif 
    173 #if defined key_traldf_c3d 
    174    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  ahtt_temp, ahtu_temp, ahtv_temp, ahtw_temp   !: ** 3D coefficients ** at T-,U-,V-,W-points 
    175 #elif defined key_traldf_c2d 
    176    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  ahtt_temp, ahtu_temp, ahtv_temp, ahtw_temp   !: ** 2D coefficients ** at T-,U-,V-,W-points 
    177 #elif defined key_traldf_c1d 
    178    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)     ::  ahtt_temp, ahtu_temp, ahtv_temp, ahtw_temp   !: ** 1D coefficients ** at T-,U-,V-,W-points 
    179 #else 
    180    REAL(wp), PUBLIC                                      ::  ahtt_temp, ahtu_temp, ahtv_temp, ahtw_temp   !: ** 0D coefficients ** at T-,U-,V-,W-points 
    181 #endif 
    182 #if defined key_traldf_eiv 
    183 # if defined key_traldf_c3d 
    184    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  aeiu_temp , aeiv_temp , aeiw_temp   !: ** 3D coefficients ** 
    185 # elif defined key_traldf_c2d 
    186    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  aeiu_temp , aeiv_temp , aeiw_temp   !: ** 2D coefficients ** 
    187 # elif defined key_traldf_c1d 
    188    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)     ::  aeiu_temp , aeiv_temp, aeiw_temp   !: ** 1D coefficients ** 
    189 # else 
    190    REAL(wp), PUBLIC                                      ::  aeiu_temp , aeiv_temp , aeiw_temp   !: ** 0D coefficients ** 
     200   REAL(wp), PUBLIC                                        ::  aeiu_temp , aeiv_temp , aeiw_temp   !: ** 0D coefficients ** 
    191201# endif 
    192202# endif 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r2892 r2910  
    145145      IF( ln_zps .AND. .NOT. lk_c1d )   &              ! Partial steps: before horizontal gradient of passive 
    146146        &    CALL zps_hde( nittrc000, jptra, trn, gtru, gtrv )       ! tracers at the bottom ocean level 
    147  
    148  
     147      ! 
     148      IF( nn_dttrc /= 1 )        CALL trc_sub_ini      ! Initialize variables for substepping passive tracers 
    149149      !            
    150150      trai = 0._wp         ! Computation content of all tracers 
     
    171171         CALL prt_ctl_trc_info( charout ) 
    172172         CALL prt_ctl_trc( tab4d=trn, mask=tmask, clinfo=ctrcnm ) 
    173       ENDIF 
    174  
    175       IF(nn_dttrc .NE. 1) THEN 
    176           CALL trc_sub_ini      !initialize variables for substepping passive tracers 
    177173      ENDIF 
    178174      ! 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r2892 r2910  
    5151      !!------------------------------------------------------------------- 
    5252 
    53      IF(nn_dttrc .NE. 1) THEN 
    54         CALL trc_sub_stp(kt) 
    55      ENDIF 
     53     IF( nn_dttrc /= 1 )   CALL trc_sub_stp( kt )  ! averaging physical variables for sub-stepping 
     54 
    5655     IF( MOD( kt , nn_dttrc ) == 0 ) THEN      ! only every nn_dttrc time step 
    57  
    5856         ! 
    5957         IF(ln_ctl) THEN 
     
    7371                                   CALL trc_trp( kt )           ! transport of passive tracers 
    7472         IF( kt == nittrc000 )     CALL iom_close( numrtr )     ! close input  passive tracers restart file 
    75          IF( lrst_trc )            CALL trc_rst_wri( kt )       ! write tracer restart file 
    76          IF( lk_trdmld_trc  )      CALL trd_mld_trc( kt )       ! trends: Mixed-layer 
     73         IF( lrst_trc        )     CALL trc_rst_wri( kt )       ! write tracer restart file 
     74         IF( lk_trdmld_trc   )     CALL trd_mld_trc( kt )       ! trends: Mixed-layer 
    7775         ! 
    78          IF(nn_dttrc .NE. 1) THEN 
    79             CALL trc_sub_reset(kt) 
    80          ENDIF 
     76         IF( nn_dttrc /= 1   )     CALL trc_sub_reset( kt )  ! resetting physical variables when sub-stepping 
     77         ! 
    8178      ENDIF 
    8279 
  • branches/2011/dev_r2802_TOP_substepping/NEMOGCM/NEMO/TOP_SRC/trcsub.F90

    r2904 r2910  
    2626   USE divcur          ! hor. divergence and curl      (div & cur routines) 
    2727   USE sbcrnf, ONLY: h_rnf, nk_rnf   ! River runoff  
    28    USE trc, ONLY:  nn_dttrc, nittrc000 !TOP_TRC substepping 
    2928   USE sbc_oce         ! surface boundary condition: ocean 
    3029   USE bdy_oce 
     
    3635   IMPLICIT NONE 
    3736 
    38    PUBLIC   trc_sub_stp    ! called by trc_stp 
    39    PUBLIC   trc_sub_ini    ! called by trc_ini to initialize substepping arrays. 
    40    PUBLIC   trc_sub_reset  ! called by trc_stp to reset physics variables 
    41    PUBLIC   trc_sub_ssh    ! called by trc_stp to reset physics variables 
    42  
     37   PUBLIC   trc_sub_stp      ! called by trc_stp 
     38   PUBLIC   trc_sub_ini      ! called by trc_ini to initialize substepping arrays. 
     39   PUBLIC   trc_sub_reset    ! called by trc_stp to reset physics variables 
     40   PUBLIC   trc_sub_ssh      ! called by trc_stp to reset physics variables 
     41 
     42   !!* Module variables 
     43   REAL(wp)  :: r1_ndttrc     !    1 /  nn_dttrc  
     44   REAL(wp)  :: r1_ndttrcp1   !    1 / (nn_dttrc+1)  
     45 
     46   !!* Substitution 
    4347#  include "top_substitute.h90" 
    44     
    4548   !!---------------------------------------------------------------------- 
    4649   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     
    5962      !!              on TOP steps, calculate averages. 
    6063      !!------------------------------------------------------------------- 
    61       INTEGER, INTENT( in ) ::  kt        !ocean time-step index 
    62       INTEGER ::          ji,jj,jk  !dummy loop indices 
     64      INTEGER, INTENT( in ) ::  kt        ! ocean time-step index 
     65      INTEGER               ::  ji,jj,jk  ! dummy loop indices 
     66      REAL(wp)              ::  z1_ne3t, z1_ne3u, z1_ne3v, z1_ne3w 
    6367      !!------------------------------------------------------------------- 
    6468 
     
    6771           IF(lwp) WRITE(numout,*) 'trc_sub_stp : substepping of the passive tracers' 
    6872           IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
    69  
    70            sshb_hold(:,:)=sshn(:,:) 
    71            sshu_b_hold(:,:)=sshu_n(:,:) 
    72            sshv_b_hold(:,:)=sshv_n(:,:) 
    73            emp_b_hold(:,:)=emp_b(:,:) 
     73           ! 
     74           sshb_hold  (:,:) = sshn  (:,:) 
     75           sshu_b_hold(:,:) = sshu_n(:,:) 
     76           sshv_b_hold(:,:) = sshv_n(:,:) 
     77           emp_b_hold (:,:) = emp_b (:,:) 
     78           ! 
     79           r1_ndttrc        = 1._wp / REAL( nn_dttrc    , wp )  
     80           r1_ndttrcp1      = 1._wp / REAL( nn_dttrc + 1, wp ) 
     81           ! 
    7482       ENDIF   
     83 
    7584       IF( MOD( kt , nn_dttrc ) /= 0 ) THEN 
     85          ! 
     86          un_tm   (:,:,:)        = un_tm   (:,:,:)        + un   (:,:,:)        * fse3u(:,:,:)  
     87          vn_tm   (:,:,:)        = vn_tm   (:,:,:)        + vn   (:,:,:)        * fse3v(:,:,:)  
     88          wn_tm   (:,:,:)        = wn_tm   (:,:,:)        + wn   (:,:,:)        * fse3w(:,:,:)  
     89          tsn_tm  (:,:,:,jp_tem) = tsn_tm  (:,:,:,jp_tem) + tsn  (:,:,:,jp_tem) * fse3t(:,:,:)   
     90          tsn_tm  (:,:,:,jp_sal) = tsn_tm  (:,:,:,jp_tem) + tsn  (:,:,:,jp_sal) * fse3t(:,:,:)   
     91          avt_tm  (:,:,:)        = avt_tm  (:,:,:)        + avt  (:,:,:)        * fse3w(:,:,:)   
     92# if defined key_zdfddm 
     93          avs_tm  (:,:,:)        = avs_tm  (:,:,:)        + avs  (:,:,:)        * fse3w(:,:,:)   
     94# endif 
     95#if defined key_ldfslp 
     96          wslpi_tm(:,:,:)        = wslpi_tm(:,:,:)        + wslpi(:,:,:)        * fse3w(:,:,:)  
     97          wslpj_tm(:,:,:)        = wslpj_tm(:,:,:)        + wslpj(:,:,:)        * fse3w(:,:,:)  
     98          uslp_tm (:,:,:)        = uslp_tm (:,:,:)        + uslp (:,:,:)        * fse3u(:,:,:)  
     99          vslp_tm (:,:,:)        = vslp_tm (:,:,:)        + vslp (:,:,:)        * fse3v(:,:,:)  
     100#endif 
     101          ! 
     102          sshn_tm  (:,:)         = sshn_tm  (:,:)         + sshn  (:,:)  
     103          sshu_n_tm(:,:)         = sshu_n_tm(:,:)         + sshu_n(:,:)  
     104          sshv_n_tm(:,:)         = sshv_n_tm(:,:)         + sshv_n(:,:)  
     105          rnf_tm   (:,:)         = rnf_tm   (:,:)         + rnf   (:,:)  
     106          h_rnf_tm (:,:)         = h_rnf_tm (:,:)         + h_rnf (:,:)  
     107          hmld_tm  (:,:)         = hmld_tm  (:,:)         + hmld  (:,:) 
     108          fr_i_tm  (:,:)         = fr_i_tm  (:,:)         + fr_i  (:,:) 
     109          emp_tm   (:,:)         = emp_tm   (:,:)         + emp   (:,:)  
     110          emps_tm  (:,:)         = emps_tm  (:,:)         + emps  (:,:) 
     111          qsr_tm   (:,:)         = qsr_tm   (:,:)         + qsr   (:,:) 
     112          wndm_tm  (:,:)         = wndm_tm  (:,:)         + wndm  (:,:) 
     113          ! 
     114#if defined key_traldf_c3d 
     115          ahtt_tm  (:,:,:)       = ahtt_tm  (:,:,:)       + ahtt(:,:,:)         * fse3t(:,:,:) 
     116          ahtu_tm  (:,:,:)       = ahtu_tm  (:,:,:)       + ahtu(:,:,:)         * fse3u(:,:,:) 
     117          ahtv_tm  (:,:,:)       = ahtv_tm  (:,:,:)       + ahtv(:,:,:)         * fse3v(:,:,:) 
     118          ahtw_tm  (:,:,:)       = ahtw_tm  (:,:,:)       + ahtw(:,:,:)         * fse3w(:,:,:) 
     119#elif defined key_traldf_c2d 
     120          ahtt_tm  (:,:)         = ahtt_tm  (:,:)         + ahtt(:,:) 
     121          ahtu_tm  (:,:)         = ahtu_tm  (:,:)         + ahtu(:,:) 
     122          ahtv_tm  (:,:)         = ahtv_tm  (:,:)         + ahtv(:,:) 
     123          ahtw_tm  (:,:)         = ahtw_tm  (:,:)         + ahtw(:,:) 
     124#elif defined key_traldf_c1d 
     125          ahtt_tm  (:)           = ahtt_tm  (:,:)         + ahtt(:) 
     126          ahtu_tm  (:)           = ahtu_tm  (:,:)         + ahtu(:) 
     127          ahtv_tm  (:)           = ahtv_tm  (:,:)         + ahtv(:) 
     128          ahtw_tm  (:)           = ahtw_tm  (:,:)         + ahtw(:) 
     129#else 
     130          ahtt_tm                = ahtt_tm                + ahtt 
     131          ahtu_tm                = ahtu_tm                + ahtu 
     132          ahtv_tm                = ahtv_tm                + ahtv 
     133          ahtw_tm                = ahtw_tm                + ahtw 
     134#endif 
     135#if defined key_traldf_eiv 
     136#  if defined key_traldf_c3d 
     137          aieu_tm  (:,:,:)       = aieu_tm  (:,:,:)       + aieu(:,:,:)         * fse3u(:,:,:) 
     138          aiev_tm  (:,:,:)       = aiev_tm  (:,:,:)       + aiev(:,:,:)         * fse3v(:,:,:) 
     139          aiew_tm  (:,:,:)       = aiew_tm  (:,:,:)       + aiew(:,:,:)         * fse3w(:,:,:) 
     140#  elif defined key_traldf_c2d 
     141          aieu_tm  (:,:)         = aieu_tm  (:,:)         + aieu(:,:) 
     142          aiev_tm  (:,:)         = aiev_tm  (:,:)         + aiev(:,:) 
     143          aiew_tm  (:,:)         = aiew_tm  (:,:)         + aiew(:,:) 
     144#  elif defined key_traldf_c1d 
     145          aieu_tm  (:)           = aieu_tm  (:,:)         + aieu(:) 
     146          aiev_tm  (:)           = aiev_tm  (:,:)         + aiev(:) 
     147          aiew_tm  (:)           = aiew_tm  (:,:)         + aiew(:) 
     148#  else 
     149          aieu_tm                = aieu_tm                + aieu 
     150          aiev_tm                = aiev_tm                + aiev 
     151          aiew_tm                = aiew_tm                + aiew 
     152#  endif 
     153#endif 
     154 
     155      ELSE                           !  It is time to substep  
     156         !   1. set temporary arrays to hold physics variables 
     157         sshn_temp  (:,:)        = sshn  (:,:) 
     158         sshu_n_temp(:,:)        = sshu_n(:,:) 
     159         sshv_n_temp(:,:)        = sshv_n(:,:) 
     160         sshf_n_temp(:,:)        = sshf_n(:,:) 
     161         sshb_temp  (:,:)        = sshb  (:,:) 
     162         sshu_b_temp(:,:)        = sshu_b(:,:) 
     163         sshv_b_temp(:,:)        = sshv_b(:,:) 
     164         ssha_temp  (:,:)        = ssha  (:,:) 
     165         sshu_a_temp(:,:)        = sshu_a(:,:) 
     166         sshv_a_temp(:,:)        = sshv_a(:,:) 
     167         rnf_temp   (:,:)        = rnf   (:,:) 
     168         h_rnf_temp (:,:)        = h_rnf (:,:) 
     169         rotn_temp  (:,:,:)      = rotn  (:,:,:) 
     170         hdivn_temp (:,:,:)      = hdivn (:,:,:) 
     171         rotb_temp  (:,:,:)      = rotb  (:,:,:) 
     172         hdivb_temp (:,:,:)      = hdivb (:,:,:) 
     173         un_temp    (:,:,:)      = un    (:,:,:) 
     174         vn_temp    (:,:,:)      = vn    (:,:,:) 
     175         wn_temp    (:,:,:)      = wn    (:,:,:) 
     176         tsn_temp   (:,:,:,:)    = tsn   (:,:,:,:) 
     177         avt_temp   (:,:,:)      = avt   (:,:,:) 
     178# if defined key_zdfddm 
     179         avs_temp(:,:,:)         = avs   (:,:,:) 
     180# endif 
     181         hmld_temp  (:,:)        = hmld  (:,:) 
     182         qsr_temp   (:,:)        = qsr   (:,:) 
     183         wndm_temp  (:,:)        = wndm  (:,:) 
     184         emp_temp   (:,:)        = emp   (:,:) 
     185         emp_b_temp (:,:)        = emp_b (:,:) 
     186         emps_temp  (:,:)        = emps  (:,:) 
     187#if defined key_ldfslp 
     188         wslpi_temp (:,:,:)      = wslpi (:,:,:) 
     189         wslpj_temp (:,:,:)      = wslpj (:,:,:) 
     190         uslp_temp  (:,:,:)      = uslp  (:,:,:) 
     191         vslp_temp  (:,:,:)      = vslp  (:,:,:) 
     192#endif 
     193         hu_temp    (:,:)        = hu    (:,:) 
     194         hv_temp    (:,:)        = hv    (:,:) 
     195         hur_temp   (:,:)        = hur   (:,:) 
     196         hvr_temp   (:,:)        = hvr   (:,:) 
     197#if defined key_traldf_c3d 
     198         ahtu_temp  (:,:,:)      = ahtu  (:,:,:) 
     199         ahtv_temp  (:,:,:)      = ahtv  (:,:,:) 
     200         ahtw_temp  (:,:,:)      = ahtw  (:,:,:) 
     201         ahtt_temp  (:,:,:)      = ahtt  (:,:,:) 
     202#elif defined key_traldf_c2d 
     203         ahtu_temp  (:,:)        = ahtu  (:,:) 
     204         ahtv_temp  (:,:)        = ahtv  (:,:) 
     205         ahtw_temp  (:,:)        = ahtw  (:,:) 
     206         ahtt_temp  (:,:)        = ahtt  (:,:) 
     207#elif defined key_traldf_c1d 
     208         ahtu_temp  (:)          = ahtu  (:) 
     209         ahtv_temp  (:)          = ahtv  (:) 
     210         ahtw_temp  (:)          = ahtw  (:) 
     211         ahtt_temp  (:)          = ahtt  (:) 
     212#else 
     213         ahtu_temp               = ahtu 
     214         ahtv_temp               = ahtv 
     215         ahtw_temp               = ahtw 
     216         ahtt_temp               = ahtt 
     217#endif 
     218 
     219#if defined key_traldf_eiv 
     220# if defined key_traldf_c3d 
     221         aeiu_temp  (:,:,:)      = aeiu(:,:,:) 
     222         aeiv_temp  (:,:,:)      = aeiv(:,:,:) 
     223         aeiw_temp  (:,:,:)      = aeiw(:,:,:) 
     224# elif defined key_traldf_c2d 
     225         aeiu_temp  (:,:)        = aeiu(:,:) 
     226         aeiv_temp  (:,:)        = aeiv(:,:) 
     227         aeiw_temp  (:,:)        = aeiw(:,:) 
     228# elif defined key_traldf_c1d 
     229         aeiu_temp  (:)          = aeiu(:) 
     230         aeiv_temp  (:)          = aeiv(:) 
     231         aeiw_temp  (:)          = aeiw(:) 
     232# else 
     233         aeiu_temp               = aeiu 
     234         aeiv_temp               = aeiv 
     235         aeiw_temp               = aeiw 
     236# endif 
     237#endif 
     238         ! 
     239         DO jk = 1, jpk 
     240            e3t_temp(:,:,jk)     = fse3t(:,:,jk) 
     241            e3u_temp(:,:,jk)     = fse3u(:,:,jk) 
     242            e3v_temp(:,:,jk)     = fse3v(:,:,jk) 
     243            e3w_temp(:,:,jk)     = fse3w(:,:,jk) 
     244         ENDDO 
     245         IF( lk_vvl ) THEN                      !  Update Now Vertical coord.  !   (only in vvl case) 
     246           !                                    !------------------------------! 
     247           DO jk = 1, jpk 
     248              fse3t (:,:,jk)     = fse3t_n (:,:,jk)   ! vertical scale factors stored in fse3. arrays 
     249              fse3u (:,:,jk)     = fse3u_n (:,:,jk) 
     250              fse3v (:,:,jk)     = fse3v_n (:,:,jk) 
     251              fse3w (:,:,jk)     = fse3w_n (:,:,jk) 
     252           END DO 
     253         ENDIF 
     254 
     255         ! 2. Create averages and reassign variables 
     256         sshn_tm  (:,:)          = sshn_tm    (:,:)       + sshn  (:,:)  
     257         sshu_n_tm(:,:)          = sshu_n_tm  (:,:)       + sshu_n(:,:)  
     258         sshv_n_tm(:,:)          = sshv_n_tm  (:,:)       + sshv_n(:,:)  
     259         rnf_tm   (:,:)          = rnf_tm     (:,:)       + rnf   (:,:)  
     260         h_rnf_tm (:,:)          = h_rnf_tm   (:,:)       + h_rnf (:,:)  
     261         hmld_tm  (:,:)          = hmld_tm    (:,:)       + hmld  (:,:) 
     262         fr_i_tm  (:,:)          = fr_i_tm    (:,:)       + fr_i  (:,:) 
     263         emp_tm   (:,:)          = emp_tm     (:,:)       + emp   (:,:)  
     264         emps_tm  (:,:)          = emps_tm    (:,:)       + emps  (:,:) 
     265         qsr_tm   (:,:)          = qsr_tm     (:,:)       + qsr   (:,:) 
     266         wndm_tm  (:,:)          = wndm_tm    (:,:)       + wndm  (:,:) 
     267         ! 
     268         sshn     (:,:)          = sshn_tm    (:,:) * r1_ndttrcp1  
     269         sshu_n   (:,:)          = sshu_n_tm  (:,:) * r1_ndttrcp1   
     270         sshv_n   (:,:)          = sshv_n_tm  (:,:) * r1_ndttrcp1   
     271         sshb     (:,:)          = sshb_hold  (:,:) 
     272         sshu_b   (:,:)          = sshu_b_hold(:,:) 
     273         sshv_b   (:,:)          = sshv_b_hold(:,:) 
     274         rnf      (:,:)          = rnf_tm     (:,:) * r1_ndttrcp1  
     275         h_rnf    (:,:)          = h_rnf_tm   (:,:) * r1_ndttrcp1  
     276         hmld     (:,:)          = hmld_tm    (:,:) * r1_ndttrcp1  
     277         fr_i     (:,:)          = fr_i_tm    (:,:) * r1_ndttrcp1  
     278         !  variables that are initialized after averages initialized 
     279         emp_b    (:,:) = emp_b_hold (:,:) 
     280         IF( kt == nittrc000 ) THEN 
     281            wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrc  
     282            qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrc  
     283            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrc  
     284            emps  (:,:)          = emps_tm    (:,:) * r1_ndttrc  
     285         ELSE 
     286            wndm  (:,:)          = wndm_tm    (:,:) * r1_ndttrcp1  
     287            qsr   (:,:)          = qsr_tm     (:,:) * r1_ndttrcp1  
     288            emp   (:,:)          = emp_tm     (:,:) * r1_ndttrcp1  
     289            emps  (:,:)          = emps_tm    (:,:) * r1_ndttrcp1  
     290         ENDIF 
     291 
     292         un_tm    (:,:,:)        = un_tm   (:,:,:)        + un   (:,:,:)        * e3u_temp(:,:,:)  
     293         vn_tm    (:,:,:)        = vn_tm   (:,:,:)        + vn   (:,:,:)        * e3v_temp(:,:,:)  
     294         wn_tm    (:,:,:)        = wn_tm   (:,:,:)        + wn   (:,:,:)        * e3w_temp(:,:,:)  
     295         tsn_tm   (:,:,:,jp_tem) = tsn_tm  (:,:,:,jp_tem) + tsn  (:,:,:,jp_tem) * e3t_temp(:,:,:)   
     296         tsn_tm   (:,:,:,jp_sal) = tsn_tm  (:,:,:,jp_tem) + tsn  (:,:,:,jp_sal) * e3t_temp(:,:,:)   
     297         avt_tm   (:,:,:)        = avt_tm  (:,:,:)        + avt  (:,:,:)        * e3w_temp(:,:,:)   
     298# if defined key_zdfddm 
     299         avs_tm   (:,:,:)        = avs_tm  (:,:,:)        + avs  (:,:,:)        * e3w_temp(:,:,:)   
     300# endif 
     301#if defined key_ldfslp 
     302         wslpi_tm (:,:,:)        = wslpi_tm(:,:,:)        + wslpi(:,:,:)        * e3w_temp(:,:,:)  
     303         wslpj_tm (:,:,:)        = wslpj_tm(:,:,:)        + wslpj(:,:,:)        * e3w_temp(:,:,:)  
     304         uslp_tm  (:,:,:)        = uslp_tm (:,:,:)        + uslp (:,:,:)        * e3u_temp(:,:,:)  
     305         vslp_tm  (:,:,:)        = vslp_tm (:,:,:)        + vslp (:,:,:)        * e3v_temp(:,:,:)  
     306#endif 
     307         ! 
    76308         DO jk = 1, jpk 
    77309            DO jj = 1, jpj 
    78310               DO ji = 1, jpi 
    79                   un_tm(ji,jj,jk)= un_tm(ji,jj,jk)+un(ji,jj,jk)*fse3u(ji,jj,jk) 
    80                   vn_tm(ji,jj,jk)= vn_tm(ji,jj,jk)+vn(ji,jj,jk)*fse3v(ji,jj,jk) 
    81         wn_tm(ji,jj,jk)= wn_tm(ji,jj,jk)+wn(ji,jj,jk)*fse3w(ji,jj,jk) 
    82                   avt_tm(ji,jj,jk)= avt_tm(ji,jj,jk)+avt(ji,jj,jk)*fse3t(ji,jj,jk) 
    83                   tsn_tm(ji,jj,jk,jp_sal)= tsn_tm(ji,jj,jk,jp_sal)+tsn(ji,jj,jk,jp_sal)*fse3t(ji,jj,jk) 
    84                   tsn_tm(ji,jj,jk,jp_tem)= tsn_tm(ji,jj,jk,jp_tem)+tsn(ji,jj,jk,jp_tem)*fse3t(ji,jj,jk) 
     311                  z1_ne3t = r1_ndttrcp1  / fse3t(ji,jj,jk) 
     312                  z1_ne3u = r1_ndttrcp1  / fse3u(ji,jj,jk) 
     313                  z1_ne3v = r1_ndttrcp1  / fse3v(ji,jj,jk) 
     314                  z1_ne3w = r1_ndttrcp1  / fse3w(ji,jj,jk) 
     315                  ! 
     316                  un   (ji,jj,jk)        = un_tm   (ji,jj,jk)        * z1_ne3u 
     317                  vn   (ji,jj,jk)        = vn_tm   (ji,jj,jk)        * z1_ne3v 
     318                  wn   (ji,jj,jk)        = wn_tm   (ji,jj,jk)        * z1_ne3w 
     319                  tsn  (ji,jj,jk,jp_tem) = tsn_tm  (ji,jj,jk,jp_tem) * z1_ne3t 
     320                  tsn  (ji,jj,jk,jp_sal) = tsn_tm  (ji,jj,jk,jp_sal) * z1_ne3t 
     321                  avt  (ji,jj,jk)        = avt_tm  (ji,jj,jk)        * z1_ne3w 
    85322# if defined key_zdfddm 
    86                   avs_tm(ji,jj,jk)= avs_tm(ji,jj,jk)+avs(ji,jj,jk)*fse3w(ji,jj,jk) 
     323                  avs  (ji,jj,jk)        = avs_tm  (ji,jj,jk)        * z1_ne3w 
    87324# endif 
    88325#if defined key_ldfslp 
    89         wslpi_tm(ji,jj,jk)= wslpi_tm(ji,jj,jk)+wslpi(ji,jj,jk)*fse3w(ji,jj,jk) 
    90         wslpj_tm(ji,jj,jk)= wslpj_tm(ji,jj,jk)+wslpj(ji,jj,jk)*fse3w(ji,jj,jk) 
    91         uslp_tm(ji,jj,jk)= uslp_tm(ji,jj,jk)+uslp(ji,jj,jk)*fse3u(ji,jj,jk) 
    92         vslp_tm(ji,jj,jk)= vslp_tm(ji,jj,jk)+vslp(ji,jj,jk)*fse3v(ji,jj,jk) 
    93 #endif 
    94                END DO 
    95             END DO 
    96          END DO 
    97          DO jj = 1, jpj 
    98             DO ji = 1, jpi 
    99             sshn_tm(ji,jj)=sshn_tm(ji,jj)+sshn(ji,jj) 
    100                 sshu_n_tm(ji,jj)=sshu_n_tm(ji,jj)+sshu_n(ji,jj) 
    101                 sshv_n_tm(ji,jj)=sshv_n_tm(ji,jj)+sshv_n(ji,jj) 
    102            rnf_tm(ji,jj)= rnf_tm(ji,jj)+rnf(ji,jj) 
    103            h_rnf_tm(ji,jj)= h_rnf_tm(ji,jj)+h_rnf(ji,jj) 
    104             hmld_tm(ji,jj)=hmld_tm(ji,jj)+hmld(ji,jj) 
    105             qsr_tm(ji,jj)=qsr_tm(ji,jj)+qsr(ji,jj) 
    106             fr_i_tm(ji,jj)=fr_i_tm(ji,jj)+fr_i(ji,jj) 
    107             wndm_tm(ji,jj)=wndm_tm(ji,jj)+wndm(ji,jj) 
    108             emp_tm(ji,jj)=emp_tm(ji,jj)+emp(ji,jj) 
    109             emps_tm(ji,jj)=emps_tm(ji,jj)+emps(ji,jj) 
    110              END DO 
    111          END DO 
     326                  wslpi(ji,jj,jk)        = wslpi_tm(ji,jj,jk)        * z1_ne3w  
     327                  wslpj(ji,jj,jk)        = wslpj_tm(ji,jj,jk)        * z1_ne3w  
     328                  uslp (ji,jj,jk)        = uslp_tm (ji,jj,jk)        * z1_ne3u  
     329                  vslp (ji,jj,jk)        = vslp_tm (ji,jj,jk)        * z1_ne3v  
     330#endif 
     331               ENDDO 
     332            ENDDO 
     333         ENDDO 
     334 
    112335#if defined key_traldf_c3d 
    113          DO jk = 1, jpk 
    114             DO jj = 1, jpj 
    115                DO ji = 1, jpi 
    116                   ahtt_tm(ji,jj,jk)= ahtt_tm(ji,jj,jk)+ahtt(ji,jj,jk)*fse3t(ji,jj,jk) 
    117                   ahtu_tm(ji,jj,jk)= ahtu_tm(ji,jj,jk)+ahtu(ji,jj,jk)*fse3u(ji,jj,jk) 
    118                   ahtv_tm(ji,jj,jk)= ahtv_tm(ji,jj,jk)+ahtv(ji,jj,jk)*fse3v(ji,jj,jk) 
    119                   ahtw_tm(ji,jj,jk)= ahtw_tm(ji,jj,jk)+ahtw(ji,jj,jk)*fse3w(ji,jj,jk) 
    120                END DO 
    121             END DO 
    122          END DO 
     336          ahtt_tm  (:,:,:)       = ahtt_tm  (:,:,:)       + ahtt(:,:,:)         * e3t_temp(:,:,:) 
     337          ahtu_tm  (:,:,:)       = ahtu_tm  (:,:,:)       + ahtu(:,:,:)         * e3u_temp(:,:,:) 
     338          ahtv_tm  (:,:,:)       = ahtv_tm  (:,:,:)       + ahtv(:,:,:)         * e3v_temp(:,:,:) 
     339          ahtw_tm  (:,:,:)       = ahtw_tm  (:,:,:)       + ahtw(:,:,:)         * e3w_temp(:,:,:) 
     340          ! 
     341          ahtt     (:,:,:)       = ahtt_tm  (:,:,:) * r1_ndttrcp1  / fse3t(:,:,:) 
     342          ahtu     (:,:,:)       = ahtu_tm  (:,:,:) * r1_ndttrcp1  / fse3u(:,:,:) 
     343          ahtv     (:,:,:)       = ahtv_tm  (:,:,:) * r1_ndttrcp1  / fse3v(:,:,:) 
     344          ahtw     (:,:,:)       = ahtw_tm  (:,:,:) * r1_ndttrcp1  / fse3w(:,:,:) 
    123345#elif defined key_traldf_c2d 
    124          DO jj = 1, jpj 
    125             DO ji = 1, jpi 
    126                ahtt_tm(ji,jj)= ahtt_tm(ji,jj)+ahtt(ji,jj) 
    127                ahtu_tm(ji,jj)= ahtu_tm(ji,jj)+ahtu(ji,jj) 
    128                ahtv_tm(ji,jj)= ahtv_tm(ji,jj)+ahtv(ji,jj) 
    129                ahtw_tm(ji,jj)= ahtw_tm(ji,jj)+ahtw(ji,jj) 
    130             END DO 
    131          END DO 
     346          ahtt_tm  (:,:)         = ahtt_tm  (:,:)         + ahtt(:,:) 
     347          ahtu_tm  (:,:)         = ahtu_tm  (:,:)         + ahtu(:,:) 
     348          ahtv_tm  (:,:)         = ahtv_tm  (:,:)         + ahtv(:,:) 
     349          ahtw_tm  (:,:)         = ahtw_tm  (:,:)         + ahtw(:,:) 
     350          ! 
     351          ahtt     (:,:)         = ahtt_tm  (:,:)   * r1_ndttrcp1 
     352          ahtu     (:,:)         = ahtu_tm  (:,:)   * r1_ndttrcp1 
     353          ahtv     (:,:)         = ahtv_tm  (:,:)   * r1_ndttrcp1 
     354          ahtw     (:,:)         = ahtw_tm  (:,:)   * r1_ndttrcp1 
    132355#elif defined key_traldf_c1d 
    133          DO jk = 1, jpk 
    134             ahtt_tm(jk)= ahtt_tm(jk)+ahtt(jk) 
    135             ahtu_tm(jk)= ahtu_tm(jk)+ahtu(jk) 
    136             ahtv_tm(jk)= ahtv_tm(jk)+ahtv(jk) 
    137             ahtw_tm(jk)= ahtw_tm(jk)+ahtw(jk) 
    138          END DO 
     356          ahtt_tm  (:)           = ahtt_tm  (:,:)         + ahtt(:) 
     357          ahtu_tm  (:)           = ahtu_tm  (:,:)         + ahtu(:) 
     358          ahtv_tm  (:)           = ahtv_tm  (:,:)         + ahtv(:) 
     359          ahtw_tm  (:)           = ahtw_tm  (:,:)         + ahtw(:) 
     360          ! 
     361          ahtt     (:)           = ahtt_tm  (:)     * r1_ndttrcp1 
     362          ahtu     (:)           = ahtu_tm  (:)     * r1_ndttrcp1 
     363          ahtv     (:)           = ahtv_tm  (:)     * r1_ndttrcp1 
     364          ahtw     (:)           = ahtw_tm  (:)     * r1_ndttrcp1 
    139365#else 
    140          ahtt_tm= ahtt_tm+ahtt 
    141          ahtu_tm= ahtu_tm+ahtu 
    142          ahtv_tm= ahtv_tm+ahtv 
    143          ahtw_tm= ahtw_tm+ahtw 
    144 #endif 
     366          ahtt_tm                = ahtt_tm                + ahtt 
     367          ahtu_tm                = ahtu_tm                + ahtu 
     368          ahtv_tm                = ahtv_tm                + ahtv 
     369          ahtw_tm                = ahtw_tm                + ahtw 
     370          ! 
     371          ahtt                   = ahtt_tm          * r1_ndttrcp1 
     372          ahtu                   = ahtu_tm          * r1_ndttrcp1 
     373          ahtv                   = ahtv_tm          * r1_ndttrcp1 
     374          ahtw                   = ahtw_tm          * r1_ndttrcp1 
     375#endif 
     376 
    145377#if defined key_traldf_eiv 
    146378# if defined key_traldf_c3d 
    147          DO jk = 1, jpk 
    148             DO jj = 1, jpj 
    149                DO ji = 1, jpi 
    150                   aeiu_tm(ji,jj,jk)= aeiu_tm(ji,jj,jk)+aeiu(ji,jj,jk)*fse3u(ji,jj,jk) 
    151                   aeiv_tm(ji,jj,jk)= aeiv_tm(ji,jj,jk)+aeiv(ji,jj,jk)*fse3v(ji,jj,jk) 
    152                   aeiw_tm(ji,jj,jk)= aeiw_tm(ji,jj,jk)+aeiw(ji,jj,jk)*fse3w(ji,jj,jk) 
    153                END DO 
    154             END DO 
    155          END DO 
     379          aeiu_tm  (:,:,:)       = aeiu_tm  (:,:,:)       + aeiu(:,:,:)         * e3u_temp(:,:,:) 
     380          aeiv_tm  (:,:,:)       = aeiv_tm  (:,:,:)       + aeiv(:,:,:)         * e3v_temp(:,:,:) 
     381          aeiw_tm  (:,:,:)       = aeiw_tm  (:,:,:)       + aeiw(:,:,:)         * e3w_temp(:,:,:) 
     382          ! 
     383          aeiu     (:,:,:)       = aeiu_tm  (:,:,:) * r1_ndttrcp1  / fse3u(:,:,:) 
     384          aeiv     (:,:,:)       = aeiv_tm  (:,:,:) * r1_ndttrcp1  / fse3v(:,:,:) 
     385          aeiw     (:,:,:)       = aeiw_tm  (:,:,:) * r1_ndttrcp1  / fse3w(:,:,:) 
    156386# elif defined key_traldf_c2d 
    157          DO jj = 1, jpj 
    158             DO ji = 1, jpi 
    159                aeiu_tm(ji,jj)= aeiu_tm(ji,jj)+aeiu(ji,jj) 
    160                aeiv_tm(ji,jj)= aeiv_tm(ji,jj)+aeiv(ji,jj) 
    161                aeiw_tm(ji,jj)= aeiw_tm(ji,jj)+aeiw(ji,jj) 
    162             END DO 
    163          END DO 
     387          aeiu_tm  (:,:)         = aeiu_tm  (:,:)         + aeiu(:,:) 
     388          aeiv_tm  (:,:)         = aeiv_tm  (:,:)         + aeiv(:,:) 
     389          aeiw_tm  (:,:)         = aeiw_tm  (:,:)         + aeiw(:,:) 
     390          ! 
     391          aeiu     (:,:)         = aeiu_tm  (:,:)   * r1_ndttrcp1 
     392          aeiv     (:,:)         = aeiv_tm  (:,:)   * r1_ndttrcp1 
     393          aeiw     (:,:)         = aeiw_tm  (:,:)   * r1_ndttrcp1 
    164394# elif defined key_traldf_c1d 
    165          DO jk = 1, jpk 
    166             aeiu_tm(jk)= aeiu_tm(jk)+aeiu(jk) 
    167             aeiv_tm(jk)= aeiv_tm(jk)+aeiv(jk) 
    168             aeiw_tm(jk)= aeiw_tm(jk)+aeiw(jk) 
    169          END DO 
     395          aeiu_tm  (:)           = aeiu_tm  (:,:)         + aeiu(:) 
     396          aeiv_tm  (:)           = aeiv_tm  (:,:)         + aeiv(:) 
     397          aeiw_tm  (:)           = aeiw_tm  (:,:)         + aeiw(:) 
     398          ! 
     399          aeiu     (:)           = aeiu_tm  (:)     * r1_ndttrcp1 
     400          aeiv     (:)           = aeiv_tm  (:)     * r1_ndttrcp1 
     401          aeiw     (:)           = aeiw_tm  (:)     * r1_ndttrcp1 
    170402# else 
    171          aeiu_tm= aeiu_tm+aeiu 
    172          aeiv_tm= aeiv_tm+aeiv 
    173          aeiw_tm= aeiw_tm+aeiw 
    174 # endif 
    175 # endif 
    176  
    177       ELSE 
    178 !   it is time to substep 
    179 !   1. set temporary arrays to hold physics variables 
    180          sshn_temp(:,:)=sshn(:,:) 
    181          sshu_n_temp(:,:)=sshu_n(:,:) 
    182          sshv_n_temp(:,:)=sshv_n(:,:) 
    183          sshf_n_temp(:,:)=sshf_n(:,:) 
    184          sshb_temp(:,:)=sshb(:,:) 
    185          sshu_b_temp(:,:)=sshu_b(:,:) 
    186          sshv_b_temp(:,:)=sshv_b(:,:) 
    187          ssha_temp(:,:)=ssha(:,:) 
    188          sshu_a_temp(:,:)=sshu_a(:,:) 
    189          sshv_a_temp(:,:)=sshv_a(:,:) 
    190          rnf_temp(:,:)=rnf(:,:) 
    191          h_rnf_temp(:,:)=h_rnf(:,:) 
    192          rotn_temp(:,:,:)=rotn(:,:,:) 
    193          hdivn_temp(:,:,:)=hdivn(:,:,:) 
    194          rotb_temp(:,:,:)=rotb(:,:,:) 
    195          hdivb_temp(:,:,:)=hdivb(:,:,:) 
    196          un_temp(:,:,:)=un(:,:,:) 
    197          vn_temp(:,:,:)=vn(:,:,:) 
    198          wn_temp(:,:,:)=wn(:,:,:) 
    199          tsn_temp(:,:,:,:)=tsn(:,:,:,:) 
    200          avt_temp(:,:,:)=avt(:,:,:) 
    201          hmld_temp(:,:)=hmld(:,:) 
    202          qsr_temp(:,:)=qsr(:,:) 
    203          wndm_temp(:,:)=wndm(:,:) 
    204          emp_temp(:,:)=emp(:,:) 
    205          emp_b_temp(:,:)=emp_b(:,:) 
    206          emps_temp(:,:)=emps(:,:) 
     403          aeiu_tm                = aeiu_tm                + aeiu 
     404          aeiv_tm                = aeiv_tm                + aeiv 
     405          aeiw_tm                = aeiw_tm                + aeiw 
     406          ! 
     407          aeiu                   = aeiu_tm          * r1_ndttrcp1 
     408          aeiv                   = aeiv_tm          * r1_ndttrcp1 
     409          aeiw                   = aeiw_tm          * r1_ndttrcp1 
     410# endif 
     411#endif 
     412 
     413         CALL lbc_lnk( sshn  (:,:)         , 'T', 1. )  
     414         CALL lbc_lnk( sshu_n(:,:)         , 'U', 1. )  
     415         CALL lbc_lnk( sshv_n(:,:)         , 'V', 1. )  
     416         CALL lbc_lnk( sshf_n(:,:)         , 'F', 1. )  
     417         CALL lbc_lnk( sshb  (:,:)         , 'T', 1. )  
     418         CALL lbc_lnk( sshu_b(:,:)         , 'U', 1. )  
     419         CALL lbc_lnk( sshv_b(:,:)         , 'V', 1. )  
     420         CALL lbc_lnk( ssha  (:,:)         , 'T', 1. )  
     421         CALL lbc_lnk( sshu_a(:,:)         , 'U', 1. )  
     422         CALL lbc_lnk( sshv_a(:,:)         , 'V', 1. )  
     423         CALL lbc_lnk( rnf   (:,:)         , 'T', 1. )  
     424         CALL lbc_lnk( h_rnf (:,:)         , 'T', 1. )  
     425         CALL lbc_lnk( rotn  (:,:,:)       , 'F', 1. )  
     426         CALL lbc_lnk( hdivn (:,:,:)       , 'T', 1. )  
     427         CALL lbc_lnk( rotb  (:,:,:)       , 'F', 1. )  
     428         CALL lbc_lnk( hdivb (:,:,:)       , 'T', 1. )  
     429         CALL lbc_lnk( un    (:,:,:)       , 'U', 1. )  
     430         CALL lbc_lnk( vn    (:,:,:)       , 'V', 1. )  
     431         CALL lbc_lnk( wn    (:,:,:)       , 'V', 1. )  
     432         CALL lbc_lnk( tsn   (:,:,:,jp_tem), 'T', 1. )  
     433         CALL lbc_lnk( tsn   (:,:,:,jp_sal), 'T', 1. )  
     434         CALL lbc_lnk( avt   (:,:,:)       , 'W', 1. )  
     435         CALL lbc_lnk( hmld  (:,:)         , 'T', 1. )  
     436         CALL lbc_lnk( qsr   (:,:)         , 'T', 1. )  
     437         CALL lbc_lnk( wndm  (:,:)         , 'T', 1. )  
     438         CALL lbc_lnk( emp   (:,:)         , 'T', 1. )  
     439         CALL lbc_lnk( emp_b (:,:)         , 'T', 1. )  
     440         CALL lbc_lnk( emps  (:,:)         , 'T', 1. )  
    207441#if defined key_traldf_c3d 
    208          ahtu_temp(:,:,:)=ahtu(:,:,:) 
    209          ahtv_temp(:,:,:)=ahtv(:,:,:) 
    210          ahtw_temp(:,:,:)=ahtw(:,:,:) 
    211          ahtt_temp(:,:,:)=ahtt(:,:,:) 
     442         CALL lbc_lnk( ahtt  (:,:,:)       , 'T', 1. )  
     443         CALL lbc_lnk( ahtu  (:,:,:)       , 'U', 1. )  
     444         CALL lbc_lnk( ahtv  (:,:,:)       , 'V', 1. )  
     445         CALL lbc_lnk( ahtw  (:,:,:)       , 'W', 1. )  
    212446#elif defined key_traldf_c2d 
    213          ahtu_temp(:,:)=ahtu(:,:) 
    214          ahtv_temp(:,:)=ahtv(:,:) 
    215          ahtw_temp(:,:)=ahtw(:,:) 
    216          ahtt_temp(:,:)=ahtt(:,:) 
    217 #elif defined key_traldf_c1d 
    218          ahtu_temp(:)=ahtu(:) 
    219          ahtv_temp(:)=ahtv(:) 
    220          ahtw_temp(:)=ahtw(:) 
    221          ahtt_temp(:)=ahtt(:) 
    222 #else 
    223          ahtu_temp=ahtu 
    224          ahtv_temp=ahtv 
    225          ahtw_temp=ahtw 
    226          ahtt_temp=ahtt 
     447         CALL lbc_lnk( ahtt  (:,:)         , 'T', 1. )  
     448         CALL lbc_lnk( ahtu  (:,:)         , 'U', 1. )  
     449         CALL lbc_lnk( ahtv  (:,:)         , 'V', 1. )  
     450         CALL lbc_lnk( ahtw  (:,:)         , 'W', 1. )  
    227451#endif 
    228452# if defined key_zdfddm 
    229          avs_temp(:,:,:)=avs(:,:,:) 
     453          CALL lbc_lnk( avs  (:,:,:)       , 'W', 1. )  
    230454# endif 
    231455#if defined key_traldf_eiv 
    232456#if defined key_traldf_c3d 
    233          aeiu_temp(:,:,:)=aeiu(:,:,:) 
    234          aeiv_temp(:,:,:)=aeiv(:,:,:) 
    235          aeiw_temp(:,:,:)=aeiw(:,:,:) 
     457         CALL lbc_lnk( aeiu  (:,:,:)       , 'U', 1. )  
     458         CALL lbc_lnk( aeiv  (:,:,:)       , 'V', 1. )  
     459         CALL lbc_lnk( aeiw  (:,:,:)       , 'W', 1. )  
    236460#elif defined key_traldf_c2d 
    237          aeiu_temp(:,:)=aeiu(:,:) 
    238          aeiv_temp(:,:)=aeiv(:,:) 
    239          aeiw_temp(:,:)=aeiw(:,:) 
    240 #elif defined key_traldf_c1d 
    241          aeiu_temp(:)=aeiu(:) 
    242          aeiv_temp(:)=aeiv(:) 
    243          aeiw_temp(:)=aeiw(:) 
    244 #else 
    245          aeiu_temp=aeiu 
    246          aeiv_temp=aeiv 
    247          aeiw_temp=aeiw 
     461         CALL lbc_lnk( aeiu  (:,:)         , 'U', 1. )  
     462         CALL lbc_lnk( aeiv  (:,:)         , 'V', 1. )  
     463         CALL lbc_lnk( aeiw  (:,:)         , 'W', 1. )  
    248464#endif 
    249465#endif 
    250466#if defined key_ldfslp 
    251          wslpi_temp(:,:,:)=wslpi(:,:,:) 
    252          wslpj_temp(:,:,:)=wslpj(:,:,:) 
    253          uslp_temp(:,:,:)=uslp(:,:,:) 
    254          vslp_temp(:,:,:)=vslp(:,:,:) 
    255 #endif 
    256          hu_temp(:,:)=hu(:,:) 
    257          hv_temp(:,:)=hv(:,:) 
    258          hur_temp(:,:)=hur(:,:) 
    259          hvr_temp(:,:)=hvr(:,:) 
    260  
    261 !   2. create averages and reassign variables 
    262          DO jj = 1, jpj 
    263             DO ji = 1, jpi 
    264                sshn_tm(ji,jj)= sshn_tm(ji,jj)+sshn(ji,jj) 
    265                sshn(ji,jj)=sshn_tm(ji,jj)/(nn_dttrc+1) 
    266          
    267                sshu_n_tm(ji,jj)= sshu_n_tm(ji,jj)+sshu_n(ji,jj) 
    268                sshu_n(ji,jj)=sshu_n_tm(ji,jj)/(nn_dttrc+1) 
    269  
    270                sshv_n_tm(ji,jj)= sshv_n_tm(ji,jj)+sshv_n(ji,jj) 
    271                sshv_n(ji,jj)=sshv_n_tm(ji,jj)/(nn_dttrc+1) 
    272  
    273                sshb(ji,jj)=sshb_hold(ji,jj) 
    274  
    275                sshu_b(ji,jj)=sshu_b_hold(ji,jj) 
    276  
    277           sshv_b(ji,jj)=sshv_b_hold(ji,jj) 
    278  
    279                rnf_tm(ji,jj)= rnf_tm(ji,jj)+rnf(ji,jj) 
    280                rnf(ji,jj)=rnf_tm(ji,jj)/(nn_dttrc+1) 
    281   
    282                h_rnf_tm(ji,jj)= h_rnf_tm(ji,jj)+h_rnf(ji,jj) 
    283                h_rnf(ji,jj)=h_rnf_tm(ji,jj)/(nn_dttrc+1) 
    284  
    285                hmld_tm(ji,jj)= hmld_tm(ji,jj)+hmld(ji,jj) 
    286                hmld(ji,jj)=hmld_tm(ji,jj)/(nn_dttrc+1) 
    287   
    288                fr_i_tm(ji,jj)= fr_i_tm(ji,jj)+fr_i(ji,jj) 
    289                fr_i(ji,jj)=fr_i_tm(ji,jj)/(nn_dttrc+1) 
    290  
    291 !  variables that are initialized after averages initialized 
    292                wndm_tm(ji,jj)= wndm_tm(ji,jj)+wndm(ji,jj) 
    293                IF(kt == nittrc000)THEN 
    294                    wndm(ji,jj)=wndm_tm(ji,jj)/(nn_dttrc) 
    295                ELSE 
    296                    wndm(ji,jj)=wndm_tm(ji,jj)/(nn_dttrc+1) 
    297                ENDIF  
    298  
    299                qsr_tm(ji,jj)= qsr_tm(ji,jj)+qsr(ji,jj) 
    300                IF(kt == nittrc000)THEN 
    301                    qsr(ji,jj)=qsr_tm(ji,jj)/(nn_dttrc) 
    302                ELSE 
    303                    qsr(ji,jj)=qsr_tm(ji,jj)/(nn_dttrc+1) 
    304                ENDIF  
    305  
    306           emp_b(ji,jj)=emp_b_hold(ji,jj) 
    307  
    308                emp_tm(ji,jj)= emp_tm(ji,jj)+emp(ji,jj) 
    309                IF(kt == nittrc000)THEN 
    310                   emp(ji,jj)=emp_tm(ji,jj)/(nn_dttrc) 
    311                ELSE 
    312                   emp(ji,jj)=emp_tm(ji,jj)/(nn_dttrc+1) 
    313                ENDIF  
    314  
    315                emps_tm(ji,jj)= emps_tm(ji,jj)+emps(ji,jj) 
    316                IF(kt == nittrc000)THEN 
    317                   emps(ji,jj)=emps_tm(ji,jj)/(nn_dttrc) 
    318                ELSE 
    319                   emps(ji,jj)=emps_tm(ji,jj)/(nn_dttrc+1) 
    320                ENDIF 
    321  
    322             END DO 
    323          END DO 
    324          DO jk = 1, jpk 
    325             e3t_temp(:,:,jk)= fse3t(:,:,jk)  
    326             e3u_temp(:,:,jk)= fse3u(:,:,jk)  
    327             e3v_temp(:,:,jk)= fse3v(:,:,jk) 
    328             e3w_temp(:,:,jk)= fse3w(:,:,jk)   
    329          END DO 
    330          IF( lk_vvl ) THEN                           !  Update Now Vertical coord.  !   (only in vvl case) 
    331          !                                           !------------------------------! 
    332             DO jk = 1, jpk 
    333                  fse3t (:,:,jk) = fse3t_n (:,:,jk)          ! vertical scale factors stored in fse3. arrays 
    334                  fse3u (:,:,jk) = fse3u_n (:,:,jk) 
    335                  fse3v (:,:,jk) = fse3v_n (:,:,jk) 
    336                  fse3w (:,:,jk) = fse3w_n (:,:,jk) 
    337             END DO 
    338          ENDIF 
    339          DO jk = 1, jpk 
    340             DO jj = 1, jpj 
    341                DO ji = 1, jpi 
    342  
    343                   un_tm(ji,jj,jk)= un_tm(ji,jj,jk)+un(ji,jj,jk)*e3u_temp(ji,jj,jk) 
    344                   un(ji,jj,jk)=(un_tm(ji,jj,jk)/(nn_dttrc+1))/fse3u(ji,jj,jk) 
    345          
    346                   vn_tm(ji,jj,jk)= vn_tm(ji,jj,jk)+vn(ji,jj,jk)*e3v_temp(ji,jj,jk) 
    347                   vn(ji,jj,jk)=(vn_tm(ji,jj,jk)/(nn_dttrc+1))/fse3v(ji,jj,jk) 
    348          
    349                   wn_tm(ji,jj,jk)= wn_tm(ji,jj,jk)+wn(ji,jj,jk)*e3w_temp(ji,jj,jk) 
    350                   wn(ji,jj,jk)=(wn_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 
    351          
    352                   avt_tm(ji,jj,jk)= avt_tm(ji,jj,jk)+avt(ji,jj,jk)*e3t_temp(ji,jj,jk) 
    353                   avt(ji,jj,jk)=(avt_tm(ji,jj,jk)/(nn_dttrc+1))/fse3t(ji,jj,jk)   
    354          
    355                   tsn_tm(ji,jj,jk,jp_tem)= tsn_tm(ji,jj,jk,jp_tem)+tsn(ji,jj,jk,jp_tem)*e3t_temp(ji,jj,jk) 
    356                   tsn(ji,jj,jk,jp_tem)=(tsn_tm(ji,jj,jk,jp_tem)/(nn_dttrc+1))/fse3t(ji,jj,jk) 
    357       
    358                   tsn_tm(ji,jj,jk,jp_sal)= tsn_tm(ji,jj,jk,jp_sal)+tsn(ji,jj,jk,jp_sal)*e3t_temp(ji,jj,jk) 
    359                   tsn(ji,jj,jk,jp_sal)=(tsn_tm(ji,jj,jk,jp_sal)/(nn_dttrc+1))/fse3t(ji,jj,jk) 
    360     
    361 # if defined key_zdfddm 
    362                   avs_tm(ji,jj,jk)= avs_tm(ji,jj,jk)+avs(ji,jj,jk)*e3w_temp(ji,jj,jk) 
    363                   avs(ji,jj,jk)=(avs_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 
    364  
    365 # endif 
    366       
    367 #if defined key_ldfslp 
    368                   wslpi_tm(ji,jj,jk)= wslpi_tm(ji,jj,jk)+wslpi(ji,jj,jk)*e3w_temp(ji,jj,jk) 
    369                   wslpi(ji,jj,jk)=(wslpi_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 
    370  
    371                   wslpj_tm(ji,jj,jk)= wslpj_tm(ji,jj,jk)+wslpj(ji,jj,jk)*e3w_temp(ji,jj,jk) 
    372                   wslpj(ji,jj,jk)=(wslpj_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk) 
    373  
    374                   uslp_tm(ji,jj,jk)= uslp_tm(ji,jj,jk)+uslp(ji,jj,jk)*e3u_temp(ji,jj,jk) 
    375                   uslp(ji,jj,jk)=(uslp_tm(ji,jj,jk)/(nn_dttrc+1))/fse3u(ji,jj,jk) 
    376  
    377                   vslp_tm(ji,jj,jk)= vslp_tm(ji,jj,jk)+vslp(ji,jj,jk)*e3v_temp(ji,jj,jk) 
    378                   vslp(ji,jj,jk)=(vslp_tm(ji,jj,jk)/(nn_dttrc+1))/fse3v(ji,jj,jk) 
    379 #endif 
    380           END DO 
    381             END DO 
    382          END DO 
    383 #if defined key_traldf_c3d 
    384          DO jk = 1, jpk 
    385             DO jj = 1, jpj 
    386                DO ji = 1, jpi 
    387                   ahtt_tm(ji,jj,jk)= ahtt_tm(ji,jj,jk)+ahtt(ji,jj,jk)*e3t_temp(ji,jj,jk) 
    388                   ahtt(ji,jj,jk)=(ahtt_tm(ji,jj,jk)/(nn_dttrc+1))/fse3t(ji,jj,jk)    
    389  
    390                   ahtu_tm(ji,jj,jk)= ahtu_tm(ji,jj,jk)+ahtu(ji,jj,jk)*e3u_temp(ji,jj,jk) 
    391                   ahtu(ji,jj,jk)=(ahtu_tm(ji,jj,jk)/(nn_dttrc+1))/fse3u(ji,jj,jk)    
    392  
    393                   ahtv_tm(ji,jj,jk)= ahtv_tm(ji,jj,jk)+ahtv(ji,jj,jk)*e3v_temp(ji,jj,jk) 
    394                   ahtv(ji,jj,jk)=(ahtv_tm(ji,jj,jk)/(nn_dttrc+1))/fse3v(ji,jj,jk)    
    395  
    396                   ahtw_tm(ji,jj,jk)= ahtw_tm(ji,jj,jk)+ahtw(ji,jj,jk)*e3w_temp(ji,jj,jk) 
    397                   ahtw(ji,jj,jk)=(ahtw_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk)    
    398  
    399                END DO 
    400             END DO 
    401          END DO 
    402 #elif defined key_traldf_c2d 
    403          DO jj = 1, jpj 
    404             DO ji = 1, jpi 
    405                ahtt_tm(ji,jj)= ahtt_tm(ji,jj)+ahtt(ji,jj) 
    406                ahtt(ji,jj)=ahtt_tm(ji,jj)/(nn_dttrc+1) 
    407  
    408                ahtu_tm(ji,jj)= ahtu_tm(ji,jj)+ahtu(ji,jj) 
    409                ahtu(ji,jj)=ahtu_tm(ji,jj)/(nn_dttrc+1) 
    410  
    411                ahtv_tm(ji,jj)= ahtv_tm(ji,jj)+ahtv(ji,jj) 
    412                ahtv(ji,jj)=ahtv_tm(ji,jj)/(nn_dttrc+1) 
    413  
    414                ahtw_tm(ji,jj)= ahtw_tm(ji,jj)+ahtw(ji,jj) 
    415                ahtw(ji,jj)=ahtw_tm(ji,jj)/(nn_dttrc+1) 
    416             END DO 
    417          END DO 
    418 #elif defined key_traldf_c1d 
    419          DO jk = 1, jpk 
    420             ahtt_tm(jk)= ahtt_tm(jk)+ahtt(jk) 
    421             ahtt(jk)=ahtt_tm(jk)/(nn_dttrc+1) 
    422  
    423             ahtu_tm(jk)= ahtu_tm(jk)+ahtu(jk) 
    424             ahtu(jk)=ahtu_tm(jk)/(nn_dttrc+1) 
    425  
    426             ahtv_tm(jk)= ahtv_tm(jk)+ahtv(jk) 
    427             ahtv(jk)=ahtv_tm(jk)/(nn_dttrc+1) 
    428  
    429             ahtw_tm(jk)= ahtw_tm(jk)+ahtw(jk) 
    430             ahtw(jk)=ahtw_tm(jk)/(nn_dttrc+1) 
    431          END DO 
    432 #else 
    433          ahtt_tm= ahtt_tm+ahtt 
    434          ahtt=ahtt_tm/(nn_dttrc+1) 
    435  
    436          ahtu_tm= ahtu_tm+ahtu 
    437          ahtu=ahtu_tm/(nn_dttrc+1) 
    438  
    439          ahtv_tm= ahtv_tm+ahtv 
    440          ahtv=ahtv_tm/(nn_dttrc+1) 
    441  
    442          ahtw_tm= ahtw_tm+ahtw 
    443          ahtw=ahtw_tm/(nn_dttrc+1) 
    444  
    445 #endif 
    446 #if defined key_traldf_eiv 
    447 # if defined key_traldf_c3d 
    448          DO jk = 1, jpk 
    449             DO jj = 1, jpj 
    450                DO ji = 1, jpi 
    451                   aeiu_tm(ji,jj,jk)= aeiu_tm(ji,jj,jk)+aeiu(ji,jj,jk)*e3u_temp(ji,jj,jk) 
    452                   aeiu(ji,jj,jk)=(aeiu_tm(ji,jj,jk)/(nn_dttrc+1))/fse3u(ji,jj,jk)    
    453  
    454                   aeiv_tm(ji,jj,jk)= aeiv_tm(ji,jj,jk)+aeiv(ji,jj,jk)*e3v_temp(ji,jj,jk) 
    455                   aeiv(ji,jj,jk)=(aeiv_tm(ji,jj,jk)/(nn_dttrc+1))/fse3v(ji,jj,jk)    
    456  
    457                   aeiw_tm(ji,jj,jk)= aeiw_tm(ji,jj,jk)+aeiw(ji,jj,jk)*e3w_temp(ji,jj,jk) 
    458                   aeiw(ji,jj,jk)=(aeiw_tm(ji,jj,jk)/(nn_dttrc+1))/fse3w(ji,jj,jk)    
    459  
    460                END DO 
    461             END DO 
    462          END DO 
    463 # elif defined key_traldf_c2d 
    464          DO jj = 1, jpj 
    465             DO ji = 1, jpi 
    466                aeiu_tm(ji,jj)= aeiu_tm(ji,jj)+aeiu(ji,jj) 
    467                aeiu(ji,jj)=aeiu_tm(ji,jj)/(nn_dttrc+1) 
    468  
    469                aeiv_tm(ji,jj)= aeiv_tm(ji,jj)+aeiv(ji,jj) 
    470                aeiv(ji,jj)=aeiv_tm(ji,jj)/(nn_dttrc+1) 
    471  
    472                aeiw_tm(ji,jj)= aeiw_tm(ji,jj)+aeiw(ji,jj) 
    473                aeiw(ji,jj)=aeiw_tm(ji,jj)/(nn_dttrc+1) 
    474             END DO 
    475          END DO 
    476 # elif defined key_traldf_c1d 
    477          DO jk = 1, jpk 
    478             aeiu_tm(jk)= aeiu_tm(jk)+aeiu(jk) 
    479             aeiu(jk)=aeiu_tm(jk)/(nn_dttrc+1) 
    480  
    481             aeiv_tm(jk)= aeiv_tm(jk)+aeiv(jk) 
    482             aeiv(jk)=aeiv_tm(jk)/(nn_dttrc+1) 
    483  
    484             aeiw_tm(jk)= aeiw_tm(jk)+aeiw(jk) 
    485             aeiw(jk)=aeiw_tm(jk)/(nn_dttrc+1) 
    486          END DO 
    487 # else 
    488          aeiu_tm= aeiu_tm+aeiu 
    489          aeiu=aeiu_tm/(nn_dttrc+1) 
    490  
    491          aeiv_tm= aeiv_tm+aeiv 
    492          aeiv=aeiv_tm/(nn_dttrc+1) 
    493  
    494          aeiw_tm= aeiw_tm+aeiw 
    495          aeiw=aeiw_tm/(nn_dttrc+1) 
    496 # endif 
    497 # endif 
    498  
    499          CALL lbc_lnk( sshn(:,:), 'T', 1. )  
    500          CALL lbc_lnk( sshu_n(:,:), 'U', 1. )  
    501          CALL lbc_lnk( sshv_n(:,:), 'V', 1. )  
    502          CALL lbc_lnk( sshf_n(:,:), 'F', 1. )  
    503          CALL lbc_lnk( sshb(:,:), 'T', 1. )  
    504          CALL lbc_lnk( sshu_b(:,:), 'U', 1. )  
    505          CALL lbc_lnk( sshv_b(:,:), 'V', 1. )  
    506          CALL lbc_lnk( ssha(:,:), 'T', 1. )  
    507          CALL lbc_lnk( sshu_a(:,:), 'U', 1. )  
    508          CALL lbc_lnk( sshv_a(:,:), 'V', 1. )  
    509          CALL lbc_lnk( rnf(:,:), 'T', 1. )  
    510          CALL lbc_lnk( h_rnf(:,:), 'T', 1. )  
    511          CALL lbc_lnk( rotn(:,:,:), 'F', 1. )  
    512          CALL lbc_lnk( hdivn(:,:,:), 'T', 1. )  
    513          CALL lbc_lnk( rotb(:,:,:), 'F', 1. )  
    514          CALL lbc_lnk( hdivb(:,:,:), 'T', 1. )  
    515          CALL lbc_lnk( un(:,:,:), 'U', 1. )  
    516          CALL lbc_lnk( vn(:,:,:), 'V', 1. )  
    517          CALL lbc_lnk( wn(:,:,:), 'V', 1. )  
    518          CALL lbc_lnk( tsn(:,:,:,jp_tem), 'T', 1. )  
    519          CALL lbc_lnk( tsn(:,:,:,jp_sal), 'T', 1. )  
    520          CALL lbc_lnk( avt(:,:,:), 'T', 1. )  
    521          CALL lbc_lnk( hmld(:,:), 'T', 1. )  
    522          CALL lbc_lnk( qsr(:,:), 'T', 1. )  
    523          CALL lbc_lnk( wndm(:,:), 'T', 1. )  
    524          CALL lbc_lnk( emp(:,:), 'T', 1. )  
    525          CALL lbc_lnk( emp_b(:,:), 'T', 1. )  
    526          CALL lbc_lnk( emps(:,:), 'T', 1. )  
    527 #if defined key_traldf_c3d 
    528          CALL lbc_lnk( ahtt(:,:,:), 'T', 1. )  
    529          CALL lbc_lnk( ahtu(:,:,:), 'U', 1. )  
    530          CALL lbc_lnk( ahtv(:,:,:), 'V', 1. )  
    531          CALL lbc_lnk( ahtw(:,:,:), 'W', 1. )  
    532 #elif defined key_traldf_c2d 
    533          CALL lbc_lnk( ahtt(:,:), 'T', 1. )  
    534          CALL lbc_lnk( ahtu(:,:), 'U', 1. )  
    535          CALL lbc_lnk( ahtv(:,:), 'V', 1. )  
    536          CALL lbc_lnk( ahtw(:,:), 'W', 1. )  
    537 #endif 
    538 # if defined key_zdfddm 
    539          CALL lbc_lnk( avs, 'W', 1. )  
    540 # endif 
    541 #if defined key_traldf_eiv 
    542 #if defined key_traldf_c3d 
    543          CALL lbc_lnk( aeiu(:,:,:), 'U', 1. )  
    544          CALL lbc_lnk( aeiv(:,:,:), 'V', 1. )  
    545          CALL lbc_lnk( aeiw(:,:,:), 'W', 1. )  
    546 #elif defined key_traldf_c2d 
    547          CALL lbc_lnk( aeiu(:,:), 'U', 1. )  
    548          CALL lbc_lnk( aeiv(:,:), 'V', 1. )  
    549          CALL lbc_lnk( aeiw(:,:), 'W', 1. )  
    550 #endif 
    551 #endif 
    552 #if defined key_ldfslp 
    553          CALL lbc_lnk( uslp(:,:,:), 'U', 1. )  
    554          CALL lbc_lnk( vslp(:,:,:), 'V', 1. )  
    555          CALL lbc_lnk( wslpi(:,:,:), 'W', 1. )  
    556          CALL lbc_lnk( wslpj(:,:,:), 'W', 1. )  
    557 #endif 
    558          CALL lbc_lnk( hu(:,:), 'U', 1. )  
    559          CALL lbc_lnk( hv(:,:), 'V', 1. )  
    560          CALL lbc_lnk( hur(:,:), 'U', 1. )  
    561          CALL lbc_lnk( hvr(:,:), 'V', 1. )  
    562  
     467         CALL lbc_lnk( uslp  (:,:,:)       , 'U', 1. )  
     468         CALL lbc_lnk( vslp  (:,:,:)       , 'V', 1. )  
     469         CALL lbc_lnk( wslpi (:,:,:)       , 'W', 1. )  
     470         CALL lbc_lnk( wslpj (:,:,:)       , 'W', 1. )  
     471#endif 
     472         CALL lbc_lnk( hu    (:,:)         , 'U', 1. )  
     473         CALL lbc_lnk( hv    (:,:)         , 'V', 1. )  
     474         CALL lbc_lnk( hur   (:,:)         , 'U', 1. )  
     475         CALL lbc_lnk( hvr   (:,:)         , 'V', 1. )  
     476         ! 
    563477         CALL trc_sub_ssh( kt )         ! after ssh & vertical velocity 
     478         ! 
    564479      ENDIF 
    565480 
    566481 
    567482   END SUBROUTINE trc_sub_stp 
    568   !!------------------------------------------------------------------- 
    569  
    570   !!------------------------------------------------------------------- 
     483 
    571484   SUBROUTINE trc_sub_ini 
    572485      !!------------------------------------------------------------------- 
     
    578491      !!              Compute the averages for sub-stepping 
    579492      !!------------------------------------------------------------------- 
    580       INTEGER ::   jk, jn ,ji,jj   ! dummy loop indices 
    581493      INTEGER ::   ierr 
    582494      !!------------------------------------------------------------------- 
     
    590502      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'top_sub_alloc : unable to allocate standard ocean arrays' ) 
    591503 
    592       DO jk = 1, jpk 
    593          DO jj = 1, jpj 
    594             DO ji = 1, jpi 
    595                un_tm(ji,jj,jk)= un(ji,jj,jk)*fse3u(ji,jj,jk) 
    596                vn_tm(ji,jj,jk)= vn(ji,jj,jk)*fse3v(ji,jj,jk) 
    597           wn_tm(ji,jj,jk)= wn(ji,jj,jk)*fse3w(ji,jj,jk) 
    598                avt_tm(ji,jj,jk)=avt(ji,jj,jk)*fse3t(ji,jj,jk) 
    599                tsn_tm(ji,jj,jk,jp_tem)= tsn_tm(ji,jj,jk,jp_tem)+tsn(ji,jj,jk,jp_tem)*fse3t(ji,jj,jk) 
    600                tsn_tm(ji,jj,jk,jp_sal)= tsn_tm(ji,jj,jk,jp_sal)+tsn(ji,jj,jk,jp_sal)*fse3t(ji,jj,jk) 
    601 #if defined key_zdfddm 
    602                avs_tm(ji,jj,jk)= avs_tm(ji,jj,jk)+avs(ji,jj,jk)*fse3w(ji,jj,jk) 
    603 #endif 
     504      un_tm   (:,:,:)        = un   (:,:,:)        * fse3u(:,:,:)  
     505      vn_tm   (:,:,:)        = vn   (:,:,:)        * fse3v(:,:,:)  
     506      wn_tm   (:,:,:)        = wn   (:,:,:)        * fse3w(:,:,:)  
     507      tsn_tm  (:,:,:,jp_tem) = tsn  (:,:,:,jp_tem) * fse3t(:,:,:)   
     508      tsn_tm  (:,:,:,jp_sal) = tsn  (:,:,:,jp_sal) * fse3t(:,:,:)   
     509      avt_tm  (:,:,:)        = avt  (:,:,:)        * fse3w(:,:,:)   
     510# if defined key_zdfddm 
     511      avs_tm  (:,:,:)        = avs  (:,:,:)        * fse3w(:,:,:)   
     512# endif 
    604513#if defined key_ldfslp 
    605                wslpi_tm(ji,jj,jk)= wslpi(ji,jj,jk)*fse3w(ji,jj,jk) !0.  
    606                wslpj_tm(ji,jj,jk)= wslpj(ji,jj,jk)*fse3w(ji,jj,jk) !0.  
    607                uslp_tm(ji,jj,jk)= uslp(ji,jj,jk)*fse3u(ji,jj,jk) !0.  
    608                vslp_tm(ji,jj,jk)= vslp(ji,jj,jk)*fse3v(ji,jj,jk) !0.  
    609 #endif 
    610            END DO 
    611          END DO 
    612       END DO 
    613  
    614 !   physics variables that are set after initialization: 
    615       wndm_tm(:,:)=0.  !wndm(:,:) 
    616       qsr_tm(:,:)= 0.  !qsr(:,:) 
    617       emp_tm(:,:)= 0.  !emp(:,:) 
    618       emps_tm(:,:)=0.  !emps(:,:) 
    619   
    620       sshn_tm(:,:) = sshn(:,:) !0. 
    621       sshu_n_tm(:,:) = sshu_n(:,:) !0. 
    622       sshv_n_tm(:,:) = sshv_n(:,:) !0. 
    623       rnf_tm(:,:)= rnf(:,:) !0.  
    624       h_rnf_tm(:,:)= h_rnf(:,:) !0. 
    625       hmld_tm(:,:)=hmld(:,:) 
    626       fr_i_tm(:,:)=fr_i(:,:) 
     514      wslpi_tm(:,:,:)        = wslpi(:,:,:)        * fse3w(:,:,:)  
     515      wslpj_tm(:,:,:)        = wslpj(:,:,:)        * fse3w(:,:,:)  
     516      uslp_tm (:,:,:)        = uslp (:,:,:)        * fse3u(:,:,:)  
     517      vslp_tm (:,:,:)        = vslp (:,:,:)        * fse3v(:,:,:)  
     518#endif 
     519 
     520      ! Physics variables that are set after initialization: 
     521      emp_tm (:,:) = 0. 
     522      emps_tm(:,:) = 0. 
     523      qsr_tm (:,:) = 0. 
     524      wndm_tm(:,:) = 0. 
     525      ! 
     526      sshn_tm  (:,:) = sshn  (:,:)  
     527      sshu_n_tm(:,:) = sshu_n(:,:)  
     528      sshv_n_tm(:,:) = sshv_n(:,:)  
     529      rnf_tm   (:,:) = rnf   (:,:)  
     530      h_rnf_tm (:,:) = h_rnf (:,:)  
     531      hmld_tm  (:,:) = hmld  (:,:) 
     532      fr_i_tm  (:,:) = fr_i  (:,:) 
     533      ! 
    627534#if defined key_traldf_c3d 
    628          DO jk = 1, jpk 
    629             DO jj = 1, jpj 
    630                DO ji = 1, jpi 
    631                   ahtt_tm(ji,jj,jk)= ahtt(ji,jj,jk)*fse3t(ji,jj,jk) 
    632                   ahtu_tm(ji,jj,jk)= ahtu(ji,jj,jk)*fse3u(ji,jj,jk) 
    633                   ahtv_tm(ji,jj,jk)= ahtv(ji,jj,jk)*fse3v(ji,jj,jk) 
    634                   ahtw_tm(ji,jj,jk)= ahtw(ji,jj,jk)*fse3w(ji,jj,jk) 
    635              END DO 
    636             END DO 
    637          END DO 
     535      ahtt_tm(:,:,:) = ahtt(:,:,:) * fse3t(:,:,:) 
     536      ahtu_tm(:,:,:) = ahtu(:,:,:) * fse3u(:,:,:) 
     537      ahtv_tm(:,:,:) = ahtv(:,:,:) * fse3v(:,:,:) 
     538      ahtw_tm(:,:,:) = ahtw(:,:,:) * fse3w(:,:,:) 
    638539#elif defined key_traldf_c2d 
    639             DO jj = 1, jpj 
    640                DO ji = 1, jpi 
    641                   ahtt_tm(ji,jj)= ahtt(ji,jj) 
    642                   ahtu_tm(ji,jj)= ahtu(ji,jj) 
    643                   ahtv_tm(ji,jj)= ahtv(ji,jj) 
    644                   ahtw_tm(ji,jj)= ahtw(ji,jj) 
    645              END DO 
    646             END DO 
     540      ahtt_tm(:,:)   = ahtt(:,:) 
     541      ahtu_tm(:,:)   = ahtu(:,:) 
     542      ahtv_tm(:,:)   = ahtv(:,:) 
     543      ahtw_tm(:,:)   = ahtw(:,:) 
    647544#elif defined key_traldf_c1d 
    648           DO jk = 1, jpk 
    649              ahtt_tm(jk)= ahtt(jk) 
    650              ahtu_tm(jk)= ahtu(jk) 
    651              ahtv_tm(jk)= ahtv(jk) 
    652              ahtw_tm(jk)= ahtw(jk) 
    653           END DO 
     545      ahtt_tm(:)     = ahtt(:) 
     546      ahtu_tm(:)     = ahtu(:) 
     547      ahtv_tm(:)     = ahtv(:) 
     548      ahtw_tm(:)     = ahtw(:) 
    654549#else 
    655              ahtt_tm= ahtt 
    656              ahtu_tm= ahtu 
    657              ahtv_tm= ahtv 
    658              ahtw_tm= ahtw 
    659 #endif 
     550      ahtt_tm        = ahtt 
     551      ahtu_tm        = ahtu 
     552      ahtv_tm        = ahtv 
     553      ahtw_tm        = ahtw 
     554#endif 
     555      ! 
    660556#if defined key_traldf_eiv 
    661 # if defined key_traldf_c3d 
    662          DO jk = 1, jpk 
    663             DO jj = 1, jpj 
    664                DO ji = 1, jpi 
    665                   aeiu_tm(ji,jj,jk)= aeiu(ji,jj,jk)*fse3u(ji,jj,jk) 
    666                   aeiv_tm(ji,jj,jk)= aeiv(ji,jj,jk)*fse3v(ji,jj,jk) 
    667                   aeiw_tm(ji,jj,jk)= aeiw(ji,jj,jk)*fse3w(ji,jj,jk) 
    668              END DO 
    669             END DO 
    670          END DO 
    671 # elif defined key_traldf_c2d 
    672             DO jj = 1, jpj 
    673                DO ji = 1, jpi 
    674                   aeiu_tm(ji,jj)= aeiu(ji,jj) 
    675                   aeiv_tm(ji,jj)= aeiv(ji,jj) 
    676                   aeiw_tm(ji,jj)= aeiw(ji,jj) 
    677              END DO 
    678             END DO 
    679 # elif defined key_traldf_c1d 
    680           DO jk = 1, jpk 
    681              aeiu_tm(jk)= aeiu(jk) 
    682              aeiv_tm(jk)= aeiv(jk) 
    683              aeiw_tm(jk)= aeiw(jk) 
    684           END DO 
    685 # else 
    686              aeiu_tm= aeiu 
    687              aeiv_tm= aeiv 
    688              aeiw_tm= aeiw 
    689 # endif 
    690 # endif 
    691  
     557#  if defined key_traldf_c3d 
     558      aieu_tm(:,:,:) = aieu(:,:,:) * fse3u(:,:,:) 
     559      aiev_tm(:,:,:) = aiev(:,:,:) * fse3v(:,:,:) 
     560      aiew_tm(:,:,:) = aiew(:,:,:) * fse3w(:,:,:) 
     561#  elif defined key_traldf_c2d 
     562      aieu_tm(:,:)   = aeiu(:,:) 
     563      aiev_tm(:,:)   = aeiv(:,:) 
     564      aiew_tm(:,:)   = aeiw(:,:) 
     565#  elif defined key_traldf_c1d 
     566      aeiu_tm(:)     = aeiu(:) 
     567      aeiv_tm(:)     = aeiv(:) 
     568      aeiw_tm(:)     = aeiw(:) 
     569#  else 
     570      aeiu_tm        = aeiu 
     571      aeiv_tm        = aeiv 
     572      aeiw_tm        = aeiw 
     573#  endif 
     574#endif 
     575      ! 
    692576   END SUBROUTINE trc_sub_ini 
    693577 
    694   !!------------------------------------------------------------------- 
    695    SUBROUTINE trc_sub_reset(kt) 
     578   SUBROUTINE trc_sub_reset( kt ) 
    696579      !!------------------------------------------------------------------- 
    697580      !!                     ***  ROUTINE trc_sub_reset  *** 
     
    702585      !!              Compute the averages for sub-stepping 
    703586      !!------------------------------------------------------------------- 
    704       INTEGER ::   jk, jn ,ji,jj    ! dummy loop indices 
    705       INTEGER ::   ierr 
    706587      INTEGER, INTENT( in ) ::  kt  ! ocean time-step index 
    707       !!------------------------------------------------------------------- 
    708  
    709 !   restore physics variables 
    710         avt(:,:,:)=avt_temp(:,:,:) 
    711         un(:,:,:)=un_temp(:,:,:) 
    712         vn(:,:,:)=vn_temp(:,:,:) 
    713         wn(:,:,:)=wn_temp(:,:,:) 
    714         sshn(:,:)=sshn_temp(:,:) 
    715         sshb(:,:)=sshb_temp(:,:) 
    716         ssha(:,:)=ssha_temp(:,:) 
    717         sshu_n(:,:)=sshu_n_temp(:,:) 
    718         sshu_b(:,:)=sshu_b_temp(:,:) 
    719         sshu_a(:,:)=sshu_a_temp(:,:) 
    720         sshv_n(:,:)=sshv_n_temp(:,:) 
    721         sshv_b(:,:)=sshv_b_temp(:,:) 
    722         sshv_a(:,:)=sshv_a_temp(:,:) 
    723         sshf_n(:,:)=sshf_n_temp(:,:) 
     588      INTEGER :: jk                 ! dummy loop indices 
     589      !!------------------------------------------------------------------- 
     590 
     591      !   restore physics variables 
     592      avt   (:,:,:)   =  avt_temp   (:,:,:) 
     593      un    (:,:,:)   =  un_temp    (:,:,:) 
     594      vn    (:,:,:)   =  vn_temp    (:,:,:) 
     595      wn    (:,:,:)   =  wn_temp    (:,:,:) 
     596      sshn  (:,:)     =  sshn_temp  (:,:) 
     597      sshb  (:,:)     =  sshb_temp  (:,:) 
     598      ssha  (:,:)     =  ssha_temp  (:,:) 
     599      sshu_n(:,:)     =  sshu_n_temp(:,:) 
     600      sshu_b(:,:)     =  sshu_b_temp(:,:) 
     601      sshu_a(:,:)     =  sshu_a_temp(:,:) 
     602      sshv_n(:,:)     =  sshv_n_temp(:,:) 
     603      sshv_b(:,:)     =  sshv_b_temp(:,:) 
     604      sshv_a(:,:)     =  sshv_a_temp(:,:) 
     605      sshf_n(:,:)     =  sshf_n_temp(:,:) 
    724606#if defined key_ldfslp 
    725         wslpi(:,:,:)=wslpi_temp(:,:,:) 
    726         wslpj(:,:,:)=wslpj_temp(:,:,:) 
    727         uslp(:,:,:)=uslp_temp(:,:,:) 
    728         vslp(:,:,:)=vslp_temp(:,:,:) 
    729 #endif 
    730         rnf(:,:)=rnf_temp(:,:) 
    731         h_rnf(:,:)=h_rnf_temp(:,:) 
    732         hdivn(:,:,:)=hdivn_temp(:,:,:) 
    733         rotn(:,:,:)=rotn_temp(:,:,:) 
    734         hdivb(:,:,:)=hdivb_temp(:,:,:) 
    735         rotb(:,:,:)=rotb_temp(:,:,:) 
    736         hu(:,:)=hu_temp(:,:) 
    737         hv(:,:)=hv_temp(:,:) 
    738         hur(:,:)=hur_temp(:,:) 
    739         hvr(:,:)=hvr_temp(:,:) 
    740         tsn(:,:,:,:)=tsn_temp(:,:,:,:) 
     607      wslpi (:,:,:)   =  wslpi_temp (:,:,:) 
     608      wslpj (:,:,:)   =  wslpj_temp (:,:,:) 
     609      uslp  (:,:,:)   =  uslp_temp  (:,:,:) 
     610      vslp  (:,:,:)   =  vslp_temp  (:,:,:) 
     611#endif 
     612      rnf   (:,:)     =  rnf_temp   (:,:) 
     613      h_rnf (:,:)     =  h_rnf_temp (:,:) 
     614      hdivn (:,:,:)   =  hdivn_temp (:,:,:) 
     615      rotn  (:,:,:)   =  rotn_temp  (:,:,:) 
     616      hdivb (:,:,:)   =  hdivb_temp (:,:,:) 
     617      rotb  (:,:,:)   =  rotb_temp  (:,:,:) 
     618      hu    (:,:)     =  hu_temp    (:,:) 
     619      hv    (:,:)     =  hv_temp    (:,:) 
     620      hur   (:,:)     =  hur_temp   (:,:) 
     621      hvr   (:,:)     =  hvr_temp   (:,:) 
     622      ! 
     623      tsn   (:,:,:,:) =  tsn_temp   (:,:,:,:) 
    741624# if defined key_zdfddm 
    742         avs(:,:,:)=avs_temp(:,:,:) 
    743 # endif 
    744        hmld(:,:)=hmld_temp(:,:) 
    745        qsr(:,:)=qsr_temp(:,:) 
    746        fr_i(:,:)=fr_i_temp(:,:) 
    747        wndm(:,:)=wndm_temp(:,:) 
    748        emp(:,:)=emp_temp(:,:) 
    749        emps(:,:)=emps_temp(:,:) 
    750        emp_b(:,:)=emp_b_temp(:,:) 
     625      avs   (:,:,:)   =  avs_temp   (:,:,:) 
     626# endif 
     627      hmld  (:,:)     =  hmld_temp  (:,:) 
     628      qsr   (:,:)     =  qsr_temp   (:,:) 
     629      fr_i  (:,:)     =  fr_i_temp  (:,:) 
     630      wndm  (:,:)     =  wndm_temp  (:,:) 
     631      emp   (:,:)     =  emp_temp   (:,:) 
     632      emps  (:,:)     =  emps_temp  (:,:) 
     633      emp_b (:,:)     =  emp_b_temp (:,:) 
     634      ! 
    751635#if defined key_traldf_c3d 
    752        ahtu_temp(:,:,:)=ahtu(:,:,:) 
    753        ahtv_temp(:,:,:)=ahtv(:,:,:) 
    754        ahtw_temp(:,:,:)=ahtw(:,:,:) 
    755        ahtt_temp(:,:,:)=ahtt(:,:,:) 
     636      ahtu  (:,:,:)   =  ahtu_temp  (:,:,:) 
     637      ahtv  (:,:,:)   =  ahtv_temp  (:,:,:) 
     638      ahtw  (:,:,:)   =  ahtw_temp  (:,:,:) 
     639      ahtt  (:,:,:)   =  ahtt_temp  (:,:,:) 
    756640#elif defined key_traldf_c2d 
    757        ahtu_temp(:,:)=ahtu(:,:) 
    758        ahtv_temp(:,:)=ahtv(:,:) 
    759        ahtw_temp(:,:)=ahtw(:,:) 
    760        ahtt_temp(:,:)=ahtt(:,:) 
     641      ahtu  (:,:)     =  ahtu_temp  (:,:) 
     642      ahtv  (:,:)     =  ahtv_temp  (:,:) 
     643      ahtw  (:,:)     =  ahtw_temp  (:,:) 
     644      ahtt  (:,:)     =  ahtt_temp  (:,:) 
    761645#elif defined key_traldf_c1d 
    762        ahtu_temp(:)=ahtu(:) 
    763        ahtv_temp(:)=ahtv(:) 
    764        ahtw_temp(:)=ahtw(:) 
    765        ahtt_temp(:)=ahtt(:) 
     646      ahtu  (:)       =  ahtu_temp  (:) 
     647      ahtv  (:)       =  ahtv_temp  (:) 
     648      ahtw  (:)       =  ahtw_temp  (:) 
     649      ahtt  (:)       =  ahtt_temp  (:) 
    766650#else 
    767        ahtu_temp=ahtu 
    768        ahtv_temp=ahtv 
    769        ahtw_temp=ahtw 
    770        ahtt_temp=ahtt 
    771 #endif 
     651      ahtu            =  ahtu_temp 
     652      ahtv            =  ahtv_temp 
     653      ahtw            =  ahtw_temp 
     654      ahtt            =  ahtt_temp 
     655#endif 
     656      ! 
    772657#if defined key_traldf_eiv 
    773658#if defined key_traldf_c3d 
    774        aeiu_temp(:,:,:)=aeiu(:,:,:) 
    775        aeiv_temp(:,:,:)=aeiv(:,:,:) 
    776        aeiw_temp(:,:,:)=aeiw(:,:,:) 
     659      aeiu  (:,:,:)  =  aeiu_temp(:,:,:) 
     660      aeiv  (:,:,:)  =  aeiv_temp(:,:,:) 
     661      aeiw  (:,:,:)  =  aeiw_temp(:,:,:) 
    777662#elif defined key_traldf_c2d 
    778        aeiu_temp(:,:)=aeiu(:,:) 
    779        aeiv_temp(:,:)=aeiv(:,:) 
    780        aeiw_temp(:,:)=aeiw(:,:) 
     663      aeiu  (:,:)    =  aeiu_temp(:,:) 
     664      aeiv  (:,:)    =  aeiv_temp(:,:) 
     665      aeiw  (:,:)    =  aeiw_temp(:,:) 
    781666#elif defined key_traldf_c1d 
    782        aeiu_temp(:)=aeiu(:) 
    783        aeiv_temp(:)=aeiv(:) 
    784        aeiw_temp(:)=aeiw(:) 
     667      aeiu  (:)      =  aeiu_temp(:) 
     668      aeiv  (:)      =  aeiv_temp(:) 
     669      aeiw  (:)      =  aeiw_temp(:) 
    785670#else 
    786        aeiu_temp=aeiu 
    787        aeiv_temp=aeiv 
    788        aeiw_temp=aeiw 
    789 #endif 
    790 #endif         
    791  
    792  
    793        !                                           !------------------------------! 
    794        DO jk = 1, jpk 
    795           fse3t(:,:,jk)= e3t_temp(:,:,jk) !0.  
    796           fse3u(:,:,jk)= e3u_temp(:,:,jk) !0.  
    797           fse3v(:,:,jk)= e3v_temp(:,:,jk)!0.  
    798           fse3w(:,:,jk)= e3w_temp(:,:,jk) !0.  
    799        END DO 
    800        IF( lk_vvl ) THEN                           !  Update Now Vertical coord.  !   (only in vvl case) 
    801        !                                           !------------------------------! 
     671      aeiu           =  aeiu_temp 
     672      aeiv           =  aeiv_temp 
     673      aeiw           =  aeiw_temp 
     674#endif 
     675#endif  
     676      !                                       
     677      DO jk = 1, jpk 
     678         fse3t(:,:,jk)= e3t_temp(:,:,jk)  
     679         fse3u(:,:,jk)= e3u_temp(:,:,jk)  
     680         fse3v(:,:,jk)= e3v_temp(:,:,jk)  
     681         fse3w(:,:,jk)= e3w_temp(:,:,jk)  
     682      END DO 
     683      !                                           !------------------------------! 
     684      IF( lk_vvl ) THEN                           !  Update Now Vertical coord.  !   (only in vvl case) 
     685        !                                           !------------------------------! 
    802686         DO jk = 1, jpkm1 
    803687            fsdept(:,:,jk) = fsdept_n(:,:,jk)          ! now local depths stored in fsdep. arrays 
     
    813697            fse3vw(:,:,jk) = fse3vw_n(:,:,jk) 
    814698         END DO 
     699         ! 
    815700      ENDIF 
    816701 
    817 !   start new averages 
     702      ! Start new averages 
    818703      DO jk = 1, jpk 
    819          DO jj = 1, jpj 
    820             DO ji = 1, jpi 
    821                un_tm(ji,jj,jk)=un(ji,jj,jk)*fse3u(ji,jj,jk)  !0.0 
    822                vn_tm(ji,jj,jk)=vn(ji,jj,jk)*fse3v(ji,jj,jk)  !0.0 
    823                wn_tm(ji,jj,jk)=wn(ji,jj,jk)*fse3w(ji,jj,jk)  !0.0 
    824                avt_tm(ji,jj,jk)=avt(ji,jj,jk)*fse3t(ji,jj,jk)  !0.0 
    825                tsn_tm(ji,jj,jk,jp_tem)=tsn(ji,jj,jk,jp_tem)*fse3t(ji,jj,jk)  !0.0 
    826                tsn_tm(ji,jj,jk,jp_sal)=tsn(ji,jj,jk,jp_sal)*fse3t(ji,jj,jk)  !0.0 
     704         un_tm   (:,:,jk)        = un   (:,:,jk)        * fse3u(:,:,jk)  
     705         vn_tm   (:,:,jk)        = vn   (:,:,jk)        * fse3v(:,:,jk)  
     706         wn_tm   (:,:,jk)        = wn   (:,:,jk)        * fse3w(:,:,jk)  
     707         tsn_tm  (:,:,jk,jp_tem) = tsn  (:,:,jk,jp_tem) * fse3t(:,:,jk)   
     708         tsn_tm  (:,:,jk,jp_sal) = tsn  (:,:,jk,jp_sal) * fse3t(:,:,jk)   
     709         avt_tm  (:,:,jk)        = avt  (:,:,jk)        * fse3w(:,:,jk)   
    827710# if defined key_zdfddm 
    828                avs_tm==avs(ji,jj,jk)*fse3w(ji,jj,jk)  !0.0 
     711         avs_tm  (:,:,jk)        = avs  (:,:,jk)        * fse3w(:,:,jk)   
    829712# endif 
    830713#if defined key_ldfslp 
    831                wslpi_tm(ji,jj,jk)= wslpi(ji,jj,jk)*fse3w(ji,jj,jk) !0.  
    832                wslpj_tm(ji,jj,jk)=wslpj(ji,jj,jk)*fse3w(ji,jj,jk) !0.  
    833                uslp_tm(ji,jj,jk)=uslp(ji,jj,jk)*fse3u(ji,jj,jk) !0.  
    834                vslp_tm(ji,jj,jk)=vslp(ji,jj,jk)*fse3v(ji,jj,jk) !0.  
    835 #endif 
    836             END DO 
    837          END DO 
     714         wslpi_tm(:,:,jk)        = wslpi(:,:,jk)        * fse3w(:,:,jk)  
     715         wslpj_tm(:,:,jk)        = wslpj(:,:,jk)        * fse3w(:,:,jk)  
     716         uslp_tm (:,:,jk)        = uslp (:,:,jk)        * fse3u(:,:,jk)  
     717         vslp_tm (:,:,jk)        = vslp (:,:,jk)        * fse3v(:,:,jk)  
     718#endif 
    838719      END DO 
    839       sshn_tm(:,:) = sshn(:,:) !0. 
    840       sshu_n_tm(:,:) = sshu_n(:,:) !0. 
    841       sshv_n_tm(:,:) = sshv_n(:,:) !0. 
    842       rnf_tm(:,:)= rnf(:,:) !0.  
    843       h_rnf_tm(:,:)= h_rnf(:,:) !0. 
    844       hmld_tm(:,:)=hmld(:,:) 
    845       fr_i_tm(:,:)=fr_i(:,:) 
    846       sshb_hold(:,:)=sshn(:,:) 
    847       sshu_b_hold(:,:)=sshu_n(:,:) 
    848       sshv_b_hold(:,:)=sshv_n(:,:) 
    849       emp_b_hold(:,:)=emp(:,:) 
    850       emp_tm(:,:)=emp(:,:) 
    851       emps_tm(:,:)=emps(:,:) 
    852       qsr_tm(:,:)=qsr(:,:) 
    853       wndm_tm(:,:)=wndm(:,:) 
     720      ! 
     721      sshn_tm    (:,:) = sshn  (:,:)  
     722      sshu_n_tm  (:,:) = sshu_n(:,:)  
     723      sshv_n_tm  (:,:) = sshv_n(:,:)  
     724      rnf_tm     (:,:) = rnf   (:,:)  
     725      h_rnf_tm   (:,:) = h_rnf (:,:)  
     726      hmld_tm    (:,:) = hmld  (:,:) 
     727      fr_i_tm    (:,:) = fr_i  (:,:) 
     728      sshb_hold  (:,:) = sshn  (:,:) 
     729      sshu_b_hold(:,:) = sshu_n(:,:) 
     730      sshv_b_hold(:,:) = sshv_n(:,:) 
     731      emp_b_hold (:,:) = emp   (:,:) 
     732      emp_tm     (:,:) = emp   (:,:) 
     733      emps_tm    (:,:) = emps  (:,:) 
     734      qsr_tm     (:,:) = qsr   (:,:) 
     735      wndm_tm    (:,:) = wndm  (:,:) 
     736      ! 
    854737#if defined key_traldf_c3d 
    855       DO jk = 1, jpk 
    856          DO jj = 1, jpj 
    857             DO ji = 1, jpi 
    858                ahtt_tm(ji,jj,jk)= ahtt(ji,jj,jk)*fse3t(ji,jj,jk) 
    859                ahtu_tm(ji,jj,jk)= ahtu(ji,jj,jk)*fse3u(ji,jj,jk) 
    860                ahtv_tm(ji,jj,jk)= ahtv(ji,jj,jk)*fse3v(ji,jj,jk) 
    861                ahtw_tm(ji,jj,jk)= ahtw(ji,jj,jk)*fse3w(ji,jj,jk) 
    862             END DO 
    863          END DO 
     738      DO jk = 1, jpkm1 
     739         ahtt_tm(:,:,jk) = ahtt(:,:,jk) * fse3t(:,:,jk) 
     740         ahtu_tm(:,:,jk) = ahtu(:,:,jk) * fse3u(:,:,jk) 
     741         ahtv_tm(:,:,jk) = ahtv(:,:,jk) * fse3v(:,:,jk) 
     742         ahtw_tm(:,:,jk) = ahtw(:,:,jk) * fse3w(:,:,jk) 
    864743      END DO 
    865744#elif defined key_traldf_c2d 
    866       DO jj = 1, jpj 
    867          DO ji = 1, jpi 
    868             ahtt_tm(ji,jj)= ahtt(ji,jj) 
    869             ahtu_tm(ji,jj)= ahtu(ji,jj) 
    870             ahtv_tm(ji,jj)= ahtv(ji,jj) 
    871             ahtw_tm(ji,jj)= ahtw(ji,jj) 
    872          END DO 
     745      ahtt_tm(:,:)   = ahtt(:,:) 
     746      ahtu_tm(:,:)   = ahtu(:,:) 
     747      ahtv_tm(:,:)   = ahtv(:,:) 
     748      ahtw_tm(:,:)   = ahtw(:,:) 
     749#elif defined key_traldf_c1d 
     750      ahtt_tm(:)     = ahtt(:) 
     751      ahtu_tm(:)     = ahtu(:) 
     752      ahtv_tm(:)     = ahtv(:) 
     753      ahtw_tm(:)     = ahtw(:) 
     754#else 
     755      ahtt_tm        = ahtt 
     756      ahtu_tm        = ahtu 
     757      ahtv_tm        = ahtv 
     758      ahtw_tm        = ahtw 
     759#endif 
     760      ! 
     761#if defined key_traldf_eiv 
     762#  if defined key_traldf_c3d 
     763      DO jk = 1, jpk 
     764         aieu_tm(:,:,jk) = aieu(:,:,jk) * fse3u(:,:,jk) 
     765         aiev_tm(:,:,jk) = aiev(:,:,jk) * fse3v(:,:,jk) 
     766         aiew_tm(:,:,jk) = aiew(:,:,jk) * fse3w(:,:,jk) 
    873767      END DO 
    874 #elif defined key_traldf_c1d 
    875       DO jk = 1, jpk 
    876          ahtt_tm(jk)= ahtt(jk) 
    877          ahtu_tm(jk)= ahtu(jk) 
    878          ahtv_tm(jk)= ahtv(jk) 
    879          ahtw_tm(jk)= ahtw(jk) 
    880       END DO 
    881 #else 
    882       ahtt_tm= ahtt 
    883       ahtu_tm= ahtu 
    884       ahtv_tm= ahtv 
    885       ahtw_tm= ahtw 
    886 #endif 
    887 #if defined key_traldf_eiv 
    888 # if defined key_traldf_c3d 
    889       DO jk = 1, jpk 
    890          DO jj = 1, jpj 
    891             DO ji = 1, jpi 
    892                aeiu_tm(ji,jj,jk)= aeiu(ji,jj,jk)*fse3u(ji,jj,jk) 
    893                aeiv_tm(ji,jj,jk)= aeiv(ji,jj,jk)*fse3v(ji,jj,jk) 
    894                aeiw_tm(ji,jj,jk)= aeiw(ji,jj,jk)*fse3w(ji,jj,jk) 
    895             END DO 
    896          END DO 
    897       END DO 
    898 # elif defined key_traldf_c2d 
    899       DO jj = 1, jpj 
    900          DO ji = 1, jpi 
    901             aeiu_tm(ji,jj)= aeiu(ji,jj) 
    902             aeiv_tm(ji,jj)= aeiv(ji,jj) 
    903             aeiw_tm(ji,jj)= aeiw(ji,jj) 
    904          END DO 
    905       END DO 
    906 # elif defined key_traldf_c1d 
    907       DO jk = 1, jpk 
    908          aeiu_tm(jk)= aeiu(jk) 
    909          aeiv_tm(jk)= aeiv(jk) 
    910          aeiw_tm(jk)= aeiw(jk) 
    911       END DO 
    912 # else 
    913       aeiu_tm= aeiu 
    914       aeiv_tm= aeiv 
    915       aeiw_tm= aeiw 
    916 # endif 
    917 # endif 
    918  
    919  
     768#  elif defined key_traldf_c2d 
     769      aieu_tm(:,:)   = aeiu(:,:) 
     770      aiev_tm(:,:)   = aeiv(:,:) 
     771      aiew_tm(:,:)   = aeiw(:,:) 
     772#  elif defined key_traldf_c1d 
     773      aeiu_tm(:)     = aeiu(:) 
     774      aeiv_tm(:)     = aeiv(:) 
     775      aeiw_tm(:)     = aeiw(:) 
     776#  else 
     777      aeiu_tm        = aeiu 
     778      aeiv_tm        = aeiv 
     779      aeiw_tm        = aeiw 
     780#  endif 
     781#endif 
     782      ! 
    920783   END SUBROUTINE trc_sub_reset 
    921   !!------------------------------------------------------------------- 
     784 
     785 
    922786   SUBROUTINE trc_sub_ssh( kt )  
    923787      !!---------------------------------------------------------------------- 
     
    940804      !!---------------------------------------------------------------------- 
    941805      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    942       USE oce     , ONLY:   z3d   => ta                           ! ta used as 3D workspace 
    943806      USE wrk_nemo, ONLY:   zhdiv => wrk_2d_1 , z2d => wrk_2d_2   ! 2D workspace 
     807      USE wrk_nemo, ONLY:   z3d => wrk_3d_10                      ! 3D workspace 
    944808      ! 
    945809      INTEGER, INTENT(in) ::   kt   ! time step 
     
    949813      !!---------------------------------------------------------------------- 
    950814 
    951       IF( wrk_in_use(2, 1,2) ) THEN 
    952          CALL ctl_stop('ssh_wzv: requested workspace arrays unavailable')   ;   RETURN 
     815      IF( wrk_in_use(2, 1,2) .OR. wrk_in_use(3,10) ) THEN 
     816         CALL ctl_stop('trc_sub_ssh: requested workspace arrays unavailable')   ;   RETURN 
    953817      ENDIF 
     818 
    954819 
    955820      IF( kt == nittrc000 ) THEN 
     
    960825         ! 
    961826         wn(:,:,jpk) = 0._wp                  ! bottom boundary condition: w=0 (set once for all) 
    962          ! 
    963827         ! 
    964828      ENDIF 
     
    1052916 
    1053917      ! 
    1054       IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('ssh_wzv: failed to release workspace arrays') 
     918      IF( wrk_not_released(2, 1,2) .OR. wrk_not_released(3, 10) ) THEN 
     919          CALL ctl_stop('ssh_wzv: failed to release workspace arrays') 
     920      ENDIF 
    1055921      ! 
    1056922   END SUBROUTINE trc_sub_ssh 
    1057   !!------------------------------------------------------------------- 
    1058  
    1059   !!------------------------------------------------------------------- 
     923 
    1060924   INTEGER FUNCTION trc_sub_alloc() 
    1061925      !!------------------------------------------------------------------- 
     
    1063927      !!------------------------------------------------------------------- 
    1064928      USE lib_mpp, ONLY: ctl_warn 
    1065       INTEGER ::         ierr 
     929      INTEGER ::  ierr 
    1066930      !!------------------------------------------------------------------- 
    1067931      ! 
Note: See TracChangeset for help on using the changeset viewer.