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 3211 for branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90 – NEMO

Ignore:
Timestamp:
2011-12-11T16:00:26+01:00 (13 years ago)
Author:
spickles2
Message:

Stephen Pickles, 11 Dec 2011

Commit to bring the rest of the DCSE NEMO development branch
in line with the latest development version. This includes
array index re-ordering of all OPA_SRC/.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90

    r2715 r3211  
    3636 
    3737   PUBLIC   tra_zdf_exp   ! routine called by step.F90 
     38 
     39   !! * Control permutation of array indices 
     40#  include "oce_ftrans.h90" 
     41#  include "dom_oce_ftrans.h90" 
     42#  include "domvvl_ftrans.h90" 
     43#  include "zdf_oce_ftrans.h90" 
     44#  include "zdfddm_ftrans.h90" 
     45#  include "trc_oce_ftrans.h90" 
    3846 
    3947   !! * Substitutions 
     
    7583      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    7684      USE wrk_nemo, ONLY:   zwx => wrk_3d_6, zwy => wrk_3d_7     ! 3D workspace 
     85 
     86      !! DCSE_NEMO: need additional directives for renamed module variables 
     87!FTRANS zwx zwy :I :I :z 
    7788      ! 
    7889      INTEGER                              , INTENT(in   ) ::   kt          ! ocean time-step index 
     
    8192      INTEGER                              , INTENT(in   ) ::   kn_zdfexp   ! number of sub-time step 
    8293      REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt        ! vertical profile of tracer time-step 
    83       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb         ! before and now tracer fields 
    84       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta         ! tracer trend  
     94 
     95      !! DCSE_NEMO: This style defeats ftrans 
     96!     REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb         ! before and now tracer fields 
     97!     REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta         ! tracer trend  
     98 
     99!FTRANS ptb pta :I :I :z : 
     100      REAL(wp), INTENT(in   ) ::   ptb(jpi,jpj,jpk,kjpt)         ! before and now tracer fields 
     101      REAL(wp), INTENT(inout) ::   pta(jpi,jpj,jpk,kjpt)         ! tracer trend  
    85102      ! 
    86103      INTEGER  ::  ji, jj, jk, jn, jl        ! dummy loop indices 
     
    116133         DO jl = 1, kn_zdfexp 
    117134            !                     ! first vertical derivative 
     135#if defined key_z_first 
     136            DO jj = 2, jpjm1  
     137               DO ji = 2, jpim1   ! vector opt. 
     138                  DO jk = 2, jpk 
     139#else 
    118140            DO jk = 2, jpk 
    119141               DO jj = 2, jpjm1  
    120142                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     143#endif 
    121144                     zave3r = 1.e0 / fse3w_n(ji,jj,jk)  
    122145                     IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN  ! temperature : use of avt 
     
    129152            END DO 
    130153            ! 
     154#if defined key_z_first 
     155            ! second vertical derivative   ==> tracer at kt+l*2*rdt/nn_zdfexp 
     156            DO jj = 2, jpjm1  
     157               DO ji = 2, jpim1 
     158                  DO jk = 1, jpkm1 
     159#else 
    131160            DO jk = 1, jpkm1      ! second vertical derivative   ==> tracer at kt+l*2*rdt/nn_zdfexp 
    132161               DO jj = 2, jpjm1  
    133162                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     163#endif 
    134164                     ze3tr = zlavmr / fse3t_n(ji,jj,jk) 
    135165                     zwx(ji,jj,jk) = zwx(ji,jj,jk) + p2dt(jk) * ( zwy(ji,jj,jk) - zwy(ji,jj,jk+1) ) * ze3tr 
     
    143173         ! ------------------------------ 
    144174         IF( lk_vvl ) THEN          ! variable level thickness : leap-frog on tracer*e3t 
     175#if defined key_z_first 
     176            DO jj = 2, jpjm1  
     177               DO ji = 2, jpim1 
     178                  DO jk = 1, jpkm1 
     179#else 
    145180            DO jk = 1, jpkm1 
    146181               DO jj = 2, jpjm1  
    147182                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     183#endif 
    148184                     ze3tb = fse3t_b(ji,jj,jk) / fse3t(ji,jj,jk)                          ! before e3t 
    149185                     ztra  = zwx(ji,jj,jk) - ptb(ji,jj,jk,jn) + p2dt(jk) * pta(ji,jj,jk,jn)       ! total trends * 2*rdt  
     
    153189            END DO 
    154190         ELSE                       ! fixed level thickness : leap-frog on tracers 
     191#if defined key_z_first 
     192            DO jj = 2, jpjm1  
     193               DO ji = 2, jpim1 
     194                  DO jk = 1, jpkm1 
     195#else 
    155196            DO jk = 1, jpkm1 
    156197               DO jj = 2, jpjm1  
    157198                  DO ji = fs_2, fs_jpim1   ! vector opt. 
     199#endif 
    158200                     pta(ji,jj,jk,jn) = ( zwx(ji,jj,jk) + p2dt(jk) * pta(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
    159201                  END DO 
Note: See TracChangeset for help on using the changeset viewer.