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 2048 for branches – NEMO

Changeset 2048 for branches


Ignore:
Timestamp:
2010-08-13T10:11:50+02:00 (14 years ago)
Author:
cbricaud
Message:

add GLS Vertical scheme

Location:
branches/DEV_r1784_GLS
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r1784_GLS/CONFIG/ORCA2_LIM/EXP00/namelist

    r1759 r2048  
    589589   nn_ave      =  1        !  constant (=0) or profile (=1) background on avt 
    590590/ 
     591----------------------------------------------------------------------- 
     592&namzdf_gls                !   GLS vertical diffusion  ("key_zdfgls") 
     593!----------------------------------------------------------------------- 
     594   rn_emin     =   1.e-6   !  minimum value of e   [m2/s2] 
     595   rn_epsmin   =   1.e-12  !  minimum value of eps [m2/s3] 
     596   ln_length_lim = .true.  !  limit on the dissipation rate under stable stratification (Galperin et al., 1988) 
     597   clim_galp   =   0.53    !  galperin limit 
     598   ln_crban = .TRUE.       !  Use Craig & Banner (1994) surface wave mixing parametrisation 
     599   ln_sigpsi = .TRUE.      !  Activate or not Burchard 2001 mods on psi schmidt number in the wb case 
     600   rn_crban = 100.         !  Craig and Banner 1994 constant for wb tke flux 
     601   rn_charn =  70000.      !  Charnock constant for wb induced roughness length 
     602   nn_tkebc_surf  =   1    !  surface tke condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) 
     603   nn_tkebc_bot   =   1    !  bottom tke condition (0/1=Dir/Neum) 
     604   nn_psibc_surf  =   1    !  surface psi condition (0/1/2=Dir/Neum/Dir Mellor-Blumberg) 
     605   nn_psibc_bot   =   1    !  bottom psi condition (0/1=Dir/Neum) 
     606   nn_stab_func   =   2    !  stability function (0=Galp, 1= KC94, 2=CanutoA, 3=CanutoB) 
     607   nn_clos        =   1    !  predefined closure type (0=MY82, 1=k-eps, 2=k-w, 3=Gen) 
     608/ 
    591609!----------------------------------------------------------------------- 
    592610&namzdf_ddm    !   double diffusive mixing parameterization             ("key_zdfddm") 
  • branches/DEV_r1784_GLS/NEMO/OPA_SRC/DYN/dynzdf.F90

    r1533 r2048  
    107107      USE zdftke_old 
    108108      USE zdftke 
     109      USE zdfgls 
    109110      USE zdfkpp 
    110111      !!---------------------------------------------------------------------- 
     
    116117 
    117118      ! Force implicit schemes 
    118       IF( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfkpp )   nzdf = 1   ! TKE or KPP physics 
    119       IF( ln_dynldf_iso                               )   nzdf = 1   ! iso-neutral lateral physics 
    120       IF( ln_dynldf_hor .AND. ln_sco                  )   nzdf = 1   ! horizontal lateral physics in s-coordinate 
     119      IF( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfgls .OR. lk_zdfkpp )   nzdf = 1   ! TKE, GLS or KPP physics 
     120      IF( ln_dynldf_iso                                              )   nzdf = 1   ! iso-neutral lateral physics 
     121      IF( ln_dynldf_hor .AND. ln_sco                                 )   nzdf = 1   ! horizontal lateral physics in s-coordinate 
    121122 
    122123      IF( lk_esopa )    nzdf = -1                   ! Esopa key: All schemes used 
  • branches/DEV_r1784_GLS/NEMO/OPA_SRC/DYN/dynzdf_imp.F90

    r1662 r2048  
    2424   USE phycst          ! physical constants 
    2525   USE in_out_manager  ! I/O manager 
     26#if defined key_zdfgls 
     27   USE zdfbfr, ONLY : bfrua, bfrva, wbotu, wbotv ! bottom stresses 
     28   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     29#endif 
    2630 
    2731   IMPLICIT NONE 
     
    7579      REAL(wp) ::   zzwi                               ! temporary scalars 
    7680      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwi        ! temporary workspace arrays 
     81#if defined key_zdfgls 
     82      INTEGER :: ikbu, ikbv, ikbum1, ikbvm1 
     83      REAL(wp) :: zcbcu, zcbcv 
     84#endif 
    7785      !!---------------------------------------------------------------------- 
    7886 
     
    173181         END DO 
    174182      END DO 
     183 
     184#if defined key_zdfgls 
     185      ! Save bottom stress for next time step 
     186      DO jj = 2, jpjm1 
     187         DO ji = fs_2, fs_jpim1   ! vector opt. 
     188            ikbu   = MIN( mbathy(ji+1,jj  ), mbathy(ji,jj) ) 
     189            ikbum1 = MAX( ikbu-1, 1 ) 
     190            wbotu(ji,jj) = bfrua(ji,jj) * ua(ji,jj,ikbum1) * umask(ji,jj,ikbum1) 
     191         END DO 
     192      END DO 
     193      CALL lbc_lnk( wbotu(:,:), 'U', -1. ) 
     194#endif 
    175195 
    176196      ! Normalization to obtain the general momentum trend ua 
     
    272292      END DO 
    273293 
     294#if defined key_zdfgls 
     295      ! Save bottom stress for next time step 
     296      DO jj = 2, jpjm1 
     297         DO ji = fs_2, fs_jpim1   ! vector opt. 
     298            ikbv   = MIN( mbathy(ji,jj+1), mbathy(ji,jj) ) 
     299            ikbvm1 = MAX( ikbv-1, 1 ) 
     300            wbotv(ji,jj) = bfrva(ji,jj) * va(ji,jj,ikbvm1) * vmask(ji,jj,ikbvm1) 
     301         END DO 
     302      END DO 
     303      CALL lbc_lnk( wbotv(:,:), 'V', -1. ) 
     304#endif 
     305 
    274306      ! Normalization to obtain the general momentum trend va 
    275307      DO jk = 1, jpkm1 
  • branches/DEV_r1784_GLS/NEMO/OPA_SRC/IOM/restart.F90

    r1613 r2048  
    2626   USE zdfmxl          ! mixed layer depth 
    2727   USE trdmld_oce      ! ocean active mixed layer tracers trends variables 
     28#if defined key_zdfgls 
     29   USE zdfbfr, ONLY : wbotu, wbotv ! bottom stresses 
     30   USE zdf_oce 
     31#endif 
    2832 
    2933   IMPLICIT NONE 
     
    136140#endif 
    137141 
     142#if defined key_zdfgls 
     143      ! Save bottom stresses 
     144      CALL iom_rstput( kt, nitrst, numrow, 'wbotu' , wbotu ) 
     145      CALL iom_rstput( kt, nitrst, numrow, 'wbotv' , wbotv ) 
     146#endif 
     147 
    138148      IF( kt == nitrst ) THEN 
    139149         CALL iom_close( numrow )     ! close the restart file (only at last time step) 
  • branches/DEV_r1784_GLS/NEMO/OPA_SRC/TRA/trazdf.F90

    r1533 r2048  
    125125      USE zdftke_old 
    126126      USE zdftke 
     127      USE zdfgls 
    127128      USE zdfkpp 
    128129      !!---------------------------------------------------------------------- 
     
    139140 
    140141      ! Force implicit schemes 
    141       IF( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfkpp )   nzdf = 1      ! TKE or KPP physics 
    142       IF( ln_traldf_iso                               )   nzdf = 1      ! iso-neutral lateral physics 
    143       IF( ln_traldf_hor .AND. ln_sco                  )   nzdf = 1      ! horizontal lateral physics in s-coordinate 
     142      IF( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfgls .OR. lk_zdfkpp )   nzdf = 1      ! TKE, GLS or KPP physics 
     143      IF( ln_traldf_iso                                              )   nzdf = 1      ! iso-neutral lateral physics 
     144      IF( ln_traldf_hor .AND. ln_sco                                 )   nzdf = 1      ! horizontal lateral physics in s-coordinate 
    144145 
    145146      IF( ln_zdfexp .AND. nzdf == 1 )   THEN 
  • branches/DEV_r1784_GLS/NEMO/OPA_SRC/ZDF/zdfbfr.F90

    r1708 r2048  
    2929    
    3030   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   bfrua , bfrva   !: Bottom friction coefficients set in zdfbfr 
     31#if defined key_zdfgls 
     32   REAL(wp), PUBLIC                     ::   rn_hbro =  0.003_wp  ! Bottom roughness (m) 
     33   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   wbotu, wbotv    !  Bottom stresses 
     34#endif 
    3135 
    3236   !                                    !!* Namelist nambfr: bottom friction namelist * 
  • branches/DEV_r1784_GLS/NEMO/OPA_SRC/ZDF/zdfini.F90

    r1601 r2048  
    2020   USE zdftke_old      ! TKE vertical mixing  (old scheme) 
    2121   USE zdftke          ! TKE vertical mixing 
     22   USE zdfgls          ! GLS vertical mixing 
    2223   USE zdfkpp          ! KPP vertical mixing           
    2324   USE zdfddm          ! double diffusion mixing       
     
    106107         ioptio = ioptio+1 
    107108      ENDIF 
     109      IF( lk_zdfgls ) THEN 
     110         IF(lwp) WRITE(numout,*) '      GLS dependent eddy coefficients' 
     111         ioptio = ioptio+1 
     112      ENDIF 
    108113      IF( lk_zdfkpp ) THEN 
    109114         IF(lwp) WRITE(numout,*) '      KPP dependent eddy coefficients' 
     
    128133         IF(lwp) WRITE(numout,*) '      use the 1.5 turbulent closure' 
    129134      ENDIF 
     135      IF( lk_zdfgls ) THEN 
     136         IF(lwp) WRITE(numout,*) '      use the GLS closure scheme' 
     137      ENDIF 
    130138      IF( lk_zdfkpp ) THEN 
    131139         IF(lwp) WRITE(numout,*) '      use the KPP closure scheme' 
     
    136144      ENDIF 
    137145      IF ( ioptio > 1 .AND. .NOT. lk_esopa )   CALL ctl_stop( ' chose between ln_zdfnpc and ln_zdfevd' ) 
    138       IF( ioptio == 0 .AND. .NOT.( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfkpp ) ) & 
    139          CALL ctl_stop( ' except for TKE sor KPP physics, a convection scheme is', & 
     146      IF( ioptio == 0 .AND. .NOT.( lk_zdftke_old .OR. lk_zdftke .OR. lk_zdfgls .OR. lk_zdfkpp ) ) & 
     147         CALL ctl_stop( ' except for TKE, GLS or KPP physics, a convection scheme is', & 
    140148         &              ' required: ln_zdfevd or ln_zdfnpc logicals' ) 
    141149 
  • branches/DEV_r1784_GLS/NEMO/OPA_SRC/step.F90

    r1756 r2048  
    9090   USE zdftke_old      ! old TKE vertical mixing      (zdf_tke_old routine) 
    9191   USE zdftke          ! TKE vertical mixing              (zdf_tke routine) 
     92   USE zdfgls          ! GLS vertical mixing              (zdf_gls routine)   
    9293   USE zdfkpp          ! KPP vertical mixing              (zdf_kpp routine) 
    9394   USE zdfddm          ! double diffusion mixing          (zdf_ddm routine) 
     
    204205      IF( lk_zdftke_old )   CALL zdf_tke_old( kstp )  ! TKE closure scheme for Kz (old scheme) 
    205206      IF( lk_zdftke     )   CALL zdf_tke    ( kstp )  ! TKE closure scheme for Kz 
     207      IF( lk_zdfgls     )   CALL zdf_gls    ( kstp )  ! GLS closure scheme for Kz 
    206208      IF( lk_zdfkpp     )   CALL zdf_kpp    ( kstp )  ! KPP closure scheme for Kz 
    207209      IF( lk_zdfcst     )   THEN                      ! Constant Kz (reset avt, avm[uv] to the background value) 
     
    223225                                                      ! write tke information in the restart file 
    224226      IF( lrst_oce .AND. lk_zdftke )   CALL tke_rst( kstp, 'WRITE' ) 
     227                                                      ! write gls information in the restart file 
     228      IF( lrst_oce .AND. lk_zdfgls )   CALL gls_rst( kstp, 'WRITE' ) 
    225229      ! 
    226230      !  LATERAL  PHYSICS  
Note: See TracChangeset for help on using the changeset viewer.