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.
zdfswm.F90 in branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF – NEMO

source: branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfswm.F90 @ 7997

Last change on this file since 7997 was 7990, checked in by gm, 7 years ago

#1880 (HPC-09): OPA remove avmu, avmv from zdf modules + move CALL tke(gls)_rst & gls_rst in zdftke(gls) + rename zdftmx and zdfqiao

File size: 4.0 KB
RevLine 
[7990]1MODULE zdfswm
[5983]2   !!======================================================================
[7990]3   !!                       ***  MODULE  zdfswm  ***
4   !! vertical physics :   surface wave-induced mixing
[5983]5   !!======================================================================
6   !! History :  3.6  !  2014-10  (E. Clementi)  Original code
[7990]7   !!            4.0  !  2017-04  (G. Madec)  debug + simplifications
[5983]8   !!----------------------------------------------------------------------
[7990]9
[5983]10   !!----------------------------------------------------------------------
[7990]11   !!   zdf_swm      : update Kz due to surface wave-induced mixing
12   !!   zdf_swm_init : initilisation
13   !!----------------------------------------------------------------------
14   USE dom_oce        ! ocean domain variable
15   USE zdf_oce        ! vertical physics: mixing coefficients
16   USE sbc_oce        ! Surface boundary condition: ocean fields
17   USE sbcwave        ! wave module
18   !
19   USE in_out_manager ! I/O manager
20   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
21   USE lib_mpp        ! distribued memory computing library
[5983]22   
23   IMPLICIT NONE
24   PRIVATE
25
[7990]26   PUBLIC zdf_swm         ! routine called in zdp_phy
27   PUBLIC zdf_swm_init    ! routine called in zdf_phy_init
[5983]28
29   !!----------------------------------------------------------------------
[7990]30   !! NEMO/OPA 4.0 , NEMO Consortium (2017)
31   !! $Id:$
[5983]32   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
33   !!----------------------------------------------------------------------
34CONTAINS
35
[7990]36   SUBROUTINE zdf_swm( kt )
[5983]37      !!---------------------------------------------------------------------
[7990]38      !!                     ***  ROUTINE zdf_swm ***
[5983]39      !!
[7990]40      !! ** Purpose :Compute the swm term (qbv) to be added to
[5983]41      !!             vertical viscosity and diffusivity coeffs. 
42      !!
[7990]43      !! ** Method  :   Compute the swm term Bv (zqb) and added it to
44      !!               vertical viscosity and diffusivity coefficients
45      !!                   zqb = alpha * A * Us(0) * exp (3 * k * z)
46      !!               where alpha is set here to 1
[5983]47      !!             
[7990]48      !! ** action  :    avt, avs, avm updated by the surface wave-induced mixing
49      !!                               (inner domain only)
[5983]50      !!               
[7990]51      !! reference : Qiao et al. GRL, 2004
[5983]52      !!---------------------------------------------------------------------
[7990]53      INTEGER, INTENT(in) ::   kt   ! ocean time step
[6253]54      !
[7990]55      INTEGER ::   ji, jj, jk   ! dummy loop indices
56      REAL(wp)::   zcoef, zqb   ! local scalar
[5983]57      !!---------------------------------------------------------------------
58      !
[7990]59      zcoef = 1._wp * 0.353553_wp
60      DO jk = 2, jpkm1
61         DO jj = 2, jpjm1
62            DO ji = 2, jpim1
63               zqb = zcoef * hsw(ji,jj) * tsd2d(ji,jj) * EXP( -3. * wnum(ji,jj) * gdepw_n(ji,jj,jk) ) * wmask(ji,jj,jk)
64               !
65               avt(ji,jj,jk) = avt(ji,jj,jk) + zqb
66               avs(ji,jj,jk) = avs(ji,jj,jk) + zqb
67               avm(ji,jj,jk) = avm(ji,jj,jk) + zqb
[6253]68            END DO
69         END DO
[7340]70      END DO
71      !
[7990]72   END SUBROUTINE zdf_swm
73   
74   
75   SUBROUTINE zdf_swm_init
76      !!---------------------------------------------------------------------
77      !!                     ***  ROUTINE zdf_swm_init ***
78      !!
79      !! ** Purpose :   surface wave-induced mixing initialisation 
80      !!
81      !! ** Method  :   check the availability of surface wave fields
82      !!---------------------------------------------------------------------
[7340]83      !
[7990]84      IF(lwp) THEN                  ! Control print
85         WRITE(numout,*)
86         WRITE(numout,*) 'zdf_swm_init : surface wave-driven mixing'
87         WRITE(numout,*) '~~~~~~~~~~~~'
88      ENDIF
89      IF(  .NOT.ln_wave .OR.   &
90         & .NOT.ln_sdw    )   CALL ctl_stop ( 'zdf_swm_init: ln_zdfswm=T but ln_wave and ln_sdw /= T')
[7340]91      !
[7990]92   END SUBROUTINE zdf_swm_init
[5983]93
94   !!======================================================================
[7990]95END MODULE zdfswm
Note: See TracBrowser for help on using the repository browser.