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 6225 for branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90 – NEMO

Ignore:
Timestamp:
2016-01-08T10:35:19+01:00 (8 years ago)
Author:
jamesharle
Message:

Update MPP_BDY_UPDATE branch to be consistent with head of trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90

    r3294 r6225  
    77   !! History :  OPA  !  1997-06  (G. Madec, A. Lazar)  Original code 
    88   !!   NEMO     1.0  !  2002-06  (G. Madec)  F90: Free form and module 
    9    !!             -   !  2005-06  (C. Ethe) KPP parameterization 
    109   !!            3.2  !  2009-03  (M. Leclair, G. Madec, R. Benshila) test on both before & after 
    1110   !!---------------------------------------------------------------------- 
    1211 
    1312   !!---------------------------------------------------------------------- 
    14    !!   zdf_evd      : increase the momentum and tracer Kz at the location of 
    15    !!                  statically unstable portion of the water column (ln_zdfevd=T) 
     13   !!   zdf_evd       : increase the momentum and tracer Kz at the location of 
     14   !!                   statically unstable portion of the water column (ln_zdfevd=T) 
    1615   !!---------------------------------------------------------------------- 
    1716   USE oce             ! ocean dynamics and tracers variables 
    1817   USE dom_oce         ! ocean space and time domain variables 
    1918   USE zdf_oce         ! ocean vertical physics variables 
    20    USE zdfkpp          ! KPP vertical mixing 
     19   ! 
    2120   USE in_out_manager  ! I/O manager 
    2221   USE iom             ! for iom_put 
    2322   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     23   USE wrk_nemo        ! work arrays 
    2424   USE timing          ! Timing 
    2525 
     
    2929   PUBLIC   zdf_evd    ! called by step.F90 
    3030 
    31    !! * Substitutions 
    32 #  include "domzgr_substitute.h90" 
    3331   !!---------------------------------------------------------------------- 
    3432   !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
     
    5351      !! References :   Lazar, A., these de l'universite Paris VI, France, 1997 
    5452      !!---------------------------------------------------------------------- 
    55       USE oce,   zavt_evd => ua , zavm_evd => va  ! (ua,va) used ua workspace 
    56       ! 
    5753      INTEGER, INTENT( in ) ::   kt   ! ocean time-step indexocean time step 
    5854      ! 
    5955      INTEGER ::   ji, jj, jk   ! dummy loop indices 
     56      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zavt_evd, zavm_evd 
    6057      !!---------------------------------------------------------------------- 
    6158      ! 
     
    6865         IF(lwp) WRITE(numout,*) 
    6966      ENDIF 
    70  
     67      ! 
     68      CALL wrk_alloc( jpi,jpj,jpk,   zavt_evd, zavm_evd )  
     69      ! 
    7170      zavt_evd(:,:,:) = avt(:,:,:)           ! set avt prior to evd application 
    72  
     71      ! 
    7372      SELECT CASE ( nn_evdm ) 
    7473      ! 
     
    7877         ! 
    7978         DO jk = 1, jpkm1  
    80 #if defined key_vectopt_loop 
    81             DO jj = 1, 1                     ! big loop forced 
    82                DO ji = jpi+2, jpij    
    83 #else 
    8479            DO jj = 2, jpj             ! no vector opt. 
    8580               DO ji = 2, jpi 
    86 #endif 
    87 #if defined key_zdfkpp 
    88                   ! no evd mixing in the boundary layer with KPP 
    89                   IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12  .AND.  fsdepw(ji,jj,jk) > hkpp(ji,jj)  ) THEN 
    90 #else 
    9181                  IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 
    92 #endif 
    9382                     avt (ji  ,jj  ,jk) = rn_avevd * tmask(ji  ,jj  ,jk) 
    9483                     avm (ji  ,jj  ,jk) = rn_avevd * tmask(ji  ,jj  ,jk) 
     
    11099         DO jk = 1, jpkm1 
    111100!!!         WHERE( rn2(:,:,jk) <= -1.e-12 ) avt(:,:,jk) = tmask(:,:,jk) * avevd   ! agissant sur T SEUL!  
    112 #if defined key_vectopt_loop 
    113             DO jj = 1, 1                     ! big loop forced 
    114                DO ji = 1, jpij    
    115 #else 
    116101            DO jj = 1, jpj             ! loop over the whole domain (no lbc_lnk call) 
    117102               DO ji = 1, jpi 
    118 #endif 
    119 #if defined key_zdfkpp 
    120                   ! no evd mixing in the boundary layer with KPP 
    121                   IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12  .AND.  fsdepw(ji,jj,jk) > hkpp(ji,jj)  )   &           
    122 #else 
    123103                  IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 )   & 
    124 #endif 
    125104                     avt(ji,jj,jk) = rn_avevd * tmask(ji,jj,jk) 
    126105               END DO 
     
    133112      CALL iom_put( "avt_evd", zavt_evd )              ! output this change 
    134113      ! 
     114      CALL wrk_dealloc( jpi,jpj,jpk,   zavt_evd, zavm_evd )  
     115      ! 
    135116      IF( nn_timing == 1 )  CALL timing_stop('zdf_evd') 
    136117      ! 
Note: See TracChangeset for help on using the changeset viewer.