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 7931 for branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90 – NEMO

Ignore:
Timestamp:
2017-04-19T12:15:07+02:00 (7 years ago)
Author:
gm
Message:

#1880 (HPC-09): remove key_zdfddm + phasing with last changes of HPC08 branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90

    r7753 r7931  
    99   !!            3.6  ! 2013-04  (G. Madec, F. Roquet) zrau compute locally using interpolation of alpha & beta 
    1010   !!---------------------------------------------------------------------- 
    11 #if defined key_zdfddm 
     11 
    1212   !!---------------------------------------------------------------------- 
    13    !!   'key_zdfddm' :                                     double diffusion 
     13   !!   zdf_ddm       : compute the Kz for salinity 
    1414   !!---------------------------------------------------------------------- 
    15    !!   zdf_ddm       : compute the Ks for salinity 
    16    !!   zdf_ddm_init  : read namelist and control the parameters 
    17    !!---------------------------------------------------------------------- 
    18    USE oce             ! ocean dynamics and tracers variables 
    19    USE dom_oce         ! ocean space and time domain variables  
    20    USE zdf_oce         ! ocean vertical physics variables 
     15   USE oce            ! ocean dynamics and tracers variables 
     16   USE dom_oce        ! ocean space and time domain variables 
     17   USE zdf_oce        ! ocean vertical physics variables 
    2118   USE eosbn2         ! equation of state 
    2219   ! 
    23    USE in_out_manager  ! I/O manager 
    24    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    25    USE prtctl          ! Print control 
    26    USE lib_mpp         ! MPP library 
    27    USE wrk_nemo        ! work arrays 
    28    USE timing          ! Timing 
     20   USE in_out_manager ! I/O manager 
     21   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     22   USE prtctl         ! Print control 
     23   USE lib_mpp        ! MPP library 
     24   USE wrk_nemo       ! work arrays 
     25   USE timing         ! Timing 
    2926 
    3027   IMPLICIT NONE 
     
    3229 
    3330   PUBLIC   zdf_ddm       ! called by step.F90 
    34    PUBLIC   zdf_ddm_init  ! called by opa.F90 
    35    PUBLIC   zdf_ddm_alloc ! called by nemogcm.F90 
    36  
    37    LOGICAL , PUBLIC, PARAMETER ::   lk_zdfddm = .TRUE.  !: double diffusive mixing flag 
    38  
    39    REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   avs   !: salinity vertical diffusivity coeff. at w-point 
    40  
    41    !                       !!* Namelist namzdf_ddm : double diffusive mixing * 
    42    REAL(wp) ::   rn_avts    ! maximum value of avs for salt fingering 
    43    REAL(wp) ::   rn_hsbfr   ! heat/salt buoyancy flux ratio 
    4431 
    4532   !! * Substitutions 
     
    5138   !!---------------------------------------------------------------------- 
    5239CONTAINS 
    53  
    54    INTEGER FUNCTION zdf_ddm_alloc() 
    55       !!---------------------------------------------------------------------- 
    56       !!                ***  ROUTINE zdf_ddm_alloc  *** 
    57       !!---------------------------------------------------------------------- 
    58       ALLOCATE( avs(jpi,jpj,jpk) , STAT= zdf_ddm_alloc ) 
    59       IF( lk_mpp             )   CALL mpp_sum ( zdf_ddm_alloc ) 
    60       IF( zdf_ddm_alloc /= 0 )   CALL ctl_warn('zdf_ddm_alloc: failed to allocate arrays') 
    61    END FUNCTION zdf_ddm_alloc 
    62  
    6340 
    6441   SUBROUTINE zdf_ddm( kt ) 
     
    174151                  &                             +  0.15 * zrau(ji,jj)          * zmskd2(ji,jj)  ) 
    175152               ! add to the eddy viscosity coef. previously computed 
    176 # if defined key_zdftmx_new 
    177                ! key_zdftmx_new: New internal wave-driven param: use avs value computed by zdftmx 
    178                avs (ji,jj,jk) = avs(ji,jj,jk) + zavfs + zavds 
    179 # else 
    180                avs (ji,jj,jk) = avt(ji,jj,jk) + zavfs + zavds 
    181 # endif 
    182                avt (ji,jj,jk) = avt(ji,jj,jk) + zavft + zavdt 
    183                avm (ji,jj,jk) = avm(ji,jj,jk) + MAX( zavft + zavdt, zavfs + zavds ) 
     153               avs(ji,jj,jk) = avt(ji,jj,jk) + zavfs + zavds 
     154               avt(ji,jj,jk) = avt(ji,jj,jk) + zavft + zavdt 
     155               avm(ji,jj,jk) = avm(ji,jj,jk) + MAX( zavft + zavdt, zavfs + zavds ) 
    184156            END DO 
    185157         END DO 
     
    221193   END SUBROUTINE zdf_ddm 
    222194    
    223     
    224    SUBROUTINE zdf_ddm_init 
    225       !!---------------------------------------------------------------------- 
    226       !!                  ***  ROUTINE zdf_ddm_init  *** 
    227       !! 
    228       !! ** Purpose :   Initialization of double diffusion mixing scheme 
    229       !! 
    230       !! ** Method  :   Read the namzdf_ddm namelist and check the parameter values 
    231       !!              called by zdf_ddm at the first timestep (nit000) 
    232       !!---------------------------------------------------------------------- 
    233       INTEGER ::   ios   ! local integer 
    234       !! 
    235       NAMELIST/namzdf_ddm/ rn_avts, rn_hsbfr 
    236       !!---------------------------------------------------------------------- 
    237       ! 
    238       REWIND( numnam_ref )              ! Namelist namzdf_ddm in reference namelist : Double diffusion mixing scheme 
    239       READ  ( numnam_ref, namzdf_ddm, IOSTAT = ios, ERR = 901) 
    240 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_ddm in reference namelist', lwp ) 
    241  
    242       REWIND( numnam_cfg )              ! Namelist namzdf_ddm in configuration namelist : Double diffusion mixing scheme 
    243       READ  ( numnam_cfg, namzdf_ddm, IOSTAT = ios, ERR = 902 ) 
    244 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_ddm in configuration namelist', lwp ) 
    245       IF(lwm) WRITE ( numond, namzdf_ddm ) 
    246       ! 
    247       IF(lwp) THEN                    ! Parameter print 
    248          WRITE(numout,*) 
    249          WRITE(numout,*) 'zdf_ddm : double diffusive mixing' 
    250          WRITE(numout,*) '~~~~~~~' 
    251          WRITE(numout,*) '   Namelist namzdf_ddm : set dd mixing parameter' 
    252          WRITE(numout,*) '      maximum avs for dd mixing      rn_avts   = ', rn_avts 
    253          WRITE(numout,*) '      heat/salt buoyancy flux ratio  rn_hsbfr  = ', rn_hsbfr 
    254       ENDIF 
    255       ! 
    256       !                               ! allocate zdfddm arrays 
    257       IF( zdf_ddm_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'zdf_ddm_init : unable to allocate arrays' ) 
    258       !                               ! initialization to masked Kz 
    259       avs(:,:,:) = rn_avt0 * wmask(:,:,:)  
    260       ! 
    261    END SUBROUTINE zdf_ddm_init 
    262  
    263 #else 
    264    !!---------------------------------------------------------------------- 
    265    !!   Default option :          Dummy module          No double diffusion 
    266    !!---------------------------------------------------------------------- 
    267    LOGICAL, PUBLIC, PARAMETER ::   lk_zdfddm = .FALSE.   !: double diffusion flag 
    268 CONTAINS 
    269    SUBROUTINE zdf_ddm( kt )           ! Dummy routine 
    270       WRITE(*,*) 'zdf_ddm: You should not have seen this print! error?', kt 
    271    END SUBROUTINE zdf_ddm 
    272    SUBROUTINE zdf_ddm_init            ! Dummy routine 
    273    END SUBROUTINE zdf_ddm_init 
    274 #endif 
    275  
    276195   !!====================================================================== 
    277196END MODULE zdfddm 
Note: See TracChangeset for help on using the changeset viewer.