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

Ignore:
Timestamp:
2009-08-11T12:09:19+02:00 (15 years ago)
Author:
ctlod
Message:

Doctor naming of OPA namelist variables , see ticket: #526

File:
1 edited

Legend:

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

    r1537 r1601  
    44   !! Ocean physics : double diffusion mixing parameterization 
    55   !!====================================================================== 
     6   !! History :  OPA  ! 2000-08  (G. Madec)  double diffusive mixing 
     7   !!   NEMO     1.0  ! 2002-06  (G. Madec)  F90: Free form and module 
     8   !!---------------------------------------------------------------------- 
    69#if defined key_zdfddm   ||   defined key_esopa 
    710   !!---------------------------------------------------------------------- 
     
    2831   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   rrau   !: heat/salt buoyancy flux ratio 
    2932 
    30    !                                  !!* Namelist nam_ddm : double diffusive mixing * 
     33   !                                  !!* Namelist namzdf_ddm : double diffusive mixing * 
    3134   REAL(wp) ::   rn_avts  = 1.e-4_wp   ! maximum value of avs for salt fingering 
    3235   REAL(wp) ::   rn_hsbfr = 1.6_wp     ! heat/salt buoyancy flux ratio 
     
    4750      !!                     
    4851      !! ** Purpose :   Add to the vertical eddy diffusivity coefficient the  
    49       !!      effect of salt fingering and diffusive convection.  
     52      !!              effect of salt fingering and diffusive convection.  
    5053      !! 
    5154      !! ** Method  :   Diapycnal mixing is increased in case of double 
     
    7073      !!      avmu, avmv are required to remain at least above avt and avs. 
    7174      !!       
    72       !! ** Action  :   avt, avs : update vertical eddy diffusivity coef. 
    73       !!                           for temperature and salinity 
    74       !! 
    75       !! References : 
    76       !!      Merryfield et al., JPO, 29, 1124-1142, 1999. 
    77       !! History : 
    78       !!        !  00-08  (G. Madec)  double diffusive mixing 
    79       !!   8.5  !  02-06  (G. Madec)  F90: Free form and module 
    80       !!---------------------------------------------------------------------- 
    81       !! * Arguments 
    82       INTEGER, INTENT( in ) ::   kt         ! ocean time-step indexocean time step 
    83  
    84       !! * Local declarations 
    85       INTEGER ::   ji, jj , jk              ! dummy loop indices 
    86       REAL(wp), DIMENSION(jpi,jpj) ::   & 
    87          zmsks, zmskf,                    & ! temporary workspace  
    88          zmskd1, zmskd2, zmskd3             !    "           " 
    89       REAL(wp) ::   & 
    90          zinr, zrr,                       & ! temporary scalars 
    91          zavft, zavfs,                    & !    "         " 
    92          zavdt, zavds                       !    "         " 
    93       !!---------------------------------------------------------------------- 
    94  
     75      !! ** Action  :   avt, avs : updated vertical eddy diffusivity coef. for T & S 
     76      !! 
     77      !! References :   Merryfield et al., JPO, 29, 1124-1142, 1999. 
     78      !!---------------------------------------------------------------------- 
     79      INTEGER, INTENT(in) ::   kt   ! ocean time-step indexocean time step 
     80      !! 
     81      INTEGER  ::   ji, jj , jk     ! dummy loop indices 
     82      REAL(wp) ::   zinr, zrr       ! temporary scalars 
     83      REAL(wp) ::   zavft, zavfs    !    -         - 
     84      REAL(wp) ::   zavdt, zavds    !    -         - 
     85      REAL(wp), DIMENSION(jpi,jpj) ::   zmsks, zmskf, zmskd1, zmskd2, zmskd3   ! 2D workspace  
     86      !!---------------------------------------------------------------------- 
    9587 
    9688      IF ( kt == nit000 )   CALL zdf_ddm_init          ! Initialization (first time-step only) 
    9789 
    98  
    99       ! Compute avs 
    100       ! ----------- 
    10190      !                                                ! =============== 
    10291      DO jk = 2, jpkm1                                 ! Horizontal slab 
     
    10493         ! Define the mask  
    10594         ! --------------- 
    106          ! only retains positive value of rrau 
    107          rrau(:,:,jk) = MAX( 1.e-20, rrau(:,:,jk) ) 
    108  
    109          ! indicators: 
    110          DO jj = 1, jpj 
     95         rrau(:,:,jk) = MAX( 1.e-20, rrau(:,:,jk) )         ! only retains positive value of rrau 
     96 
     97         DO jj = 1, jpj                                     ! indicators: 
    11198            DO ji = 1, jpi 
    11299               ! stability indicator: msks=1 if rn2>0; 0 elsewhere 
     
    158145               zrr = rrau(ji,jj,jk)/rn_hsbfr 
    159146               zrr = zrr * zrr 
    160                zavfs = rn_avts / ( 1 + zrr*zrr*zrr ) * zmsks(ji,jj) *zmskf(ji,jj) 
     147               zavfs = rn_avts / ( 1 + zrr*zrr*zrr ) * zmsks(ji,jj) * zmskf(ji,jj) 
    161148               zavft = 0.7 * zavfs * zinr 
    162149               ! diffusive layering 
    163                zavdt = 1.3635e-6 * EXP(4.6*EXP(-0.54*(zinr-1.) ) )   & 
    164                                  * zmsks(ji,jj) * zmskd1(ji,jj) 
    165                zavds = zavdt * zmsks(ji,jj)   & 
    166                      * ( (1.85 * rrau(ji,jj,jk) - 0.85 ) * zmskd3(ji,jj)   & 
    167                        +  0.15 * rrau(ji,jj,jk)          * zmskd2(ji,jj)  ) 
     150               zavdt = 1.3635e-6 * EXP(  4.6 * EXP( -0.54*(zinr-1.) )  ) * zmsks(ji,jj) * zmskd1(ji,jj) 
     151               zavds = zavdt * zmsks(ji,jj) * (  (1.85 * rrau(ji,jj,jk) - 0.85 ) * zmskd3(ji,jj)   & 
     152                  &                            +  0.15 * rrau(ji,jj,jk)          * zmskd2(ji,jj)  ) 
    168153               ! add to the eddy viscosity coef. previously computed 
    169154               avs (ji,jj,jk) = avt(ji,jj,jk) + zavfs + zavds 
     
    180165            DO ji = 1, fs_jpim1   ! vector opt. 
    181166               avmu(ji,jj,jk) = MAX( avmu(ji,jj,jk),    & 
    182                                      avt(ji,jj,jk), avt(ji+1,jj,jk),   & 
    183                                      avs(ji,jj,jk), avs(ji+1,jj,jk) )   & 
    184                               * umask(ji,jj,jk) 
     167                  &                  avt(ji,jj,jk), avt(ji+1,jj,jk),   & 
     168                  &                  avs(ji,jj,jk), avs(ji+1,jj,jk) )  * umask(ji,jj,jk) 
    185169               avmv(ji,jj,jk) = MAX( avmv(ji,jj,jk),    & 
    186                                      avt(ji,jj,jk), avt(ji,jj+1,jk),   & 
    187                                      avs(ji,jj,jk), avs(ji,jj+1,jk) )   & 
    188                               * vmask(ji,jj,jk) 
     170                  &                  avt(ji,jj,jk), avt(ji,jj+1,jk),   & 
     171                  &                  avs(ji,jj,jk), avs(ji,jj+1,jk) )  * vmask(ji,jj,jk) 
    189172            END DO 
    190173         END DO 
     
    192175      END DO                                              !   End of slab 
    193176      !                                                   ! =============== 
    194        
    195       ! Lateral boundary conditions on ( avt, avs, avmu, avmv )   (unchanged sign) 
    196       ! -------------------------------======================== 
    197       CALL lbc_lnk( avt , 'W', 1. ) 
     177      ! 
     178      CALL lbc_lnk( avt , 'W', 1. )        ! Lateral boundary conditions   (unchanged sign) 
    198179      CALL lbc_lnk( avs , 'W', 1. ) 
    199180      CALL lbc_lnk( avm , 'W', 1. ) 
     
    206187            &         tab3d_2=avmv, clinfo2=       ' v: ', mask2=vmask, ovlap=1, kdim=jpk) 
    207188      ENDIF 
    208        
     189      ! 
    209190   END SUBROUTINE zdf_ddm 
    210191    
     
    216197      !! ** Purpose :   Initialization of double diffusion mixing scheme 
    217198      !! 
    218       !! ** Method  :   Read the nam_ddm namelist and check the parameter values 
     199      !! ** Method  :   Read the namzdf_ddm namelist and check the parameter values 
    219200      !!              called by zdf_ddm at the first timestep (nit000) 
    220       !! 
    221       !! History :  8.5  !  02-08  (G. Madec)  Original code 
    222       !!---------------------------------------------------------------------- 
    223       NAMELIST/nam_ddm/ rn_avts, rn_hsbfr 
    224       !!---------------------------------------------------------------------- 
    225       ! 
    226       REWIND ( numnam )               ! Read Namelist nam_ddm : double diffusion mixing scheme 
    227       READ   ( numnam, nam_ddm ) 
     201      !!---------------------------------------------------------------------- 
     202      NAMELIST/namzdf_ddm/ rn_avts, rn_hsbfr 
     203      !!---------------------------------------------------------------------- 
     204      ! 
     205      REWIND ( numnam )               ! Read Namelist namzdf_ddm : double diffusion mixing scheme 
     206      READ   ( numnam, namzdf_ddm ) 
    228207      ! 
    229208      IF(lwp) THEN                    ! Parameter print 
     
    231210         WRITE(numout,*) 'zdf_ddm : double diffusive mixing' 
    232211         WRITE(numout,*) '~~~~~~~' 
    233          WRITE(numout,*) '   Namelist nam_ddm : set dd mixing parameter' 
     212         WRITE(numout,*) '   Namelist namzdf_ddm : set dd mixing parameter' 
    234213         WRITE(numout,*) '      maximum avs for dd mixing      rn_avts   = ', rn_avts 
    235214         WRITE(numout,*) '      heat/salt buoyancy flux ratio  rn_hsbfr  = ', rn_hsbfr 
Note: See TracChangeset for help on using the changeset viewer.