Changeset 4780


Ignore:
Timestamp:
Dec 21, 2023, 10:17:25 PM (5 months ago)
Author:
evignon
Message:

petites modifs dans les routines atke pour etre en accord avec les notations du papier

Location:
LMDZ6/trunk/libf/phylmd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/lmdz_atke_exchange_coeff.F90

    r4777 r4780  
    2525
    2626
    27 USE lmdz_atke_turbulence_ini, ONLY : iflag_atke, kappa, l0, ric, cinf, rpi, rcpd, atke_ok_virtual
     27USE lmdz_atke_turbulence_ini, ONLY : iflag_atke, kappa, l0, ric, cinf, rpi, rcpd, atke_ok_virtual, ri0, ri1
    2828USE lmdz_atke_turbulence_ini, ONLY : cepsilon, pr_slope, pr_asym, pr_neut, ctkes, rg, rd, rv, atke_ok_vdiff
    29 USE lmdz_atke_turbulence_ini, ONLY : viscom, viscoh, clmix, clmixshear, iflag_atke_lmix, lmin, smmin
     29USE lmdz_atke_turbulence_ini, ONLY : viscom, viscoh, clmix, clmixshear, iflag_atke_lmix, lmin, smmin, cn
    3030
    3131implicit none
     
    6969
    7070INTEGER :: igrid,ilay ! horizontal,vertical index (flat grid)
    71 REAL    :: cn,Ri0,Ri1    ! parameter for Sm stability function and Prandlt
    7271REAL    :: preff      ! reference pressure for potential temperature calculations
    7372REAL    :: thetam     ! mean potential temperature at interface
     
    132131! Computes the gradient Richardson's number and stability functions:
    133132!===================================================================
    134 
    135 ! calculation of cn = Sm value at Ri=0
    136 ! direct dependance on cepsilon to guarantee Fm=1 (first-order like stability function) at Ri=0
    137 cn=(1./sqrt(cepsilon))**(2/3)
    138 ! calculation of Ri0 such that continuity in slope of Sm at Ri=0
    139 Ri0=2./rpi*(cinf - cn)*ric/cn
    140 ! calculation of Ri1 to guarantee continuity in slope of Prandlt number at Ri=0
    141 Ri1 = -2./rpi * (pr_asym - pr_neut)
    142 
    143133
    144134DO ilay=2,nlay
     
    176166
    177167IF (iflag_atke_lmix .EQ. 1 ) THEN
    178 
     168! Blackadar formulation (~kappa l) + buoyancy length scale (Deardoff 1980) for very stable conditions
    179169   DO ilay=2,nlay
    180170      DO igrid=1,ngrid
     
    223213
    224214ELSE
    225 ! default: neglect effect of local stratification and shear
     215! default Blackadar formulation: neglect effect of local stratification and shear
    226216
    227217   DO ilay=2,nlay+1
     
    250240
    251241! full implicit scheme resolved with a second order polynomial equation
    252 
     242! default solution which shows fair convergence properties
    253243    DO ilay=2,nlay
    254244        DO igrid=1,ngrid
  • LMDZ6/trunk/libf/phylmd/lmdz_atke_turbulence_ini.F90

    r4745 r4780  
    1010  real :: kappa = 0.4 ! Von Karman constant
    1111  !$OMP THREADPRIVATE(kappa)
    12   real :: l0,ric,ri0,cinf,cepsilon,pr_slope,pr_asym,pr_neut,clmix,clmixshear,smmin,ctkes,cke
    13   !$OMP THREADPRIVATE(l0,ric,cinf,cepsilon,pr_slope,pr_asym,pr_neut,clmix,clmixshear,smmin,ctkes,cke)
     12  real :: cinffac
     13  !$OMP THREADPRIVATE(cinffac)
     14  real :: l0,ric,ri0,ri1,cinf,cn,cepsilon,pr_slope,pr_asym,pr_neut,clmix,clmixshear,smmin,ctkes,cke
     15  !$OMP THREADPRIVATE(l0,ri0,ri1,ric,cinf,cn,cepsilon,pr_slope,pr_asym,pr_neut,clmix,clmixshear,smmin,ctkes,cke)
    1416  integer :: lunout,prt_level
    1517  !$OMP THREADPRIVATE(lunout,prt_level)
     
    1820  real :: viscom, viscoh
    1921  !$OMP THREADPRIVATE(viscom,viscoh)
    20   real :: lmin=0.01              ! minimum mixing length
     22  real :: lmin=0.01              ! minimum mixing length corresponding to the Kolmogov dissipation scale
     23                                 ! in planetary atmospheres (Chen et al 2016, JGR Atmos)
    2124  !$OMP THREADPRIVATE(lmin)
    2225  logical :: atke_ok_vdiff, atke_ok_virtual
     
    8992  ! Sun et al 2011, JAMC
    9093  ! between 10 and 40
    91 
    9294  l0=15.0
    9395  CALL getin_p('atke_l0',l0)
     
    9799  CALL getin_p('atke_ric',ric)
    98100
    99   ! asymptotic value of Sm for Ri=-Inf
    100   cinf=1.5
    101   CALL getin_p('atke_cinf',cinf)
    102101
    103102  ! constant for tke dissipation calculation
    104103  cepsilon=5.87 ! default value as in yamada4
    105104  CALL getin_p('atke_cepsilon',cepsilon)
     105
     106
     107  ! calculation of cn = Sm value at Ri=0
     108  ! direct dependance on cepsilon to guarantee Fm=1 (first-order like stability function) at Ri=0
     109  cn=(1./sqrt(cepsilon))**(2/3)
     110
     111  ! asymptotic value of Sm for Ri=-Inf
     112  cinffac=2.0
     113  CALL getin_p('atke_cinffac',cinffac)
     114  cinf=cinffac*cn
     115  if (cinf .le. cn) then
     116        call abort_physic("atke_turbulence_ini", &
     117        'cinf cannot be lower than cn', 1)
     118  endif
    106119
    107120
     
    119132  endif
    120133
    121   ! asymptotic turbulent prandt number value for Ri=-Inf
    122   pr_asym=0.4
    123   CALL getin_p('atke_pr_asym',pr_asym)
    124 
    125134  ! value of turbulent prandtl number in neutral conditions (Ri=0)
    126135  pr_neut=0.8
    127136  CALL getin_p('atke_pr_neut',pr_neut)
     137
     138
     139 ! asymptotic turbulent prandt number value for Ri=-Inf
     140  pr_asym=0.4
     141  CALL getin_p('atke_pr_asym',pr_asym)
     142  if (pr_asym .le. pr_neut) then
     143        call abort_physic("atke_turbulence_ini", &
     144        'pr_asym must be be greater than pr_neut', 1)
     145  endif
     146
     147
    128148
    129149  ! coefficient for mixing length depending on local stratification
     
    147167  CALL getin_p('atke_cke',cke)
    148168
     169
     170  ! calculation of Ri0 such that continuity in slope of Sm at Ri=0
     171  ri0=2./rpi*(cinf - cn)*ric/cn
     172
     173  ! calculation of Ri1 to guarantee continuity in slope of Prandlt number at Ri=0
     174  ri1 = -2./rpi * (pr_asym - pr_neut)
     175
     176
    149177 RETURN
    150178
Note: See TracChangeset for help on using the changeset viewer.