Ignore:
Timestamp:
Jun 14, 2015, 9:13:32 PM (10 years ago)
Author:
Laurent Fairhead
Message:

Merged trunk changes -r2237:2291 into testing branch

Location:
LMDZ5/branches/testing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/phylmd/calcul_fluxs_mod.F90

    r1910 r2298  
    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, &
    9        radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, &
    10        petAcoef, peqAcoef, petBcoef, peqBcoef, &
     9       radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, gustiness, &
     10       fqsat, petAcoef, peqAcoef, petBcoef, peqBcoef, &
    1111       tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
    1212   
    1313    USE dimphy, ONLY : klon
    1414    USE indice_sol_mod
     15
     16    INCLUDE "clesphys.h"
    1517
    1618! Cette routine calcule les fluxs en h et q a l'interface et eventuellement
     
    2628!   cal          capacite calorifique du sol
    2729!   beta         evap reelle
    28 !   coef1lay     coefficient d'echange
     30!   cdragh       coefficient d'echange temperature
     31!   cdragq       coefficient d'echange evaporation
    2932!   ps           pression au sol
    3033!   precip_rain  precipitations liquides
     
    5962    REAL, DIMENSION(klon), INTENT(IN)    :: petBcoef, peqBcoef
    6063    REAL, DIMENSION(klon), INTENT(IN)    :: ps, q1lay
    61     REAL, DIMENSION(klon), INTENT(IN)    :: tsurf, p1lay, cal, beta, coef1lay
     64    REAL, DIMENSION(klon), INTENT(IN)    :: tsurf, p1lay, cal, beta, cdragh,cdragq
    6265    REAL, DIMENSION(klon), INTENT(IN)    :: precip_rain, precip_snow ! pas utiles
    6366    REAL, DIMENSION(klon), INTENT(IN)    :: radsol, dif_grnd
    64     REAL, DIMENSION(klon), INTENT(IN)    :: t1lay, u1lay, v1lay
     67    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)
    6569
    6670! Parametres entree-sorties
     
    7983    REAL, DIMENSION(klon)                :: zx_mh, zx_nh, zx_oh
    8084    REAL, DIMENSION(klon)                :: zx_mq, zx_nq, zx_oq
    81     REAL, DIMENSION(klon)                :: zx_pkh, zx_dq_s_dt, zx_qsat, zx_coef
    82     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
    8387    REAL, DIMENSION(klon)                :: d_ts
    8488    REAL                                 :: zdelta, zcvm5, zx_qs, zcor, zx_dq_s_dh
     
    125129    fluxlat=0.
    126130    dflux_s = 0.
    127     dflux_l = 0.       
     131    dflux_l = 0.
    128132!
    129133! zx_qs = qsat en kg/kg
     
    154158       zx_dq_s_dt(i) = RCPD * zx_pkh(i) * zx_dq_s_dh
    155159       zx_qsat(i) = zx_qs
    156        zx_coef(i) = coef1lay(i) * &
    157             (1.0+SQRT(u1lay(i)**2+v1lay(i)**2)) * &
    158             p1lay(i)/(RD*t1lay(i))
    159        
     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)
    160167    ENDDO
    161168
     
    168175       zx_sl(i) = RLVTT
    169176       IF (tsurf(i) .LT. RTT) zx_sl(i) = RLSTT
    170        zx_k1(i) = zx_coef(i)
    171177    ENDDO
    172178   
     
    174180    DO i = 1, knon
    175181! Q
    176        zx_oq(i) = 1. - (beta(i) * zx_k1(i) * peqBcoef(i) * dtime)
    177        zx_mq(i) = beta(i) * zx_k1(i) * &
    178             (peqAcoef(i) - zx_qsat(i) + &
    179             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)) ) &
    180188            / zx_oq(i)
    181        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)) &
    182190            / zx_oq(i)
    183191       
    184192! H
    185        zx_oh(i) = 1. - (zx_k1(i) * petBcoef(i) * dtime)
    186        zx_mh(i) = zx_k1(i) * petAcoef(i) / zx_oh(i)
    187        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)
    188196     
    189197! Tsurface
     
    244252!
    245253  SUBROUTINE calcul_flux_wind(knon, dtime, &
    246        u0, v0, u1, v1, cdrag_m, &
     254       u0, v0, u1, v1, gustiness, cdrag_m, &
    247255       AcoefU, AcoefV, BcoefU, BcoefV, &
    248256       p1lay, t1lay, &
     
    251259    USE dimphy
    252260    INCLUDE "YOMCST.h"
     261    INCLUDE "clesphys.h"
    253262
    254263! Input arguments
     
    257266    REAL, INTENT(IN)                     :: dtime
    258267    REAL, DIMENSION(klon), INTENT(IN)    :: u0, v0  ! u and v at niveau 0
    259     REAL, DIMENSION(klon), INTENT(IN)    :: u1, v1  ! u and v at niveau 1
     268    REAL, DIMENSION(klon), INTENT(IN)    :: u1, v1, gustiness  ! u and v at niveau 1
    260269    REAL, DIMENSION(klon), INTENT(IN)    :: cdrag_m ! cdrag pour momentum
    261270    REAL, DIMENSION(klon), INTENT(IN)    :: AcoefU, AcoefV, BcoefU, BcoefV
     
    277286!****************************************************************************************
    278287    DO i=1,knon
    279        mod_wind = 1.0 + SQRT((u1(i) - u0(i))**2 + (v1(i)-v0(i))**2)
     288       mod_wind = min_wind_speed + SQRT(gustiness(i)+(u1(i) - u0(i))**2 + (v1(i)-v0(i))**2)
    280289       buf = cdrag_m(i) * mod_wind * p1lay(i)/(RD*t1lay(i))
    281290       flux_u1(i) = (AcoefU(i) - u0(i)) / (1/buf - BcoefU(i)*dtime )
Note: See TracChangeset for help on using the changeset viewer.