Changeset 4947 for LMDZ6


Ignore:
Timestamp:
May 21, 2024, 9:36:17 PM (6 months ago)
Author:
evignon
Message:

ajout de la parameterisation de rugosite de la neige sur les calottes de Amory et al. 2017

File:
1 edited

Legend:

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

    r4916 r4947  
    146146    REAL, DIMENSION(klon)  :: fluxbs_1, fluxbs_2, bsweight_fresh
    147147    LOGICAL, DIMENSION(klon) :: ok_remaining_freshsnow
     148    REAL  :: ta1, ta2, ta3, z01, z02, z03, coefa, coefb, coefc, coefd
     149
    148150
    149151! End definition
     
    350352!
    351353!****************************************************************************************
    352     z0m = z0m_landice
    353     z0h = z0h_landice
    354     !z0m = SQRT(z0m**2+rugoro**2)
    355 
     354
     355if (z0m_landice .GT. 0.) then
     356    z0m(1:knon) = z0m_landice
     357    z0h(1:knon) = z0h_landice
     358else
     359    ! parameterization of z0=f(T) following measurements in Adelie Land by Amory et al 2018
     360    coefa = 0.1658 !0.1862 !Ant
     361    coefb = -50.3869 !-55.7718 !Ant
     362    ta1 = 253.15 !255. Ant
     363    ta2 = 273.15
     364    ta3 = 273.15+3
     365    z01 = exp(coefa*ta1 + coefb) !~0.2 ! ~0.25 mm
     366    z02 = exp(coefa*ta2 + coefb) !~6  !~7 mm
     367    z03 = z01
     368    coefc = log(z03/z02)/(ta3-ta2)
     369    coefd = log(z03)-coefc*ta3
     370    do j=1,knon
     371      if (temp_air(j) .lt. ta1) then
     372        z0m(j) = z01
     373      else if (temp_air(j).ge.ta1 .and. temp_air(j).lt.ta2) then
     374        z0m(j) = exp(coefa*temp_air(j) + coefb)
     375      else if (temp_air(j).ge.ta2 .and. temp_air(j).lt.ta3) then
     376        ! if st > 0, melting induce smooth surface
     377        z0m(j) = exp(coefc*temp_air(j) + coefd)
     378      else
     379        z0m(j) = z03
     380      endif
     381      z0h(j)=z0m(j)
     382    enddo
     383
     384endif   
     385 
    356386
    357387!****************************************************************************************
     
    366396   if (ok_bs) then
    367397       fluxbs(:)=0.
    368        do j=1,klon
     398       do j=1,knon
    369399          ws1(j)=(u1(j)**2+v1(j)**2)**0.5
    370400          ustar(j)=(cdragm(j)*(u1(j)**2+v1(j)**2))**0.5
Note: See TracChangeset for help on using the changeset viewer.