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 255 for trunk/NEMO/OPA_SRC/ZDF/zdfevd.F90 – NEMO

Ignore:
Timestamp:
2005-09-02T17:06:49+02:00 (19 years ago)
Author:
opalod
Message:

nemo_v1_update_002 : CT : Integration of the KPP turbulent closure scheme

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/ZDF/zdfevd.F90

    r247 r255  
    1515   USE dom_oce         ! ocean space and time domain variables 
    1616   USE zdf_oce         ! ocean vertical physics variables 
     17   USE zdfkpp          ! KPP vertical mixing 
    1718   USE in_out_manager  ! I/O manager 
    1819   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     
    2425   PUBLIC zdf_evd      ! called by step.F90 
    2526 
     27   !! * Substitutions 
     28#  include "domzgr_substitute.h90" 
    2629   !!---------------------------------------------------------------------- 
    2730   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     
    4447      !! 
    4548      !! ** Action  :   Update avt, avmu, avmv in statically instable cases 
    46       !! 
     49      !!                and avt_evd which is avt due to convection 
    4750      !! References : 
    4851      !!      Lazar, A., these de l'universite Paris VI, France, 1997 
     
    5053      !!   7.0  !  97-06  (G. Madec, A. Lazar)  Original code 
    5154      !!   8.5  !  02-06  (G. Madec)  F90: Free form and module 
     55      !!   9.0  !  05-06  (C. Ethe) KPP parameterization 
    5256      !!---------------------------------------------------------------------- 
    5357      !! * Arguments 
     
    6569      ENDIF 
    6670 
     71      ! Initialisation of avt_evd (vertical diffusion due to convection) to avt and avmu_evd to avmu 
     72      avt_evd  (:,:,:) = avt(:,:,:)  
     73      avmu_evd (:,:,:) = avmu(:,:,:)  
     74 
    6775      SELECT CASE ( nevdm ) 
    6876  
     
    7583            jj = 1                     ! big loop forced 
    7684            DO ji = jpi+2, jpij    
     85#   if defined key_zdfkpp 
     86!! no implicit mixing in the boundary layer with KPP 
     87               IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) THEN 
     88#   else 
    7789               IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN 
     90#   endif 
    7891                  avt (ji  ,jj  ,jk) = avevd * tmask(ji  ,jj  ,jk) 
    7992                  avmu(ji  ,jj  ,jk) = avevd * umask(ji  ,jj  ,jk) 
     
    8699            DO jj = 2, jpj             ! no vector opt. 
    87100               DO ji = 2, jpi 
    88                   IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN 
     101#   if defined key_zdfkpp 
     102!! no implicit mixing in the boundary layer with KPP 
     103               IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) THEN 
     104#   else 
     105               IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN 
     106#   endif 
    89107                     avt (ji  ,jj  ,jk) = avevd * tmask(ji  ,jj  ,jk) 
    90108                     avmu(ji  ,jj  ,jk) = avevd * umask(ji  ,jj  ,jk) 
     
    114132            jj = 1                     ! big loop forced 
    115133            DO ji = 1, jpij    
     134#   if defined key_zdfkpp 
     135!! no implicit mixing in the boundary layer with KPP 
     136               IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) &               
     137                  avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
     138#   else 
    116139               IF( rn2(ji,jj,jk) <= -1.e-12 )   avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
     140#   endif 
    117141            END DO 
    118142#   else 
    119143            DO jj = 1, jpj             ! loop over the whole domain (no lbc_lnk call) 
    120144               DO ji = 1, jpi 
     145#   if defined key_zdfkpp 
     146!! no implicit mixing in the boundary layer with KPP 
     147               IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) &           
     148                  avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
     149#   else 
    121150                  IF( rn2(ji,jj,jk) <= -1.e-12 )   avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
     151#   endif 
    122152               END DO 
    123153            END DO 
     
    128158      END SELECT  
    129159 
     160      ! update of avt_evd and avmu_evd 
     161      avt_evd  (:,:,:) = avt (:,:,:)  - avt_evd  (:,:,:)  
     162      avmu_evd (:,:,:) = avmu(:,:,:)  - avmu_evd (:,:,:)  
     163 
    130164   END SUBROUTINE zdf_evd 
    131165 
Note: See TracChangeset for help on using the changeset viewer.