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

Changeset 10123


Ignore:
Timestamp:
2018-09-13T14:35:00+02:00 (6 years ago)
Author:
ldouriez
Message:

1 loop optimization in zdftke.F90: BULL_OPTIM_ZDFTKE_LANGMUIR_LOOP. Disabled by default

File:
1 edited

Legend:

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

    r9598 r10123  
    202202      REAL(wp) ::   zzd_up, zzd_lw             !   -         - 
    203203      INTEGER , DIMENSION(jpi,jpj)     ::   imlc 
     204#if defined(BULL_OPTIM_ZDFTKE_LANGMUIR_LOOP) 
     205      REAL(wp), DIMENSION(jpi,jpj)     ::   zhlc, fr_i_tmp 
     206#else       
    204207      REAL(wp), DIMENSION(jpi,jpj)     ::   zhlc 
     208#endif       
    205209      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zpelc, zdiag, zd_up, zd_lw 
    206210      !!-------------------------------------------------------------------- 
     
    290294         END DO 
    291295         zcof = 0.016 / SQRT( zrhoa * zcdrag ) 
     296#if defined(BULL_OPTIM_ZDFTKE_LANGMUIR_LOOP) 
     297         DO jj = 2, jpjm1 
     298            DO ji = fs_2, fs_jpim1   ! vector opt. 
     299               fr_i_tmp(ji,jj) = (1._wp - 4.*fr_i(ji,jj)) 
     300               IF (fr_i_tmp(ji,jj) < 0 ) THEN 
     301                  fr_i_tmp(ji,jj) = 0 
     302               ENDIF 
     303            END DO 
     304         END DO          
     305#endif          
    292306         DO jk = 2, jpkm1         !* TKE Langmuir circulation source term added to en 
    293307            DO jj = 2, jpjm1 
    294308               DO ji = fs_2, fs_jpim1   ! vector opt. 
     309#if defined(BULL_OPTIM_ZDFTKE_LANGMUIR_LOOP) 
     310                  IF ( fr_i_tmp(ji,jj) /= 0 ) THEN                
     311                     ! vertical velocity due to LC    
     312                     IF ( (pdepw(ji,jj,jk) - zhlc(ji,jj)) < 0 ) THEN 
     313                        zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
     314                        zwlc = rn_lc * zus * SIN( rpi * pdepw(ji,jj,jk) / zhlc(ji,jj) ) 
     315                        ! TKE Langmuir circulation source term 
     316                        en(ji,jj,jk) = en(ji,jj,jk) + rdt * fr_i_tmp(ji,jj) * ( zwlc * zwlc * zwlc )   & 
     317                             &                              / zhlc(ji,jj) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
     318                     ENDIF 
     319                  ENDIF 
     320#else                   
    295321                  zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
    296322                  !                                           ! vertical velocity due to LC 
     
    299325                  !                                           ! TKE Langmuir circulation source term 
    300326                  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) 
     327                       &                              / zhlc(ji,jj) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
     328#endif                   
    302329               END DO 
    303330            END DO 
Note: See TracChangeset for help on using the changeset viewer.