Ignore:
Timestamp:
2012-02-23T12:21:08+01:00 (9 years ago)
Author:
gm
Message:

Ediag branche: #927 restructuration of the trdicp computation - part I

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC/TRD/trdicp.F90

    r3316 r3317  
    77   !!            3.5  !  2012-02 (G. Madec)  add 3D tracer zdf trend output using iom 
    88   !!---------------------------------------------------------------------- 
    9 #if  defined key_trdtra   ||   defined key_trddyn   ||   defined key_esopa 
     9 
    1010   !!---------------------------------------------------------------------- 
    11    !!   'key_trdtra'  or                  active tracers trends diagnostics 
    12    !!   'key_trddyn'                            momentum trends diagnostics 
    13    !!---------------------------------------------------------------------- 
    14    !!   trd_icp          : compute the basin averaged properties for tra/dyn  
    15    !!   trd_dwr          : print dynmaic trends in ocean.output file 
    16    !!   trd_twr          : print tracers trends in ocean.output file 
    17    !!   trd_icp_init     : initialization step 
     11   !!   trd_budget     : domain averaged budget of trends (including kinetic energy and T^2 trends) 
     12   !!   trd_icp        : compute the basin averaged properties for tra/dyn  
     13   !!   trd_dwr        : print dynmaic trends in ocean.output file 
     14   !!   trd_twr        : print tracers trends in ocean.output file 
     15   !!   trd_icp_init   : initialization step 
    1816   !!---------------------------------------------------------------------- 
    1917   USE oce             ! ocean dynamics and tracers variables 
    2018   USE dom_oce         ! ocean space and time domain variables 
     19   USE sbc_oce         ! surface boundary condition: ocean 
     20   USE phycst          ! physical constants 
    2121   USE trdmod_oce      ! ocean variables trends 
    2222   USE ldftra_oce      ! ocean active tracers: lateral physics 
    2323   USE ldfdyn_oce      ! ocean dynamics: lateral physics 
    2424   USE zdf_oce         ! ocean vertical physics 
     25   USE zdfbfr          ! bottom friction 
    2526   USE zdfddm          ! ocean vertical physics: double diffusion 
    2627   USE eosbn2          ! equation of state 
     
    3435   PRIVATE 
    3536 
    36    INTERFACE trd_icp 
    37       MODULE PROCEDURE trd_2d, trd_3d 
    38    END INTERFACE 
    39  
    40    PUBLIC   trd_icp       ! called by trdmod.F90 
     37   PUBLIC   trd_budget    ! called by trdmod.F90 
    4138   PUBLIC   trd_dwr       ! called by step.F90 
    4239   PUBLIC   trd_twr       ! called by step.F90 
    4340   PUBLIC   trd_icp_init  ! called by opa.F90 
     41 
     42   !                     !!! Variables used for diagnostics 
     43   REAL(wp) ::   tvolt    ! volume of the whole ocean computed at t-points 
     44   REAL(wp) ::   tvolu    ! volume of the whole ocean computed at u-points 
     45   REAL(wp) ::   tvolv    ! volume of the whole ocean computed at v-points 
     46   REAL(wp) ::   rpktrd   ! potential to kinetic energy conversion 
     47   REAL(wp) ::   peke     ! conversion potential energy - kinetic energy trend 
     48 
     49   !                     !!! domain averaged trends 
     50   REAL(wp), DIMENSION(jptot_tra) ::   tmo, smo   ! temperature and salinity trends  
     51   REAL(wp), DIMENSION(jptot_tra) ::   t2 , s2    ! T^2 and S^2 trends  
     52   REAL(wp), DIMENSION(jptot_dyn) ::   umo, vmo   ! momentum trends  
     53   REAL(wp), DIMENSION(jptot_dyn) ::   hke        ! kinetic energy trends (u^2+v^2)  
    4454 
    4555   !! * Substitutions 
     
    5464CONTAINS 
    5565 
    56    SUBROUTINE trd_2d( ptrd2dx, ptrd2dy, ktrd , ctype ) 
     66   SUBROUTINE trd_budget( ptrdx, ptrdy, ktrd, ctype, kt ) 
    5767      !!--------------------------------------------------------------------- 
    58       !!                  ***  ROUTINE trd_2d  *** 
     68      !!                  ***  ROUTINE trd_budget  *** 
    5969      !!  
    60       !! ** Purpose :   compute and print the domain averaged properties of tracers  
    61       !!              and/or momentum equations at each nn_trd time step. 
    62       !!---------------------------------------------------------------------- 
    63       REAL(wp), DIMENSION(:,:), INTENT(inout) ::   ptrd2dx   ! Temperature or U trend  
    64       REAL(wp), DIMENSION(:,:), INTENT(inout) ::   ptrd2dy   ! Salinity    or V trend 
    65       INTEGER                 , INTENT(in   ) ::   ktrd      ! tracer trend index 
    66       CHARACTER(len=3)        , INTENT(in   ) ::   ctype     ! momentum ('DYN') or tracers ('TRA') trends 
     70      !! ** Purpose : integral constraint diagnostics for momentum and/or tracer trends 
     71      !!               
     72      !!---------------------------------------------------------------------- 
     73      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   ptrdx   ! Temperature or U trend  
     74      REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   ptrdy   ! Salinity    or V trend 
     75      INTEGER                   , INTENT(in   ) ::   ktrd    ! tracer trend index 
     76      CHARACTER(len=3)          , INTENT(in   ) ::   ctype   ! momentum or tracers trends type 'DYN'/'TRA' 
     77      INTEGER                   , INTENT(in   ) ::   kt      ! time step 
    6778      !! 
    68       INTEGER ::   ji, jj   ! loop indices 
    69       !!---------------------------------------------------------------------- 
    70  
    71       SELECT CASE( ctype )    !==  Mask trends  ==! 
    72       ! 
    73       CASE( 'DYN' )                    ! Momentum 
    74          DO jj = 1, jpjm1 
    75             DO ji = 1, jpim1 
    76                ptrd2dx(ji,jj) = ptrd2dx(ji,jj) * tmask_i(ji+1,jj  ) * tmask_i(ji,jj) * umask(ji,jj,1) 
    77                ptrd2dy(ji,jj) = ptrd2dy(ji,jj) * tmask_i(ji  ,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,1) 
     79      INTEGER ::   ji, jj, jk      ! dummy loop indices 
     80      INTEGER ::   ikbu, ikbv      ! local integers 
     81      REAL(wp)::   zvm, zvt, zvs, z1_2rau0   ! local scalars 
     82      REAL(wp), POINTER, DIMENSION(:,:)  :: ztswu, ztswv, z2dx, z2dy   ! 2D workspace  
     83      !!---------------------------------------------------------------------- 
     84 
     85      CALL wrk_alloc( jpi, jpj, ztswu, ztswv, z2dx, z2dy ) 
     86 
     87      IF( MOD(kt,nn_trd) == 0 .OR. kt == nit000 .OR. kt == nitend ) THEN 
     88         ! 
     89         SELECT CASE( ctype ) 
     90         ! 
     91         CASE( 'TRA' )          !==  Tracers (T & S)  ==! 
     92            DO jk = 1, jpkm1       ! global sum of mask volume trend and trend*T (including interior mask) 
     93               DO jj = 1, jpj 
     94                  DO ji = 1, jpi         
     95                     zvm = e1e2t(ji,jj) * fse3t(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
     96                     zvt = ptrdx(ji,jj,jk) * zvm 
     97                     zvs = ptrdy(ji,jj,jk) * zvm 
     98                     tmo(ktrd) = tmo(ktrd) + zvt    
     99                     smo(ktrd) = smo(ktrd) + zvs 
     100                     t2 (ktrd) = t2(ktrd)  + zvt * tsn(ji,jj,jk,jp_tem) 
     101                     s2 (ktrd) = s2(ktrd)  + zvs * tsn(ji,jj,jk,jp_sal) 
     102                  END DO 
     103               END DO 
    78104            END DO 
    79          END DO 
    80          ptrd2dx(jpi, : ) = 0._wp      ;      ptrd2dy(jpi, : ) = 0._wp 
    81          ptrd2dx( : ,jpj) = 0._wp      ;      ptrd2dy( : ,jpj) = 0._wp 
    82          ! 
    83       CASE( 'TRA' )                    ! Tracers 
    84          ptrd2dx(:,:) = ptrd2dx(:,:) * tmask_i(:,:) 
    85          ptrd2dy(:,:) = ptrd2dy(:,:) * tmask_i(:,:) 
    86          ! 
    87       END SELECT 
    88        
    89       SELECT CASE( ctype )    !==  Basin averaged tracer/momentum trends  ==! 
    90       ! 
    91       CASE( 'DYN' )                    ! Momentum 
    92          umo(ktrd) = 0._wp 
    93          vmo(ktrd) = 0._wp 
    94          ! 
    95          SELECT CASE( ktrd ) 
    96          CASE( jpdyn_trd_swf )         ! surface forcing 
    97             umo(ktrd) = SUM( ptrd2dx(:,:) * e1u(:,:) * e2u(:,:) * fse3u(:,:,1) ) 
    98             vmo(ktrd) = SUM( ptrd2dy(:,:) * e1v(:,:) * e2v(:,:) * fse3v(:,:,1) ) 
     105            !                       ! linear free surface: diagnose advective flux trough the fixed k=1 w-surface 
     106            IF( .NOT.lk_vvl .AND. ktrd == jptra_trd_zad ) THEN   
     107               tmo(jptra_trd_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_tem) * e1e2t(:,:) ) 
     108               smo(jptra_trd_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_sal) * e1e2t(:,:)  ) 
     109               t2 (jptra_trd_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_tem) * tsn(:,:,1,jp_tem) * e1e2t(:,:)  ) 
     110               s2 (jptra_trd_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_sal) * tsn(:,:,1,jp_sal) * e1e2t(:,:)  ) 
     111            ENDIF 
     112            ! 
     113            IF( ktrd == jptra_trd_atf ) THEN     ! last trend (asselin time filter) 
     114               !  
     115               CALL trd_twr( kt )   ! print the results in ocean.output 
     116               !                 
     117               tmo(:) = 0._wp       ! prepare the next time step (domain averaged array reset to zero) 
     118               smo(:) = 0._wp 
     119               t2 (:) = 0._wp 
     120               s2 (:) = 0._wp 
     121               ! 
     122            ENDIF 
     123            ! 
     124         CASE( 'DYN' )          !==  Momentum and KE  ==!         
     125            DO jk = 1, jpkm1 
     126               DO jj = 1, jpjm1 
     127                  DO ji = 1, jpim1 
     128                     zvt = ptrdx(ji,jj,jk) * tmask_i(ji+1,jj  ) * tmask_i(ji,jj) * umask(ji,jj,jk)   & 
     129                        &                  * e1u    (ji  ,jj  ) * e2u    (ji,jj) * fse3u(ji,jj,jk) 
     130                     zvs = ptrdy(ji,jj,jk) * tmask_i(ji  ,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk)   & 
     131                        &                  * e1v    (ji  ,jj  ) * e2v    (ji,jj) * fse3u(ji,jj,jk) 
     132                     umo(ktrd) = umo(ktrd) + zvt 
     133                     vmo(ktrd) = vmo(ktrd) + zvs 
     134                     hke(ktrd) = hke(ktrd) + un(ji,jj,jk) * zvt + vn(ji,jj,jk) * zvs 
     135                  END DO 
     136               END DO 
     137            END DO 
     138            !                  
     139            IF( ktrd == jpdyn_trd_zdf ) THEN      ! zdf trend: compute separately the surface forcing trend 
     140               z1_2rau0 = 0.5_wp / rau0 
     141               DO jj = 1, jpjm1 
     142                  DO ji = 1, jpim1 
     143                     zvt = ( utau_b(ji,jj) + utau(ji,jj) ) * tmask_i(ji+1,jj  ) * tmask_i(ji,jj) * umask(ji,jj,jk)   & 
     144                        &                       * z1_2rau0 * e1u    (ji  ,jj  ) * e2u    (ji,jj) 
     145                     zvs = ( vtau_b(ji,jj) + vtau(ji,jj) ) * tmask_i(ji  ,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk)   & 
     146                        &                       * z1_2rau0 * e1v    (ji  ,jj  ) * e2v    (ji,jj) * fse3u(ji,jj,jk) 
     147                     umo(jpdyn_trd_tau) = umo(jpdyn_trd_tau) + zvt 
     148                     vmo(jpdyn_trd_tau) = vmo(jpdyn_trd_tau) + zvs 
     149                     hke(jpdyn_trd_tau) = hke(jpdyn_trd_tau) + un(ji,jj,1) * zvt + vn(ji,jj,1) * zvs 
     150                  END DO 
     151               END DO 
     152            ENDIF 
     153            !                        
     154            IF( ktrd == jpdyn_trd_atf ) THEN     ! last trend (asselin time filter) 
     155               ! 
     156               IF( ln_bfrimp ) THEN                   ! implicit bfr case: compute separately the bottom friction  
     157                  z1_2rau0 = 0.5_wp / rau0 
     158                  DO jj = 1, jpjm1 
     159                     DO ji = 1, jpim1 
     160                        ikbu = mbku(ji,jj)                  ! deepest ocean u- & v-levels 
     161                        ikbv = mbkv(ji,jj) 
     162                        zvt = bfrua(ji,jj) * un(ji,jj,ikbu) * e1u(ji,jj) * e2v(ji,jj) 
     163                        zvs = bfrva(ji,jj) * vn(ji,jj,ikbv) * e1v(ji,jj) * e2v(ji,jj) 
     164                        umo(jpdyn_trd_bfr) = umo(jpdyn_trd_bfr) + zvt 
     165                        vmo(jpdyn_trd_bfr) = vmo(jpdyn_trd_bfr) + zvs 
     166                        hke(jpdyn_trd_bfr) = hke(jpdyn_trd_bfr) + un(ji,jj,ikbu) * zvt + vn(ji,jj,ikbv) * zvs 
     167                     END DO 
     168                  END DO 
     169               ENDIF 
     170               !  
     171               CALL trd_dwr( kt )                     ! print the results in ocean.output 
     172               !                 
     173               umo(:) = 0._wp                         ! reset for the next time step 
     174               vmo(:) = 0._wp 
     175               hke(:) = 0._wp 
     176               ! 
     177            ENDIF 
     178            ! 
    99179         END SELECT 
    100180         ! 
    101       CASE( 'TRA' )              ! Tracers 
    102          tmo(ktrd) = SUM( ptrd2dx(:,:) * e1e2t(:,:) * fse3t(:,:,1) ) 
    103          smo(ktrd) = SUM( ptrd2dy(:,:) * e1e2t(:,:) * fse3t(:,:,1) ) 
    104       END SELECT 
    105        
    106       SELECT CASE( ctype )    !==  Basin averaged tracer/momentum square trends  ==!   (now field) 
    107       ! 
    108       CASE( 'DYN' )              ! Momentum 
    109          hke(ktrd) = SUM(   un(:,:,1) * ptrd2dx(:,:) * e1u(:,:) * e2u(:,:) * fse3u(:,:,1)   & 
    110             &             + vn(:,:,1) * ptrd2dy(:,:) * e1v(:,:) * e2v(:,:) * fse3v(:,:,1)   ) 
    111          ! 
    112       CASE( 'TRA' )              ! Tracers 
    113          t2(ktrd) = SUM( ptrd2dx(:,:) * e1e2t(:,:) * fse3t(:,:,1) * tsn(:,:,1,jp_tem) ) 
    114          s2(ktrd) = SUM( ptrd2dy(:,:) * e1e2t(:,:) * fse3t(:,:,1) * tsn(:,:,1,jp_sal) ) 
    115          !       
    116       END SELECT 
    117       ! 
    118    END SUBROUTINE trd_2d 
    119  
    120  
    121    SUBROUTINE trd_3d( ptrd3dx, ptrd3dy, ktrd, ctype ) 
    122       !!--------------------------------------------------------------------- 
    123       !!                  ***  ROUTINE trd_3d  *** 
    124       !!  
    125       !! ** Purpose : verify the basin averaged properties of tracers and/or 
    126       !!              momentum equations at every time step frequency nn_trd. 
    127       !!---------------------------------------------------------------------- 
    128       REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   ptrd3dx   ! Temperature or U trend  
    129       REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   ptrd3dy   ! Salinity    or V trend 
    130       INTEGER,                    INTENT(in   ) ::   ktrd      ! momentum or tracer trend index 
    131       CHARACTER(len=3),           INTENT(in   ) ::   ctype     ! momentum ('DYN') or tracers ('TRA') trends 
    132       !! 
    133       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    134       !!---------------------------------------------------------------------- 
    135  
    136       SELECT CASE( ctype )    !==  Mask the trends  ==! 
    137       ! 
    138       CASE( 'DYN' )              ! Momentum         
    139          DO jk = 1, jpkm1 
    140             DO jj = 1, jpjm1 
    141                DO ji = 1, jpim1 
    142                   ptrd3dx(ji,jj,jk) = ptrd3dx(ji,jj,jk) * tmask_i(ji+1,jj  ) * tmask_i(ji,jj) * umask(ji,jj,jk) 
    143                   ptrd3dy(ji,jj,jk) = ptrd3dy(ji,jj,jk) * tmask_i(ji  ,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) 
    144                END DO 
    145             END DO 
    146          END DO 
    147          ptrd3dx(jpi, : ,:) = 0._wp      ;      ptrd3dy(jpi, : ,:) = 0._wp 
    148          ptrd3dx( : ,jpj,:) = 0._wp      ;      ptrd3dy( : ,jpj,:) = 0._wp 
    149          ! 
    150       CASE( 'TRA' )              ! Tracers 
    151          DO jk = 1, jpkm1 
    152             ptrd3dx(:,:,jk) = ptrd3dx(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 
    153             ptrd3dy(:,:,jk) = ptrd3dy(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 
    154          END DO 
    155          ! 
    156       END SELECT    
    157  
    158       SELECT CASE( ctype )    !==  Basin averaged tracer/momentum trends  ==! 
    159       ! 
    160       CASE( 'DYN' )              ! Momentum 
    161          umo(ktrd) = 0._wp 
    162          vmo(ktrd) = 0._wp 
    163          DO jk = 1, jpkm1 
    164             umo(ktrd) = umo(ktrd) + SUM( ptrd3dx(:,:,jk) * e1u(:,:) * e2u(:,:) * fse3u(:,:,jk) ) 
    165             vmo(ktrd) = vmo(ktrd) + SUM( ptrd3dy(:,:,jk) * e1v(:,:) * e2v(:,:) * fse3v(:,:,jk) ) 
    166          END DO 
    167          ! 
    168       CASE( 'TRA' )              ! Tracers 
    169          tmo(ktrd) = 0._wp 
    170          smo(ktrd) = 0._wp 
    171          DO jk = 1, jpkm1 
    172             tmo(ktrd) = tmo(ktrd) + SUM( ptrd3dx(:,:,jk) * e1e2t(:,:) * fse3t(:,:,jk) ) 
    173             smo(ktrd) = smo(ktrd) + SUM( ptrd3dy(:,:,jk) * e1e2t(:,:) * fse3t(:,:,jk) ) 
    174          END DO 
    175          ! 
    176       END SELECT 
    177  
    178       SELECT CASE( ctype )    !==  Basin averaged tracer/momentum square trends  ==!   (now field) 
    179       ! 
    180       CASE( 'DYN' )              ! Momentum 
    181          hke(ktrd) = 0._wp 
    182          DO jk = 1, jpkm1 
    183             hke(ktrd) = hke(ktrd) + SUM(   un(:,:,jk) * ptrd3dx(:,:,jk) * e1u(:,:) * e2u(:,:) * fse3u(:,:,jk)   & 
    184                &                         + vn(:,:,jk) * ptrd3dy(:,:,jk) * e1v(:,:) * e2v(:,:) * fse3v(:,:,jk)   ) 
    185          END DO 
    186          ! 
    187       CASE( 'TRA' )              ! Tracers 
    188          t2(ktrd) = 0._wp 
    189          s2(ktrd) = 0._wp 
    190          DO jk = 1, jpkm1 
    191             t2(ktrd) = t2(ktrd) + SUM( ptrd3dx(:,:,jk) * tsn(:,:,jk,jp_tem) * e1e2t(:,:) * fse3t(:,:,jk) ) 
    192             s2(ktrd) = s2(ktrd) + SUM( ptrd3dy(:,:,jk) * tsn(:,:,jk,jp_sal) * e1e2t(:,:) * fse3t(:,:,jk) ) 
    193          END DO 
    194          ! 
    195       END SELECT 
    196       ! 
    197    END SUBROUTINE trd_3d 
     181      ENDIF 
     182      ! 
     183      CALL wrk_dealloc( jpi, jpj, ztswu, ztswv, z2dx, z2dy ) 
     184      ! 
     185   END SUBROUTINE trd_budget 
    198186 
    199187 
     
    262250      REAL(wp), POINTER, DIMENSION(:,:,:)  ::  zkx, zky, zkz, zkepe   
    263251      !!---------------------------------------------------------------------- 
    264  
    265       IF( ln_3D_trd_t .AND. ln_3D_trd_d )   RETURN            ! do nothing if 3D output with IOM 
    266252 
    267253      CALL wrk_alloc( jpi, jpj, jpk, zkx, zky, zkz, zkepe ) 
     
    333319            WRITE (numout,*) 
    334320            WRITE (numout,9500) kt 
    335             WRITE (numout,9501) umo(jpicpd_hpg) / tvolu, vmo(jpicpd_hpg) / tvolv 
    336             WRITE (numout,9502) umo(jpicpd_keg) / tvolu, vmo(jpicpd_keg) / tvolv 
    337             WRITE (numout,9503) umo(jpicpd_rvo) / tvolu, vmo(jpicpd_rvo) / tvolv 
    338             WRITE (numout,9504) umo(jpicpd_pvo) / tvolu, vmo(jpicpd_pvo) / tvolv 
    339             WRITE (numout,9505) umo(jpicpd_ldf) / tvolu, vmo(jpicpd_ldf) / tvolv 
    340             WRITE (numout,9506) umo(jpicpd_had) / tvolu, vmo(jpicpd_had) / tvolv 
    341             WRITE (numout,9507) umo(jpicpd_zad) / tvolu, vmo(jpicpd_zad) / tvolv 
    342             WRITE (numout,9508) umo(jpicpd_zdf) / tvolu, vmo(jpicpd_zdf) / tvolv 
    343             WRITE (numout,9509) umo(jpicpd_spg) / tvolu, vmo(jpicpd_spg) / tvolv 
    344             WRITE (numout,9510) umo(jpicpd_swf) / tvolu, vmo(jpicpd_swf) / tvolv 
    345             WRITE (numout,9511) umo(jpicpd_dat) / tvolu, vmo(jpicpd_dat) / tvolv 
    346             WRITE (numout,9512) umo(jpicpd_bfr) / tvolu, vmo(jpicpd_bfr) / tvolv 
     321            WRITE (numout,9501) umo(jpdyn_trd_hpg) / tvolu, vmo(jpdyn_trd_hpg) / tvolv 
     322            WRITE (numout,9509) umo(jpdyn_trd_spg) / tvolu, vmo(jpdyn_trd_spg) / tvolv 
     323            WRITE (numout,9502) umo(jpdyn_trd_keg) / tvolu, vmo(jpdyn_trd_keg) / tvolv 
     324            WRITE (numout,9503) umo(jpdyn_trd_rvo) / tvolu, vmo(jpdyn_trd_rvo) / tvolv 
     325            WRITE (numout,9504) umo(jpdyn_trd_pvo) / tvolu, vmo(jpdyn_trd_pvo) / tvolv 
     326            WRITE (numout,9507) umo(jpdyn_trd_zad) / tvolu, vmo(jpdyn_trd_zad) / tvolv 
     327            WRITE (numout,9505) umo(jpdyn_trd_ldf) / tvolu, vmo(jpdyn_trd_ldf) / tvolv 
     328            WRITE (numout,9508) umo(jpdyn_trd_zdf) / tvolu, vmo(jpdyn_trd_zdf) / tvolv 
     329            WRITE (numout,9510) umo(jpdyn_trd_tau) / tvolu, vmo(jpdyn_trd_tau) / tvolv 
     330            WRITE (numout,9511) umo(jpdyn_trd_bfr) / tvolu, vmo(jpdyn_trd_bfr) / tvolv 
     331            WRITE (numout,9512) umo(jpdyn_trd_atf) / tvolu, vmo(jpdyn_trd_atf) / tvolv 
    347332            WRITE (numout,9513) 
    348333            WRITE (numout,9514)                                                 & 
    349             &     (  umo(jpicpd_hpg) + umo(jpicpd_keg) + umo(jpicpd_rvo) + umo(jpicpd_pvo) + umo(jpicpd_ldf)   & 
    350             &      + umo(jpicpd_had) + umo(jpicpd_zad) + umo(jpicpd_zdf) + umo(jpicpd_spg) + umo(jpicpd_dat)   & 
    351             &      + umo(jpicpd_swf) + umo(jpicpd_bfr) ) / tvolu,   & 
    352             &     (  vmo(jpicpd_hpg) + vmo(jpicpd_keg) + vmo(jpicpd_rvo) + vmo(jpicpd_pvo) + vmo(jpicpd_ldf)   & 
    353             &      + vmo(jpicpd_had) + vmo(jpicpd_zad) + vmo(jpicpd_zdf) + vmo(jpicpd_spg) + vmo(jpicpd_dat)   & 
    354             &      + vmo(jpicpd_swf) + vmo(jpicpd_bfr) ) / tvolv 
     334            &     (  umo(jpdyn_trd_hpg) + umo(jpdyn_trd_spg) + umo(jpdyn_trd_keg) + umo(jpdyn_trd_rvo)   & 
     335            &      + umo(jpdyn_trd_pvo) + umo(jpdyn_trd_zad) + umo(jpdyn_trd_ldf) + umo(jpdyn_trd_zdf)   & 
     336            &      + umo(jpdyn_trd_tau) + umo(jpdyn_trd_bfr) + umo(jpdyn_trd_atf) ) / tvolu,   & 
     337            &     (  vmo(jpdyn_trd_hpg) + vmo(jpdyn_trd_spg) + vmo(jpdyn_trd_keg) + vmo(jpdyn_trd_rvo)   & 
     338            &      + vmo(jpdyn_trd_pvo) + vmo(jpdyn_trd_zad) + vmo(jpdyn_trd_ldf) + vmo(jpdyn_trd_zdf)   & 
     339            &      + vmo(jpdyn_trd_tau) + vmo(jpdyn_trd_bfr) + vmo(jpdyn_trd_atf) ) / tvolv 
    355340         ENDIF 
    356341 
     
    361346 9504    FORMAT(' coriolis term              u= ', e20.13, '    v= ', e20.13) 
    362347 9505    FORMAT(' horizontal diffusion       u= ', e20.13, '    v= ', e20.13) 
    363  9506    FORMAT(' horizontal advection       u= ', e20.13, '    v= ', e20.13) 
    364348 9507    FORMAT(' vertical advection         u= ', e20.13, '    v= ', e20.13) 
    365349 9508    FORMAT(' vertical diffusion         u= ', e20.13, '    v= ', e20.13) 
    366350 9509    FORMAT(' surface pressure gradient  u= ', e20.13, '    v= ', e20.13) 
    367  9510    FORMAT(' surface wind forcing       u= ', e20.13, '    v= ', e20.13) 
    368  9511    FORMAT(' dampimg term               u= ', e20.13, '    v= ', e20.13) 
    369  9512    FORMAT(' bottom flux                u= ', e20.13, '    v= ', e20.13) 
     351 9510    FORMAT(' surface wind stress        u= ', e20.13, '    v= ', e20.13) 
     352 9511    FORMAT(' bottom friction            u= ', e20.13, '    v= ', e20.13) 
     353 9512    FORMAT(' Asselin time filter        u= ', e20.13, '    v= ', e20.13) 
    370354 9513    FORMAT(' -----------------------------------------------------------------------------') 
    371355 9514    FORMAT(' total trend                u= ', e20.13, '    v= ', e20.13) 
     
    375359            WRITE (numout,*) 
    376360            WRITE (numout,9520) kt 
    377             WRITE (numout,9521) hke(jpicpd_hpg) / tvolt 
    378             WRITE (numout,9522) hke(jpicpd_keg) / tvolt 
    379             WRITE (numout,9523) hke(jpicpd_rvo) / tvolt 
    380             WRITE (numout,9524) hke(jpicpd_pvo) / tvolt 
    381             WRITE (numout,9525) hke(jpicpd_ldf) / tvolt 
    382             WRITE (numout,9526) hke(jpicpd_had) / tvolt 
    383             WRITE (numout,9527) hke(jpicpd_zad) / tvolt 
    384             WRITE (numout,9528) hke(jpicpd_zdf) / tvolt 
    385             WRITE (numout,9529) hke(jpicpd_spg) / tvolt 
    386             WRITE (numout,9530) hke(jpicpd_swf) / tvolt 
    387             WRITE (numout,9531) hke(jpicpd_dat) / tvolt 
    388             WRITE (numout,9532) hke(jpicpd_bfr) / tvolt 
     361            WRITE (numout,9521) hke(jpdyn_trd_hpg) / tvolt 
     362            WRITE (numout,9529) hke(jpdyn_trd_spg) / tvolt 
     363            WRITE (numout,9522) hke(jpdyn_trd_keg) / tvolt 
     364            WRITE (numout,9523) hke(jpdyn_trd_rvo) / tvolt 
     365            WRITE (numout,9524) hke(jpdyn_trd_pvo) / tvolt 
     366            WRITE (numout,9527) hke(jpdyn_trd_zad) / tvolt 
     367            WRITE (numout,9525) hke(jpdyn_trd_ldf) / tvolt 
     368            WRITE (numout,9528) hke(jpdyn_trd_zdf) / tvolt 
     369            WRITE (numout,9530) hke(jpdyn_trd_tau) / tvolt 
     370            WRITE (numout,9531) hke(jpdyn_trd_bfr) / tvolt 
     371            WRITE (numout,9532) hke(jpdyn_trd_atf) / tvolt 
    389372            WRITE (numout,9533) 
    390373            WRITE (numout,9534)   & 
    391             &     (  hke(jpicpd_hpg) + hke(jpicpd_keg) + hke(jpicpd_rvo) + hke(jpicpd_pvo) + hke(jpicpd_ldf)   & 
    392             &      + hke(jpicpd_had) + hke(jpicpd_zad) + hke(jpicpd_zdf) + hke(jpicpd_spg) + hke(jpicpd_dat)   & 
    393             &      + hke(jpicpd_swf) + hke(jpicpd_bfr) ) / tvolt 
     374            &     (  hke(jpdyn_trd_hpg) + hke(jpdyn_trd_spg) + hke(jpdyn_trd_keg) + hke(jpdyn_trd_rvo)   & 
     375            &      + hke(jpdyn_trd_pvo) + hke(jpdyn_trd_zad) + hke(jpdyn_trd_ldf) + hke(jpdyn_trd_zdf)   & 
     376            &      + hke(jpdyn_trd_tau) + hke(jpdyn_trd_bfr) + hke(jpdyn_trd_atf) ) / tvolt 
    394377         ENDIF 
    395378 
    396379 9520    FORMAT(' kinetic energy trend at it= ', i6, ' :', /' ====================================') 
    397380 9521    FORMAT(' pressure gradient         u2= ', e20.13) 
     381 9529    FORMAT(' surface pressure gradient u2= ', e20.13) 
    398382 9522    FORMAT(' ke gradient               u2= ', e20.13) 
    399383 9523    FORMAT(' relative vorticity term   u2= ', e20.13) 
    400384 9524    FORMAT(' coriolis term             u2= ', e20.13) 
     385 9527    FORMAT(' vertical advection        u2= ', e20.13) 
    401386 9525    FORMAT(' horizontal diffusion      u2= ', e20.13) 
    402  9526    FORMAT(' horizontal advection      u2= ', e20.13) 
    403  9527    FORMAT(' vertical advection        u2= ', e20.13) 
    404387 9528    FORMAT(' vertical diffusion        u2= ', e20.13) 
    405  9529    FORMAT(' surface pressure gradient u2= ', e20.13) 
    406  9530    FORMAT(' surface wind forcing      u2= ', e20.13) 
    407  9531    FORMAT(' dampimg term              u2= ', e20.13) 
    408  9532    FORMAT(' bottom flux               u2= ', e20.13) 
     388 9530    FORMAT(' surface wind stress       u2= ', e20.13) 
     389 9531    FORMAT(' bottom friction           u2= ', e20.13) 
     390 9532    FORMAT(' Asselin time filter       u2= ', e20.13) 
    409391 9533    FORMAT(' --------------------------------------------------') 
    410392 9534    FORMAT(' total trend               u2= ', e20.13) 
     
    414396            WRITE (numout,*) 
    415397            WRITE (numout,9540) kt 
    416             WRITE (numout,9541) ( hke(jpicpd_keg) + hke(jpicpd_rvo) + hke(jpicpd_had) + hke(jpicpd_zad) ) / tvolt 
    417             WRITE (numout,9542) ( hke(jpicpd_keg) + hke(jpicpd_had) + hke(jpicpd_zad) ) / tvolt 
    418             WRITE (numout,9543) ( hke(jpicpd_pvo) ) / tvolt 
    419             WRITE (numout,9544) ( hke(jpicpd_rvo) ) / tvolt 
    420             WRITE (numout,9545) ( hke(jpicpd_spg) ) / tvolt 
    421             WRITE (numout,9546) ( hke(jpicpd_ldf) ) / tvolt 
    422             WRITE (numout,9547) ( hke(jpicpd_zdf) ) / tvolt 
    423             WRITE (numout,9548) ( hke(jpicpd_hpg) ) / tvolt, rpktrd / tvolt 
     398            WRITE (numout,9541) ( hke(jpdyn_trd_keg) + hke(jpdyn_trd_rvo) + hke(jpdyn_trd_zad) ) / tvolt 
     399            WRITE (numout,9542) ( hke(jpdyn_trd_keg) + hke(jpdyn_trd_zad) ) / tvolt 
     400            WRITE (numout,9543) ( hke(jpdyn_trd_pvo) ) / tvolt 
     401            WRITE (numout,9544) ( hke(jpdyn_trd_rvo) ) / tvolt 
     402            WRITE (numout,9545) ( hke(jpdyn_trd_spg) ) / tvolt 
     403            WRITE (numout,9546) ( hke(jpdyn_trd_ldf) ) / tvolt 
     404            WRITE (numout,9547) ( hke(jpdyn_trd_zdf) ) / tvolt 
     405            WRITE (numout,9548) ( hke(jpdyn_trd_hpg) ) / tvolt, rpktrd / tvolt 
    424406            WRITE (numout,*) 
    425407            WRITE (numout,*) 
     
    427409 
    428410 9540    FORMAT(' energetic consistency at it= ', i6, ' :', /' =========================================') 
    429  9541    FORMAT(' 0 = non linear term(true if key_vorenergy or key_combined): ', e20.13) 
    430  9542    FORMAT(' 0 = ke gradient + horizontal + vertical advection         : ', e20.13) 
    431  9543    FORMAT(' 0 = coriolis term  (true if key_vorenergy or key_combined): ', e20.13) 
    432  9544    FORMAT(' 0 = uh.( rot(u) x uh ) (true if enstrophy conser.)        : ', e20.13) 
    433  9545    FORMAT(' 0 = surface pressure gradient                             : ', e20.13) 
    434  9546    FORMAT(' 0 > horizontal diffusion                                  : ', e20.13) 
    435  9547    FORMAT(' 0 > vertical diffusion                                    : ', e20.13) 
     411 9541    FORMAT(' 0 = non linear term (true if KE conserved)                : ', e20.13) 
     412 9542    FORMAT(' 0 = ke gradient + vertical advection                      : ', e20.13) 
     413 9543    FORMAT(' 0 = coriolis term  (true if KE conserving scheme)         : ', e20.13) 
     414 9544    FORMAT(' 0 = vorticity term (true if KE conserving scheme)         : ', e20.13) 
     415 9545    FORMAT(' 0 = surface pressure gradient  ???                        : ', e20.13) 
     416 9546    FORMAT(' 0 < horizontal diffusion                                  : ', e20.13) 
     417 9547    FORMAT(' 0 < vertical diffusion                                    : ', e20.13) 
    436418 9548    FORMAT(' pressure gradient u2 = - 1/rau0 u.dz(rhop)                : ', e20.13, '  u.dz(rhop) =', e20.13) 
    437419         ! 
     
    455437      ! 
    456438      INTEGER  ::   jk   ! loop indices 
    457       REAL(wp), POINTER, DIMENSION(:,:,:)  ::   zwt, zws, ztrdt, ztrds   ! 3D workspace 
    458       !!---------------------------------------------------------------------- 
    459  
    460  
    461       IF( ln_3D_trd_t ) THEN      ! 3D output: treat the vertical diffusion trends (if iso) 
    462          ! 
    463          CALL wrk_alloc( jpi, jpj, jpk, zwt, zws, ztrdt, ztrds ) 
    464          ! 
    465          IF( ln_traldf_iso ) THEN      ! iso-neutral diffusion : re-compute the PURE vertical diffusive trend 
    466             !                                 !  zdf trends using now field (called after the swap) 
    467             zwt(:,:, 1 ) = 0._wp   ;   zws(:,:, 1 ) = 0._wp            ! vertical diffusive fluxes 
    468             zwt(:,:,jpk) = 0._wp   ;   zws(:,:,jpk) = 0._wp 
    469             DO jk = 2, jpk 
    470                zwt(:,:,jk) =   avt(:,:,jk) * ( tsn(:,:,jk-1,jp_tem) - tsn(:,:,jk,jp_tem) ) / fse3w(:,:,jk) * tmask(:,:,jk) 
    471                zws(:,:,jk) = fsavs(:,:,jk) * ( tsn(:,:,jk-1,jp_sal) - tsn(:,:,jk,jp_sal) ) / fse3w(:,:,jk) * tmask(:,:,jk) 
    472             END DO 
    473             ! 
    474             ztrdt(:,:,jpk) = 0._wp   ;   ztrds(:,:,jpk) = 0._wp 
    475             DO jk = 1, jpkm1 
    476                ztrdt(:,:,jk) = ( zwt(:,:,jk) - zwt(:,:,jk+1) ) / fse3t(:,:,jk) 
    477                ztrds(:,:,jk) = ( zws(:,:,jk) - zws(:,:,jk+1) ) / fse3t(:,:,jk) 
    478             END DO 
    479             CALL iom_put( "ttrd_zdfp", ztrdt )        ! PURE vertical diffusion (no isoneutral contribution) 
    480             CALL iom_put( "strd_zdfp", ztrds ) 
    481          ENDIF 
    482          ! 
    483          CALL wrk_dealloc( jpi, jpj, jpk, zwt, zws, ztrdt, ztrds ) 
    484          ! 
    485          RETURN                     ! do nothing else if 3D output with IOM 
    486          ! 
    487       ENDIF 
    488  
     439      !!---------------------------------------------------------------------- 
    489440 
    490441      ! I. Tracers trends 
     
    509460            WRITE (numout,*) 
    510461            WRITE (numout,9400) kt 
    511             WRITE (numout,9401)  tmo(jpicpt_xad) / tvolt, smo(jpicpt_xad) / tvolt 
    512             WRITE (numout,9411)  tmo(jpicpt_yad) / tvolt, smo(jpicpt_yad) / tvolt 
    513             WRITE (numout,9402)  tmo(jpicpt_zad) / tvolt, smo(jpicpt_zad) / tvolt 
    514             WRITE (numout,9403)  tmo(jpicpt_ldf) / tvolt, smo(jpicpt_ldf) / tvolt 
    515             WRITE (numout,9404)  tmo(jpicpt_zdf) / tvolt, smo(jpicpt_zdf) / tvolt 
    516             WRITE (numout,9405)  tmo(jpicpt_npc) / tvolt, smo(jpicpt_npc) / tvolt 
    517             WRITE (numout,9406)  tmo(jpicpt_dmp) / tvolt, smo(jpicpt_dmp) / tvolt 
    518             WRITE (numout,9407)  tmo(jpicpt_qsr) / tvolt 
    519             WRITE (numout,9408)  tmo(jpicpt_nsr) / tvolt, smo(jpicpt_nsr) / tvolt 
     462            WRITE (numout,9401)  tmo(jptra_trd_xad) / tvolt, smo(jptra_trd_xad) / tvolt 
     463            WRITE (numout,9411)  tmo(jptra_trd_yad) / tvolt, smo(jptra_trd_yad) / tvolt 
     464            WRITE (numout,9402)  tmo(jptra_trd_zad) / tvolt, smo(jptra_trd_zad) / tvolt 
     465            WRITE (numout,9403)  tmo(jptra_trd_ldf) / tvolt, smo(jptra_trd_ldf) / tvolt 
     466            WRITE (numout,9404)  tmo(jptra_trd_zdf) / tvolt, smo(jptra_trd_zdf) / tvolt 
     467            WRITE (numout,9405)  tmo(jptra_trd_npc) / tvolt, smo(jptra_trd_npc) / tvolt 
     468            WRITE (numout,9406)  tmo(jptra_trd_dmp) / tvolt, smo(jptra_trd_dmp) / tvolt 
     469            WRITE (numout,9407)  tmo(jptra_trd_qsr) / tvolt 
     470            WRITE (numout,9408)  tmo(jptra_trd_nsr) / tvolt, smo(jptra_trd_nsr) / tvolt 
    520471            WRITE (numout,9409)  
    521             WRITE (numout,9410) (  tmo(jpicpt_xad) + tmo(jpicpt_yad) + tmo(jpicpt_zad) + tmo(jpicpt_ldf) + tmo(jpicpt_zdf)   & 
    522             &                    + tmo(jpicpt_npc) + tmo(jpicpt_dmp) + tmo(jpicpt_qsr) + tmo(jpicpt_nsr) ) / tvolt,   & 
    523             &                   (  smo(jpicpt_xad) + smo(jpicpt_yad) + smo(jpicpt_zad) + smo(jpicpt_ldf) + smo(jpicpt_zdf)   & 
    524             &                    + smo(jpicpt_npc) + smo(jpicpt_dmp)                   + smo(jpicpt_nsr) ) / tvolt 
     472            WRITE (numout,9410) (  tmo(jptra_trd_xad) + tmo(jptra_trd_yad) + tmo(jptra_trd_zad) + tmo(jptra_trd_ldf) + tmo(jptra_trd_zdf)   & 
     473            &                    + tmo(jptra_trd_npc) + tmo(jptra_trd_dmp) + tmo(jptra_trd_qsr) + tmo(jptra_trd_nsr) ) / tvolt,   & 
     474            &                   (  smo(jptra_trd_xad) + smo(jptra_trd_yad) + smo(jptra_trd_zad) + smo(jptra_trd_ldf) + smo(jptra_trd_zdf)   & 
     475            &                    + smo(jptra_trd_npc) + smo(jptra_trd_dmp)                   + smo(jptra_trd_nsr) ) / tvolt 
    525476         ENDIF 
    526477 
     
    544495            WRITE (numout,*) 
    545496            WRITE (numout,9420) kt 
    546             WRITE (numout,9421)   t2(jpicpt_xad) / tvolt, s2(jpicpt_xad) / tvolt 
    547             WRITE (numout,9431)   t2(jpicpt_yad) / tvolt, s2(jpicpt_yad) / tvolt 
    548             WRITE (numout,9422)   t2(jpicpt_zad) / tvolt, s2(jpicpt_zad) / tvolt 
    549             WRITE (numout,9423)   t2(jpicpt_ldf) / tvolt, s2(jpicpt_ldf) / tvolt 
    550             WRITE (numout,9424)   t2(jpicpt_zdf) / tvolt, s2(jpicpt_zdf) / tvolt 
    551             WRITE (numout,9425)   t2(jpicpt_npc) / tvolt, s2(jpicpt_npc) / tvolt 
    552             WRITE (numout,9426)   t2(jpicpt_dmp) / tvolt, s2(jpicpt_dmp) / tvolt 
    553             WRITE (numout,9427)   t2(jpicpt_qsr) / tvolt 
    554             WRITE (numout,9428)   t2(jpicpt_nsr) / tvolt, s2(jpicpt_nsr) / tvolt 
     497            WRITE (numout,9421)   t2(jptra_trd_xad) / tvolt, s2(jptra_trd_xad) / tvolt 
     498            WRITE (numout,9431)   t2(jptra_trd_yad) / tvolt, s2(jptra_trd_yad) / tvolt 
     499            WRITE (numout,9422)   t2(jptra_trd_zad) / tvolt, s2(jptra_trd_zad) / tvolt 
     500            WRITE (numout,9423)   t2(jptra_trd_ldf) / tvolt, s2(jptra_trd_ldf) / tvolt 
     501            WRITE (numout,9424)   t2(jptra_trd_zdf) / tvolt, s2(jptra_trd_zdf) / tvolt 
     502            WRITE (numout,9425)   t2(jptra_trd_npc) / tvolt, s2(jptra_trd_npc) / tvolt 
     503            WRITE (numout,9426)   t2(jptra_trd_dmp) / tvolt, s2(jptra_trd_dmp) / tvolt 
     504            WRITE (numout,9427)   t2(jptra_trd_qsr) / tvolt 
     505            WRITE (numout,9428)   t2(jptra_trd_nsr) / tvolt, s2(jptra_trd_nsr) / tvolt 
    555506            WRITE (numout,9429) 
    556             WRITE (numout,9430) (  t2(jpicpt_xad) + t2(jpicpt_yad) + t2(jpicpt_zad) + t2(jpicpt_ldf) + t2(jpicpt_zdf)   & 
    557             &                    + t2(jpicpt_npc) + t2(jpicpt_dmp) + t2(jpicpt_qsr) + t2(jpicpt_nsr) ) / tvolt,   & 
    558             &                   (  s2(jpicpt_xad) + s2(jpicpt_yad) + s2(jpicpt_zad) + s2(jpicpt_ldf) + s2(jpicpt_zdf)   & 
    559             &                    + s2(jpicpt_npc) + s2(jpicpt_dmp)                  + s2(jpicpt_nsr) ) / tvolt 
     507            WRITE (numout,9430) (  t2(jptra_trd_xad) + t2(jptra_trd_yad) + t2(jptra_trd_zad) + t2(jptra_trd_ldf) + t2(jptra_trd_zdf)   & 
     508            &                    + t2(jptra_trd_npc) + t2(jptra_trd_dmp) + t2(jptra_trd_qsr) + t2(jptra_trd_nsr) ) / tvolt,   & 
     509            &                   (  s2(jptra_trd_xad) + s2(jptra_trd_yad) + s2(jptra_trd_zad) + s2(jptra_trd_ldf) + s2(jptra_trd_zdf)   & 
     510            &                    + s2(jptra_trd_npc) + s2(jptra_trd_dmp)                  + s2(jptra_trd_nsr) ) / tvolt 
    560511         ENDIF 
    561512 
     
    579530            WRITE (numout,*) 
    580531            WRITE (numout,9440) kt 
    581             WRITE (numout,9441) ( tmo(jpicpt_xad)+tmo(jpicpt_yad)+tmo(jpicpt_zad) )/tvolt,   & 
    582             &                   ( smo(jpicpt_xad)+smo(jpicpt_yad)+smo(jpicpt_zad) )/tvolt 
    583             WRITE (numout,9442)   tmo(jpicpt_zl1)/tvolt,  smo(jpicpt_zl1)/tvolt 
    584             WRITE (numout,9443)   tmo(jpicpt_ldf)/tvolt,  smo(jpicpt_ldf)/tvolt 
    585             WRITE (numout,9444)   tmo(jpicpt_zdf)/tvolt,  smo(jpicpt_zdf)/tvolt 
    586             WRITE (numout,9445)   tmo(jpicpt_npc)/tvolt,  smo(jpicpt_npc)/tvolt 
    587             WRITE (numout,9446) ( t2(jpicpt_xad)+t2(jpicpt_yad)+t2(jpicpt_zad) )/tvolt,    & 
    588             &                   ( s2(jpicpt_xad)+s2(jpicpt_yad)+s2(jpicpt_zad) )/tvolt 
    589             WRITE (numout,9447)   t2(jpicpt_ldf)/tvolt,   s2(jpicpt_ldf)/tvolt 
    590             WRITE (numout,9448)   t2(jpicpt_zdf)/tvolt,   s2(jpicpt_zdf)/tvolt 
    591             WRITE (numout,9449)   t2(jpicpt_npc)/tvolt,   s2(jpicpt_npc)/tvolt 
     532            WRITE (numout,9441) ( tmo(jptra_trd_xad)+tmo(jptra_trd_yad)+tmo(jptra_trd_zad) )/tvolt,   & 
     533            &                   ( smo(jptra_trd_xad)+smo(jptra_trd_yad)+smo(jptra_trd_zad) )/tvolt 
     534            WRITE (numout,9442)   tmo(jptra_trd_sad)/tvolt,  smo(jptra_trd_sad)/tvolt 
     535            WRITE (numout,9443)   tmo(jptra_trd_ldf)/tvolt,  smo(jptra_trd_ldf)/tvolt 
     536            WRITE (numout,9444)   tmo(jptra_trd_zdf)/tvolt,  smo(jptra_trd_zdf)/tvolt 
     537            WRITE (numout,9445)   tmo(jptra_trd_npc)/tvolt,  smo(jptra_trd_npc)/tvolt 
     538            WRITE (numout,9446) ( t2(jptra_trd_xad)+t2(jptra_trd_yad)+t2(jptra_trd_zad) )/tvolt,    & 
     539            &                   ( s2(jptra_trd_xad)+s2(jptra_trd_yad)+s2(jptra_trd_zad) )/tvolt 
     540            WRITE (numout,9447)   t2(jptra_trd_ldf)/tvolt,   s2(jptra_trd_ldf)/tvolt 
     541            WRITE (numout,9448)   t2(jptra_trd_zdf)/tvolt,   s2(jptra_trd_zdf)/tvolt 
     542            WRITE (numout,9449)   t2(jptra_trd_npc)/tvolt,   s2(jptra_trd_npc)/tvolt 
    592543         ENDIF 
    593544 
     
    609560   END SUBROUTINE trd_twr 
    610561 
    611 #   else 
    612    !!---------------------------------------------------------------------- 
    613    !!   Default case :                                         Empty module 
    614    !!---------------------------------------------------------------------- 
    615    INTERFACE trd_icp 
    616       MODULE PROCEDURE trd_2d, trd_3d 
    617    END INTERFACE 
    618  
    619 CONTAINS 
    620    SUBROUTINE trd_2d( ptrd2dx, ptrd2dy, ktrd , ctype )       ! Empty routine 
    621       REAL, DIMENSION(:,:) ::   ptrd2dx, ptrd2dy 
    622       INTEGER                     , INTENT(in   ) ::   ktrd         ! tracer trend index 
    623       CHARACTER(len=3)            , INTENT(in   ) ::   ctype        ! momentum ('DYN') or tracers ('TRA') trends 
    624       WRITE(*,*) 'trd_2d: You should not have seen this print! error ?', & 
    625           &       ptrd2dx(1,1), ptrd2dy(1,1), ktrd, ctype 
    626    END SUBROUTINE trd_2d 
    627    SUBROUTINE trd_3d( ptrd3dx, ptrd3dy, ktrd , ctype )       ! Empty routine 
    628       REAL, DIMENSION(:,:,:) ::   ptrd3dx, ptrd3dy 
    629       INTEGER                     , INTENT(in   ) ::   ktrd         ! tracer trend index 
    630       CHARACTER(len=3)            , INTENT(in   ) ::   ctype        ! momentum ('DYN') or tracers ('TRA') trends 
    631       WRITE(*,*) 'trd_3d: You should not have seen this print! error ?', & 
    632           &       ptrd3dx(1,1,1), ptrd3dy(1,1,1), ktrd, ctype 
    633    END SUBROUTINE trd_3d 
    634    SUBROUTINE trd_icp_init               ! Empty routine 
    635    END SUBROUTINE trd_icp_init 
    636    SUBROUTINE trd_dwr( kt )          ! Empty routine 
    637       WRITE(*,*) 'trd_dwr: You should not have seen this print! error ?', kt 
    638    END SUBROUTINE trd_dwr 
    639    SUBROUTINE trd_twr( kt )          ! Empty routine 
    640       WRITE(*,*) 'trd_twr: You should not have seen this print! error ?', kt 
    641    END SUBROUTINE trd_twr 
    642 #endif 
    643  
    644562   !!====================================================================== 
    645563END MODULE trdicp 
Note: See TracChangeset for help on using the changeset viewer.