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/DOM/istate.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/DOM/istate.F90

    r2715 r3211  
    5050   PUBLIC   istate_init   ! routine called by step.F90 
    5151 
     52   !! * Control permutation of array indices 
     53#  include "oce_ftrans.h90" 
     54#  include "dom_oce_ftrans.h90" 
     55#  include "ldftra_oce_ftrans.h90" 
     56#  include "zdf_oce_ftrans.h90" 
     57#  include "dtatem_ftrans.h90" 
     58#  include "dtasal_ftrans.h90" 
     59#  include "domvvl_ftrans.h90" 
     60 
    5261   !! * Substitutions 
    5362#  include "domzgr_substitute.h90" 
     
    6776      !!---------------------------------------------------------------------- 
    6877      ! - ML - needed for initialization of e3t_b 
    69       INTEGER  ::  jk     ! dummy loop indice 
     78      INTEGER  ::  ji, jj, jk     ! dummy loop indices 
    7079 
    7180      IF(lwp) WRITE(numout,*) 
     
    134143         ! - ML - sshn could be modified by istate_eel, so that initialization of fse3t_b is done here 
    135144         IF( lk_vvl ) THEN 
     145#if defined key_z_first 
     146            fse3t_b(:,:,:) = fse3t_n(:,:,:) 
     147#else 
    136148            DO jk = 1, jpk 
    137149               fse3t_b(:,:,jk) = fse3t_n(:,:,jk) 
    138150            ENDDO 
     151#endif 
    139152         ENDIF 
    140153         !  
     
    169182      IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
    170183      ! 
     184#if defined key_z_first 
     185      DO jj = 1, jpj 
     186         DO ji = 1, jpi 
     187            DO jk = 1, jpk 
     188#else 
    171189      DO jk = 1, jpk 
    172190         DO jj = 1, jpj 
    173191            DO ji = 1, jpi 
     192#endif 
    174193               tn(ji,jj,jk) = (  ( ( 7.5 - 0.*ABS(gphit(ji,jj))/30. )   & 
    175194                  &               *( 1.-TANH((fsdept(ji,jj,jk)-80.)/30.) )   & 
     
    253272            zcst   = ( zt1 * ( zh1 - zh2) - ( zt1 - zt2 ) * zh1 ) / ( zh1 - zh2 ) 
    254273            ! 
     274#if defined key_z_first 
     275            DO jj = 1, jpj 
     276               DO ji = 1, jpi 
     277                  DO jk = 1, jpk 
     278                     tn(ji,jj,jk) = ( zt2 + zt1 * exp( - fsdept(ji,jj,jk) / 1000 ) ) * tmask(ji,jj,jk) 
     279                     tb(ji,jj,jk) = tn(ji,jj,jk) 
     280                  END DO 
     281               END DO 
     282            END DO 
     283#else 
    255284            DO jk = 1, jpk 
    256285               tn(:,:,jk) = ( zt2 + zt1 * exp( - fsdept(:,:,jk) / 1000 ) ) * tmask(:,:,jk) 
    257286               tb(:,:,jk) = tn(:,:,jk) 
    258287            END DO 
     288#endif 
    259289            ! 
    260290            IF(lwp) CALL prizre( tn    , jpi   , jpj   , jpk   , jpj/2 ,   & 
     
    294324            DO jj = 1, nlcj 
    295325               DO ji = 1, nlci 
     326#if defined key_z_first 
     327                  sshb(ji,jj) = zssh( mig(ji) , mjg(jj) ) * tmask_1(ji,jj) 
     328#else 
    296329                  sshb(ji,jj) = zssh( mig(ji) , mjg(jj) ) * tmask(ji,jj,1) 
     330#endif 
    297331               END DO 
    298332            END DO 
     
    374408         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
    375409 
     410#if defined key_z_first 
     411         DO jj = 1, jpj 
     412            DO ji = 1, jpi 
     413               DO jk = 1, jpk 
     414#else 
    376415         DO jk = 1, jpk 
    377416            DO jj = 1, jpj 
    378417               DO ji = 1, jpi 
     418#endif 
    379419                  tn(ji,jj,jk) = (  16. - 12. * TANH( (fsdept(ji,jj,jk) - 400) / 700 )         )   & 
    380420                       &           * (-TANH( (500-fsdept(ji,jj,jk)) / 150 ) + 1) / 2               & 
     
    448488      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    449489      USE wrk_nemo, ONLY:   zprn => wrk_3d_1    ! 3D workspace 
     490      !! DCSE_NEMO: wrk_3d_1 renamed, need additional directive 
     491!FTRANS zprn :I :I :z 
    450492 
    451493      USE dynspg          ! surface pressure gradient             (dyn_spg routine) 
     
    473515      zprn(:,:,1) = zalfg * fse3w(:,:,1) * ( 1 + rhd(:,:,1) )       ! Surface value 
    474516 
     517#if defined key_z_first 
     518      DO jj = 1, jpj 
     519         DO ji = 1, jpi 
     520            DO jk = 2, jpkm1                                        ! Vertical integration from the surface 
     521               zprn(ji,jj,jk) = zprn(ji,jj,jk-1)   & 
     522                  &           + zalfg * fse3w(ji,jj,jk) * ( 2. + rhd(ji,jj,jk) + rhd(ji,jj,jk-1) ) 
     523            END DO   
     524         END DO   
     525      END DO   
     526#else 
    475527      DO jk = 2, jpkm1                                              ! Vertical integration from the surface 
    476528         zprn(:,:,jk) = zprn(:,:,jk-1)   & 
    477529            &         + zalfg * fse3w(:,:,jk) * ( 2. + rhd(:,:,jk) + rhd(:,:,jk-1) ) 
    478530      END DO   
     531#endif 
    479532 
    480533      ! Compute geostrophic balance 
    481534      ! --------------------------- 
     535#if defined key_z_first 
     536      DO jj = 2, jpjm1 
     537         DO ji = 2, jpim1 
     538            DO jk = 1, jpkm1 
     539#else 
    482540      DO jk = 1, jpkm1 
    483541         DO jj = 2, jpjm1 
    484             DO ji = fs_2, fs_jpim1   ! vertor opt. 
     542            DO ji = fs_2, fs_jpim1   ! vector opt. 
     543#endif 
    485544               zmsv = 1. / MAX(  umask(ji-1,jj+1,jk) + umask(ji  ,jj+1,jk)   & 
    486545                               + umask(ji-1,jj  ,jk) + umask(ji  ,jj  ,jk) , 1.  ) 
     
    511570      ! to have a zero bottom velocity 
    512571 
     572#if defined key_z_first 
     573      DO jj = 1, jpj 
     574         DO ji = 1, jpi 
     575            DO jk = 1, jpkm1 
     576               un(ji,jj,jk) = ( un(ji,jj,jk) - un(ji,jj,jpkm1) ) * umask(ji,jj,jk) 
     577               vn(ji,jj,jk) = ( vn(ji,jj,jk) - vn(ji,jj,jpkm1) ) * vmask(ji,jj,jk) 
     578            END DO 
     579         END DO 
     580      END DO 
     581#else 
    513582      DO jk = 1, jpkm1 
    514583         un(:,:,jk) = ( un(:,:,jk) - un(:,:,jpkm1) ) * umask(:,:,jk) 
    515584         vn(:,:,jk) = ( vn(:,:,jk) - vn(:,:,jpkm1) ) * vmask(:,:,jk) 
    516585      END DO 
     586#endif 
    517587 
    518588      CALL lbc_lnk( un, 'U', -1. ) 
Note: See TracChangeset for help on using the changeset viewer.