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 4406 for branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90 – NEMO

Ignore:
Timestamp:
2014-02-04T13:12:04+01:00 (10 years ago)
Author:
trackstand2
Message:

Move from jpk to jpkf - trim sub-domains in z

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r3211 r4406  
    285285            DO ji = 1, jpi 
    286286               zpelc(ji,jj,1) =  MAX( rn2b(ji,jj,1), 0._wp ) * fsdepw(ji,jj,1) * fse3w(ji,jj,1) 
    287                DO jk = 2, jpk 
     287               DO jk = 2, jpkf 
    288288                  zpelc(ji,jj,jk)  = zpelc(ji,jj,jk-1) + MAX( rn2b(ji,jj,jk), 0._wp ) * fsdepw(ji,jj,jk) * fse3w(ji,jj,jk) 
    289289               END DO 
     
    292292#else 
    293293         zpelc(:,:,1) =  MAX( rn2b(:,:,1), 0._wp ) * fsdepw(:,:,1) * fse3w(:,:,1) 
    294          DO jk = 2, jpk 
     294         DO jk = 2, jpkf 
    295295            zpelc(:,:,jk)  = zpelc(:,:,jk-1) + MAX( rn2b(:,:,jk), 0._wp ) * fsdepw(:,:,jk) * fse3w(:,:,jk) 
    296296         END DO 
     
    303303            DO ji = 1, jpi               !      with us=0.016*wind(starting from jpk-1) 
    304304               zus  = zcof * taum(ji,jj) 
    305                DO jk = jpkm1, 2, -1 
    306 #else 
    307          DO jk = jpkm1, 2, -1 
     305               DO jk = jpkfm1, 2, -1 
     306#else 
     307         DO jk = jpkfm1, 2, -1 
    308308            DO jj = 1, jpj               ! Last w-level at which zpelc>=0.5*us*us  
    309309               DO ji = 1, jpi            !      with us=0.016*wind(starting from jpk-1) 
     
    330330            DO ji = 2, jpim1 
    331331               zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
    332                DO jk = 2, jpkm1 
    333 #else 
    334 !CDIR NOVERRCHK 
    335          DO jk = 2, jpkm1         !* TKE Langmuir circulation source term added to en 
     332               DO jk = 2, jpkfm1 
     333#else 
     334!CDIR NOVERRCHK 
     335         DO jk = 2, jpkfm1         !* TKE Langmuir circulation source term added to en 
    336336!CDIR NOVERRCHK 
    337337            DO jj = 2, jpjm1 
     
    363363      DO jj = 1, jpj 
    364364         DO ji = 1, jpi 
    365             DO jk = 2, jpkm1 
    366 #else 
    367       DO jk = 2, jpkm1           !* Shear production at uw- and vw-points (energy conserving form) 
     365            DO jk = 2, jpkfm1 
     366#else 
     367      DO jk = 2, jpkfm1           !* Shear production at uw- and vw-points (energy conserving form) 
    368368         DO jj = 1, jpj                 ! here avmu, avmv used as workspace 
    369369            DO ji = 1, jpi 
     
    385385      DO jj = 2, jpjm1 
    386386         DO ji = 2, jpim1 
    387             DO jk = 2, jpkm1     !* Matrix and right hand side in en 
    388 #else 
    389       DO jk = 2, jpkm1           !* Matrix and right hand side in en 
     387            DO jk = 2, jpkfm1     !* Matrix and right hand side in en 
     388#else 
     389      DO jk = 2, jpkfm1           !* Matrix and right hand side in en 
    390390         DO jj = 2, jpjm1 
    391391            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    415415         DO ji = 2, jpim1 
    416416            ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    417             DO jk = 3, jpkm1 
     417            DO jk = 3, jpkfm1 
    418418               zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    419419            END DO 
    420420            ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    421421            zd_lw(ji,jj,2) = en(ji,jj,2) - zd_lw(ji,jj,2) * en(ji,jj,1)    ! Surface boudary conditions on tke 
    422             DO jk = 3, jpkm1 
     422            DO jk = 3, jpkfm1 
    423423               zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) *zd_lw(ji,jj,jk-1) 
    424424            END DO 
    425425            ! Third recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    426             en(ji,jj,jpkm1) = zd_lw(ji,jj,jpkm1) / zdiag(ji,jj,jpkm1) 
    427             DO jk = jpk-2, 2, -1 
     426            en(ji,jj,jpkfm1) = zd_lw(ji,jj,jpkfm1) / zdiag(ji,jj,jpkfm1) 
     427            DO jk = jpkf-2, 2, -1 
    428428               en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 
    429429            END DO 
    430             DO jk = 2, jpkm1                       ! set the minimum value of tke 
     430            DO jk = 2, jpkfm1                       ! set the minimum value of tke 
    431431               en(ji,jj,jk) = MAX( en(ji,jj,jk), rn_emin ) * tmask(ji,jj,jk) 
    432432            END DO 
     
    434434      END DO 
    435435#else 
    436       DO jk = 3, jpkm1                             ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
     436      DO jk = 3, jpkfm1                             ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    437437         DO jj = 2, jpjm1 
    438438            DO ji = fs_2, fs_jpim1    ! vector opt. 
     
    446446         END DO 
    447447      END DO 
    448       DO jk = 3, jpkm1 
     448      DO jk = 3, jpkfm1 
    449449         DO jj = 2, jpjm1 
    450450            DO ji = fs_2, fs_jpim1    ! vector opt. 
     
    455455      DO jj = 2, jpjm1                             ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    456456         DO ji = fs_2, fs_jpim1    ! vector opt. 
    457             en(ji,jj,jpkm1) = zd_lw(ji,jj,jpkm1) / zdiag(ji,jj,jpkm1) 
    458          END DO 
    459       END DO 
    460       DO jk = jpk-2, 2, -1 
     457            en(ji,jj,jpkfm1) = zd_lw(ji,jj,jpkfm1) / zdiag(ji,jj,jpkfm1) 
     458         END DO 
     459      END DO 
     460      DO jk = jpkf-2, 2, -1 
    461461         DO jj = 2, jpjm1 
    462462            DO ji = fs_2, fs_jpim1    ! vector opt. 
     
    465465         END DO 
    466466      END DO 
    467       DO jk = 2, jpkm1                             ! set the minimum value of tke 
     467      DO jk = 2, jpkfm1                             ! set the minimum value of tke 
    468468         DO jj = 2, jpjm1 
    469469            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    481481         DO jj = 2, jpjm1 
    482482            DO ji = 2, jpim1 
    483                DO jk = 2, jpkm1 
    484 #else 
    485          DO jk = 2, jpkm1 
     483               DO jk = 2, jpkfm1 
     484#else 
     485         DO jk = 2, jpkfm1 
    486486            DO jj = 2, jpjm1 
    487487               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    505505         !!            unless we also make zdif a 2-d (jpi,jpj) array 
    506506!CDIR NOVERRCHK 
    507          DO jk = 2, jpkm1 
     507         DO jk = 2, jpkfm1 
    508508!CDIR NOVERRCHK 
    509509            DO jj = 2, jpjm1 
     
    574574      !!---------------------------------------------------------------------- 
    575575      USE oce, ONLY:   zmpdl => ua , zmxlm => va , zmxld => ta   ! (ua,va,ta) used as workspace 
     576      USE arpdebugging, ONLY: dump_array 
    576577      !! DCSE_NEMO: need additional directives for renamed module variables 
    577578!FTRANS zmpdl zmxlm zmxld :I :I :z 
     
    581582      REAL(wp) ::   zdku, zpdlr, zri, zsqen     !   -      - 
    582583      REAL(wp) ::   zdkv, zemxl, zemlm, zemlp   !   -      - 
     584      INTEGER, PARAMETER :: DUMP_LEVEL = 26 ! ARPDBG - level to dump to disk 
    583585      !!-------------------------------------------------------------------- 
    584586 
     
    599601      DO jj = 2, jpjm1 
    600602         DO ji = 2, jpim1 
    601             zmxlm(ji,jj,jpk) = rmxl_min     ! last level set to the interior minium value 
    602             DO jk = 2, jpkm1        ! interior value : l=sqrt(2*e/n^2) 
    603 #else 
    604       zmxlm(:,:,jpk)  = rmxl_min    ! last level set to the interior minium value 
    605       ! 
    606 !CDIR NOVERRCHK 
    607       DO jk = 2, jpkm1              ! interior value : l=sqrt(2*e/n^2) 
     603            zmxlm(ji,jj,jpkf) = rmxl_min     ! last level set to the interior minium value 
     604            DO jk = 2, jpkfm1        ! interior value : l=sqrt(2*e/n^2) 
     605#else 
     606      zmxlm(:,:,jpkf)  = rmxl_min    ! last level set to the interior minium value 
     607      ! 
     608!CDIR NOVERRCHK 
     609      DO jk = 2, jpkfm1              ! interior value : l=sqrt(2*e/n^2) 
    608610!CDIR NOVERRCHK 
    609611         DO jj = 2, jpjm1 
     
    619621      !                     !* Physical limits for the mixing length 
    620622      ! 
    621       zmxld(:,:, 1 ) = zmxlm(:,:,1)   ! surface set to the zmxlm   value 
    622       zmxld(:,:,jpk) = rmxl_min       ! last level  set to the minimum value 
     623      zmxld(:,:, 1  ) = zmxlm(:,:,1)   ! surface set to the zmxlm   value 
     624      zmxld(:,:,jpkf) = rmxl_min       ! last level  set to the minimum value 
    623625      ! 
    624626      SELECT CASE ( nn_mxl ) 
     
    628630         DO jj = 2, jpjm1 
    629631            DO ji = 2, jpim1 
    630                DO jk = 2, jpkm1 
    631 #else 
    632          DO jk = 2, jpkm1 
     632               DO jk = 2, jpkfm1 
     633#else 
     634         DO jk = 2, jpkfm1 
    633635            DO jj = 2, jpjm1 
    634636               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    646648         DO jj = 2, jpjm1 
    647649            DO ji = 2, jpim1 
    648                DO jk = 2, jpkm1 
    649 #else 
    650          DO jk = 2, jpkm1 
     650               DO jk = 2, jpkfm1 
     651#else 
     652         DO jk = 2, jpkfm1 
    651653            DO jj = 2, jpjm1 
    652654               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    663665         DO jj = 2, jpjm1 
    664666            DO ji = 2, jpim1 
    665                DO jk = 2, jpkm1   ! from the surface to the bottom : 
     667               DO jk = 2, jpkfm1   ! from the surface to the bottom : 
    666668                  zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk-1) + fse3t(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 
    667669               END DO 
    668                DO jk = jpkm1, 2, -1     ! from the bottom to the surface : 
     670               DO jk = jpkfm1, 2, -1     ! from the bottom to the surface : 
    669671                  zemxl = MIN( zmxlm(ji,jj,jk+1) + fse3t(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 
    670672                  zmxlm(ji,jj,jk) = zemxl 
     
    674676         END DO 
    675677#else 
    676          DO jk = 2, jpkm1         ! from the surface to the bottom : 
     678         DO jk = 2, jpkfm1         ! from the surface to the bottom : 
    677679            DO jj = 2, jpjm1 
    678680               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    681683            END DO 
    682684         END DO 
    683          DO jk = jpkm1, 2, -1     ! from the bottom to the surface : 
     685         DO jk = jpkfm1, 2, -1     ! from the bottom to the surface : 
    684686            DO jj = 2, jpjm1 
    685687               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    696698         DO jj = 2, jpjm1 
    697699            DO ji = 2, jpim1 
    698                DO jk = 2, jpkm1         ! from the surface to the bottom : lup 
     700               DO jk = 2, jpkfm1         ! from the surface to the bottom : lup 
    699701                  zmxld(ji,jj,jk) = MIN( zmxld(ji,jj,jk-1) + fse3t(ji,jj,jk-1), zmxlm(ji,jj,jk) ) 
    700702               END DO 
    701                DO jk = jpkm1, 2, -1     ! from the bottom to the surface : ldown 
     703               DO jk = jpkfm1, 2, -1     ! from the bottom to the surface : ldown 
    702704                  zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk+1) + fse3t(ji,jj,jk+1), zmxlm(ji,jj,jk) ) 
    703705               END DO 
    704                DO jk = 2, jpkm1 
     706               DO jk = 2, jpkfm1 
    705707                  zemlm = MIN ( zmxld(ji,jj,jk),  zmxlm(ji,jj,jk) ) 
    706708                  zemlp = SQRT( zmxld(ji,jj,jk) * zmxlm(ji,jj,jk) ) 
     
    711713         END DO 
    712714#else 
    713          DO jk = 2, jpkm1         ! from the surface to the bottom : lup 
     715         DO jk = 2, jpkfm1         ! from the surface to the bottom : lup 
    714716            DO jj = 2, jpjm1 
    715717               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    718720            END DO 
    719721         END DO 
    720          DO jk = jpkm1, 2, -1     ! from the bottom to the surface : ldown 
     722         DO jk = jpkfm1, 2, -1     ! from the bottom to the surface : ldown 
    721723            DO jj = 2, jpjm1 
    722724               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    726728         END DO 
    727729!CDIR NOVERRCHK 
    728          DO jk = 2, jpkm1 
     730         DO jk = 2, jpkfm1 
    729731!CDIR NOVERRCHK 
    730732            DO jj = 2, jpjm1 
     
    753755      DO jj = 2, jpjm1 
    754756         DO ji = 2, jpim1 
    755             DO jk = 1, jpkm1      !* vertical eddy viscosity & diffivity at w-points 
    756 #else 
    757 !CDIR NOVERRCHK 
    758       DO jk = 1, jpkm1            !* vertical eddy viscosity & diffivity at w-points 
     757            DO jk = 1, jpkfm1      !* vertical eddy viscosity & diffivity at w-points 
     758#else 
     759!CDIR NOVERRCHK 
     760      DO jk = 1, jpkfm1            !* vertical eddy viscosity & diffivity at w-points 
    759761!CDIR NOVERRCHK 
    760762         DO jj = 2, jpjm1 
     
    775777      DO jj = 2, jpjm1 
    776778         DO ji = 2, jpim1 
    777             DO jk = 2, jpkm1      !* vertical eddy viscosity at u- and v-points 
    778 #else 
    779       DO jk = 2, jpkm1            !* vertical eddy viscosity at u- and v-points 
     779            DO jk = 2, jpkfm1      !* vertical eddy viscosity at u- and v-points 
     780#else 
     781      DO jk = 2, jpkfm1            !* vertical eddy viscosity at u- and v-points 
    780782         DO jj = 2, jpjm1 
    781783            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    786788         END DO 
    787789      END DO 
     790 
    788791      CALL lbc_lnk( avmu, 'U', 1. )   ;   CALL lbc_lnk( avmv, 'V', 1. )      ! Lateral boundary conditions 
    789792      ! 
     793      CALL dump_array(1, 'avmu_tke',avmu(:,:,DUMP_LEVEL), & 
     794                      withHalos=.TRUE.,atStep=1) 
     795 
    790796      IF( nn_pdl == 1 ) THEN      !* Prandtl number case: update avt 
    791797#if defined key_z_first 
    792798         DO jj = 2, jpjm1 
    793799            DO ji = 2, jpim1 
    794                DO jk = 2, jpkm1 
    795 #else 
    796          DO jk = 2, jpkm1 
     800               DO jk = 2, jpkfm1 
     801#else 
     802         DO jk = 2, jpkfm1 
    797803            DO jj = 2, jpjm1 
    798804               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    920926      DO jj = 1, jpj 
    921927         DO ji = 1, jpi 
    922              avt (ji,jj,:) = avtb(:) * tmask(ji,jj,:) 
    923              avm (ji,jj,:) = avmb(:) * tmask(ji,jj,:) 
    924              avmu(ji,jj,:) = avmb(:) * umask(ji,jj,:) 
    925              avmv(ji,jj,:) = avmb(:) * vmask(ji,jj,:) 
     928             avt (ji,jj,:jpk) = avtb(:jpk) * tmask(ji,jj,:jpk) 
     929             avm (ji,jj,:jpk) = avmb(:jpk) * tmask(ji,jj,:jpk) 
     930             avmu(ji,jj,:jpk) = avmb(:jpk) * umask(ji,jj,:jpk) 
     931             avmv(ji,jj,:jpk) = avmb(:jpk) * vmask(ji,jj,:jpk) 
    926932         END DO 
    927933      END DO 
Note: See TracChangeset for help on using the changeset viewer.