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/DYN/dynnxt.F90 – NEMO

Ignore:
Timestamp:
2011-12-11T16:00:26+01:00 (12 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/DYN/dynnxt.F90

    r2723 r3211  
    4949   PUBLIC    dyn_nxt   ! routine called by step.F90 
    5050 
     51   !! * Control permutation of array indices 
     52#  include "oce_ftrans.h90" 
     53#  include "dom_oce_ftrans.h90" 
     54#  include "sbc_oce_ftrans.h90" 
     55#  include "domvvl_ftrans.h90" 
     56#  include "obc_oce_ftrans.h90" 
     57 
    5158   !! * Substitutions 
    5259#  include "domzgr_substitute.h90" 
     
    95102      USE oce     , ONLY:   ze3u_f => ta       , ze3v_f => sa       ! (ta,sa) used as 3D workspace 
    96103      USE wrk_nemo, ONLY:   zs_t   => wrk_2d_1 , zs_u_1 => wrk_2d_2 , zs_v_1 => wrk_2d_3 
     104      !! DCSE_NEMO: need additional directives for renamed module variables 
     105!FTRANS ze3u_f :I :I :z 
     106!FTRANS ze3v_f :I :I :z 
    97107      ! 
    98108      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
     
    214224      ! ------------------------------------------ 
    215225      IF( neuler == 0 .AND. kt == nit000 ) THEN        !* Euler at first time-step: only swap 
     226#if defined key_z_first 
     227         DO jj = 1, jpj 
     228            DO ji = 1, jpi 
     229               DO jk = 1, jpkm1 
     230                  un(ji,jj,jk) = ua(ji,jj,jk)                ! un <-- ua 
     231                  vn(ji,jj,jk) = va(ji,jj,jk) 
     232               END DO 
     233            END DO 
     234         END DO 
     235#else 
    216236         DO jk = 1, jpkm1 
    217237            un(:,:,jk) = ua(:,:,jk)                          ! un <-- ua 
    218238            vn(:,:,jk) = va(:,:,jk) 
    219239         END DO 
     240#endif 
    220241      ELSE                                             !* Leap-Frog : Asselin filter and swap 
    221242         !                                ! =============! 
    222243         IF( .NOT. lk_vvl ) THEN          ! Fixed volume ! 
    223244            !                             ! =============! 
     245#if defined key_z_first 
     246            DO jj = 1, jpj 
     247               DO ji = 1, jpi     
     248                  DO jk = 1, jpkm1                               
     249#else 
    224250            DO jk = 1, jpkm1                               
    225251               DO jj = 1, jpj 
    226252                  DO ji = 1, jpi     
     253#endif 
    227254                     zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2.e0 * un(ji,jj,jk) + ua(ji,jj,jk) ) 
    228255                     zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2.e0 * vn(ji,jj,jk) + va(ji,jj,jk) ) 
     
    247274            ! Add volume filter correction only at the first level of t-point scale factors 
    248275            zec = atfp * rdt / rau0 
     276#if defined key_z_first 
     277            fse3t_b(:,:,1) = fse3t_b(:,:,1) - zec * ( emp_b(:,:) - emp(:,:) ) * tmask_1(:,:) 
     278#else 
    249279            fse3t_b(:,:,1) = fse3t_b(:,:,1) - zec * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
     280#endif 
    250281            ! surface at t-points and inverse surface at (u/v)-points used in surface averaging computations 
    251282            zs_t  (:,:) =       e1t(:,:) * e2t(:,:) 
     
    257288               ! ----------------------------------- 
    258289               ! Scale factor anomaly at (u/v)-points: surface averaging of scale factor at t-points 
     290#if defined key_z_first 
     291               DO jj = 1, jpjm1 
     292                  DO ji = 1, jpim1 
     293                     DO jk = 1, jpkm1 
     294#else 
    259295               DO jk = 1, jpkm1 
    260296                  DO jj = 1, jpjm1 
    261297                     DO ji = 1, jpim1 
     298#endif 
    262299                        zv_t_ij           = zs_t(ji  ,jj  ) * fse3t_b(ji  ,jj  ,jk) 
    263300                        zv_t_ip1j         = zs_t(ji+1,jj  ) * fse3t_b(ji+1,jj  ,jk) 
     
    276313               ! Leap-Frog - Asselin filter and swap: applied on velocity 
    277314               ! ----------------------------------- 
     315#if defined key_z_first 
     316               DO jj = 1, jpj 
     317                  DO ji = 1, jpi 
     318                     DO jk = 1, jpkm1 
     319#else 
    278320               DO jk = 1, jpkm1 
    279321                  DO jj = 1, jpj 
    280322                     DO ji = 1, jpi 
     323#endif 
    281324                        zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2.e0 * un(ji,jj,jk) + ua(ji,jj,jk) ) 
    282325                        zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2.e0 * vn(ji,jj,jk) + va(ji,jj,jk) ) 
     
    294337               !----------------------------------------------- 
    295338               ! Scale factor anomaly at (u/v)-points: surface averaging of scale factor at t-points 
     339#if defined key_z_first 
     340               DO jj = 1, jpjm1 
     341                  DO ji = 1, jpim1 
     342                     DO jk = 1, jpkm1 
     343#else 
    296344               DO jk = 1, jpkm1 
    297345                  DO jj = 1, jpjm1 
    298346                     DO ji = 1, jpim1 
     347#endif 
    299348                        zv_t_ij          = zs_t(ji  ,jj  ) * fse3t_b(ji  ,jj  ,jk) 
    300349                        zv_t_ip1j        = zs_t(ji+1,jj  ) * fse3t_b(ji+1,jj  ,jk) 
     
    313362               ! Leap-Frog - Asselin filter and swap: applied on thickness weighted velocity 
    314363               ! -----------------------------------             =========================== 
     364#if defined key_z_first 
     365               DO jj = 1, jpj 
     366                  DO ji = 1, jpim1 
     367                     DO jk = 1, jpkm1 
     368#else 
    315369               DO jk = 1, jpkm1 
    316370                  DO jj = 1, jpj 
    317371                     DO ji = 1, jpim1 
     372#endif 
    318373                        zue3a = ua(ji,jj,jk) * fse3u_a(ji,jj,jk) 
    319374                        zve3a = va(ji,jj,jk) * fse3v_a(ji,jj,jk) 
Note: See TracChangeset for help on using the changeset viewer.