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

Changeset 2034


Ignore:
Timestamp:
2010-07-29T17:05:35+02:00 (14 years ago)
Author:
cetlod
Message:

cosmetic changes

Location:
branches/DEV_r2006_merge_TRA_TRC/NEMO
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traadv.F90

    r2024 r2034  
    4646#  include "vectopt_loop_substitute.h90" 
    4747   !!---------------------------------------------------------------------- 
    48    !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
     48   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    4949   !! $Id$  
    5050   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    6666      REAL(wp), DIMENSION(jpi,jpj,jpk)   ::  zun, zvn, zwn   ! effective transport 
    6767      !!---------------------------------------------------------------------- 
    68  
    69       !                                                   ! effective transport 
     68      !                                               !==  effective transport  ==! 
    7069      DO jk = 1, jpkm1 
    71          !                                                ! eulerian transport only 
    72          zun(:,:,jk) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) 
     70         zun(:,:,jk) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk)                  ! eulerian transport only 
    7371         zvn(:,:,jk) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 
    7472         zwn(:,:,jk) = e1t(:,:) * e2t(:,:)      * wn(:,:,jk) 
    75          ! 
    7673      END DO 
    77       zwn(:,:,jpk) = 0.e0                                 ! no transport trough the bottom 
    78  
    79       !                                                   ! add the eiv transport (if necessary) 
    80       IF( lk_traldf_eiv )   CALL tra_adv_eiv( kt, zun, zvn, zwn, 'TRA' ) 
     74      zwn(:,:,jpk) = 0.e0                                                     ! no transport trough the bottom 
     75      ! 
     76      IF( lk_traldf_eiv )   CALL tra_adv_eiv( kt, zun, zvn, zwn, 'TRA' )      ! add the eiv transport (if necessary) 
     77      ! 
     78      CALL iom_put( "uoce_eff", zun )                                         ! output effective transport       
     79      CALL iom_put( "voce_eff", zvn ) 
     80      CALL iom_put( "woce_eff", zwn ) 
    8181 
    8282 
    83       SELECT CASE ( nadv )                           ! compute advection trend and add it to general trend 
    84       CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt , 'TRA', zun, zvn, zwn, & 
    85                         &                    tsb, tsn  , tsa, jpts      )    !  2nd order centered scheme 
    86       CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt , 'TRA', zun, zvn, zwn, & 
    87                         &                    tsb, tsn  , tsa, jpts      )    !  TVD scheme 
    88       CASE ( 3 )   ;    CALL tra_adv_muscl ( kt , 'TRA', zun, zvn, zwn, & 
    89                         &                    tsb, tsa  , jpts           )    !  MUSCL scheme 
    90       CASE ( 4 )   ;    CALL tra_adv_muscl2( kt , 'TRA', zun, zvn, zwn, & 
    91                         &                    tsb, tsn  , tsa, jpts      )    !  MUSCL2 scheme 
    92       CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt , 'TRA', zun, zvn, zwn, & 
    93                         &                    tsb, tsn  , tsa, jpts      )    !  UBS scheme 
    94       CASE ( 6 )   ;    CALL tra_adv_qck   ( kt , 'TRA', zun, zvn, zwn, & 
    95                         &                    tsb, tsn  , tsa, jpts      )    !  QUICKEST scheme 
     83      SELECT CASE ( nadv )                            !==  compute advection trend and add it to general trend  ==! 
     84      CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  2nd order centered 
     85      CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  TVD  
     86      CASE ( 3 )   ;    CALL tra_adv_muscl ( kt, 'TRA', zun, zvn, zwn, tsb,      tsa, jpts )   !  MUSCL  
     87      CASE ( 4 )   ;    CALL tra_adv_muscl2( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  MUSCL2  
     88      CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  UBS  
     89      CASE ( 6 )   ;    CALL tra_adv_qck   ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  QUICKEST  
    9690      ! 
    97       CASE (-1 )                                   ! esopa: test all possibility with control pr 
    98                         CALL tra_adv_cen2  ( kt , 'TRA', zun, zvn, zwn, & 
    99                         &                    tsb, tsn  , tsa, jpts      )           
    100                         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv0 - Ta: ', mask1=tmask,               & 
    101          &                            tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    102                         CALL tra_adv_tvd   ( kt , 'TRA', zun, zvn, zwn, & 
    103                         &                    tsb, tsn  , tsa, jpts      )           
    104                         CALL tra_adv_tvd   ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )           
    105                         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv1 - Ta: ', mask1=tmask,               & 
    106          &                            tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    107                         CALL tra_adv_muscl ( kt , 'TRA', zun, zvn, zwn, & 
    108                         &                    tsb, tsa  , jpts           )           
    109                         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv3 - Ta: ', mask1=tmask,               & 
    110          &                            tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    111                         CALL tra_adv_muscl2( kt , 'TRA', zun, zvn, zwn, & 
    112                         &                    tsb, tsn  , tsa, jpts      )           
    113                         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv4 - Ta: ', mask1=tmask,               & 
    114          &                            tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    115                         CALL tra_adv_ubs   ( kt , 'TRA', zun, zvn, zwn, & 
    116                         &                    tsb, tsn  , tsa, jpts      )           
    117                         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv5 - Ta: ', mask1=tmask,               & 
    118          &                            tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    119                         CALL tra_adv_qck   ( kt , 'TRA', zun, zvn, zwn, & 
    120                         &                    tsb, tsn  , tsa, jpts      )           
    121                         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv6 - Ta: ', mask1=tmask,               & 
    122          &                            tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     91      CASE (-1 )                                      !==  esopa: test all possibility with control print  ==! 
     92         CALL tra_adv_cen2  ( kt , 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     93         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv0 - Ta: ', mask1=tmask,               & 
     94            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     95         CALL tra_adv_tvd   ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     96         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv1 - Ta: ', mask1=tmask,               & 
     97            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     98         CALL tra_adv_muscl ( kt, 'TRA', zun, zvn, zwn, tsb,      tsa, jpts )           
     99         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv3 - Ta: ', mask1=tmask,               & 
     100            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     101         CALL tra_adv_muscl2( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     102         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv4 - Ta: ', mask1=tmask,               & 
     103            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     104         CALL tra_adv_ubs   ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     105         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv5 - Ta: ', mask1=tmask,               & 
     106            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     107         CALL tra_adv_qck   ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts )           
     108         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv6 - Ta: ', mask1=tmask,               & 
     109            &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    123110         ! 
    124111      END SELECT 
    125         
    126       CALL iom_put( "uoce_eff", zun )   ! effective i-current       
    127       CALL iom_put( "voce_eff", zvn )   ! effective j-current 
    128       CALL iom_put( "woce_eff", zwn )   ! effective vert. current 
    129112 
    130113      !                                              ! print mean trends (used for debugging) 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traadv_cen2.F90

    r2024 r2034  
    4747#  include "vectopt_loop_substitute.h90" 
    4848   !!---------------------------------------------------------------------- 
    49    !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
     49   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    5050   !! $Id$ 
    5151   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    5454CONTAINS 
    5555 
    56    SUBROUTINE tra_adv_cen2( kt   , cdtype, pun  , pvn, pwn, & 
    57       &                     ptrab, ptran , ptraa, kjpt   )  
     56   SUBROUTINE tra_adv_cen2( kt, cdtype, pun, pvn, pwn, & 
     57      &                                 ptb, ptn, pta, kjpt   )  
    5858      !!---------------------------------------------------------------------- 
    5959      !!                  ***  ROUTINE tra_adv_cen2  *** 
     
    7171      !!         Part I : horizontal advection 
    7272      !!       * centered flux: 
    73       !!               zcenu = e2u*e3u  un  mi(ptran) 
    74       !!               zcenv = e1v*e3v  vn  mj(ptran) 
     73      !!               zcenu = e2u*e3u  un  mi(ptn) 
     74      !!               zcenv = e1v*e3v  vn  mj(ptn) 
    7575      !!       * upstream flux: 
    76       !!               zupsu = e2u*e3u  un  (ptrab(i) or ptrab(i-1) ) [un>0 or <0] 
    77       !!               zupsv = e1v*e3v  vn  (ptrab(j) or ptrab(j-1) ) [vn>0 or <0] 
     76      !!               zupsu = e2u*e3u  un  (ptb(i) or ptb(i-1) ) [un>0 or <0] 
     77      !!               zupsv = e1v*e3v  vn  (ptb(j) or ptb(j-1) ) [vn>0 or <0] 
    7878      !!       * mixed upstream / centered horizontal advection scheme 
    7979      !!               zcofi = max(zind(i+1), zind(i)) 
     
    8484      !!               ztra = 1/(e1t*e2t*e3t) { di-1[zwx] + dj-1[zwy] } 
    8585      !!       * Add this trend now to the general trend of tracer (ta,sa): 
    86       !!               ptraa = ptraa + ztra 
     86      !!               pta = pta + ztra 
    8787      !!       * trend diagnostic ('key_trdtra' defined): the trend is 
    8888      !!      saved for diagnostics. The trends saved is expressed as 
    8989      !!      Uh.gradh(T), i.e. 
    90       !!                     save trend = ztra + ptran divn 
     90      !!                     save trend = ztra + ptn divn 
    9191      !! 
    9292      !!         Part II : vertical advection 
     
    9797      !!            zwz = zcofk * zupst + (1-zcofk) * zcent 
    9898      !!      with 
    99       !!        zupsv = upstream flux = wn * (ptrab(k) or ptrab(k-1) ) [wn>0 or <0] 
     99      !!        zupsv = upstream flux = wn * (ptb(k) or ptb(k-1) ) [wn>0 or <0] 
    100100      !!        zcenu = centered flux = wn * mk(tn) 
    101101      !!         The surface boundary condition is : 
    102102      !!      variable volume (lk_vvl = T) : zero advective flux 
    103       !!      lin. free-surf  (lk_vvl = F) : wn(:,:,1) * ptran(:,:,1) 
     103      !!      lin. free-surf  (lk_vvl = F) : wn(:,:,1) * ptn(:,:,1) 
    104104      !!         Add this trend now to the general trend of tracer (ta,sa): 
    105       !!             ptraa = ptraa + ztra 
     105      !!             pta = pta + ztra 
    106106      !!         Trend diagnostic ('key_trdtra' defined): the trend is 
    107107      !!      saved for diagnostics. The trends saved is expressed as : 
    108       !!             save trend =  w.gradz(T) = ztra - ptran divn. 
    109       !! 
    110       !! ** Action :  - update ptraa  with the now advective tracer trends 
     108      !!             save trend =  w.gradz(T) = ztra - ptn divn. 
     109      !! 
     110      !! ** Action :  - update pta  with the now advective tracer trends 
    111111      !!              - save trends if needed 
    112112      !!---------------------------------------------------------------------- 
    113       !!* Module used 
    114113      USE oce         , zwx => ua   ! use ua as workspace 
    115114      USE oce         , zwy => va   ! use va as workspace 
    116       !!* Arguments 
     115      !! 
    117116      INTEGER         , INTENT(in   )                               ::   kt              ! ocean time-step index 
    118117      CHARACTER(len=3), INTENT(in   )                               ::   cdtype          ! =TRA or TRC (tracer indicator) 
    119118      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk)       ::   pun, pvn, pwn   ! 3 ocean velocity components 
    120119      INTEGER         , INTENT(in   )                               ::   kjpt            ! number of tracers 
    121       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptrab, ptran        ! before and now tracer fields 
    122       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptraa           ! tracer trend  
    123       !!* Local declarations 
     120      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptb, ptn        ! before and now tracer fields 
     121      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   pta           ! tracer trend  
     122      !! 
    124123      INTEGER  ::   ji, jj, jk, jn                   ! dummy loop indices 
    125124      REAL(wp) ::   zbtr, ztra                       ! temporary scalars 
     
    196195                  zfp_vj = pvn(ji,jj,jk) + ABS( pvn(ji,jj,jk) ) 
    197196                  zfm_vj = pvn(ji,jj,jk) - ABS( pvn(ji,jj,jk) ) 
    198                   zupsut = zfp_ui * ptrab(ji,jj,jk,jn) + zfm_ui * ptrab(ji+1,jj  ,jk,jn) 
    199                   zupsvt = zfp_vj * ptrab(ji,jj,jk,jn) + zfm_vj * ptrab(ji  ,jj+1,jk,jn) 
     197                  zupsut = zfp_ui * ptb(ji,jj,jk,jn) + zfm_ui * ptb(ji+1,jj  ,jk,jn) 
     198                  zupsvt = zfp_vj * ptb(ji,jj,jk,jn) + zfm_vj * ptb(ji  ,jj+1,jk,jn) 
    200199                  ! centered scheme 
    201                   zcenut = pun(ji,jj,jk) * ( ptran(ji,jj,jk,jn) + ptran(ji+1,jj  ,jk,jn) ) 
    202                   zcenvt = pvn(ji,jj,jk) * ( ptran(ji,jj,jk,jn) + ptran(ji  ,jj+1,jk,jn) ) 
     200                  zcenut = pun(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji+1,jj  ,jk,jn) ) 
     201                  zcenvt = pvn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji  ,jj+1,jk,jn) ) 
    203202                  ! mixed centered / upstream scheme 
    204203                  zwx(ji,jj,jk) = 0.5 * ( zcofi * zupsut + (1.-zcofi) * zcenut ) 
     
    215214         !                                                     ! Surface value :  
    216215         IF( lk_vvl ) THEN   ;   zwz(:,:, 1 ) = 0.e0                         ! volume variable 
    217          ELSE                ;   zwz(:,:, 1 ) = pwn(:,:,1) * ptran(:,:,1,jn)   ! linear free surface  
     216         ELSE                ;   zwz(:,:, 1 ) = pwn(:,:,1) * ptn(:,:,1,jn)   ! linear free surface  
    218217         ENDIF 
    219218         ! 
     
    226225                  zfp_w = pwn(ji,jj,jk) + ABS( pwn(ji,jj,jk) ) 
    227226                  zfm_w = pwn(ji,jj,jk) - ABS( pwn(ji,jj,jk) ) 
    228                   zupst = zfp_w * ptrab(ji,jj,jk,jn) + zfm_w * ptrab(ji,jj,jk-1,jn) 
     227                  zupst = zfp_w * ptb(ji,jj,jk,jn) + zfm_w * ptb(ji,jj,jk-1,jn) 
    229228                  ! centered scheme 
    230                   zcent = pwn(ji,jj,jk) * ( ptran(ji,jj,jk,jn) + ptran(ji,jj,jk-1,jn) ) 
     229                  zcent = pwn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji,jj,jk-1,jn) ) 
    231230                  ! mixed centered / upstream scheme 
    232231                  zwz(ji,jj,jk) = 0.5 * ( zcofk * zupst + (1.-zcofk) * zcent ) 
     
    246245                  &                + zwz(ji,jj,jk) - zwz(ji  ,jj  ,jk+1)  ) 
    247246                  ! advective trends added to the general tracer trends 
    248                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     247                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    249248               END DO 
    250249            END DO 
     
    253252         !                                 ! trend diagnostics (contribution of upstream fluxes) 
    254253         IF( l_trd ) THEN 
    255             CALL trd_tra( kt, cdtype, jn, jptra_trd_xad, zwx, pun, ptran(:,:,:,jn) ) 
    256             CALL trd_tra( kt, cdtype, jn, jptra_trd_yad, zwy, pvn, ptran(:,:,:,jn) ) 
    257             CALL trd_tra( kt, cdtype, jn, jptra_trd_zad, zwz, pwn, ptran(:,:,:,jn) ) 
     254            CALL trd_tra( kt, cdtype, jn, jptra_trd_xad, zwx, pun, ptn(:,:,:,jn) ) 
     255            CALL trd_tra( kt, cdtype, jn, jptra_trd_yad, zwy, pvn, ptn(:,:,:,jn) ) 
     256            CALL trd_tra( kt, cdtype, jn, jptra_trd_zad, zwz, pwn, ptn(:,:,:,jn) ) 
    258257         END IF 
    259258         !                                 ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traadv_muscl.F90

    r2024 r2034  
    3737#  include "vectopt_loop_substitute.h90" 
    3838   !!---------------------------------------------------------------------- 
    39    !!   OPA 9.0 , LOCEAN-IPSL (2006)  
     39   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    4040   !! $Id$  
    4141   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    4444CONTAINS 
    4545 
    46    SUBROUTINE tra_adv_muscl( kt   , cdtype, pun, pvn, pwn, & 
    47       &                      ptrab, ptraa , kjpt   ) 
     46   SUBROUTINE tra_adv_muscl( kt, cdtype, pun, pvn, pwn, & 
     47      &                                       ptb, pta, kjpt   ) 
    4848      !!---------------------------------------------------------------------- 
    4949      !!                    ***  ROUTINE tra_adv_muscl  *** 
     
    6161      !!              IPSL, Sept. 2000 (http://www.lodyc.jussieu.fr/opa) 
    6262      !!---------------------------------------------------------------------- 
    63       !!* Module used 
    6463      USE oce         , zwx => ua   ! use ua as workspace 
    6564      USE oce         , zwy => va   ! use va as workspace 
    66       !!* Arguments 
     65      !! 
    6766      INTEGER         , INTENT(in   )                               ::   kt              ! ocean time-step index 
    6867      CHARACTER(len=3), INTENT(in   )                               ::   cdtype          ! =TRA or TRC (tracer indicator) 
    6968      INTEGER         , INTENT(in   )                               ::   kjpt            ! number of tracers 
    7069      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk)       ::   pun, pvn, pwn   ! 3 ocean velocity components 
    71       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptrab           ! before and now tracer fields 
    72       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptraa           ! tracer trend  
    73       !!* Local declarations 
     70      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptb           ! before and now tracer fields 
     71      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   pta           ! tracer trend  
     72      !! 
    7473      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    7574      REAL(wp) ::   zu, z0u, zzwx 
     
    104103            DO jj = 1, jpjm1       
    105104               DO ji = 1, fs_jpim1   ! vector opt. 
    106                   zwx(ji,jj,jk) = umask(ji,jj,jk) * ( ptrab(ji+1,jj,jk,jn) - ptrab(ji,jj,jk,jn) ) 
    107                   zwy(ji,jj,jk) = vmask(ji,jj,jk) * ( ptrab(ji,jj+1,jk,jn) - ptrab(ji,jj,jk,jn) ) 
     105                  zwx(ji,jj,jk) = umask(ji,jj,jk) * ( ptb(ji+1,jj,jk,jn) - ptb(ji,jj,jk,jn) ) 
     106                  zwy(ji,jj,jk) = vmask(ji,jj,jk) * ( ptb(ji,jj+1,jk,jn) - ptb(ji,jj,jk,jn) ) 
    108107               END DO 
    109108           END DO 
     
    147146                  zalpha = 0.5 - z0u 
    148147                  zu  = z0u - 0.5 * pun(ji,jj,jk) * zdt / ( e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) ) 
    149                   zzwx = ptrab(ji+1,jj,jk,jn) + zu * zslpx(ji+1,jj,jk) 
    150                   zzwy = ptrab(ji  ,jj,jk,jn) + zu * zslpx(ji  ,jj,jk) 
     148                  zzwx = ptb(ji+1,jj,jk,jn) + zu * zslpx(ji+1,jj,jk) 
     149                  zzwy = ptb(ji  ,jj,jk,jn) + zu * zslpx(ji  ,jj,jk) 
    151150                  zwx(ji,jj,jk) = pun(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    152151                  ! 
     
    154153                  zalpha = 0.5 - z0v 
    155154                  zv  = z0v - 0.5 * pvn(ji,jj,jk) * zdt / ( e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    156                   zzwx = ptrab(ji,jj+1,jk,jn) + zv * zslpy(ji,jj+1,jk) 
    157                   zzwy = ptrab(ji,jj  ,jk,jn) + zv * zslpy(ji,jj  ,jk)  
     155                  zzwx = ptb(ji,jj+1,jk,jn) + zv * zslpy(ji,jj+1,jk) 
     156                  zzwy = ptb(ji,jj  ,jk,jn) + zv * zslpy(ji,jj  ,jk)  
    158157                  zwy(ji,jj,jk) = pvn(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    159158               END DO 
     
    172171                  &               + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk  ) ) 
    173172                  ! add it to the general tracer trends 
    174                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     173                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    175174               END DO 
    176175           END DO 
     
    178177         !                                 ! trend diagnostics (contribution of upstream fluxes) 
    179178         IF( l_trd )  THEN 
    180             CALL trd_tra( kt, cdtype, jn, jptra_trd_xad, zwx, pun, ptrab(:,:,:,jn) ) 
    181             CALL trd_tra( kt, cdtype, jn, jptra_trd_yad, zwy, pvn, ptrab(:,:,:,jn) ) 
     179            CALL trd_tra( kt, cdtype, jn, jpt_trd_xad, zwx, pun, ptb(:,:,:,jn) ) 
     180            CALL trd_tra( kt, cdtype, jn, jpt_trd_yad, zwy, pvn, ptb(:,:,:,jn) ) 
    182181         END IF 
    183182         !                                 ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
     
    201200         zwx (:,:, 1 ) = 0.e0    ;    zwx (:,:,jpk) = 0.e0    ! surface & bottom boundary conditions 
    202201         DO jk = 2, jpkm1                                     ! interior values 
    203             zwx(:,:,jk) = tmask(:,:,jk) * ( ptrab(:,:,jk-1,jn) - ptrab(:,:,jk,jn) ) 
     202            zwx(:,:,jk) = tmask(:,:,jk) * ( ptb(:,:,jk-1,jn) - ptb(:,:,jk,jn) ) 
    204203         END DO 
    205204 
     
    227226         !                                                    ! surface values  (bottom already set to zero) 
    228227         IF( lk_vvl ) THEN    ;   zwx(:,:, 1 ) = 0.e0                      !  variable volume 
    229          ELSE                 ;   zwx(:,:, 1 ) = pwn(:,:,1) * ptrab(:,:,1,jn)   ! linear free surface 
     228         ELSE                 ;   zwx(:,:, 1 ) = pwn(:,:,1) * ptb(:,:,1,jn)   ! linear free surface 
    230229         ENDIF  
    231230         ! 
     
    238237                  zalpha = 0.5 + z0w 
    239238                  zw  = z0w - 0.5 * pwn(ji,jj,jk+1) * zdt * zbtr  
    240                   zzwx = ptrab(ji,jj,jk+1,jn) + zw * zslpx(ji,jj,jk+1) 
    241                   zzwy = ptrab(ji,jj,jk  ,jn) + zw * zslpx(ji,jj,jk  ) 
     239                  zzwx = ptb(ji,jj,jk+1,jn) + zw * zslpx(ji,jj,jk+1) 
     240                  zzwy = ptb(ji,jj,jk  ,jn) + zw * zslpx(ji,jj,jk  ) 
    242241                  zwx(ji,jj,jk+1) = pwn(ji,jj,jk+1) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    243242               END DO  
     
    253252                  ztra = - zbtr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) ) 
    254253                  ! add it to the general tracer trends 
    255                   ptraa(ji,jj,jk,jn) =  ptraa(ji,jj,jk,jn) + ztra 
     254                  pta(ji,jj,jk,jn) =  pta(ji,jj,jk,jn) + ztra 
    256255               END DO 
    257256            END DO 
    258257         END DO 
    259258         !                                 ! Save the vertical advective trends for diagnostic 
    260          IF( l_trd ) CALL trd_tra( kt, cdtype, jn, jptra_trd_zad, zwx, pwn, ptrab(:,:,:,jn) ) 
     259         IF( l_trd ) CALL trd_tra( kt, cdtype, jn, jpt_trd_zad, zwx, pwn, ptb(:,:,:,jn) ) 
    261260         ! 
    262261      ENDDO 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traadv_muscl2.F90

    r2024 r2034  
    3636#  include "vectopt_loop_substitute.h90" 
    3737   !!---------------------------------------------------------------------- 
    38    !!   OPA 9.0 , LOCEAN-IPSL (2006)  
     38   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    3939   !! $Id$  
    4040   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    4343CONTAINS 
    4444 
    45    SUBROUTINE tra_adv_muscl2( kt   , cdtype, pun  , pvn, pwn, & 
    46       &                       ptrab, ptran , ptraa, kjpt   ) 
     45   SUBROUTINE tra_adv_muscl2( kt, cdtype, pun, pvn, pwn, & 
     46      &                                   ptb, ptn, pta, kjpt   ) 
    4747      !!---------------------------------------------------------------------- 
    4848      !!                   ***  ROUTINE tra_adv_muscl2  *** 
     
    5454      !! ** Method  : MUSCL scheme plus centered scheme at ocean boundaries 
    5555      !! 
    56       !! ** Action  : - update (ptraa) with the now advective tracer trends 
     56      !! ** Action  : - update (pta) with the now advective tracer trends 
    5757      !!              - save trends  
    5858      !! 
     
    6868      INTEGER         , INTENT(in   )                               ::   kjpt            ! number of tracers 
    6969      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk)       ::   pun, pvn, pwn   ! 3 ocean velocity components 
    70       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptrab, ptran        ! before and now tracer fields 
    71       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptraa           ! tracer trend  
     70      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptb, ptn        ! before and now tracer fields 
     71      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   pta           ! tracer trend  
    7272      !!* Local declarations 
    7373      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
     
    103103            DO jj = 1, jpjm1       
    104104               DO ji = 1, fs_jpim1   ! vector opt. 
    105                   zwx(ji,jj,jk) = umask(ji,jj,jk) * ( ptrab(ji+1,jj,jk,jn) - ptrab(ji,jj,jk,jn) ) 
    106                   zwy(ji,jj,jk) = vmask(ji,jj,jk) * ( ptrab(ji,jj+1,jk,jn) - ptrab(ji,jj,jk,jn) ) 
     105                  zwx(ji,jj,jk) = umask(ji,jj,jk) * ( ptb(ji+1,jj,jk,jn) - ptb(ji,jj,jk,jn) ) 
     106                  zwy(ji,jj,jk) = vmask(ji,jj,jk) * ( ptb(ji,jj+1,jk,jn) - ptb(ji,jj,jk,jn) ) 
    107107               END DO 
    108108           END DO 
     
    146146                  zalpha = 0.5 - z0u 
    147147                  zu  = z0u - 0.5 * pun(ji,jj,jk) * zdt / ( e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) ) 
    148                   zzwx = ptrab(ji+1,jj,jk,jn) + zu * zslpx(ji+1,jj,jk) 
    149                   zzwy = ptrab(ji  ,jj,jk,jn) + zu * zslpx(ji  ,jj,jk) 
     148                  zzwx = ptb(ji+1,jj,jk,jn) + zu * zslpx(ji+1,jj,jk) 
     149                  zzwy = ptb(ji  ,jj,jk,jn) + zu * zslpx(ji  ,jj,jk) 
    150150                  zwx(ji,jj,jk) = pun(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    151151                  ! 
     
    153153                  zalpha = 0.5 - z0v 
    154154                  zv  = z0v - 0.5 * pvn(ji,jj,jk) * zdt / ( e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) ) 
    155                   zzwx = ptrab(ji,jj+1,jk,jn) + zv * zslpy(ji,jj+1,jk) 
    156                   zzwy = ptrab(ji,jj  ,jk,jn) + zv * zslpy(ji,jj  ,jk) 
     155                  zzwx = ptb(ji,jj+1,jk,jn) + zv * zslpy(ji,jj+1,jk) 
     156                  zzwy = ptb(ji,jj  ,jk,jn) + zv * zslpy(ji,jj  ,jk) 
    157157                  zwy(ji,jj,jk) = pvn(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    158158               END DO 
     
    166166                  IF( umask(ji,jj,jk) == 0. ) THEN 
    167167                     IF( pun(ji+1,jj,jk) > 0. .AND. ji /= jpi ) THEN 
    168                         zwx(ji+1,jj,jk) = 0.5 * pun(ji+1,jj,jk) * ( ptran(ji+1,jj,jk,jn) + ptran(ji+2,jj,jk,jn) ) 
     168                        zwx(ji+1,jj,jk) = 0.5 * pun(ji+1,jj,jk) * ( ptn(ji+1,jj,jk,jn) + ptn(ji+2,jj,jk,jn) ) 
    169169                     ENDIF 
    170170                     IF( pun(ji-1,jj,jk) < 0. ) THEN 
    171                         zwx(ji-1,jj,jk) = 0.5 * pun(ji-1,jj,jk) * ( ptran(ji-1,jj,jk,jn) + ptran(ji,jj,jk,jn) )  
     171                        zwx(ji-1,jj,jk) = 0.5 * pun(ji-1,jj,jk) * ( ptn(ji-1,jj,jk,jn) + ptn(ji,jj,jk,jn) )  
    172172                     ENDIF 
    173173                  ENDIF 
    174174                  IF( vmask(ji,jj,jk) == 0. ) THEN 
    175175                     IF( pvn(ji,jj+1,jk) > 0. .AND. jj /= jpj ) THEN 
    176                         zwy(ji,jj+1,jk) = 0.5 * pvn(ji,jj+1,jk) * ( ptran(ji,jj+1,jk,jn) + ptran(ji,jj+2,jk,jn) ) 
     176                        zwy(ji,jj+1,jk) = 0.5 * pvn(ji,jj+1,jk) * ( ptn(ji,jj+1,jk,jn) + ptn(ji,jj+2,jk,jn) ) 
    177177                     ENDIF 
    178178                     IF( pvn(ji,jj-1,jk) < 0. ) THEN 
    179                         zwy(ji,jj-1,jk) = 0.5 * pvn(ji,jj-1,jk) * ( ptran(ji,jj-1,jk,jn) + ptran(ji,jj,jk,jn) )  
     179                        zwy(ji,jj-1,jk) = 0.5 * pvn(ji,jj-1,jk) * ( ptn(ji,jj-1,jk,jn) + ptn(ji,jj,jk,jn) )  
    180180                     ENDIF 
    181181                  ENDIF 
     
    195195                  &               + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk  ) ) 
    196196                  ! added to the general tracer trends 
    197                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     197                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    198198               END DO 
    199199           END DO 
     
    201201         !                                 ! trend diagnostics (contribution of upstream fluxes) 
    202202         IF( l_trd ) THEN 
    203             CALL trd_tra( kt, cdtype, jn, jptra_trd_xad, zwx, pun, ptrab(:,:,:,jn) ) 
    204             CALL trd_tra( kt, cdtype, jn, jptra_trd_yad, zwy, pvn, ptrab(:,:,:,jn) ) 
     203            CALL trd_tra( kt, cdtype, jn, jpt_trd_xad, zwx, pun, ptb(:,:,:,jn) ) 
     204            CALL trd_tra( kt, cdtype, jn, jpt_trd_yad, zwy, pvn, ptb(:,:,:,jn) ) 
    205205         END IF 
    206206 
     
    225225         zwx (:,:, 1 ) = 0.e0    ;    zwx (:,:,jpk) = 0.e0    ! surface & bottom boundary conditions 
    226226         DO jk = 2, jpkm1                                     ! interior values 
    227             zwx(:,:,jk) = tmask(:,:,jk) * ( ptrab(:,:,jk-1,jn) - ptrab(:,:,jk,jn) ) 
     227            zwx(:,:,jk) = tmask(:,:,jk) * ( ptb(:,:,jk-1,jn) - ptb(:,:,jk,jn) ) 
    228228         END DO 
    229229 
     
    251251         !                                                    ! surface values  (bottom already set to zero) 
    252252         IF( lk_vvl ) THEN    ;   zwx(:,:, 1 ) = 0.e0                      !  variable volume 
    253          ELSE                 ;   zwx(:,:, 1 ) = pwn(:,:,1) * ptrab(:,:,1,jn)   ! linear free surface 
     253         ELSE                 ;   zwx(:,:, 1 ) = pwn(:,:,1) * ptb(:,:,1,jn)   ! linear free surface 
    254254         ENDIF 
    255255         ! 
     
    262262                  zalpha = 0.5 + z0w 
    263263                  zw  = z0w - 0.5 * pwn(ji,jj,jk+1) * zdt * zbtr 
    264                   zzwx = ptrab(ji,jj,jk+1,jn) + zw * zslpx(ji,jj,jk+1) 
    265                   zzwy = ptrab(ji,jj,jk  ,jn) + zw * zslpx(ji,jj,jk  ) 
     264                  zzwx = ptb(ji,jj,jk+1,jn) + zw * zslpx(ji,jj,jk+1) 
     265                  zzwy = ptb(ji,jj,jk  ,jn) + zw * zslpx(ji,jj,jk  ) 
    266266                  zwx(ji,jj,jk+1) = pwn(ji,jj,jk+1) * ( zalpha * zzwx + (1.-zalpha) * zzwy ) 
    267267               END DO 
     
    274274                  IF( tmask(ji,jj,jk+1) == 0. ) THEN 
    275275                     IF( pwn(ji,jj,jk) > 0. ) THEN 
    276                         zwx(ji,jj,jk) = 0.5 * pwn(ji,jj,jk) * ( ptran(ji,jj,jk-1,jn) + ptran(ji,jj,jk,jn) )  
     276                        zwx(ji,jj,jk) = 0.5 * pwn(ji,jj,jk) * ( ptn(ji,jj,jk-1,jn) + ptn(ji,jj,jk,jn) )  
    277277                     ENDIF 
    278278                  ENDIF 
     
    289289                  ztra = - zbtr * ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) ) 
    290290                  ! added to the general tracer trends 
    291                   ptraa(ji,jj,jk,jn) =  ptraa(ji,jj,jk,jn) + ztra 
     291                  pta(ji,jj,jk,jn) =  pta(ji,jj,jk,jn) + ztra 
    292292               END DO 
    293293            END DO 
     
    297297         ! ------------------------------------------------- 
    298298         !                                 ! trend diagnostics (contribution of upstream fluxes) 
    299          IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_trd_zad, zwx, pwn, ptrab(:,:,:,jn) ) 
     299         IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jpt_trd_zad, zwx, pwn, ptb(:,:,:,jn) ) 
    300300         ! 
    301301      ENDDO 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traadv_qck.F90

    r2024 r2034  
    3131   PUBLIC   tra_adv_qck   ! routine called by step.F90 
    3232 
    33    REAL(wp)  ::   r1_6 = 1./ 6. 
     33   REAL(wp)  :: r1_6 = 1./ 6. 
    3434   LOGICAL   :: l_trd    ! flag to compute trends 
    3535 
     
    3838#  include "vectopt_loop_substitute.h90" 
    3939   !!---------------------------------------------------------------------- 
    40    !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
    41    !! $Id$ 
     40   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
     41   !! $Id: traadv_qck.F90 2024 2010-07-29 10:57:35Z cetlod $ 
    4242   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4343   !!---------------------------------------------------------------------- 
     
    4545CONTAINS 
    4646 
    47    SUBROUTINE tra_adv_qck ( kt   , cdtype, pun  , pvn, pwn, & 
    48       &                     ptrab, ptran , ptraa, kjpt   ) 
     47   SUBROUTINE tra_adv_qck ( kt, cdtype, pun, pvn, pwn, & 
     48      &                                 ptb, ptn, pta, kjpt   ) 
    4949      !!---------------------------------------------------------------------- 
    5050      !!                  ***  ROUTINE tra_adv_qck  *** 
     
    7070      !!         dt = 2*rdtra and the scalar values are tb and sb 
    7171      !! 
    72       !!       On the vertical, the simple centered scheme used ptran 
     72      !!       On the vertical, the simple centered scheme used ptn 
    7373      !! 
    7474      !!               The fluxes are bounded by the ULTIMATE limiter to 
     
    7676      !!            prevent the appearance of spurious numerical oscillations 
    7777      !! 
    78       !! ** Action : - update (ptraa) with the now advective tracer trends 
     78      !! ** Action : - update (pta) with the now advective tracer trends 
    7979      !!             - save the trends  
    8080      !! 
    8181      !! ** Reference : Leonard (1979, 1991) 
    8282      !!---------------------------------------------------------------------- 
    83       !!* Arguments 
     83      !! 
    8484      INTEGER         , INTENT(in   )                               ::   kt              ! ocean time-step index 
    8585      CHARACTER(len=3), INTENT(in   )                               ::   cdtype          ! =TRA or TRC (tracer indicator) 
    8686      INTEGER         , INTENT(in   )                               ::   kjpt            ! number of tracers 
    8787      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk)       ::   pun, pvn, pwn   ! 3 ocean velocity components 
    88       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptrab, ptran        ! before and now tracer fields 
    89       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptraa           ! tracer trend  
    90       !!* Local declarations 
     88      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptb, ptn        ! before and now tracer fields 
     89      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   pta           ! tracer trend  
     90      !! 
    9191      REAL(wp) ::   z2                            !    temporary scalar 
    9292      !!---------------------------------------------------------------------- 
     
    109109      !--------------------------------------------------------------------------- 
    110110 
    111       CALL tra_adv_qck_i( kt   , cdtype, pun  , z2,  & 
    112       &                   ptrab, ptran , ptraa, kjpt ) 
    113       CALL tra_adv_qck_j( kt   , cdtype, pvn  , z2,  & 
    114       &                   ptrab, ptran , ptraa, kjpt ) 
     111      CALL tra_adv_qck_i( kt, cdtype, pun, z2, ptb, ptn, pta, kjpt )  
     112      CALL tra_adv_qck_j( kt, cdtype, pvn, z2, ptb, ptn, pta, kjpt )  
    115113 
    116114      ! II. The vertical fluxes are computed with the 2nd order centered scheme 
    117115      !------------------------------------------------------------------------- 
    118116      ! 
    119       CALL tra_adv_cen2_k( kt   , cdtype, pwn,      & 
    120       &                    ptran, ptraa , kjpt      ) 
     117      CALL tra_adv_cen2_k( kt, cdtype, pwn,         ptn, pta, kjpt ) 
    121118      ! 
    122119   END SUBROUTINE tra_adv_qck 
    123120 
    124    SUBROUTINE tra_adv_qck_i( kt   , cdtype, pun  , pz2,   & 
    125       &                      ptrab, ptran , ptraa, kjpt   ) 
    126       !!---------------------------------------------------------------------- 
    127       !! 
    128       !!---------------------------------------------------------------------- 
    129       !!* Module used 
     121   SUBROUTINE tra_adv_qck_i( kt, cdtype, pun, pz2,   & 
     122      &                                  ptb, ptn, pta, kjpt   ) 
     123      !!---------------------------------------------------------------------- 
     124      !! 
     125      !!---------------------------------------------------------------------- 
    130126      USE oce         , zwx => ua   ! use ua as workspace 
    131       !!* Arguments 
     127      !! 
    132128      INTEGER         , INTENT(in   )                               ::   kt              ! ocean time-step index 
    133129      CHARACTER(len=3), INTENT(in   )                               ::   cdtype          ! =TRA or TRC (tracer indicator) 
    134130      INTEGER         , INTENT(in   )                               ::   kjpt            ! number of tracers 
    135131      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk)       ::   pun             ! zonal velocity component 
    136       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptrab, ptran    ! before tracer fields 
    137       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptraa           ! tracer trend  
     132      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptb, ptn    ! before tracer fields 
     133      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   pta           ! tracer trend  
    138134      REAL(wp)        , INTENT(in   )                               ::   pz2 
    139       !!* Local declarations 
     135      !! 
    140136      INTEGER  :: ji, jj, jk, jn           ! dummy loop indices 
    141137      REAL(wp) :: ztra, zbtr               ! temporary scalars 
     
    156152               DO ji = fs_2, fs_jpim1   ! vector opt. 
    157153                  ! Upstream in the x-direction for the tracer 
    158                   zfc(ji,jj,jk) = ptrab(ji-1,jj,jk,jn) 
     154                  zfc(ji,jj,jk) = ptb(ji-1,jj,jk,jn) 
    159155                  ! Downstream in the x-direction for the tracer 
    160                   zfd(ji,jj,jk) = ptrab(ji+1,jj,jk,jn) 
     156                  zfd(ji,jj,jk) = ptb(ji+1,jj,jk,jn) 
    161157               END DO 
    162158            END DO 
     
    186182                  zdx  = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    187183                  zwx(ji,jj,jk)  = ABS( pun(ji,jj,jk) ) * zdt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
    188                   zfc(ji,jj,jk)  = zdir * ptrab(ji  ,jj,jk,jn) + ( 1. - zdir ) * ptrab(ji+1,jj,jk,jn)  ! FC in the x-direction for T 
    189                   zfd(ji,jj,jk)  = zdir * ptrab(ji+1,jj,jk,jn) + ( 1. - zdir ) * ptrab(ji  ,jj,jk,jn)  ! FD in the x-direction for T 
     184                  zfc(ji,jj,jk)  = zdir * ptb(ji  ,jj,jk,jn) + ( 1. - zdir ) * ptb(ji+1,jj,jk,jn)  ! FC in the x-direction for T 
     185                  zfd(ji,jj,jk)  = zdir * ptb(ji+1,jj,jk,jn) + ( 1. - zdir ) * ptb(ji  ,jj,jk,jn)  ! FD in the x-direction for T 
    190186               END DO 
    191187            END DO 
     
    231227                  ztra = - zbtr * ( zwx(ji,jj,jk) - zwx(ji-1,jj,jk) ) 
    232228                  !--- add it to the general tracer trends 
    233                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     229                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    234230               END DO 
    235231            END DO 
     
    237233         END DO 
    238234         !                                 ! trend diagnostics (contribution of upstream fluxes) 
    239          IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_trd_xad, zwx, pun, ptran(:,:,:,jn) ) 
     235         IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jpt_trd_xad, zwx, pun, ptn(:,:,:,jn) ) 
    240236         ! 
    241237      END DO 
     
    243239   END SUBROUTINE tra_adv_qck_i 
    244240 
    245    SUBROUTINE tra_adv_qck_j( kt   , cdtype, pvn  , pz2,   & 
    246       &                      ptrab, ptran , ptraa, kjpt   ) 
    247       !!---------------------------------------------------------------------- 
    248       !! 
    249       !!---------------------------------------------------------------------- 
    250       !!* Module used 
     241   SUBROUTINE tra_adv_qck_j( kt, cdtype, pvn, pz2,   & 
     242      &                                  ptb, ptn, pta, kjpt   ) 
     243      !!---------------------------------------------------------------------- 
     244      !! 
     245      !!---------------------------------------------------------------------- 
     246      !! 
    251247      USE oce         , zwy => ua   ! use ua as workspace 
    252       !!* Arguments 
     248      !! 
    253249      INTEGER         , INTENT(in   )                               ::   kt              ! ocean time-step index 
    254250      CHARACTER(len=3), INTENT(in   )                               ::   cdtype          ! =TRA or TRC (tracer indicator) 
    255251      INTEGER         , INTENT(in   )                               ::   kjpt            ! number of tracers 
    256252      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk)       ::   pvn             ! meridional velocity component 
    257       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptrab, ptran    ! before tracer fields 
    258       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptraa           ! tracer trend  
     253      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptb, ptn    ! before tracer fields 
     254      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   pta           ! tracer trend  
    259255      REAL(wp)        , INTENT(in   )                               ::   pz2 
    260       !!* Local declarations 
     256      !! 
    261257      INTEGER  :: ji, jj, jk, jn           ! dummy loop indices 
    262258      REAL(wp) :: ztra, zbtr               ! temporary scalars 
     
    276272               DO ji = fs_2, fs_jpim1   ! vector opt. 
    277273                  ! Upstream in the x-direction for the tracer 
    278                   zfc(ji,jj,jk) = ptrab(ji,jj-1,jk,jn) 
     274                  zfc(ji,jj,jk) = ptb(ji,jj-1,jk,jn) 
    279275                  ! Downstream in the x-direction for the tracer 
    280                   zfd(ji,jj,jk) = ptrab(ji,jj+1,jk,jn) 
     276                  zfd(ji,jj,jk) = ptb(ji,jj+1,jk,jn) 
    281277               END DO 
    282278            END DO 
     
    306302                  zdx  = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * fse3v(ji,jj,jk) 
    307303                  zwy(ji,jj,jk)  = ABS( pvn(ji,jj,jk) ) * zdt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction) 
    308                   zfc(ji,jj,jk)  = zdir * ptrab(ji,jj  ,jk,jn) + ( 1. - zdir ) * ptrab(ji,jj+1,jk,jn)  ! FC in the x-direction for T 
    309                   zfd(ji,jj,jk)  = zdir * ptrab(ji,jj+1,jk,jn) + ( 1. - zdir ) * ptrab(ji,jj  ,jk,jn)  ! FD in the x-direction for T 
     304                  zfc(ji,jj,jk)  = zdir * ptb(ji,jj  ,jk,jn) + ( 1. - zdir ) * ptb(ji,jj+1,jk,jn)  ! FC in the x-direction for T 
     305                  zfd(ji,jj,jk)  = zdir * ptb(ji,jj+1,jk,jn) + ( 1. - zdir ) * ptb(ji,jj  ,jk,jn)  ! FD in the x-direction for T 
    310306               END DO 
    311307            END DO 
     
    351347                  ztra = - zbtr * ( zwy(ji,jj,jk) - zwy(ji,jj-1,jk) ) 
    352348                  !--- add it to the general tracer trends 
    353                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     349                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    354350               END DO 
    355351            END DO 
     
    357353         END DO 
    358354         !                                 ! trend diagnostics (contribution of upstream fluxes) 
    359          IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_trd_yad, zwy, pvn, ptran(:,:,:,jn) ) 
     355         IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jpt_trd_yad, zwy, pvn, ptn(:,:,:,jn) ) 
    360356         !                                 ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
    361357         IF( cdtype == 'TRA' .AND. ln_diaptr .AND. ( MOD( kt, nf_ptr ) == 0 ) ) THEN   
     
    368364   END SUBROUTINE tra_adv_qck_j 
    369365 
    370    SUBROUTINE tra_adv_cen2_k( kt   , cdtype, pwn,   & 
    371      &                        ptran, ptraa , kjpt  ) 
    372       !!---------------------------------------------------------------------- 
    373       !! 
    374       !!---------------------------------------------------------------------- 
    375       !!* Module used 
     366   SUBROUTINE tra_adv_cen2_k( kt, cdtype, pwn,   & 
     367     &                                    ptn, pta, kjpt ) 
     368      !!---------------------------------------------------------------------- 
     369      !! 
     370      !!---------------------------------------------------------------------- 
     371      !! 
    376372      USE oce         , zwz => ua   ! use ua as workspace 
    377       !!* Arguments 
     373      !! 
    378374      INTEGER         , INTENT(in   )                               ::   kt              ! ocean time-step index 
    379375      CHARACTER(len=3), INTENT(in   )                               ::   cdtype          ! =TRA or TRC (tracer indicator) 
    380376      INTEGER         , INTENT(in   )                               ::   kjpt            ! number of tracers 
    381377      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk)       ::   pwn             ! vertical velocity component 
    382       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptran           ! now tracer field 
    383       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptraa           ! tracer trend  
    384       !!* Local declarations 
     378      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptn           ! now tracer field 
     379      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   pta           ! tracer trend  
     380      !! 
    385381      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    386382      REAL(wp) ::   zbtr , ztra      ! temporary scalars 
     
    395391         !                                 ! Surface value 
    396392         IF( lk_vvl ) THEN   ;   zwz(:,:, 1 ) = 0.e0                      ! Variable volume : flux set to zero 
    397          ELSE                ;   zwz(:,:, 1 ) = pwn(:,:,1) * ptran(:,:,1,jn)   ! Constant volume : advective flux through the surface 
     393         ELSE                ;   zwz(:,:, 1 ) = pwn(:,:,1) * ptn(:,:,1,jn)   ! Constant volume : advective flux through the surface 
    398394         ENDIF 
    399395         ! 
     
    401397            DO jj = 2, jpjm1 
    402398               DO ji = fs_2, fs_jpim1   ! vector opt. 
    403                   zwz(ji,jj,jk) = 0.5 * pwn(ji,jj,jk) * ( ptran(ji,jj,jk-1,jn) + ptran(ji,jj,jk,jn) ) 
     399                  zwz(ji,jj,jk) = 0.5 * pwn(ji,jj,jk) * ( ptn(ji,jj,jk-1,jn) + ptn(ji,jj,jk,jn) ) 
    404400               END DO 
    405401            END DO 
     
    413409                  ztra = - zbtr * ( zwz(ji,jj,jk) - zwz(ji,jj,jk+1) )  
    414410                  ! added to the general tracer trends 
    415                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     411                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    416412               END DO 
    417413            END DO 
    418414         END DO 
    419415         !                                 ! Save the vertical advective trends for diagnostic 
    420          IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jptra_trd_zad, zwz, pwn, ptran(:,:,:,jn) ) 
     416         IF( l_trd )  CALL trd_tra( kt, cdtype, jn, jpt_trd_zad, zwz, pwn, ptn(:,:,:,jn) ) 
    421417         ! 
    422418      END DO 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traadv_tvd.F90

    r2024 r2034  
    88   !!                 !  00-10  (MA Foujols E.Kestenare)  include file not routine 
    99   !!                 !  00-12  (E. Kestenare M. Levy)  fix bug in trtrd indexes 
    10    !!                 !  01-07  (E. Durand G. Madec)  adaptraation to ORCA config 
     10   !!                 !  01-07  (E. Durand G. Madec)  adaptation to ORCA config 
    1111   !!            8.5  !  02-06  (G. Madec)  F90: Free form and module 
    1212   !!            9.0  !  04-01  (A. de Miranda, G. Madec, J.M. Molines ): advective bbl 
    1313   !!            9.0  !  08-04  (S. Cravatte) add the i-, j- & k- trends computation 
    1414   !!            " "  !  09-11  (V. Garnier) Surface pressure gradient organization 
    15    !!            3.3  !  10-05 (C. Ethe, G. Madec)  merge TRC-TRA + switch from velocity to transport 
     15   !!            3.3  !  10-05  (C. Ethe, G. Madec)  merge TRC-TRA + switch from velocity to transport 
    1616   !!---------------------------------------------------------------------- 
    1717 
     
    4545#  include "vectopt_loop_substitute.h90" 
    4646   !!---------------------------------------------------------------------- 
    47    !!   OPA 9.0 , LOCEAN-IPSL (2006)  
     47   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    4848   !! $Id$ 
    4949   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    5252CONTAINS 
    5353 
    54    SUBROUTINE tra_adv_tvd ( kt   , cdtype, pun  , pvn, pwn, & 
    55       &                     ptrab, ptran , ptraa, kjpt   ) 
     54   SUBROUTINE tra_adv_tvd ( kt, cdtype, pun, pvn, pwn, & 
     55      &                                 ptb, ptn, pta, kjpt   ) 
    5656      !!---------------------------------------------------------------------- 
    5757      !!                  ***  ROUTINE tra_adv_tvd  *** 
     
    6464      !!       note: - this advection scheme needs a leap-frog time scheme 
    6565      !! 
    66       !! ** Action : - update (ptraa) with the now advective tracer trends 
     66      !! ** Action : - update (pta) with the now advective tracer trends 
    6767      !!             - save the trends  
    6868      !!---------------------------------------------------------------------- 
    69       !!* Module used 
    7069      USE oce         , zwx => ua   ! use ua as workspace 
    7170      USE oce         , zwy => va   ! use va as workspace 
    72       !!* Arguments 
     71      !! 
    7372      INTEGER         , INTENT(in   )                               ::   kt              ! ocean time-step index 
    7473      CHARACTER(len=3), INTENT(in   )                               ::   cdtype          ! =TRA or TRC (tracer indicator) 
    7574      INTEGER         , INTENT(in   )                               ::   kjpt            ! number of tracers 
    7675      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk)       ::   pun, pvn, pwn   ! 3 ocean velocity components 
    77       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptrab, ptran        ! before and now tracer fields 
    78       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptraa           ! tracer trend  
    79       !!* Local declarations 
     76      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptb, ptn        ! before and now tracer fields 
     77      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   pta           ! tracer trend  
     78      !! 
    8079      INTEGER  ::   ji, jj, jk, jn          ! dummy loop indices   
    8180      REAL(wp) ::   & 
     
    127126                  zfp_vj = pvn(ji,jj,jk) + ABS( pvn(ji,jj,jk) ) 
    128127                  zfm_vj = pvn(ji,jj,jk) - ABS( pvn(ji,jj,jk) ) 
    129                   zwx(ji,jj,jk) = 0.5 * ( zfp_ui * ptrab(ji,jj,jk,jn) + zfm_ui * ptrab(ji+1,jj  ,jk,jn) ) 
    130                   zwy(ji,jj,jk) = 0.5 * ( zfp_vj * ptrab(ji,jj,jk,jn) + zfm_vj * ptrab(ji  ,jj+1,jk,jn) ) 
     128                  zwx(ji,jj,jk) = 0.5 * ( zfp_ui * ptb(ji,jj,jk,jn) + zfm_ui * ptb(ji+1,jj  ,jk,jn) ) 
     129                  zwy(ji,jj,jk) = 0.5 * ( zfp_vj * ptb(ji,jj,jk,jn) + zfm_vj * ptb(ji  ,jj+1,jk,jn) ) 
    131130               END DO 
    132131            END DO 
     
    136135         ! Surface value 
    137136         IF( lk_vvl ) THEN   ;   zwz(:,:, 1 ) = 0.e0                         ! volume variable 
    138          ELSE                ;   zwz(:,:, 1 ) = pwn(:,:,1) * ptrab(:,:,1,jn)   ! linear free surface  
     137         ELSE                ;   zwz(:,:, 1 ) = pwn(:,:,1) * ptb(:,:,1,jn)   ! linear free surface  
    139138         ENDIF 
    140139         ! Interior value 
     
    144143                  zfp_wk = pwn(ji,jj,jk) + ABS( pwn(ji,jj,jk) ) 
    145144                  zfm_wk = pwn(ji,jj,jk) - ABS( pwn(ji,jj,jk) ) 
    146                   zwz(ji,jj,jk) = 0.5 * ( zfp_wk * ptrab(ji,jj,jk,jn) + zfm_wk * ptrab(ji,jj,jk-1,jn) ) 
     145                  zwz(ji,jj,jk) = 0.5 * ( zfp_wk * ptb(ji,jj,jk,jn) + zfm_wk * ptb(ji,jj,jk-1,jn) ) 
    147146               END DO 
    148147            END DO 
     
    160159                     &             + zwz(ji,jj,jk) - zwz(ji  ,jj  ,jk+1) ) 
    161160                  ! update and guess with monotonic sheme 
    162                   ptraa(ji,jj,jk,jn) =   ptraa(ji,jj,jk,jn)         + ztra 
    163                   zwi(ji,jj,jk)    = ( ptrab(ji,jj,jk,jn) + z2dtt * ztra ) * tmask(ji,jj,jk) 
     161                  pta(ji,jj,jk,jn) =   pta(ji,jj,jk,jn)         + ztra 
     162                  zwi(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + z2dtt * ztra ) * tmask(ji,jj,jk) 
    164163               END DO 
    165164            END DO 
     
    185184            DO jj = 1, jpjm1 
    186185               DO ji = 1, fs_jpim1   ! vector opt. 
    187                   zwx(ji,jj,jk) = 0.5 * pun(ji,jj,jk) * ( ptran(ji,jj,jk,jn) + ptran(ji+1,jj,jk,jn) ) - zwx(ji,jj,jk) 
    188                   zwy(ji,jj,jk) = 0.5 * pvn(ji,jj,jk) * ( ptran(ji,jj,jk,jn) + ptran(ji,jj+1,jk,jn) ) - zwy(ji,jj,jk) 
     186                  zwx(ji,jj,jk) = 0.5 * pun(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji+1,jj,jk,jn) ) - zwx(ji,jj,jk) 
     187                  zwy(ji,jj,jk) = 0.5 * pvn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji,jj+1,jk,jn) ) - zwy(ji,jj,jk) 
    189188               END DO 
    190189            END DO 
     
    198197            DO jj = 1, jpj 
    199198               DO ji = 1, jpi 
    200                   zwz(ji,jj,jk) = 0.5 * pwn(ji,jj,jk) * ( ptran(ji,jj,jk,jn) + ptran(ji,jj,jk-1,jn) ) - zwz(ji,jj,jk) 
     199                  zwz(ji,jj,jk) = 0.5 * pwn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji,jj,jk-1,jn) ) - zwz(ji,jj,jk) 
    201200               END DO 
    202201            END DO 
     
    210209         ! 4. monotonicity algorithm 
    211210         ! ------------------------- 
    212          CALL nonosc( ptrab(:,:,:,jn), zwx, zwy, zwz, zwi, z2 ) 
     211         CALL nonosc( ptb(:,:,:,jn), zwx, zwy, zwz, zwi, z2 ) 
    213212 
    214213 
     
    224223                     &             + zwz(ji,jj,jk) - zwz(ji  ,jj  ,jk+1) ) 
    225224                  ! add them to the general tracer trends 
    226                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     225                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    227226               END DO 
    228227            END DO 
     
    235234            ztrdz(:,:,:) = ztrdz(:,:,:) + zwz(:,:,:)  ! <<< Add to previously computed 
    236235             
    237             CALL trd_tra( kt, cdtype, jn, jptra_trd_xad, ztrdx, pun, ptran(:,:,:,jn) )    
    238             CALL trd_tra( kt, cdtype, jn, jptra_trd_yad, ztrdy, pvn, ptran(:,:,:,jn) )   
    239             CALL trd_tra( kt, cdtype, jn, jptra_trd_zad, ztrdz, pwn, ptran(:,:,:,jn) )  
     236            CALL trd_tra( kt, cdtype, jn, jpt_trd_xad, ztrdx, pun, ptn(:,:,:,jn) )    
     237            CALL trd_tra( kt, cdtype, jn, jpt_trd_yad, ztrdy, pvn, ptn(:,:,:,jn) )   
     238            CALL trd_tra( kt, cdtype, jn, jpt_trd_zad, ztrdz, pwn, ptn(:,:,:,jn) )  
    240239         END IF 
    241240         !                                 ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traadv_ubs.F90

    r2024 r2034  
    3333#  include "vectopt_loop_substitute.h90" 
    3434   !!---------------------------------------------------------------------- 
    35    !!   OPA 9.0 , LOCEAN-IPSL (2006)  
     35   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    3636   !! $Id$ 
    3737   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)  
     
    4040CONTAINS 
    4141 
    42    SUBROUTINE tra_adv_ubs ( kt   , cdtype, pun  , pvn, pwn, & 
    43       &                     ptrab, ptran , ptraa, kjpt   ) 
     42   SUBROUTINE tra_adv_ubs ( kt, cdtype, pun, pvn, pwn, & 
     43      &                                 ptb, ptn, pta, kjpt   ) 
    4444      !!---------------------------------------------------------------------- 
    4545      !!                  ***  ROUTINE tra_adv_ubs  *** 
     
    6868      !!      the UBS have been found to be too diffusive. 
    6969      !! 
    70       !! ** Action : - update (ptraa) with the now advective tracer trends 
     70      !! ** Action : - update (pta) with the now advective tracer trends 
    7171      !! 
    7272      !! Reference : Shchepetkin, A. F., J. C. McWilliams, 2005, Ocean Modelling, 9, 347-404.  
     
    8181      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk)       ::   pun, pvn, pwn   ! 3 ocean velocity components 
    8282      INTEGER         , INTENT(in   )                               ::   kjpt            ! number of tracers 
    83       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptrab, ptran        ! before and now tracer fields 
    84       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptraa           ! tracer trend  
     83      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)  ::   ptb, ptn        ! before and now tracer fields 
     84      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::   pta           ! tracer trend  
    8585      !!* Local declarations 
    8686      INTEGER  ::   ji, jj, jk, jn          ! dummy loop indices 
     
    124124                  zeeu = e2u(ji,jj) * fse3u(ji,jj,jk) / e1u(ji,jj) * umask(ji,jj,jk) 
    125125                  zeev = e1v(ji,jj) * fse3v(ji,jj,jk) / e2v(ji,jj) * vmask(ji,jj,jk) 
    126                   ztu(ji,jj,jk) = zeeu * ( ptrab(ji+1,jj  ,jk,jn) - ptrab(ji,jj,jk,jn) ) 
    127                   ztv(ji,jj,jk) = zeev * ( ptrab(ji  ,jj+1,jk,jn) - ptrab(ji,jj,jk,jn) ) 
     126                  ztu(ji,jj,jk) = zeeu * ( ptb(ji+1,jj  ,jk,jn) - ptb(ji,jj,jk,jn) ) 
     127                  ztv(ji,jj,jk) = zeev * ( ptb(ji  ,jj+1,jk,jn) - ptb(ji,jj,jk,jn) ) 
    128128               END DO 
    129129            END DO 
     
    154154                  zfm_vj = pvn(ji,jj,jk) - ABS( pvn(ji,jj,jk) ) 
    155155                  ! centered scheme 
    156                   zcenut = 0.5 * pun(ji,jj,jk) * ( ptran(ji,jj,jk,jn) + ptran(ji+1,jj  ,jk,jn) ) 
    157                   zcenvt = 0.5 * pvn(ji,jj,jk) * ( ptran(ji,jj,jk,jn) + ptran(ji  ,jj+1,jk,jn) ) 
     156                  zcenut = 0.5 * pun(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji+1,jj  ,jk,jn) ) 
     157                  zcenvt = 0.5 * pvn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji  ,jj+1,jk,jn) ) 
    158158                  ! UBS scheme 
    159159                  zwx(ji,jj,jk) =  zcenut - zfp_ui * zltu(ji,jj,jk) - zfm_ui * zltu(ji+1,jj,jk)  
     
    163163         ENDDO 
    164164 
    165          zltu(:,:,:) = ptraa(:,:,:,jn)      ! store ptraa trends 
     165         zltu(:,:,:) = pta(:,:,:,jn)      ! store pta trends 
    166166 
    167167         ! Horizontal advective trends 
     
    175175                     &             + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk)  ) 
    176176                  ! add it to the general tracer trends 
    177                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     177                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    178178               END DO 
    179179            END DO 
     
    183183 
    184184         ! Horizontal trend used in tra_adv_ztvd subroutine 
    185          zltu(:,:,:) = ptraa(:,:,:,jn) - zltu(:,:,:) 
     185         zltu(:,:,:) = pta(:,:,:,jn) - zltu(:,:,:) 
    186186 
    187187         ! 3. Save the horizontal advective trends for diagnostic 
     
    189189         !                                 ! trend diagnostics (contribution of upstream fluxes) 
    190190         IF( l_trd ) THEN 
    191              CALL trd_tra( kt, cdtype, jn, jptra_trd_xad, zwx, pun, ptran(:,:,:,jn) ) 
    192              CALL trd_tra( kt, cdtype, jn, jptra_trd_yad, zwy, pvn, ptran(:,:,:,jn) ) 
     191             CALL trd_tra( kt, cdtype, jn, jpt_trd_xad, zwx, pun, ptn(:,:,:,jn) ) 
     192             CALL trd_tra( kt, cdtype, jn, jpt_trd_yad, zwy, pvn, ptn(:,:,:,jn) ) 
    193193         END IF 
    194194         !                                 ! "Poleward" heat and salt transports (contribution of upstream fluxes) 
     
    209209         ! TVD scheme for the vertical direction   
    210210         ! ---------------------- 
    211          IF( l_trd )   zltv(:,:,:) = ptraa(:,:,:,jn)          ! store pta if trend diag. 
     211         IF( l_trd )   zltv(:,:,:) = pta(:,:,:,jn)          ! store pta if trend diag. 
    212212 
    213213         !  Bottom value : flux set to zero 
     
    216216         ! Surface value 
    217217         IF( lk_vvl ) THEN   ;   ztw(:,:,1) = 0.e0                      ! variable volume : flux set to zero 
    218          ELSE                ;   ztw(:,:,1) = pwn(:,:,1) * ptrab(:,:,1,jn)   ! free constant surface  
     218         ELSE                ;   ztw(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn)   ! free constant surface  
    219219         ENDIF 
    220220         !  upstream advection with initial mass fluxes & intermediate update 
     
    226226                   zfp_wk = pwn(ji,jj,jk) + ABS( pwn(ji,jj,jk) ) 
    227227                   zfm_wk = pwn(ji,jj,jk) - ABS( pwn(ji,jj,jk) ) 
    228                    ztw(ji,jj,jk) = 0.5 * (  zfp_wk * ptrab(ji,jj,jk,jn) + zfm_wk * ptrab(ji,jj,jk-1,jn)  ) 
     228                   ztw(ji,jj,jk) = 0.5 * (  zfp_wk * ptb(ji,jj,jk,jn) + zfm_wk * ptb(ji,jj,jk-1,jn)  ) 
    229229               END DO 
    230230            END DO 
     
    237237                  zbtr = 1. / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    238238                  ztak = - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) * zbtr 
    239                   ptraa(ji,jj,jk,jn) =   ptraa(ji,jj,jk,jn) +  ztak  
    240                   zti(ji,jj,jk)    = ( ptrab(ji,jj,jk,jn) + z2dtt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk) 
     239                  pta(ji,jj,jk,jn) =   pta(ji,jj,jk,jn) +  ztak  
     240                  zti(ji,jj,jk)    = ( ptb(ji,jj,jk,jn) + z2dtt * ( ztak + zltu(ji,jj,jk) ) ) * tmask(ji,jj,jk) 
    241241               END DO 
    242242            END DO 
     
    250250            DO jj = 1, jpj 
    251251               DO ji = 1, jpi 
    252                   ztw(ji,jj,jk) = 0.5 * pwn(ji,jj,jk) * ( ptran(ji,jj,jk,jn) + ptran(ji,jj,jk-1,jn) ) - ztw(ji,jj,jk) 
     252                  ztw(ji,jj,jk) = 0.5 * pwn(ji,jj,jk) * ( ptn(ji,jj,jk,jn) + ptn(ji,jj,jk-1,jn) ) - ztw(ji,jj,jk) 
    253253               END DO 
    254254            END DO 
    255255         END DO 
    256256         ! 
    257          CALL nonosc_z( ptrab(:,:,:,jn), ztw, zti, z2 )      !  monotonicity algorithm 
     257         CALL nonosc_z( ptb(:,:,:,jn), ztw, zti, z2 )      !  monotonicity algorithm 
    258258 
    259259         !  final trend with corrected fluxes 
     
    265265                  ztra = - zbtr * ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) 
    266266                  ! added to the general tracer trends 
    267                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     267                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    268268               END DO 
    269269            END DO 
     
    277277                     zbtr = 1.e0 / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    278278                     z_hdivn = (  pwn(ji,jj,jk) - pwn(ji,jj,jk+1)  ) * zbtr 
    279                      zltv(ji,jj,jk) = ptraa(ji,jj,jk,jn) - zltv(ji,jj,jk) + ptran(ji,jj,jk,jn) * z_hdivn 
     279                     zltv(ji,jj,jk) = pta(ji,jj,jk,jn) - zltv(ji,jj,jk) + ptn(ji,jj,jk,jn) * z_hdivn 
    280280                  END DO 
    281281               END DO 
    282282            END DO 
    283             CALL trd_tra( kt, cdtype, jn, jptra_trd_zad, zltv ) 
     283            CALL trd_tra( kt, cdtype, jn, jpt_trd_zad, zltv ) 
    284284         ENDIF 
    285285         ! 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/trabbl.F90

    r2024 r2034  
    7171#  include "vectopt_loop_substitute.h90" 
    7272   !!---------------------------------------------------------------------- 
    73    !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
     73   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    7474   !! $Id$  
    7575   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traldf.F90

    r2024 r2034  
    4545#  include "vectopt_loop_substitute.h90" 
    4646   !!---------------------------------------------------------------------- 
    47    !!   OPA 9.0 , LOCEAN-IPSL (2006)  
     47   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    4848   !! $Id$  
    4949   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    7474 
    7575      SELECT CASE ( nldf )                       ! compute lateral mixing trend and add it to the general trend 
    76       CASE ( 0 )   ;   CALL tra_ldf_lap   ( kt , 'TRA', zgtsu, zgtsv,  & 
    77                        &                    tsb, tsa  , jpts           )   ! iso-level laplacian 
    78       CASE ( 1 )   ;   CALL tra_ldf_iso   ( kt , 'TRA', zgtsu, zgtsv,  & 
    79                        &                    tsb, tsa  , jpts , ahtb0   )   ! rotated laplacian  
    80       CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt , 'TRA', zgtsu, zgtsv,  & 
    81                        &                    tsb, tsa  , jpts           )   ! iso-level bilaplacian 
    82       CASE ( 3 )   ;   CALL tra_ldf_bilapg( kt , 'TRA', tsb, tsa, jpts )      ! s-coord. horizontal bilaplacian 
     76      CASE ( 0 )   ;   CALL tra_ldf_lap   ( kt , 'TRA', zgtsu, zgtsv, tsb, tsa, jpts        )  ! iso-level laplacian 
     77      CASE ( 1 )   ;   CALL tra_ldf_iso   ( kt , 'TRA', zgtsu, zgtsv, tsb, tsa, jpts, ahtb0 )  ! rotated laplacian  
     78      CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt , 'TRA', zgtsu, zgtsv, tsb, tsa, jpts        )  ! iso-level bilaplacian 
     79      CASE ( 3 )   ;   CALL tra_ldf_bilapg( kt , 'TRA',               tsb, tsa, jpts        )  ! s-coord. horizontal bilaplacian 
    8380         ! 
    8481      CASE ( -1 )                                     ! esopa: test all possibility with control print 
    85                        CALL tra_ldf_lap   ( kt , 'TRA', zgtsu, zgtsv,  & 
    86                        &                    tsb, tsa  , jpts           )  
    87                        CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf0 - Ta: ', mask1=tmask,               & 
    88                        &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    89                        CALL tra_ldf_iso   ( kt , 'TRA', zgtsu, zgtsv,  & 
    90                        &                    tsb, tsa  , jpts , ahtb0   )  
    91                        CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf1 - Ta: ', mask1=tmask,               & 
    92                        &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    93                        CALL tra_ldf_bilap ( kt , 'TRA', zgtsu, zgtsv,  & 
    94                        &                    tsb, tsa  , jpts           )  
    95                        CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf2 - Ta: ', mask1=tmask,               & 
    96                        &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    97                        CALL tra_ldf_bilapg( kt , 'TRA', tsb, tsa, jpts )  
    98                        CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf3 - Ta: ', mask1=tmask,               & 
    99                        &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     82         CALL tra_ldf_lap   ( kt , 'TRA', zgtsu, zgtsv, tsb, tsa, jpts        )  
     83         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf0 - Ta: ', mask1=tmask,               & 
     84         &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     85         CALL tra_ldf_iso   ( kt , 'TRA', zgtsu, zgtsv, tsb, tsa, jpts, ahtb0 )   
     86         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf1 - Ta: ', mask1=tmask,               & 
     87         &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     88         CALL tra_ldf_bilap ( kt , 'TRA', zgtsu, zgtsv, tsb, tsa, jpts        )  
     89         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf2 - Ta: ', mask1=tmask,               & 
     90         &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     91         CALL tra_ldf_bilapg( kt , 'TRA',               tsb, tsa, jpts        )  
     92         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' ldf3 - Ta: ', mask1=tmask,               & 
     93         &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    10094      END SELECT 
    10195 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traldf_bilap.F90

    r2024 r2034  
    4141#  include "vectopt_loop_substitute.h90" 
    4242   !!---------------------------------------------------------------------- 
    43    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     43   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    4444   !! $Id$  
    4545   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     
    4848CONTAINS 
    4949  
    50    SUBROUTINE tra_ldf_bilap( kt   , cdtype, pgtu, pgtv,  & 
    51       &                      ptrab, ptraa , kjpt         
     50   SUBROUTINE tra_ldf_bilap( kt, cdtype, pgu, pgv,  & 
     51      &                                  ptb, pta, kjpt 
    5252      !!---------------------------------------------------------------------- 
    5353      !!                  ***  ROUTINE tra_ldf_bilap  *** 
     
    7070      !! 
    7171      !!      Add this trend to the general trend 
    72       !!         (ptraa) = (ptraa) + ( difft ) 
     72      !!         (pta) = (pta) + ( difft ) 
    7373      !! 
    74       !! ** Action : - Update ptraa arrays with the before iso-level 
     74      !! ** Action : - Update pta arrays with the before iso-level 
    7575      !!               biharmonic mixing trend. 
    7676      !!---------------------------------------------------------------------- 
    77       !!* Module used 
     77      !! 
    7878      USE oce         , ztu => ua   ! use ua as workspace 
    7979      USE oce         , ztv => va   ! use va as workspace 
    80       !!* Arguments 
     80      !! 
    8181      INTEGER         , INTENT(in   )                                ::   kt             ! ocean time-step index 
    8282      CHARACTER(len=3), INTENT(in   )                                ::   cdtype         ! =TRA or TRC (tracer indicator) 
    8383      INTEGER         , INTENT(in   )                                ::   kjpt            ! number of tracers 
    84       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,kjpt  )     ::   pgtu, pgtv     ! tracer gradient at pstep levels 
    85       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptrab          ! before and now tracer fields 
    86       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptraa          ! tracer trend  
    87       !!* Local declarations 
     84      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,kjpt  )     ::   pgu, pgv     ! tracer gradient at pstep levels 
     85      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptb          ! before and now tracer fields 
     86      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   pta          ! tracer trend  
     87      !! 
    8888      INTEGER  ::  ji, jj, jk, jn         ! dummy loop indices 
    8989      INTEGER  ::  iku, ikv               ! temporary integers 
     
    121121            DO jj = 1, jpjm1 
    122122               DO ji = 1, fs_jpim1   ! vector opt. 
    123                   ztu(ji,jj,jk) = zeeu(ji,jj) * ( ptrab(ji+1,jj  ,jk,jn) - ptrab(ji,jj,jk,jn) ) 
    124                   ztv(ji,jj,jk) = zeev(ji,jj) * ( ptrab(ji  ,jj+1,jk,jn) - ptrab(ji,jj,jk,jn) ) 
     123                  ztu(ji,jj,jk) = zeeu(ji,jj) * ( ptb(ji+1,jj  ,jk,jn) - ptb(ji,jj,jk,jn) ) 
     124                  ztv(ji,jj,jk) = zeev(ji,jj) * ( ptb(ji  ,jj+1,jk,jn) - ptb(ji,jj,jk,jn) ) 
    125125               END DO 
    126126            END DO 
     
    131131                     iku = MIN ( mbathy(ji,jj), mbathy(ji+1,jj  ) ) - 1 
    132132                     ikv = MIN ( mbathy(ji,jj), mbathy(ji  ,jj+1) ) - 1 
    133                      IF( iku == jk )  ztu(ji,jj,jk) = zeeu(ji,jj) * pgtu(ji,jj,jn) 
    134                      IF( ikv == jk )  ztv(ji,jj,jk) = zeev(ji,jj) * pgtv(ji,jj,jn) 
     133                     IF( iku == jk )  ztu(ji,jj,jk) = zeeu(ji,jj) * pgu(ji,jj,jn) 
     134                     IF( ikv == jk )  ztv(ji,jj,jk) = zeev(ji,jj) * pgv(ji,jj,jn) 
    135135                  END DO 
    136136               END DO 
     
    167167                  ztra = zbtr * (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk) + ztv(ji,jj,jk) - ztv(ji,jj-1,jk)  ) 
    168168                  ! add it to the general tracer trends 
    169                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     169                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    170170               END DO 
    171171            END DO 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traldf_bilapg.F90

    r2024 r2034  
    3636#  include "ldfeiv_substitute.h90" 
    3737   !!---------------------------------------------------------------------- 
    38    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     38   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    3939   !! $Id$  
    4040   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     
    4343CONTAINS 
    4444 
    45    SUBROUTINE tra_ldf_bilapg( kt, cdtype, ptrab, ptraa, kjpt ) 
     45   SUBROUTINE tra_ldf_bilapg( kt, cdtype, ptb, pta, kjpt ) 
    4646      !!---------------------------------------------------------------------- 
    4747      !!                 ***  ROUTINE tra_ldf_bilapg  *** 
     
    5555      !!      computed in routine inildf. 
    5656      !!         -1- compute the geopotential harmonic operator applied to 
    57       !!        ptrab and multiply it by the eddy diffusivity coefficient 
     57      !!        ptb and multiply it by the eddy diffusivity coefficient 
    5858      !!       (done by a call to ldfght routine, result in wk1 arrays). 
    5959      !!      Applied the domain lateral boundary conditions by call to lbc_lnk 
     
    6262      !!      arrays). 
    6363      !!         -3- Add this trend to the general trend  
    64       !!            ptraa = ptraa + wk2 
    65       !! 
    66       !! ** Action : - Update ptraa arrays with the before geopotential  
     64      !!            pta = pta + wk2 
     65      !! 
     66      !! ** Action : - Update pta arrays with the before geopotential  
    6767      !!               biharmonic mixing trend. 
    6868      !!---------------------------------------------------------------------- 
     
    7171      CHARACTER(len=3), INTENT(in   )                                ::   cdtype         ! =TRA or TRC (tracer indicator) 
    7272      INTEGER         , INTENT(in   )                                ::   kjpt            ! number of tracers 
    73       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptrab          ! before and now tracer fields 
    74       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptraa          ! tracer trend  
     73      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptb          ! before and now tracer fields 
     74      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   pta          ! tracer trend  
    7575      !! * Local declarations 
    7676      INTEGER ::   ji, jj, jk, jn                 ! dummy loop indices 
    77       REAL(wp), DIMENSION(jpi,jpj,jpk,SIZE(ptrab,4)) ::   & 
     77      REAL(wp), DIMENSION(jpi,jpj,jpk,SIZE(ptb,4)) ::   & 
    7878         wk1, wk2                ! work array used for rotated biharmonic 
    7979         !                       ! operator on tracers and/or momentum 
     
    8888      ! 
    8989 
    90       ! 1. Laplacian of ptrab * aht 
     90      ! 1. Laplacian of ptb * aht 
    9191      ! -----------------------------  
    92       ! rotated harmonic operator applied to ptrab and multiply by aht ; output in wk1  
    93  
    94       CALL ldfght( kt, cdtype, ptrab, wk1, kjpt, 1 ) 
     92      ! rotated harmonic operator applied to ptb and multiply by aht ; output in wk1  
     93 
     94      CALL ldfght( kt, cdtype, ptb, wk1, kjpt, 1 ) 
    9595 
    9696      ! 
     
    100100      END DO 
    101101 
    102       ! 2. Bilaplacian of ptrab 
     102      ! 2. Bilaplacian of ptb 
    103103      ! ------------------------- 
    104104      ! rotated harmonic operator applied to wk1 ; output in wk2 
     
    117117               DO ji = 2, jpim1 
    118118                  ! add it to the general tracer trends 
    119                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + wk2(ji,jj,jk,jn) 
     119                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + wk2(ji,jj,jk,jn) 
    120120               END DO 
    121121            END DO 
     
    166166      !! 
    167167      !!---------------------------------------------------------------------- 
    168       !! * Modules used 
     168      !!  
    169169      USE oce         , zftv => ua     ! use ua as workspace 
    170       !! * Arguments 
     170      !! 
    171171      INTEGER         , INTENT(in )                              ::  kt      ! ocean time-step index 
    172172      CHARACTER(len=3), INTENT(in )                              ::  cdtype  ! =TRA or TRC (tracer indicator)  
     
    178178      INTEGER         , INTENT(in )                              ::  kaht    !: =1 multiply the laplacian by the eddy diffusivity coeff. 
    179179      !                                                             !: =2 no multiplication  
    180       !! * Local declarations 
     180      !! 
    181181      INTEGER ::   ji, jj, jk,jn          ! dummy loop indices 
    182182      !                                   ! temporary scalars 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traldf_iso.F90

    r2024 r2034  
    4343#  include "vectopt_loop_substitute.h90" 
    4444   !!---------------------------------------------------------------------- 
    45    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     45   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    4646   !! $Id$  
    4747   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    5050CONTAINS 
    5151 
    52    SUBROUTINE tra_ldf_iso( kt   , cdtype, pgtu, pgtv,  & 
    53       &                    ptrab, ptraa , kjpt, pahtb0 ) 
     52   SUBROUTINE tra_ldf_iso( kt, cdtype, pgu, pgv,  & 
     53      &                                ptb, pta, kjpt, pahtb0 ) 
    5454      !!---------------------------------------------------------------------- 
    5555      !!                  ***  ROUTINE tra_ldf_iso  *** 
     
    9898      CHARACTER(len=3), INTENT(in   )                                ::   cdtype         ! =TRA or TRC (tracer indicator) 
    9999      INTEGER         , INTENT(in   )                                ::   kjpt            ! number of tracers 
    100       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,kjpt  )     ::   pgtu, pgtv     ! tracer gradient at pstep levels 
    101       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptrab          ! before and now tracer fields 
    102       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptraa          ! tracer trend  
     100      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,kjpt  )     ::   pgu, pgv     ! tracer gradient at pstep levels 
     101      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptb          ! before and now tracer fields 
     102      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   pta          ! tracer trend  
    103103      REAL(wp)        , INTENT(in   )                                ::   pahtb0         ! background diffusion coef 
    104104      !!* Local declarations 
     
    138138            DO jj = 1, jpjm1 
    139139               DO ji = 1, fs_jpim1   ! vector opt. 
    140                   zdit(ji,jj,jk) = ( ptrab(ji+1,jj  ,jk,jn) - ptrab(ji,jj,jk,jn) ) * umask(ji,jj,jk) 
    141                   zdjt(ji,jj,jk) = ( ptrab(ji  ,jj+1,jk,jn) - ptrab(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 
     140                  zdit(ji,jj,jk) = ( ptb(ji+1,jj  ,jk,jn) - ptb(ji,jj,jk,jn) ) * umask(ji,jj,jk) 
     141                  zdjt(ji,jj,jk) = ( ptb(ji  ,jj+1,jk,jn) - ptb(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 
    142142               END DO 
    143143            END DO 
     
    149149                  iku = MIN( mbathy(ji,jj), mbathy(ji+1,jj  ) ) - 1 
    150150                  ikv = MIN( mbathy(ji,jj), mbathy(ji  ,jj+1) ) - 1 
    151                   zdit(ji,jj,iku) = pgtu(ji,jj,jn)           
    152                   zdjt(ji,jj,ikv) = pgtv(ji,jj,jn)       
     151                  zdit(ji,jj,iku) = pgu(ji,jj,jn)           
     152                  zdjt(ji,jj,ikv) = pgv(ji,jj,jn)       
    153153               END DO 
    154154            END DO 
     
    167167            ! surface boundary condition: zdkt(jk=1)=zdkt(jk=2) 
    168168             
    169             zdk1t(:,:) = ( ptrab(:,:,jk,jn) - ptrab(:,:,jk+1,jn) ) * tmask(:,:,jk+1) 
     169            zdk1t(:,:) = ( ptb(:,:,jk,jn) - ptb(:,:,jk+1,jn) ) * tmask(:,:,jk+1) 
    170170             
    171171            IF( jk == 1 ) THEN 
    172172               zdkt(:,:) = zdk1t(:,:) 
    173173            ELSE 
    174                zdkt(:,:) = ( ptrab(:,:,jk-1,jn) - ptrab(:,:,jk,jn) ) * tmask(:,:,jk) 
     174               zdkt(:,:) = ( ptb(:,:,jk-1,jn) - ptb(:,:,jk,jn) ) * tmask(:,:,jk) 
    175175            ENDIF 
    176176 
     
    209209                  zbtr = 1.0 / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    210210                  ztra = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk)  ) 
    211                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     211                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    212212               END DO 
    213213            END DO 
     
    229229                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    230230                     z2d(ji,jj) = z2d(ji,jj) + zztmp * zftu(ji,jj,jk)   & 
    231             &                    * ( ptran(ji,jj,jk,jn) + ptran(ji+1,jj,jk,jn) ) * e1u(ji,jj) * fse3u(ji,jj,jk)  
     231            &                    * ( ptn(ji,jj,jk,jn) + ptn(ji+1,jj,jk,jn) ) * e1u(ji,jj) * fse3u(ji,jj,jk)  
    232232                  END DO 
    233233               END DO 
     
    240240                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    241241                     z2d(ji,jj) = z2d(ji,jj) + zztmp * zftv(ji,jj,jk)   & 
    242            &                   * ( ptran(ji,jj,jk,jn) + ptran(ji,jj+1,jk,jn) ) * e2v(ji,jj) * fse3v(ji,jj,jk)  
     242           &                   * ( ptn(ji,jj,jk,jn) + ptn(ji,jj+1,jk,jn) ) * e2v(ji,jj) * fse3v(ji,jj,jk)  
    243243                  END DO 
    244244               END DO 
     
    295295                  zbtr = 1.0 / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    296296                  ztra = (  ztfw(ji,jj,jk) - ztfw(ji,jj,jk+1)  ) * zbtr 
    297                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     297                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    298298               END DO 
    299299            END DO 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traldf_lap.F90

    r2024 r2034  
    3838#  include "vectopt_loop_substitute.h90" 
    3939   !!---------------------------------------------------------------------- 
    40    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     40   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    4141   !! $Id$  
    4242   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     
    4545CONTAINS 
    4646 
    47    SUBROUTINE tra_ldf_lap( kt   , cdtype, pgtu, pgtv,  & 
    48       &                    ptrab, ptraa , kjpt        )  
     47   SUBROUTINE tra_ldf_lap( kt, cdtype, pgu, pgv,  & 
     48      &                                ptb, pta, kjpt )  
    4949      !!---------------------------------------------------------------------- 
    5050      !!                  ***  ROUTINE tra_ldf_lap  *** 
     
    6767      !!                harmonic mixing trend. 
    6868      !!---------------------------------------------------------------------- 
    69       !!* Module used 
     69      !! 
    7070      USE oce         , ztu => ua   ! use ua as workspace 
    7171      USE oce         , ztv => va   ! use va as workspace 
    72       !!* Arguments 
     72      !! 
    7373      INTEGER         , INTENT(in   )                                ::   kt             ! ocean time-step index 
    7474      CHARACTER(len=3), INTENT(in   )                                ::   cdtype         ! =TRA or TRC (tracer indicator) 
    7575      INTEGER         , INTENT(in   )                                ::   kjpt            ! number of tracers 
    76       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,kjpt  )     ::   pgtu, pgtv     ! tracer gradient at pstep levels 
    77       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptrab          ! before and now tracer fields 
    78       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptraa          ! tracer trend  
    79       !!* Local declarations 
     76      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,kjpt  )     ::   pgu, pgv     ! tracer gradient at pstep levels 
     77      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptb          ! before and now tracer fields 
     78      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   pta          ! tracer trend  
     79      !! 
    8080      INTEGER ::   ji, jj, jk, jn          ! dummy loop indices 
    8181      INTEGER ::   iku, ikv                ! temporary integers 
     
    104104                  zabe1 = fsahtu(ji,jj,jk) * umask(ji,jj,jk) * e1ur(ji,jj) * fse3u(ji,jj,jk) 
    105105                  zabe2 = fsahtv(ji,jj,jk) * vmask(ji,jj,jk) * e2vr(ji,jj) * fse3v(ji,jj,jk) 
    106                   ztu(ji,jj,jk) = zabe1 * ( ptrab(ji+1,jj  ,jk,jn) - ptrab(ji,jj,jk,jn) ) 
    107                   ztv(ji,jj,jk) = zabe2 * ( ptrab(ji  ,jj+1,jk,jn) - ptrab(ji,jj,jk,jn) ) 
     106                  ztu(ji,jj,jk) = zabe1 * ( ptb(ji+1,jj  ,jk,jn) - ptb(ji,jj,jk,jn) ) 
     107                  ztv(ji,jj,jk) = zabe2 * ( ptb(ji  ,jj+1,jk,jn) - ptb(ji,jj,jk,jn) ) 
    108108               END DO 
    109109            END DO 
     
    116116                     IF( iku == jk ) THEN 
    117117                        zabe1 = fsahtu(ji,jj,iku) * umask(ji,jj,iku) * e1ur(ji,jj) * fse3u(ji,jj,iku) 
    118                         ztu(ji,jj,jk) = zabe1 * pgtu(ji,jj,jn) 
     118                        ztu(ji,jj,jk) = zabe1 * pgu(ji,jj,jn) 
    119119                     ENDIF 
    120120                     IF( ikv == jk ) THEN 
    121121                        zabe2 = fsahtv(ji,jj,ikv) * vmask(ji,jj,ikv) * e2vr(ji,jj) * fse3v(ji,jj,ikv) 
    122                         ztv(ji,jj,jk) = zabe2 * pgtv(ji,jj,jn) 
     122                        ztv(ji,jj,jk) = zabe2 * pgv(ji,jj,jn) 
    123123                     ENDIF 
    124124                  END DO 
     
    136136                     &           + ztv(ji,jj,jk) - ztv(ji,jj-1,jk)  ) 
    137137                  ! add it to the general tracer trends 
    138                   ptraa(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn) + ztra 
     138                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
    139139               END DO 
    140140            END DO 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/tranxt.F90

    r2024 r2034  
    5353#  include "domzgr_substitute.h90" 
    5454   !!---------------------------------------------------------------------- 
    55    !! NEMO/OPA 3.0 , LOCEAN-IPSL (2008)  
     55   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    5656   !! $Id$ 
    5757   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    131131 
    132132      ! Leap-Frog + Asselin filter time stepping 
    133       IF( lk_vvl )   THEN   ;   CALL tra_nxt_vvl( kt , nit000,           & 
    134                                 &                 tsb, tsn   , tsa, jpts )      ! variable volume level (vvl) 
    135       ELSE                  ;   CALL tra_nxt_fix( kt , nit000,           & 
    136                                 &                 tsb, tsn   , tsa, jpts )      ! fixed    volume level 
     133      IF( lk_vvl )   THEN   ;   CALL tra_nxt_vvl( kt, nit000, tsb, tsn, tsa, jpts )  ! variable volume level (vvl)      
     134      ELSE                  ;   CALL tra_nxt_fix( kt, nit000, tsb, tsn, tsa, jpts )  ! fixed    volume level  
    137135      ENDIF 
    138136 
     
    151149            ztrds(:,:,jk) = ( tsb(:,:,jk,jp_sal) - ztrds(:,:,jk) ) * zfact 
    152150         END DO 
    153          CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_atf, ztrdt ) 
    154          CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_atf, ztrds ) 
     151         CALL trd_tra( kt, 'TRA', jp_tem, jpt_trd_atf, ztrdt ) 
     152         CALL trd_tra( kt, 'TRA', jp_sal, jpt_trd_atf, ztrds ) 
    155153         DEALLOCATE( ztrdt )      ;     DEALLOCATE( ztrds )  
    156154      END IF 
     
    162160   END SUBROUTINE tra_nxt 
    163161 
    164    SUBROUTINE tra_nxt_fix( kt   , kit000,              & 
    165       &                    ptrab, ptran , ptraa, kjpt  ) 
     162   SUBROUTINE tra_nxt_fix( kt, kit000,                    & 
     163      &                               ptb, ptn, pta, kjpt  ) 
    166164      !!---------------------------------------------------------------------- 
    167165      !!                   ***  ROUTINE tra_nxt_fix  *** 
     
    188186      INTEGER , INTENT(in   )                               ::  kit000        ! first time-step index 
    189187      INTEGER , INTENT(in   )                               ::  kjpt            ! number of tracers 
    190       REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptrab  ! before tracer fields 
    191       REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptran  ! now tracer fields 
    192       REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptraa         ! tracer trend 
     188      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptb  ! before tracer fields 
     189      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptn  ! now tracer fields 
     190      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  pta         ! tracer trend 
    193191      !! 
    194192      INTEGER  :: ji, jj, jk, jn   ! dummy loop indices 
     
    212210                  DO jj = 1, jpj 
    213211                     DO ji = 1, jpi 
    214                         ptran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn)     ! ptrab <-- ptran 
     212                        ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn)     ! ptb <-- ptn 
    215213                     END DO 
    216214                  END DO 
     
    222220                  DO jj = 1, jpj 
    223221                     DO ji = 1, jpi 
    224                         ztm = 0.25 * ( ptraa(ji,jj,jk,jn) + 2.* ptran(ji,jj,jk,jn) + ptrab(ji,jj,jk,jn) )  ! mean ptra 
    225                         ztf = atfp * ( ptraa(ji,jj,jk,jn) - 2.* ptran(ji,jj,jk,jn) + ptran(ji,jj,jk,jn) )  ! Asselin filter on ptra  
    226                         ptrab(ji,jj,jk,jn) = ptran(ji,jj,jk,jn) + ztf                                      ! ptrab <-- filtered ptran  
    227                         ptran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn)                                            ! ptran <-- ptraa 
    228                         ptraa(ji,jj,jk,jn) = ztm                                                           ! ptraa <-- mean ptra 
     222                        ztm = 0.25 * ( pta(ji,jj,jk,jn) + 2.* ptn(ji,jj,jk,jn) + ptb(ji,jj,jk,jn) )  ! mean pt 
     223                        ztf = atfp * ( pta(ji,jj,jk,jn) - 2.* ptn(ji,jj,jk,jn) + ptn(ji,jj,jk,jn) )  ! Asselin filter on pt  
     224                        ptb(ji,jj,jk,jn) = ptn(ji,jj,jk,jn) + ztf                                      ! ptb <-- filtered ptn  
     225                        ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn)                                            ! ptn <-- pta 
     226                        pta(ji,jj,jk,jn) = ztm                                                           ! pta <-- mean pt 
    229227                     END DO 
    230228                  END DO 
     
    241239                  DO jj = 1, jpj 
    242240                     DO ji = 1, jpi 
    243                         ptran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn)                                             ! ptran <-- ptraa 
     241                        ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn)                                             ! ptn <-- pta 
    244242                     END DO 
    245243                  END DO 
     
    251249                  DO jj = 1, jpj 
    252250                     DO ji = 1, jpi 
    253                         ztf = atfp * ( ptraa(ji,jj,jk,jn) - 2.* ptran(ji,jj,jk,jn) + ptrab(ji,jj,jk,jn) )       ! Asselin filter on t  
    254                         ptrab(ji,jj,jk,jn) = ptran(ji,jj,jk,jn) + ztf                                     ! ptrab <-- filtered ptran  
    255                         ptran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn)                                           ! ptran <-- ptraa 
     251                        ztf = atfp * ( pta(ji,jj,jk,jn) - 2.* ptn(ji,jj,jk,jn) + ptb(ji,jj,jk,jn) )       ! Asselin filter on t  
     252                        ptb(ji,jj,jk,jn) = ptn(ji,jj,jk,jn) + ztf                                     ! ptb <-- filtered ptn  
     253                        ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn)                                           ! ptn <-- pta 
    256254                     END DO 
    257255                  END DO 
     
    264262   END SUBROUTINE tra_nxt_fix 
    265263 
    266  
    267    SUBROUTINE tra_nxt_vvl( kt   , kit000,              & 
    268       &                    ptrab, ptran , ptraa, kjpt  ) 
     264   SUBROUTINE tra_nxt_vvl( kt, kit000,                    & 
     265      &                               ptb, ptn, pta, kjpt  ) 
    269266      !!---------------------------------------------------------------------- 
    270267      !!                   ***  ROUTINE tra_nxt_vvl  *** 
     
    293290      INTEGER , INTENT(in   )                               ::  kit000        ! first time-step index 
    294291      INTEGER , INTENT(in   )                               ::  kjpt            ! number of tracers 
    295       REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptrab  ! before tracer fields 
    296       REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptran  ! now tracer fields 
    297       REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptraa         ! tracer trend 
     292      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptb  ! before tracer fields 
     293      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  ptn  ! now tracer fields 
     294      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)  ::  pta         ! tracer trend 
    298295      !!      
    299296      INTEGER  ::   ji, jj, jk, jn             ! dummy loop indices 
     
    318315                  DO jj = 1, jpj 
    319316                     DO ji = 1, jpi 
    320                         ptran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn)                    ! tn <-- ta 
     317                        ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn)                    ! tn <-- ta 
    321318                     END DO 
    322319                  END DO 
     
    332329                        ze3t_a = fse3t_a(ji,jj,jk) 
    333330                        !                                         ! tracer content at Before, now and after 
    334                         ztcb = ptrab(ji,jj,jk,jn) *  ze3t_b   
    335                         ztcn = ptran(ji,jj,jk,jn) *  ze3t_n   
    336                         ztca = ptraa(ji,jj,jk,jn) *  ze3t_a   
     331                        ztcb = ptb(ji,jj,jk,jn) *  ze3t_b   
     332                        ztcn = ptn(ji,jj,jk,jn) *  ze3t_n   
     333                        ztca = pta(ji,jj,jk,jn) *  ze3t_a   
    337334                        ! 
    338335                        !                                         ! Asselin filter on thickness and tracer content 
     
    349346                        !!gm                 e3t_m(ji,jj,jk) = 0.25 / ze3mr 
    350347                        !                                         ! swap of arrays 
    351                         ptrab(ji,jj,jk,jn) = ztf                             ! ptrab <-- ptran + filter 
    352                         ptran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn)              ! ptran <-- ptraa 
    353                         ptraa(ji,jj,jk,jn) = ztm                             ! ptraa <-- mean t 
     348                        ptb(ji,jj,jk,jn) = ztf                             ! ptb <-- ptn + filter 
     349                        ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn)              ! ptn <-- pta 
     350                        pta(ji,jj,jk,jn) = ztm                             ! pta <-- mean t 
    354351                     END DO 
    355352                  END DO 
     
    366363                  DO jj = 1, jpj                              
    367364                     DO ji = 1, jpi 
    368                         ptran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn)                                 ! tn <-- ta 
     365                        ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn)                                 ! tn <-- ta 
    369366                     END DO 
    370367                  END DO 
     
    381378                        ze3t_a = fse3t_a(ji,jj,jk) 
    382379                        !                                         ! tracer content at Before, now and after 
    383                         ztcb = ptrab(ji,jj,jk,jn) *  ze3t_b   
    384                         ztcn = ptran(ji,jj,jk,jn) *  ze3t_n    
    385                         ztca = ptraa(ji,jj,jk,jn) *  ze3t_a   
     380                        ztcb = ptb(ji,jj,jk,jn) *  ze3t_b   
     381                        ztcn = ptn(ji,jj,jk,jn) *  ze3t_n    
     382                        ztca = pta(ji,jj,jk,jn) *  ze3t_a   
    386383                        ! 
    387384                        !                                         ! Asselin filter on thickness and tracer content 
     
    393390                        ztf   =  ( ztcn  + ztc_f ) * ze3fr 
    394391                        !                                         ! swap of arrays 
    395                         ptrab(ji,jj,jk,jn) = ztf                  ! tb <-- tn filtered 
    396                         ptran(ji,jj,jk,jn) = ptraa(ji,jj,jk,jn)   ! tn <-- ta 
     392                        ptb(ji,jj,jk,jn) = ztf                  ! tb <-- tn filtered 
     393                        ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn)   ! tn <-- ta 
    397394                     END DO 
    398395                  END DO 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traswp.F90

    r2024 r2034  
    1010   PRIVATE 
    1111 
    12    PUBLIC   tra_swap    ! routine called by step.F90 
    13    PUBLIC   tra_unswap    ! routine called by step.F90 
     12   PUBLIC   tra_swap     ! routine called by step.F90 
     13   PUBLIC   tra_unswap   ! routine called by step.F90 
    1414 
    1515   !!---------------------------------------------------------------------- 
    16    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    17    !! $Id: trasbc.F90 1739 2009-11-19 13:24:00Z rblod $ 
     16   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
     17   !! $Id: traswap.F90 2024 2010-07-29 10:57:35Z cetlod $  
    1818   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    1919   !!---------------------------------------------------------------------- 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/trazdf.F90

    r2024 r2034  
    4747#  include "vectopt_loop_substitute.h90" 
    4848   !!---------------------------------------------------------------------- 
    49    !!  OPA 9.0 , LOCEAN-IPSL (2005)  
     49   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010) 
    5050   !! $Id$ 
    5151   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    7979 
    8080      SELECT CASE ( nzdf )                       ! compute lateral mixing trend and add it to the general trend 
    81       CASE ( 0 )    ;    CALL tra_zdf_exp( kt , 'TRA', r2dt, nn_zdfexp,  & 
    82                          &                 tsb, tsa  , jpts              )    !   explicit scheme 
    83       CASE ( 1 )    ;    CALL tra_zdf_imp( kt , 'TRA', r2dt,             & 
    84                          &                 tsb, tsa  , jpts              )    !   implicit scheme 
     81      CASE ( 0 )    ;    CALL tra_zdf_exp( kt , 'TRA', r2dt, nn_zdfexp, tsb, tsa, jpts )  !   explicit scheme  
     82      CASE ( 1 )    ;    CALL tra_zdf_imp( kt , 'TRA', r2dt,            tsb, tsa, jpts )  !   implicit scheme  
    8583      CASE ( -1 )                                       ! esopa: test all possibility with control print 
    86                          CALL tra_zdf_exp( kt , 'TRA', r2dt, nn_zdfexp,  & 
    87                          &                 tsb, tsa  , jpts              )  
    88                          CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' zdf0 - Ta: ', mask1=tmask,               & 
    89                          &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    90                          CALL tra_zdf_imp( kt , 'TRA', r2dt,             & 
    91                          &                 tsb, tsa  , jpts              )  
    92                          CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' zdf1 - Ta: ', mask1=tmask,               & 
    93                          &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     84         CALL tra_zdf_exp( kt , 'TRA', r2dt, nn_zdfexp, tsb, tsa, jpts ) 
     85         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' zdf0 - Ta: ', mask1=tmask,               & 
     86         &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     87         CALL tra_zdf_imp( kt , 'TRA', r2dt,            tsb, tsa, jpts )  
     88         CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' zdf1 - Ta: ', mask1=tmask,               & 
     89         &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
    9490      END SELECT 
    9591 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/trazdf_exp.F90

    r2024 r2034  
    4040#  include "vectopt_loop_substitute.h90" 
    4141   !!---------------------------------------------------------------------- 
    42    !! NEMO/OPA  3.2 , LOCEAN-IPSL (2009)  
     42   !! NEMO/OPA  3.3 , LOCEAN-IPSL (2010)  
    4343   !! $Id$  
    4444   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    4747CONTAINS 
    4848 
    49    SUBROUTINE tra_zdf_exp( kt    , cdtype, p2dt, kn_zdfexp,  & 
    50       &                    ptrab , ptraa , kjpt              ) 
     49   SUBROUTINE tra_zdf_exp( kt, cdtype, p2dt, kn_zdfexp,  & 
     50      &                                ptb , pta      , kjpt ) 
    5151      !!---------------------------------------------------------------------- 
    5252      !!                  ***  ROUTINE tra_zdf_exp  *** 
     
    5757      !! ** Method  : - The after tracer fields due to the vertical diffusion 
    5858      !!      of tracers alone is given by: 
    59       !!                zwx = ptrab + p2dt difft 
    60       !!      where difft = dz( avt dz(ptrab) ) = 1/e3t dk+1( avt/e3w dk(ptrab) ) 
     59      !!                zwx = ptb + p2dt difft 
     60      !!      where difft = dz( avt dz(ptb) ) = 1/e3t dk+1( avt/e3w dk(ptb) ) 
    6161      !!           (if lk_zdfddm=T use avs on salinity and passive tracers instead of avt) 
    6262      !!      difft is evaluated with an Euler split-explit scheme using a 
     
    6565      !!              - the after tracer fields due to the whole trend is  
    6666      !!      obtained in leap-frog environment by : 
    67       !!          ptraa = zwx + p2dt ptraa 
     67      !!          pta = zwx + p2dt pta 
    6868      !!              - in case of variable level thickness (lk_vvl=T) the  
    6969      !!     the leap-frog is applied on thickness weighted tracer. That is: 
    70       !!          ptraa = [ ptrab*e3tb + e3tn*( zwx - ptrab + p2dt ptraa ) ] / e3tn 
     70      !!          pta = [ ptb*e3tb + e3tn*( zwx - ptb + p2dt pta ) ] / e3tn 
    7171      !! 
    7272      !! ** Action : - after tracer fields pta 
    7373      !!--------------------------------------------------------------------- 
    74       !! * Arguments 
     74      !!  
    7575      INTEGER         , INTENT(in   )                                ::   kt          ! ocean time-step index 
    7676      CHARACTER(len=3), INTENT(in   )                                ::   cdtype      ! =TRA or TRC (tracer indicator) 
     
    7878      INTEGER         , INTENT(in   )                                ::   kn_zdfexp   ! number of sub-time step 
    7979      REAL(wp)        , INTENT(in   ), DIMENSION(jpk)                ::   p2dt        ! vertical profile of tracer time-step 
    80       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptrab       ! before and now tracer fields 
    81       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptraa       ! tracer trend  
    82       !! * Local declarations 
     80      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptb       ! before and now tracer fields 
     81      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   pta       ! tracer trend  
     82      !!  
    8383      INTEGER  ::  ji, jj, jk, jn, jl        ! dummy loop indices 
    8484      REAL(wp) ::  zlavmr, zave3r, ze3tr     ! temporary scalars 
     
    103103         zwy(:,:,jpk) = 0.e0     ! bottom  boundary conditions: no flux 
    104104         ! 
    105          zwx(:,:,:)   = ptrab(:,:,:,jn)  ! zwx array set to before tracer values 
     105         zwx(:,:,:)   = ptb(:,:,:,jn)  ! zwx array set to before tracer values 
    106106 
    107107         ! Split-explicit loop  (after tracer due to the vertical diffusion alone) 
     
    141141                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    142142                     ze3tb = fse3t_b(ji,jj,jk) / fse3t(ji,jj,jk)                          ! before e3t 
    143                      ztra  = zwx(ji,jj,jk) - ptrab(ji,jj,jk,jn) + p2dt(jk) * ptraa(ji,jj,jk,jn)       ! total trends * 2*rdt  
    144                      ptraa(ji,jj,jk,jn) = ( ze3tb * ptrab(ji,jj,jk,jn) + ztra ) * tmask(ji,jj,jk) 
     143                     ztra  = zwx(ji,jj,jk) - ptb(ji,jj,jk,jn) + p2dt(jk) * pta(ji,jj,jk,jn)       ! total trends * 2*rdt  
     144                     pta(ji,jj,jk,jn) = ( ze3tb * ptb(ji,jj,jk,jn) + ztra ) * tmask(ji,jj,jk) 
    145145                  END DO 
    146146               END DO 
     
    150150               DO jj = 2, jpjm1  
    151151                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    152                      ptraa(ji,jj,jk,jn) = ( zwx(ji,jj,jk) + p2dt(jk) * ptraa(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
     152                     pta(ji,jj,jk,jn) = ( zwx(ji,jj,jk) + p2dt(jk) * pta(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
    153153                  END DO 
    154154               END DO 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r2024 r2034  
    4343#  include "vectopt_loop_substitute.h90" 
    4444   !!---------------------------------------------------------------------- 
    45    !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
     45   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    4646   !! $Id$ 
    4747   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     
    4949CONTAINS 
    5050  
    51    SUBROUTINE tra_zdf_imp( kt    , cdtype, p2dt,    & 
    52       &                    ptrab , ptraa , kjpt     ) 
     51   SUBROUTINE tra_zdf_imp( kt, cdtype, p2dt, ptb, pta, kjpt )  
    5352      !!---------------------------------------------------------------------- 
    5453      !!                  ***  ROUTINE tra_zdf_imp  *** 
     
    8988      !! 
    9089      !!--------------------------------------------------------------------- 
    91       !! * Modules used 
     90      !!  
    9291      USE oce    , ONLY :   zwd   => ua   ! ua used as workspace 
    9392      USE oce    , ONLY :   zws   => va   ! va  -          - 
    94       !! * Arguments 
     93      !!  
    9594      INTEGER         , INTENT(in   )                                ::   kt             ! ocean time-step index 
    9695      CHARACTER(len=3), INTENT(in   )                                ::   cdtype         ! =TRA or TRC (tracer indicator) 
    9796      INTEGER         , INTENT(in   )                                ::   kjpt            ! number of tracers 
    9897      REAL(wp)        , INTENT(in   ), DIMENSION(jpk)                ::   p2dt        ! vertical profile of tracer time-step 
    99       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptrab          ! before and now tracer fields 
    100       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptraa          ! tracer trend  
     98      REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptb          ! before and now tracer fields 
     99      REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   pta          ! tracer trend  
    101100      !! 
    102101      INTEGER  ::  ji, jj, jk, jn        ! dummy loop indices 
     
    265264               ze3tb = ( 1. - znvvl ) + znvvl * fse3t_b(ji,jj,1) 
    266265               ze3tn = ( 1. - znvvl ) + znvvl * fse3t(ji,jj,1) 
    267                ptraa(ji,jj,1,jn) = ze3tb * ptrab(ji,jj,1,jn) + p2dt(1) * ze3tn * ptraa(ji,jj,1,jn) 
     266               pta(ji,jj,1,jn) = ze3tb * ptb(ji,jj,1,jn) + p2dt(1) * ze3tn * pta(ji,jj,1,jn) 
    268267            END DO 
    269268         END DO 
     
    273272                  ze3tb = ( 1. - znvvl ) + znvvl * fse3t_b(ji,jj,jk) 
    274273                  ze3tn = ( 1. - znvvl ) + znvvl * fse3t  (ji,jj,jk) 
    275                   zrhs = ze3tb * ptrab(ji,jj,jk,jn) + p2dt(jk) * ze3tn * ptraa(ji,jj,jk,jn)   ! zrhs=right hand side  
    276                   ptraa(ji,jj,jk,jn) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * ptraa(ji,jj,jk-1,jn) 
     274                  zrhs = ze3tb * ptb(ji,jj,jk,jn) + p2dt(jk) * ze3tn * pta(ji,jj,jk,jn)   ! zrhs=right hand side  
     275                  pta(ji,jj,jk,jn) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pta(ji,jj,jk-1,jn) 
    277276               END DO 
    278277            END DO 
     
    284283         DO jj = 2, jpjm1 
    285284            DO ji = fs_2, fs_jpim1 
    286                ptraa(ji,jj,jpkm1,jn) = ptraa(ji,jj,jpkm1,jn) / zwt(ji,jj,jpkm1) * tmask(ji,jj,jpkm1) 
     285               pta(ji,jj,jpkm1,jn) = pta(ji,jj,jpkm1,jn) / zwt(ji,jj,jpkm1) * tmask(ji,jj,jpkm1) 
    287286            END DO 
    288287         END DO 
     
    290289            DO jj = 2, jpjm1 
    291290               DO ji = fs_2, fs_jpim1 
    292                   ptraa(ji,jj,jk,jn) = ( ptraa(ji,jj,jk,jn) - zws(ji,jj,jk) * ptraa(ji,jj,jk+1,jn) ) & 
     291                  pta(ji,jj,jk,jn) = ( pta(ji,jj,jk,jn) - zws(ji,jj,jk) * pta(ji,jj,jk+1,jn) ) & 
    293292                  &                    / zwt(ji,jj,jk) * tmask(ji,jj,jk) 
    294293               END DO 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcadv.F90

    r2030 r2034  
    3939#  include "vectopt_loop_substitute.h90" 
    4040   !!---------------------------------------------------------------------- 
    41    !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
    42    !! $Id: trcadv.F90 1601 2009-08-11 10:09:19Z ctlod $  
     41   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
     42   !! $Id: trcadv.F90 2024 2010-07-29 10:57:35Z cetlod $  
    4343   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4444   !!---------------------------------------------------------------------- 
     
    7676      !                                                   ! add the eiv transport (if necessary) 
    7777      IF( lk_traldf_eiv )   CALL tra_adv_eiv( kt, zun, zvn, zwn, 'TRC' ) 
    78  
    79       SELECT CASE ( nadv )                           ! compute advection trend and add it to general trend 
    80       CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt , 'TRC', zun, zvn, zwn, & 
    81                         &                    trb, trn  , tra, jptra     )    !  2nd order centered scheme 
    82       CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt , 'TRC', zun, zvn, zwn, & 
    83                         &                    trb, trn  , tra, jptra     )    !  TVD scheme 
    84       CASE ( 3 )   ;    CALL tra_adv_muscl ( kt , 'TRC', zun, zvn, zwn, & 
    85                         &                    trb, tra  , jptra          )    !  MUSCL scheme 
    86       CASE ( 4 )   ;    CALL tra_adv_muscl2( kt , 'TRC', zun, zvn, zwn, & 
    87                         &                    trb, trn  , tra, jptra     )    !  MUSCL2 scheme 
    88       CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt , 'TRC', zun, zvn, zwn, & 
    89                         &                    trb, trn  , tra, jptra     )    !  UBS scheme 
    90       CASE ( 6 )   ;    CALL tra_adv_qck   ( kt , 'TRC', zun, zvn, zwn, & 
    91                         &                    trb, trn  , tra, jptra     )    !  QUICKEST scheme 
    9278      ! 
    93       CASE (-1 )                                                     ! esopa: test all possibility with control print 
    94                         CALL tra_adv_cen2  ( kt , 'TRC', zun, zvn, zwn, & 
    95                         &                    trb, trn  , tra, jptra     ) 
    96                         WRITE(charout, FMT="('adv1')")  ; CALL prt_ctl_trc_info(charout) 
    97                                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    98                         ! 
    99                         CALL tra_adv_tvd   ( kt , 'TRC', zun, zvn, zwn, & 
    100                         &                    trb, trn  , tra, jptra     ) 
    101                         WRITE(charout, FMT="('adv2')")  ; CALL prt_ctl_trc_info(charout) 
    102                                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    103                         ! 
    104                         CALL tra_adv_muscl ( kt , 'TRC', zun, zvn, zwn, & 
    105                         &                    trb,        tra, jptra     ) 
    106                         WRITE(charout, FMT="('adv3')")  ; CALL prt_ctl_trc_info(charout) 
    107                                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    108                         ! 
    109                         CALL tra_adv_muscl2( kt , 'TRC', zun, zvn, zwn, & 
    110                         &                    trb, trn  , tra, jptra     ) 
    111                         WRITE(charout, FMT="('adv4')")  ; CALL prt_ctl_trc_info(charout) 
    112                                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    113                         ! 
    114                         CALL tra_adv_ubs   ( kt , 'TRC', zun, zvn, zwn, & 
    115                         &                    trb, trn  , tra, jptra     ) 
    116                         WRITE(charout, FMT="('adv5')")  ; CALL prt_ctl_trc_info(charout) 
    117                                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    118                         ! 
    119                         CALL tra_adv_qck   ( kt , 'TRC', zun, zvn, zwn, & 
    120                         &                    trb, trn  , tra, jptra     ) 
    121                         WRITE(charout, FMT="('adv6')")  ; CALL prt_ctl_trc_info(charout) 
    122                                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
    123                         ! 
     79      SELECT CASE ( nadv )                            !==  compute advection trend and add it to general trend  ==! 
     80      CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  2nd order centered 
     81      CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  TVD  
     82      CASE ( 3 )   ;    CALL tra_adv_muscl ( kt, 'TRC', zun, zvn, zwn, trb,      tra, jptra )   !  MUSCL  
     83      CASE ( 4 )   ;    CALL tra_adv_muscl2( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  MUSCL2  
     84      CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  UBS  
     85      CASE ( 6 )   ;    CALL tra_adv_qck   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )   !  QUICKEST  
     86      ! 
     87      CASE (-1 )                                      !==  esopa: test all possibility with control print  ==! 
     88         CALL tra_adv_cen2  ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     89         WRITE(charout, FMT="('adv1')")  ; CALL prt_ctl_trc_info(charout) 
     90                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
     91         CALL tra_adv_tvd   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     92         WRITE(charout, FMT="('adv2')")  ; CALL prt_ctl_trc_info(charout) 
     93                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
     94         CALL tra_adv_muscl ( kt, 'TRC', zun, zvn, zwn, trb,      tra, jptra )           
     95         WRITE(charout, FMT="('adv3')")  ; CALL prt_ctl_trc_info(charout) 
     96                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
     97         CALL tra_adv_muscl2( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     98         WRITE(charout, FMT="('adv4')")  ; CALL prt_ctl_trc_info(charout) 
     99                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
     100         CALL tra_adv_ubs   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     101         WRITE(charout, FMT="('adv5')")  ; CALL prt_ctl_trc_info(charout) 
     102                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
     103         CALL tra_adv_qck   ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )           
     104         WRITE(charout, FMT="('adv6')")  ; CALL prt_ctl_trc_info(charout) 
     105                                           CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 
     106         ! 
    124107      END SELECT 
    125108 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcbbl.F90

    r2030 r2034  
    3434#  include "top_substitute.h90" 
    3535   !!---------------------------------------------------------------------- 
    36    !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)  
     36   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    3737   !! $Id$  
    3838   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcldf.F90

    r2030 r2034  
    4141#  include "vectopt_loop_substitute.h90" 
    4242   !!---------------------------------------------------------------------- 
    43    !!   OPA 9.0 , LOCEAN-IPSL (2006)  
    44    !! $Id: traldf.F90 1601 2009-08-11 10:09:19Z ctlod $  
     43   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
     44   !! $Id: trcldf.F90 2024 2010-07-29 10:57:35Z cetlod $  
    4545   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4646   !!---------------------------------------------------------------------- 
     
    7070 
    7171      SELECT CASE ( nldf )                       ! compute lateral mixing trend and add it to the general trend 
    72       CASE ( 0 )   ;   CALL tra_ldf_lap   ( kt , 'TRC', gtru , gtrv,        & 
    73                        &                    trb, tra  , jptra               )   ! iso-level laplacian 
    74       CASE ( 1 )   ;   CALL tra_ldf_iso   ( kt , 'TRC', gtru , gtrv,        & 
    75                        &                    trb, tra  , jptra, rn_ahtrb_0   )   ! rotated laplacian  
    76       CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt , 'TRC', gtru , gtrv,        & 
    77                        &                    trb, tra  , jptra               )   ! iso-level bilaplacian 
    78       CASE ( 3 )   ;   CALL tra_ldf_bilapg( kt , 'TRC', trb, tra, jptra     )      ! s-coord. horizontal bilaplacian 
     72      CASE ( 0 )   ;   CALL tra_ldf_lap   ( kt , 'TRC', gtru, gtrv, trb, tra, jptra            )  ! iso-level laplacian 
     73      CASE ( 1 )   ;   CALL tra_ldf_iso   ( kt , 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 )  ! rotated laplacian  
     74      CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt , 'TRC', gtru, gtrv, trb, tra, jptra            )  ! iso-level bilaplacian 
     75      CASE ( 3 )   ;   CALL tra_ldf_bilapg( kt , 'TRC',             trb, tra, jptra            )  ! s-coord. horizontal bilaplacian 
    7976         ! 
    8077      CASE ( -1 )                                     ! esopa: test all possibility with control print 
    81                        CALL tra_ldf_lap   ( kt , 'TRC', gtru, gtrv,         & 
    82                        &                    trb, tra  , jptra               ) 
    83                        WRITE(charout, FMT="('ldf0 ')") ;  CALL prt_ctl_trc_info(charout) 
    84                                                           CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    85          ! 
    86                        CALL tra_ldf_iso   ( kt , 'TRC', gtru , gtrv,        & 
    87                        &                    trb, tra  , jptra, rn_ahtrb_0   ) 
    88                        WRITE(charout, FMT="('ldf1 ')") ;  CALL prt_ctl_trc_info(charout) 
    89                                                           CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    90          ! 
    91                        CALL tra_ldf_bilap ( kt , 'TRC', gtru , gtrv,        & 
    92                        &                    trb, tra  , jptra               ) 
    93                        WRITE(charout, FMT="('ldf2 ')") ;  CALL prt_ctl_trc_info(charout) 
    94                                                           CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    95          ! 
    96                        CALL tra_ldf_bilapg( kt, 'TRC', trb, tra , jptra     ) 
    97                        WRITE(charout, FMT="('ldf3 ')") ;  CALL prt_ctl_trc_info(charout) 
    98                                                           CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
     78         CALL tra_ldf_lap   ( kt , 'TRC', gtru, gtrv, trb, tra, jptra            ) 
     79         WRITE(charout, FMT="('ldf0 ')") ;  CALL prt_ctl_trc_info(charout) 
     80                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
     81         CALL tra_ldf_iso   ( kt , 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) 
     82         WRITE(charout, FMT="('ldf1 ')") ;  CALL prt_ctl_trc_info(charout) 
     83                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
     84         CALL tra_ldf_bilap ( kt , 'TRC', gtru, gtrv, trb, tra, jptra            ) 
     85         WRITE(charout, FMT="('ldf2 ')") ;  CALL prt_ctl_trc_info(charout) 
     86                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
     87         CALL tra_ldf_bilapg( kt , 'TRC',             trb, tra, jptra            ) 
     88         WRITE(charout, FMT="('ldf3 ')") ;  CALL prt_ctl_trc_info(charout) 
     89                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    9990      END SELECT 
    10091      ! 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcnxt.F90

    r2030 r2034  
    120120 
    121121      ! Leap-Frog + Asselin filter time stepping 
    122       IF( lk_vvl ) THEN   ;   CALL tra_nxt_vvl( kt , nittrc000,      & 
    123                               &                 trb, trn, tra, jptra )      ! variable volume level (vvl) 
    124       ELSE                ;   CALL tra_nxt_fix( kt , nittrc000,      & 
    125                               &                 trb, trn, tra, jptra )      ! fixed    volume level 
     122      IF( lk_vvl ) THEN   ;   CALL tra_nxt_vvl( kt, nittrc000, trb, trn, tra, jptra )      ! variable volume level (vvl)  
     123      ELSE                ;   CALL tra_nxt_fix( kt, nittrc000, trb, trn, tra, jptra )      ! fixed    volume level  
    126124      ENDIF 
    127125 
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trczdf.F90

    r2030 r2034  
    4141#  include "vectopt_loop_substitute.h90" 
    4242   !!---------------------------------------------------------------------- 
    43    !!  OPA 9.0 , LOCEAN-IPSL (2005)  
    44    !! $Id: trazdf.F90 1533 2009-07-24 09:54:48Z ctlod $ 
     43   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
     44   !! $Id: trcldf.F90 2024 2010-07-29 10:57:35Z cetlod $  
    4545   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4646   !!---------------------------------------------------------------------- 
     
    7676      SELECT CASE ( nzdf )                       ! compute lateral mixing trend and add it to the general trend 
    7777      CASE ( -1 )                                       ! esopa: test all possibility with control print 
    78                     CALL tra_zdf_exp( kt , 'TRC', r2dt, nn_trczdf_exp,  & 
    79                     &                 trb, tra, jptra                   )  
    80                     WRITE(charout, FMT="('zdf1 ')") ;  CALL prt_ctl_trc_info(charout) 
    81                                                        CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    82                     ! 
    83                     CALL tra_zdf_imp( kt , 'TRC', r2dt,                 & 
    84                     &                 trb, tra, jptra                   )  
    85                     WRITE(charout, FMT="('zdf2 ')") ;  CALL prt_ctl_trc_info(charout) 
    86                                                        CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    87       CASE ( 0 ) ;  CALL tra_zdf_exp( kt , 'TRC', r2dt, nn_trczdf_exp,  & 
    88                     &                 trb, tra  , jptra                 )    !   explicit scheme 
    89       CASE ( 1 ) ;  CALL tra_zdf_imp( kt , 'TRC', r2dt,                 & 
    90                     &                 trb, tra  , jptra                 )    !   implicit scheme 
     78         CALL tra_zdf_exp( kt , 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra )  
     79         WRITE(charout, FMT="('zdf1 ')") ;  CALL prt_ctl_trc_info(charout) 
     80                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
     81         CALL tra_zdf_imp( kt , 'TRC', r2dt,                trb, tra, jptra )  
     82         WRITE(charout, FMT="('zdf2 ')") ;  CALL prt_ctl_trc_info(charout) 
     83                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
     84      CASE ( 0 ) ;  CALL tra_zdf_exp( kt , 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra )    !   explicit scheme  
     85      CASE ( 1 ) ;  CALL tra_zdf_imp( kt , 'TRC', r2dt,                trb, tra, jptra )    !   implicit scheme           
    9186 
    9287      END SELECT 
Note: See TracChangeset for help on using the changeset viewer.