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 10336 for NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/ZDF/zdftke.F90 – NEMO

Ignore:
Timestamp:
2018-11-19T15:34:28+01:00 (5 years ago)
Author:
smasson
Message:

dev_r10164_HPC09_ESIWACE_PREP_MERGE: action 7: zdfiwm.F90 and zdftke.F90 optimization from ATOS, see #2133

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/ZDF/zdftke.F90

    r10297 r10336  
    202202      REAL(wp) ::   zzd_up, zzd_lw             !   -         - 
    203203      INTEGER , DIMENSION(jpi,jpj)     ::   imlc 
    204       REAL(wp), DIMENSION(jpi,jpj)     ::   zhlc 
     204      REAL(wp), DIMENSION(jpi,jpj)     ::   zhlc, zfr_i 
    205205      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zpelc, zdiag, zd_up, zd_lw 
    206206      !!-------------------------------------------------------------------- 
     
    290290         END DO 
    291291         zcof = 0.016 / SQRT( zrhoa * zcdrag ) 
     292         DO jj = 2, jpjm1 
     293            DO ji = fs_2, fs_jpim1   ! vector opt. 
     294               zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
     295               zfr_i(ji,jj) = ( 1._wp - 4._wp * fr_i(ji,jj) ) * zus * zus * zus * tmask(ji,jj,1) ! zus > 0. ok 
     296               IF (zfr_i(ji,jj) < 0. ) zfr_i(ji,jj) = 0. 
     297            END DO 
     298         END DO          
    292299         DO jk = 2, jpkm1         !* TKE Langmuir circulation source term added to en 
    293300            DO jj = 2, jpjm1 
    294301               DO ji = fs_2, fs_jpim1   ! vector opt. 
    295                   zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
    296                   !                                           ! vertical velocity due to LC 
    297                   zind = 0.5 - SIGN( 0.5, pdepw(ji,jj,jk) - zhlc(ji,jj) ) 
    298                   zwlc = zind * rn_lc * zus * SIN( rpi * pdepw(ji,jj,jk) / zhlc(ji,jj) ) 
    299                   !                                           ! TKE Langmuir circulation source term 
    300                   en(ji,jj,jk) = en(ji,jj,jk) + rdt * MAX(0.,1._wp - 4.*fr_i(ji,jj) ) * ( zwlc * zwlc * zwlc )   & 
    301                      &                              / zhlc(ji,jj) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
     302                  IF ( zfr_i(ji,jj) /= 0. ) THEN                
     303                     ! vertical velocity due to LC    
     304                     IF ( pdepw(ji,jj,jk) - zhlc(ji,jj) < 0 .AND. wmask(ji,jj,jk) /= 0. ) THEN 
     305                        !                                           ! vertical velocity due to LC 
     306                        zwlc = rn_lc * SIN( rpi * pdepw(ji,jj,jk) / zhlc(ji,jj) )   ! warning: optimization: zus^3 is in zfr_i 
     307                        !                                           ! TKE Langmuir circulation source term 
     308                        en(ji,jj,jk) = en(ji,jj,jk) + rdt * zfr_i(ji,jj) * ( zwlc * zwlc * zwlc ) / zhlc(ji,jj) 
     309                     ENDIF 
     310                  ENDIF 
    302311               END DO 
    303312            END DO 
Note: See TracChangeset for help on using the changeset viewer.