Ignore:
Timestamp:
Apr 3, 2015, 12:16:36 PM (9 years ago)
Author:
fhourdin
Message:

Modification du calcul des flux air/mer
1) Introduction d'un facteur f_qsat_oce=0.98 devant qsat dans le calcul
de l'évaporation sur océan pour tenir compte de la moindre évaporation
de l'eau salée.
2) Introduction d'une différentiation entre z0 pour le sensible, z0h,
et le latent, z0q, imposé constant z0q=f_z0qh_oce*z0h

Modification of air/sea fluxes computation
1) Introduction of a correcting factor f_qsat_oce=0.98 on qsat
to account for the weaker evaporation of salty water.
2) Introduction of z0q=f_z0qh_oce*z0h

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/calcul_fluxs_mod.F90

    r2240 r2254  
    55CONTAINS
    66  SUBROUTINE calcul_fluxs( knon, nisurf, dtime, &
    7        tsurf, p1lay, cal, beta, coef1lay, ps, &
     7       tsurf, p1lay, cal, beta, cdragh, cdragq, ps, &
    88       precip_rain, precip_snow, snow, qsurf, &
    99       radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, gustiness, &
    10        petAcoef, peqAcoef, petBcoef, peqBcoef, &
     10       fqsat, petAcoef, peqAcoef, petBcoef, peqBcoef, &
    1111       tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
    1212   
     
    2828!   cal          capacite calorifique du sol
    2929!   beta         evap reelle
    30 !   coef1lay     coefficient d'echange
     30!   cdragh       coefficient d'echange temperature
     31!   cdragq       coefficient d'echange evaporation
    3132!   ps           pression au sol
    3233!   precip_rain  precipitations liquides
     
    6162    REAL, DIMENSION(klon), INTENT(IN)    :: petBcoef, peqBcoef
    6263    REAL, DIMENSION(klon), INTENT(IN)    :: ps, q1lay
    63     REAL, DIMENSION(klon), INTENT(IN)    :: tsurf, p1lay, cal, beta, coef1lay
     64    REAL, DIMENSION(klon), INTENT(IN)    :: tsurf, p1lay, cal, beta, cdragh,cdragq
    6465    REAL, DIMENSION(klon), INTENT(IN)    :: precip_rain, precip_snow ! pas utiles
    6566    REAL, DIMENSION(klon), INTENT(IN)    :: radsol, dif_grnd
    6667    REAL, DIMENSION(klon), INTENT(IN)    :: t1lay, u1lay, v1lay,gustiness
     68    REAL,                  INTENT(IN)    :: fqsat ! correction factor on qsat (generally 0.98 over salty water, 1 everywhere else)
    6769
    6870! Parametres entree-sorties
     
    8183    REAL, DIMENSION(klon)                :: zx_mh, zx_nh, zx_oh
    8284    REAL, DIMENSION(klon)                :: zx_mq, zx_nq, zx_oq
    83     REAL, DIMENSION(klon)                :: zx_pkh, zx_dq_s_dt, zx_qsat, zx_coef
    84     REAL, DIMENSION(klon)                :: zx_sl, zx_k1
     85    REAL, DIMENSION(klon)                :: zx_pkh, zx_dq_s_dt, zx_qsat
     86    REAL, DIMENSION(klon)                :: zx_sl, zx_coefh, zx_coefq, zx_wind
    8587    REAL, DIMENSION(klon)                :: d_ts
    8688    REAL                                 :: zdelta, zcvm5, zx_qs, zcor, zx_dq_s_dh
     
    127129    fluxlat=0.
    128130    dflux_s = 0.
    129     dflux_l = 0.       
     131    dflux_l = 0.
    130132!
    131133! zx_qs = qsat en kg/kg
     
    156158       zx_dq_s_dt(i) = RCPD * zx_pkh(i) * zx_dq_s_dh
    157159       zx_qsat(i) = zx_qs
    158        zx_coef(i) = coef1lay(i) * &
    159             (min_wind_speed+SQRT(gustiness(i)+u1lay(i)**2+v1lay(i)**2)) * &
    160             p1lay(i)/(RD*t1lay(i))
    161        
     160       zx_wind(i)=min_wind_speed+SQRT(gustiness(i)+u1lay(i)**2+v1lay(i)**2)
     161       zx_coefh(i) = cdragh(i) * zx_wind(i) * p1lay(i)/(RD*t1lay(i))
     162       zx_coefq(i) = cdragq(i) * zx_wind(i) * p1lay(i)/(RD*t1lay(i))
     163!      zx_wind(i)=min_wind_speed+SQRT(gustiness(i)+u1lay(i)**2+v1lay(i)**2) &
     164!                * p1lay(i)/(RD*t1lay(i))
     165!      zx_coefh(i) = cdragh(i) * zx_wind(i)
     166!      zx_coefq(i) = cdragq(i) * zx_wind(i)
    162167    ENDDO
    163168
     
    170175       zx_sl(i) = RLVTT
    171176       IF (tsurf(i) .LT. RTT) zx_sl(i) = RLSTT
    172        zx_k1(i) = zx_coef(i)
    173177    ENDDO
    174178   
     
    176180    DO i = 1, knon
    177181! Q
    178        zx_oq(i) = 1. - (beta(i) * zx_k1(i) * peqBcoef(i) * dtime)
    179        zx_mq(i) = beta(i) * zx_k1(i) * &
    180             (peqAcoef(i) - zx_qsat(i) + &
    181             zx_dq_s_dt(i) * tsurf(i)) &
     182       zx_oq(i) = 1. - (beta(i) * zx_coefq(i) * peqBcoef(i) * dtime)
     183       zx_mq(i) = beta(i) * zx_coefq(i) * &
     184            (peqAcoef(i) -             &
     185! conv num avec precedente version
     186            fqsat * zx_qsat(i) + fqsat * zx_dq_s_dt(i) * tsurf(i))  &
     187!           fqsat * ( zx_qsat(i) - zx_dq_s_dt(i) * tsurf(i)) ) &
    182188            / zx_oq(i)
    183        zx_nq(i) = beta(i) * zx_k1(i) * (-1. * zx_dq_s_dt(i)) &
     189       zx_nq(i) = beta(i) * zx_coefq(i) * (- fqsat * zx_dq_s_dt(i)) &
    184190            / zx_oq(i)
    185191       
    186192! H
    187        zx_oh(i) = 1. - (zx_k1(i) * petBcoef(i) * dtime)
    188        zx_mh(i) = zx_k1(i) * petAcoef(i) / zx_oh(i)
    189        zx_nh(i) = - (zx_k1(i) * RCPD * zx_pkh(i))/ zx_oh(i)
     193       zx_oh(i) = 1. - (zx_coefh(i) * petBcoef(i) * dtime)
     194       zx_mh(i) = zx_coefh(i) * petAcoef(i) / zx_oh(i)
     195       zx_nh(i) = - (zx_coefh(i) * RCPD * zx_pkh(i))/ zx_oh(i)
    190196     
    191197! Tsurface
Note: See TracChangeset for help on using the changeset viewer.