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 6386 – NEMO

Changeset 6386


Ignore:
Timestamp:
2016-03-11T15:11:22+01:00 (8 years ago)
Author:
acc
Message:

#1689. 2016WP-SIMPLIF-5. Minor renaming and code tidying to ldfdyn.F90 and namelist

Location:
branches/2016/dev_r6381_SIMPLIF_5/NEMOGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6381_SIMPLIF_5/NEMOGCM/CONFIG/SHARED/namelist_ref

    r6383 r6386  
    815815   rn_aht_0        = 2000.     !  lateral eddy diffusivity   (lap. operator) [m2/s] 
    816816   rn_bht_0        = 1.e+12    !  lateral eddy diffusivity (bilap. operator) [m4/s] 
    817    ! 
    818                                !  Smagorinsky settings: 
    819    rn_csmc       = 3.5         !  Smagorinsky constant of proportionality 
    820    rn_cfacmin    = 1.0         !  multiplier of theorectical lower limit 
    821    rn_cfacmax    = 1.0         !  multiplier of theorectical upper limit 
    822817/ 
    823818!----------------------------------------------------------------------- 
     
    932927   !                                !  = 30  F(i,j,k)=c2d*c1d 
    933928   !                                !  = 31  F(i,j,k)=F(grid spacing and local velocity) 
     929   !                                !  = 32  F(i,j,k)=F(local gridscale and deformation rate) 
     930   ! Caution in 20 and 30 cases the coefficient have to be given for a 1 degree grid (~111km) 
    934931   rn_ahm_0      =  40000.     !  horizontal laplacian eddy viscosity   [m2/s] 
    935932   rn_ahm_b      =      0.     !  background eddy viscosity for ldf_iso [m2/s] 
    936933   rn_bhm_0      = 1.e+12      !  horizontal bilaplacian eddy viscosity [m4/s] 
    937    ! 
    938    ! Caution in 20 and 30 cases the coefficient have to be given for a 1 degree grid (~111km) 
     934   !                       !  Smagorinsky settings (nn_ahm_ijk_t  = 32) : 
     935   rn_csmc       = 3.5         !  Smagorinsky constant of proportionality 
     936   rn_minfac     = 1.0         !  multiplier of theorectical lower limit 
     937   rn_maxfac     = 1.0         !  multiplier of theorectical upper limit 
    939938/ 
    940939 
  • branches/2016/dev_r6381_SIMPLIF_5/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90

    r6383 r6386  
    4545                                         !! will be computed. 
    4646   REAL(wp), PUBLIC ::   rn_csmc         !: Smagorinsky constant of proportionality  
    47    REAL(wp), PUBLIC ::   rn_cfacmin      !: Multiplicative factor of theorectical minimum Smagorinsky viscosity 
    48    REAL(wp), PUBLIC ::   rn_cfacmax      !: Multiplicative factor of theorectical maximum Smagorinsky viscosity 
     47   REAL(wp), PUBLIC ::   rn_minfac       !: Multiplicative factor of theorectical minimum Smagorinsky viscosity 
     48   REAL(wp), PUBLIC ::   rn_maxfac       !: Multiplicative factor of theorectical maximum Smagorinsky viscosity 
    4949 
    5050   LOGICAL , PUBLIC ::   l_ldfdyn_time   !: flag for time variation of the lateral eddy viscosity coef. 
     
    9999         &                 ln_dynldf_lev, ln_dynldf_hor, ln_dynldf_iso,   & 
    100100         &                 nn_ahm_ijk_t , rn_ahm_0, rn_ahm_b, rn_bhm_0,   & 
    101          &                 rn_csmc      , rn_cfacmin, rn_cfacmax 
     101         &                 rn_csmc      , rn_minfac, rn_maxfac 
    102102      !!---------------------------------------------------------------------- 
    103103      ! 
     
    134134         WRITE(numout,*) '         Smagorinsky coefficient              rn_csmc       = ', rn_csmc 
    135135         WRITE(numout,*) '         factor multiplier for theorectical lower limit for ' 
    136          WRITE(numout,*) '           Smagorinsky eddy visc (def. 1.0)   rn_cfacmin    = ', rn_cfacmin 
     136         WRITE(numout,*) '           Smagorinsky eddy visc (def. 1.0)   rn_minfac    = ', rn_minfac 
    137137         WRITE(numout,*) '         factor multiplier for theorectical lower upper for ' 
    138          WRITE(numout,*) '           Smagorinsky eddy visc (def. 1.0)   rn_cfacmax    = ', rn_cfacmax 
     138         WRITE(numout,*) '           Smagorinsky eddy visc (def. 1.0)   rn_maxfac    = ', rn_maxfac 
    139139      ENDIF 
    140140 
     
    234234            l_ldfdyn_time = .TRUE.     ! will be calculated by call to ldf_dyn routine in step.F90 
    235235            ! 
    236             ! allocate locate gradient arrays used in ldf_dyn. Allocated once here for efficiency. 
     236            ! allocate arrays used in ldf_dyn.  
    237237            ALLOCATE( dtensq(jpi,jpj) , dshesq(jpi,jpj) , esqt(jpi,jpj) ,  esqf(jpi,jpj) , STAT=ierr ) 
    238238            IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'ldf_dyn_init: failed to allocate Smagorinsky arrays') 
     
    328328            ! 
    329329            zcmsmag = (rn_csmc/rpi)**2                                              ! (C_smag/pi)^2 
    330             zstabf_lo  = rn_cfacmin * rn_cfacmin / ( 2_.wp * 4._wp * zcmsmag )      !  lower limit stability factor scaling 
    331             zstabf_up  = rn_cfacmax / ( 4._wp * zcmsmag * rdt )                     !  upper limit stability factor scaling 
    332             ! 
     330            zstabf_lo  = rn_minfac * rn_minfac / ( 2._wp * 4._wp * zcmsmag )        ! lower limit stability factor scaling 
     331            zstabf_up  = rn_maxfac / ( 4._wp * zcmsmag * 2._wp * rdt )              ! upper limit stability factor scaling 
     332            IF( ln_dynldf_blp ) zstabf_lo = ( 16._wp / 9._wp ) * zstabf_lo          ! provide |U|L^3/12 lower limit instead  
     333            !                                                                       ! of |U|L^3/16 in blp case 
    333334            DO jk = 1, jpkm1 
    334335               ! 
     
    365366                                     &                        dshesq(ji-1,jj) + dshesq(ji-1,jj-1) ) ) 
    366367                     ahmt(ji,jj,jk) =   MAX( ahmt(ji,jj,jk),   & 
    367                                      &   SQRT( (zu2pv2_ij + zu2pv2_ij_m1) * zdelta * zstabf_lo ) ) ! Impose lower limit == cfacmin * |U|L/2 
    368                      ahmt(ji,jj,jk) = MIN( ahmt(ji,jj,jk), zdelta * zstabf_up )                    ! Impose upper limit == cfacmax * L^2/(4dt) 
     368                                     &   SQRT( (zu2pv2_ij + zu2pv2_ij_m1) * zdelta * zstabf_lo ) ) ! Impose lower limit == minfac * |U|L/2 
     369                     ahmt(ji,jj,jk) = MIN( ahmt(ji,jj,jk), zdelta * zstabf_up )                    ! Impose upper limit == maxfac  * L^2/(4*2dt) 
    369370                                                     ! F-point value 
    370371                     zdelta         = zcmsmag * esqf(ji,jj)                                        ! L^2 * (C_smag/pi)^2 
     
    373374                                     &                        dtensq(ji+1,jj) + dtensq(ji+1,jj+1) ) ) 
    374375                     ahmf(ji,jj,jk) =   MAX( ahmf(ji,jj,jk),   & 
    375                                      &   SQRT( (zu2pv2_ij + zu2pv2_ij_p1) * zdelta * zstabf_lo ) ) ! Impose lower limit == cfacmin * |U|L/2 
    376                      ahmf(ji,jj,jk) = MIN( ahmf(ji,jj,jk), zdelta * zstabf_up )                    ! Impose upper limit == cfacmax * L^2/(4dt) 
     376                                     &   SQRT( (zu2pv2_ij + zu2pv2_ij_p1) * zdelta * zstabf_lo ) ) ! Impose lower limit == minfac * |U|L/2 
     377                     ahmf(ji,jj,jk) = MIN( ahmf(ji,jj,jk), zdelta * zstabf_up )                    ! Impose upper limit == maxfac  * L^2/(4*2dt) 
    377378                     ! 
    378379                  END DO 
     
    385386                                       !                      = sqrt( A_lap_smag L^2/8 ) 
    386387                                       ! stability limits already applied to laplacian values 
     388                                       ! effective default limits are |U|L^3/12 < B_hm < L^4/(32*2dt) 
    387389            ! 
    388390            DO jk = 1, jpkm1 
Note: See TracChangeset for help on using the changeset viewer.