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

Changeset 4402


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

Added sub-domain z-trim optimisation to ldfslp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90

    r3432 r4402  
    172172      DO jj = 1, jpjm1           !==   i- & j-gradient of density   ==! 
    173173         DO ji = 1, jpim1 
    174             DO jk = 1, jpk 
    175 #else 
    176       DO jk = 1, jpk             !==   i- & j-gradient of density   ==! 
     174            DO jk = 1, jpkf 
     175#else 
     176      DO jk = 1, jpkf            !==   i- & j-gradient of density   ==! 
    177177         DO jj = 1, jpjm1 
    178178            DO ji = 1, fs_jpim1   ! vector opt. 
     
    202202         DO ji = 1, jpi 
    203203            zdzr(ji,jj,1) = 0._wp   !==   Local vertical density gradient at T-point   == !   (evaluated from N^2) 
    204             DO jk = 2, jpkm1 
     204            DO jk = 2, jpkfm1 
    205205               zdzr(ji,jj,jk) = zm1_g * ( prd(ji,jj,jk) + 1._wp )              & 
    206206                  &                   * ( pn2(ji,jj,jk) + pn2(ji,jj,jk+1) ) * ( 1._wp - 0.5_wp * tmask(ji,jj,jk+1) ) 
     
    210210#else 
    211211      zdzr(:,:,1) = 0._wp        !==   Local vertical density gradient at T-point   == !   (evaluated from N^2) 
    212       DO jk = 2, jpkm1 
     212      DO jk = 2, jpkfm1 
    213213         !                                ! zdzr = d/dz(prd)= - ( prd ) / grav * mk(pn2) -- at t point 
    214214         !                                !   trick: tmask(ik  )  = 0   =>   all pn2   = 0   =>   zdzr = 0 
     
    231231      DO jj = 2, jpjm1               !* Slopes at u and v points 
    232232         DO ji = 2, jpim1 
    233             DO jk = 2, jpkm1 
    234 #else 
    235       DO jk = 2, jpkm1                            !* Slopes at u and v points 
     233            DO jk = 2, jpkfm1 
     234#else 
     235      DO jk = 2, jpkfm1                            !* Slopes at u and v points 
    236236         DO jj = 2, jpjm1 
    237237            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    275275      DO jj = 2, jpjm1, MAX(1, jpj-3)                        ! rows jj=2 and =jpjm1 only 
    276276         DO ji = 2, jpim1   
    277             DO jk = 2, jpkm1 
    278 #else 
    279       DO jk = 2, jpkm1 
     277            DO jk = 2, jpkfm1 
     278#else 
     279      DO jk = 2, jpkfm1 
    280280         DO jj = 2, jpjm1, MAX(1, jpj-3)                        ! rows jj=2 and =jpjm1 only 
    281281            DO ji = 2, jpim1   
     
    297297      DO jj = 3, jpj-2                               ! other rows 
    298298         DO ji = 2, jpim1 
    299             DO jk = 2, jpkm1 
     299            DO jk = 2, jpkfm1 
    300300#else 
    301301         DO jj = 3, jpj-2                               ! other rows 
     
    319319      DO jj = 2, jpjm1 
    320320         DO ji = 2, jpim1 
    321             DO jk = 2, jpkm1 
     321            DO jk = 2, jpkfm1 
    322322#else 
    323323         !                                        !* decrease along coastal boundaries 
     
    340340      DO jj = 2, jpjm1 
    341341         DO ji = 2, jpim1 
    342             DO jk = 2, jpkm1 
    343 #else 
    344       DO jk = 2, jpkm1 
     342            DO jk = 2, jpkfm1 
     343#else 
     344      DO jk = 2, jpkfm1 
    345345         DO jj = 2, jpjm1 
    346346            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    384384      DO jj = 2, jpjm1, MAX(1, jpj-3)                           ! rows jj=2 and =jpjm1 only 
    385385         DO ji = 2, jpim1 
    386             DO jk = 2, jpkm1 
    387 #else 
    388       DO jk = 2, jpkm1 
     386            DO jk = 2, jpkfm1 
     387#else 
     388      DO jk = 2, jpkfm1 
    389389         DO jj = 2, jpjm1, MAX(1, jpj-3)                        ! rows jj=2 and =jpjm1 only 
    390390            DO ji = 2, jpim1 
     
    407407      DO jj = 3, jpj-2                                  ! other rows 
    408408         DO ji = 2, jpim1 
    409             DO jk = 2, jpkm1 
     409            DO jk = 2, jpkfm1 
    410410#else 
    411411         DO jj = 3, jpj-2                               ! other rows 
     
    430430      DO jj = 2, jpjm1 
    431431         DO ji = 2, jpim1 
    432             DO jk = 2, jpkm1 
     432            DO jk = 2, jpkfm1 
    433433#else 
    434434         !                                        !* decrease along coastal boundaries 
     
    450450         !                                                    ! Gibraltar Strait 
    451451         ij0 =  50   ;   ij1 =  53 
    452          ii0 =  69   ;   ii1 =  71   ;   uslp ( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , : ) = 0._wp 
     452         ii0 =  69   ;   ii1 =  71   ;   uslp ( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , :jpkf ) = 0._wp 
    453453         ij0 =  51   ;   ij1 =  53 
    454          ii0 =  68   ;   ii1 =  71   ;   vslp ( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , : ) = 0._wp 
    455          ii0 =  69   ;   ii1 =  71   ;   wslpi( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , : ) = 0._wp 
    456          ii0 =  69   ;   ii1 =  71   ;   wslpj( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , : ) = 0._wp 
     454         ii0 =  68   ;   ii1 =  71   ;   vslp ( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , :jpkf ) = 0._wp 
     455         ii0 =  69   ;   ii1 =  71   ;   wslpi( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , :jpkf ) = 0._wp 
     456         ii0 =  69   ;   ii1 =  71   ;   wslpj( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , :jpkf ) = 0._wp 
    457457         ! 
    458          !                                                    ! Mediterrannean Sea 
     458         !                                                    ! Mediterranean Sea 
    459459         ij0 =  49   ;   ij1 =  56 
    460          ii0 =  71   ;   ii1 =  90   ;   uslp ( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , : ) = 0._wp 
     460         ii0 =  71   ;   ii1 =  90   ;   uslp ( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , :jpkf ) = 0._wp 
    461461         ij0 =  50   ;   ij1 =  56 
    462          ii0 =  70   ;   ii1 =  90   ;   vslp ( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , : ) = 0._wp 
    463          ii0 =  71   ;   ii1 =  90   ;   wslpi( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , : ) = 0._wp 
    464          ii0 =  71   ;   ii1 =  90   ;   wslpj( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , : ) = 0._wp 
     462         ii0 =  70   ;   ii1 =  90   ;   vslp ( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , :jpkf ) = 0._wp 
     463         ii0 =  71   ;   ii1 =  90   ;   wslpi( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , :jpkf ) = 0._wp 
     464         ii0 =  71   ;   ii1 =  90   ;   wslpj( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , :jpkf ) = 0._wp 
    465465      ENDIF 
    466466 
     
    547547      DO jj = 1, jpjm1 
    548548         DO ji = 1, jpim1 
    549             DO jk = 1, jpkm1                    !==  before lateral T & S gradients at T-level jk  ==! 
    550 #else 
    551       DO jk = 1, jpkm1                          !==  before lateral T & S gradients at T-level jk  ==! 
     549            DO jk = 1, jpkfm1                    !==  before lateral T & S gradients at T-level jk  ==! 
     550#else 
     551      DO jk = 1, jpkfm1                          !==  before lateral T & S gradients at T-level jk  ==! 
    552552         DO jj = 1, jpjm1 
    553553            DO ji = 1, fs_jpim1   ! vector opt. 
     
    581581            zdkt(ji,jj,1) = 0._wp            !==  before vertical T & S gradient at w-level  ==! 
    582582            zdks(ji,jj,1) = 0._wp 
    583             DO jk = 2, jpk 
     583            DO jk = 2, jpkf 
    584584               zdkt(ji,jj,jk) = ( tb(ji,jj,jk-1) - tb(ji,jj,jk) ) * tmask(ji,jj,jk) 
    585585               zdks(ji,jj,jk) = ( sb(ji,jj,jk-1) - sb(ji,jj,jk) ) * tmask(ji,jj,jk) 
     
    590590      zdkt(:,:,1) = 0._wp                    !==  before vertical T & S gradient at w-level  ==! 
    591591      zdks(:,:,1) = 0._wp 
    592       DO jk = 2, jpk 
     592      DO jk = 2, jpkf 
    593593         zdkt(:,:,jk) = ( tb(:,:,jk-1) - tb(:,:,jk) ) * tmask(:,:,jk) 
    594594         zdks(:,:,jk) = ( sb(:,:,jk-1) - sb(:,:,jk) ) * tmask(:,:,jk) 
     
    602602         DO jj = 1, jpjm1                          ! NB: not masked due to the minimum value set 
    603603            DO ji = 1, jpim1 
    604                DO jk = 1, jpkm1                    ! done each pair of triad 
    605 #else 
    606          DO jk = 1, jpkm1                          ! done each pair of triad 
     604               DO jk = 1, jpkfm1                    ! done each pair of triad 
     605#else 
     606         DO jk = 1, jpkfm1                          ! done each pair of triad 
    607607            DO jj = 1, jpjm1                       ! NB: not masked due to the minimum value set 
    608608               DO ji = 1, fs_jpim1   ! vector opt.  
     
    620620         DO jj = 1, jpj                         ! NB: not masked due to the minimum value set 
    621621            DO ji = 1, jpi 
    622                DO jk = 1, jpkm1                    ! done each pair of triad 
    623 #else 
    624          DO jk = 1, jpkm1                          ! done each pair of triad 
     622               DO jk = 1, jpkfm1                    ! done each pair of triad 
     623#else 
     624         DO jk = 1, jpkfm1                          ! done each pair of triad 
    625625            DO jj = 1, jpj                       ! NB: not masked due to the minimum value set 
    626626               DO ji = 1, jpi   ! vector opt.  
     
    682682            DO jj = 1, jpjm1 
    683683               DO ji = 1, jpim1 
    684                   DO jk = 1, jpkm1 
    685 #else 
    686             DO jk = 1, jpkm1 
     684                  DO jk = 1, jpkfm1 
     685#else 
     686            DO jk = 1, jpkfm1 
    687687               DO jj = 1, jpjm1 
    688688                  DO ji = 1, fs_jpim1   ! vector opt. 
     
    815815      ! 
    816816      !                          !==   surface mixed layer mask   ! 
    817       DO jk = 1, jpk                      ! =1 inside the mixed layer, =0 otherwise 
     817      DO jk = 1, jpkf                ! =1 inside the mixed layer, =0 otherwise 
    818818# if ( defined key_vectopt_loop ) && ! ( defined key_z_first ) 
    819819         DO jj = 1, 1 
     
    869869            !                    !==   i- & j-slopes at w-points just below the Mixed Layer   ==! 
    870870            ! 
    871             ik   = MIN( nmln(ji,jj) + 1, jpk ) 
     871            ik   = MIN( nmln(ji,jj) + 1, jpkf ) 
    872872            ikm1 = MAX( 1, ik-1 ) 
    873873            !                          !- vertical density gradient for w-slope (from N^2) 
     
    963963            DO jj = 2, jpjm1 
    964964               DO ji = 2, jpim1 
    965                   DO jk = 1, jpk 
    966 #else 
    967             DO jk = 1, jpk 
     965                  DO jk = 1, jpkf 
     966#else 
     967            DO jk = 1, jpkf 
    968968               DO jj = 2, jpjm1 
    969969                  DO ji = fs_2, fs_jpim1   ! vector opt. 
Note: See TracChangeset for help on using the changeset viewer.