Changeset 5188 for LMDZ6/trunk/libf


Ignore:
Timestamp:
Sep 14, 2024, 2:23:57 PM (3 months ago)
Author:
evignon
Message:

changes in the roughness length parameterization over landice.
Now account for a 2-day average temperature instead of instantaneous temperature
Valentin Wiener

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

Legend:

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

    r5150 r5188  
    400400      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: tpot, tpote, ue, uq, uwat, ve, vq, vwat, zxffonte
    401401!$OMP THREADPRIVATE(tpot, tpote, ue, uq, uwat, ve, vq, vwat, zxffonte)
    402       REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxustartlic, zxrhoslic, zxqsaltlic
    403 !$OMP THREADPRIVATE(zxustartlic, zxrhoslic, zxqsaltlic)
     402      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxustartlic, zxrhoslic, zxqsaltlic, tempsmoothlic
     403!$OMP THREADPRIVATE(zxustartlic, zxrhoslic, zxqsaltlic, tempsmoothlic)
    404404      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfqcalving
    405405!$OMP THREADPRIVATE(zxfqcalving)
     
    10611061      ALLOCATE(zxrunofflic(klon), runoff_diag(klon))
    10621062      runoff_diag(:)=0.
    1063       ALLOCATE(zxustartlic(klon), zxrhoslic(klon), zxqsaltlic(klon))
    1064       zxustartlic(:)=0. ; zxrhoslic(:)=0. ; zxqsaltlic(:)=0.
     1063      ALLOCATE(zxustartlic(klon), zxrhoslic(klon), zxqsaltlic(klon), tempsmoothlic(klon))
     1064      zxustartlic(:)=0. ; zxrhoslic(:)=0. ; zxqsaltlic(:)=0. ; tempsmoothlic(:)=0.
    10651065      ALLOCATE(rain_lsc(klon))
    10661066      ALLOCATE(rain_num(klon))
     
    14831483! SN runoff_diag
    14841484      DEALLOCATE(zxrunofflic, runoff_diag)
    1485       DEALLOCATE(zxustartlic, zxrhoslic, zxqsaltlic)
     1485      DEALLOCATE(zxustartlic, zxrhoslic, zxqsaltlic, tempsmoothlic)
    14861486      DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
    14871487      DEALLOCATE(rain_lsc)
  • LMDZ6/trunk/libf/phylmd/surf_landice_mod.F90

    r5022 r5188  
    3636    USE cpl_mod,          ONLY : cpl_send_landice_fields
    3737    USE calcul_fluxs_mod
    38     USE phys_local_var_mod, ONLY : zxrhoslic, zxustartlic, zxqsaltlic
     38    USE phys_local_var_mod, ONLY : zxrhoslic, zxustartlic, zxqsaltlic, tempsmoothlic
    3939    USE phys_output_var_mod, ONLY : snow_o,zfra_o
    4040#ifdef ISO   
     
    185185
    186186    REAL,DIMENSION(klon) :: alb1,alb2
     187    REAL                 :: time_tempsmooth,coef_tempsmooth
    187188    REAL,DIMENSION(klon) :: precip_totsnow, evap_totsnow
    188189    REAL, DIMENSION (klon,6) :: alb6
     
    230231           PRINT*, 'alb_nir_sno_lic',alb_nir_sno_lic
    231232 
     233  DO j=1,knon
     234       i = knindex(j)
     235       tempsmoothlic(i) = temp_air(j)
     236  ENDDO
    232237  firstcall=.false.
    233238  ENDIF
     
    445450    z0h(1:knon) = z0h_landice
    446451else
    447     ! parameterization of z0=f(T) following measurements in Adelie Land by Amory et al 2018
     452    ! parameterization of z0=f(T) following measurements in Adelie Land by Amory et al 2017
    448453    coefa = 0.1658 !0.1862 !Ant
    449454    coefb = -50.3869 !-55.7718 !Ant
     
    456461    coefc = log(z03/z02)/(ta3-ta2)
    457462    coefd = log(z03)-coefc*ta3
     463    time_tempsmooth=2.*86400.
     464    coef_tempsmooth=min(1.,dtime/time_tempsmooth)
     465    !coef_tempsmooth=0.
    458466    do j=1,knon
    459       if (temp_air(j) .lt. ta1) then
     467      i=knindex(j)
     468      print*, "tempsmoothlic", tempsmoothlic(i)
     469      tempsmoothlic(i)=temp_air(j)*coef_tempsmooth+tempsmoothlic(i)*(1.-coef_tempsmooth)
     470      if (tempsmoothlic(i) .lt. ta1) then
    460471        z0m(j) = z01
    461       else if (temp_air(j).ge.ta1 .and. temp_air(j).lt.ta2) then
    462         z0m(j) = exp(coefa*temp_air(j) + coefb)
    463       else if (temp_air(j).ge.ta2 .and. temp_air(j).lt.ta3) then
     472      else if (tempsmoothlic(i).ge.ta1 .and. tempsmoothlic(i).lt.ta2) then
     473        z0m(j) = exp(coefa*tempsmoothlic(i) + coefb)
     474      else if (tempsmoothlic(i).ge.ta2 .and. tempsmoothlic(i).lt.ta3) then
    464475        ! if st > 0, melting induce smooth surface
    465         z0m(j) = exp(coefc*temp_air(j) + coefd)
     476        z0m(j) = exp(coefc*tempsmoothlic(i) + coefd)
    466477      else
    467478        z0m(j) = z03
Note: See TracChangeset for help on using the changeset viewer.