Changeset 3497


Ignore:
Timestamp:
2012-10-12T18:14:36+02:00 (8 years ago)
Author:
hliu
Message:

Upload code files for Smagorinsky viscosity/diffusivity work, documentation to be converted to latex format and uploaded soon. See the ticket (coming in minutes)

Location:
branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC
Files:
2 added
9 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90

    r3294 r3497  
    144144          
    145145         ! Multiply by the eddy viscosity coef. (at u- and v-points) 
    146          zlu(:,:,jk) = zlu(:,:,jk) * fsahmu(:,:,jk) 
    147          zlv(:,:,jk) = zlv(:,:,jk) * fsahmv(:,:,jk) 
     146         zlu(:,:,jk) = zlu(:,:,jk) * ( fsahmu(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 
     147 
     148         zlv(:,:,jk) = zlv(:,:,jk) * ( fsahmv(:,:,jk) * (1-nkahm_smag) + nkahm_smag) 
    148149          
    149150         ! Contravariant "laplacian" 
     
    200201                  &  + ( zut(ji,jj+1,jk) - zut(ji  ,jj,jk) ) / e2v(ji,jj) 
    201202               ! add it to the general momentum trends 
    202                ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    203                va(ji,jj,jk) = va(ji,jj,jk) + zva 
     203               ua(ji,jj,jk) = ua(ji,jj,jk) + zua * ( fsahmu(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) 
     204               va(ji,jj,jk) = va(ji,jj,jk) + zva * ( fsahmv(ji,jj,jk)*nkahm_smag +(1 -nkahm_smag )) 
    204205            END DO 
    205206         END DO 
  • branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90

    r3294 r3497  
    414414         ! II.3 Divergence of vertical fluxes added to the horizontal divergence 
    415415         ! --------------------------------------------------------------------- 
    416  
    417          IF( kahm == 1 ) THEN 
     416         IF( (kahm -nkahm_smag) ==1 ) THEN 
    418417            ! multiply the laplacian by the eddy viscosity coefficient 
    419418            DO jk = 1, jpkm1 
     
    430429               END DO 
    431430            END DO 
    432          ELSEIF( kahm == 2 ) THEN 
     431         ELSEIF( (kahm +nkahm_smag ) == 2 ) THEN 
    433432            ! second call, no multiplication 
    434433            DO jk = 1, jpkm1 
  • branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90

    r3294 r3497  
    6767      NAMELIST/namdyn_ldf/ ln_dynldf_lap  , ln_dynldf_bilap,                  & 
    6868         &                 ln_dynldf_level, ln_dynldf_hor  , ln_dynldf_iso,   & 
    69          &                 rn_ahm_0_lap   , rn_ahmb_0      , rn_ahm_0_blp 
    70       !!---------------------------------------------------------------------- 
     69         &                 rn_ahm_0_lap   , rn_ahmb_0      , rn_ahm_0_blp ,   & 
     70         &                 rn_cmsmag_1    , rn_cmsmag_2    , rn_cmsh,         & 
     71         &                 rn_ahm_m_lap   , rn_ahm_m_blp 
     72 
     73   !!---------------------------------------------------------------------- 
    7174 
    7275      REWIND( numnam )                  ! Read Namelist namdyn_ldf : Lateral physics 
     
    8689         WRITE(numout,*) '      background viscosity                    rn_ahmb_0       = ', rn_ahmb_0 
    8790         WRITE(numout,*) '      horizontal bilaplacian eddy viscosity   rn_ahm_0_blp    = ', rn_ahm_0_blp 
     91         WRITE(numout,*) '      upper limit for laplacian eddy visc     rn_ahm_m_lap    = ', rn_ahm_m_lap 
     92         WRITE(numout,*) '      upper limit for bilap eddy viscosity    rn_ahm_m_blp    = ', rn_ahm_m_blp 
     93 
    8894      ENDIF 
    8995 
     
    142148      IF(lwp) WRITE(numout,*) '        ahm1 = ahm2 = ahm0 =  ',ahm0 
    143149#endif 
     150     nkahm_smag = 0 
     151#if defined key_dynldf_smag 
     152     nkahm_smag = 1 
     153#endif 
     154 
    144155      ! 
    145156   END SUBROUTINE ldf_dyn_init 
  • branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_oce.F90

    r2715 r3497  
    2323   REAL(wp), PUBLIC ::   rn_ahm_0_blp    =     0._wp   !: lateral bilaplacian eddy viscosity (m4/s) 
    2424   REAL(wp), PUBLIC ::   ahm0, ahmb0, ahm0_blp         !: OLD namelist names 
     25   REAL(wp), PUBLIC ::   rn_cmsmag_1     =     3._wp   !: constant in laplacian Smagorinsky viscosity 
     26   REAL(wp), PUBLIC ::   rn_cmsmag_2     =     3._wp   !: constant in bilaplacian Smagorinsky viscosity 
     27   REAL(wp), PUBLIC ::   rn_cmsh         =     1._wp   !: 1 or 0 , if 0 -use only shear for Smagorinsky viscosity 
     28   REAL(wp), PUBLIC ::   rn_ahm_m_blp    = -1.e12_wp   !: upper limit for bilap  abs(ahm) < min( dx^4/128rdt, rn_ahm_m_blp) 
     29   REAL(wp), PUBLIC ::   rn_ahm_m_lap    =  40000_wp   !: upper limit for lap  ahm < min(dx^2/16rdt, rn_ahm_m_lap) 
     30   INTEGER , PUBLIC ::   nkahm_smag      =  0          !:  
    2531 
    2632   !                                                                                  !!! eddy coeff. at U-,V-,W-pts [m2/s] 
  • branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90

    r3294 r3497  
    6666      NAMELIST/namtra_ldf/ ln_traldf_lap  , ln_traldf_bilap,                  & 
    6767         &                 ln_traldf_level, ln_traldf_hor  , ln_traldf_iso,   & 
    68          &                 ln_traldf_grif , ln_traldf_gdia,                   & 
    69          &                 ln_triad_iso   , ln_botmix_grif,                   & 
     68         &                 ln_traldf_grif , ln_traldf_gdia ,                  & 
     69         &                 ln_triad_iso   , ln_botmix_grif ,                  & 
    7070         &                 rn_aht_0       , rn_ahtb_0      , rn_aeiv_0,       & 
    71          &                 rn_slpmax 
     71         &                 rn_slpmax      , rn_chsmag      ,    rn_smsh,      & 
     72         &                 rn_aht_m 
    7273      !!---------------------------------------------------------------------- 
    7374 
     
    153154      IF(lwp)WRITE(numout,*) '      constant eddy diffusivity coef.   ahtu = ahtv = ahtw = aht0 = ', aht0 
    154155      IF( lk_traldf_eiv ) THEN 
    155          IF(lwp)WRITE(numout,*) 
    156156         IF(lwp)WRITE(numout,*) '      constant eddy induced velocity coef.   aeiu = aeiv = aeiw = aeiv0 = ', aeiv0 
     157       
    157158      ENDIF 
    158159#endif 
     160 
     161#if defined key_traldf_smag && ! defined key_traldf_c3d 
     162        CALL ctl_stop( 'key_traldf_smag can only be used with key_traldf_c3d' ) 
     163#endif 
     164#if defined key_traldf_smag 
     165        IF(lwp) WRITE(numout,*)' SMAGORINSKY DIFFUSION' 
     166        IF(lwp .AND. rn_smsh < 1)  WRITE(numout,*)' only  shear is used ' 
     167        IF(lwp.and.ln_traldf_bilap) CALL ctl_stop(' SMAGORINSKY + BILAPLACIAN - UNSTABLE OR NON_CONSERVATIVE' ) 
     168#endif 
     169 
    159170      ! 
    160171   END SUBROUTINE ldf_tra_init 
  • branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_c3d.h90

    r2715 r3497  
    108108      CALL lbc_lnk( aeiv, 'V', 1. ) 
    109109      CALL lbc_lnk( aeiw, 'W', 1. ) 
    110 # endif 
    111  
    112110      IF(lwp .AND. ld_print ) THEN 
    113111         WRITE(numout,*) 
     
    121119         CALL prihre(aeiw(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout) 
    122120      ENDIF 
    123       ! 
     121 
     122# endif 
    124123   END SUBROUTINE ldf_tra_c3d 
  • branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_oce.F90

    r3294 r3497  
    3030   REAL(wp), PUBLIC ::   rn_aeiv_0       = 2000._wp  !: eddy induced velocity coefficient (m2/s) 
    3131   REAL(wp), PUBLIC ::   rn_slpmax       = 0.01_wp   !: slope limit 
     32   REAL(wp), PUBLIC ::   rn_chsmag       = 1._wp     !:  multiplicative factor in Smagorinsky diffusivity 
     33   REAL(wp), PUBLIC ::   rn_smsh         = 1._wp     !:  Smagorinsky diffusivity: = 0 - use only sheer 
     34   REAL(wp), PUBLIC ::   rn_aht_m        = 2000._wp  !:  upper limit or stability criteria for lateral eddy diffusivity (m2/s) 
    3235 
    3336   REAL(wp), PUBLIC ::   aht0, ahtb0, aeiv0         !!: OLD namelist names 
     37 
    3438   LOGICAL , PUBLIC ::   ln_triad_iso    = .FALSE.   !: calculate triads twice 
    3539   LOGICAL , PUBLIC ::   ln_botmix_grif  = .FALSE.   !: mixing on bottom 
  • branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/step.F90

    r3294 r3497  
    155155      IF( lk_traldf_eiv )   CALL ldf_eiv( kstp )      ! eddy induced velocity coefficient 
    156156#endif 
     157#if defined key_traldf_c3d && key_traldf_smag 
     158                          CALL ldf_tra_smag( kstp )      ! eddy induced velocity coefficient 
     159#  endif 
     160#if defined key_dynldf_c3d && key_dynldf_smag 
     161                          CALL ldf_dyn_smag( kstp )      ! eddy induced velocity coefficient 
     162#  endif 
     163 
    157164 
    158165      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
  • branches/2012/dev_r3452_NOCL02_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/step_oce.F90

    r3294 r3497  
    6161   USE ldfslp           ! iso-neutral slopes               (ldf_slp routine) 
    6262   USE ldfeiv           ! eddy induced velocity coef.      (ldf_eiv routine) 
     63   USE ldftra_smag      ! Smagirinsky diffusion            (ldftra_smag routine) 
     64   USE ldfdyn_smag      ! Smagorinsky viscosity            (ldfdyn_smag routine)  
    6365 
    6466   USE zdftmx           ! tide-induced vertical mixing     (zdf_tmx routine) 
Note: See TracChangeset for help on using the changeset viewer.