Ignore:
Timestamp:
Sep 13, 2013, 10:26:46 AM (11 years ago)
Author:
Laurent Fairhead
Message:

Inclusion de la bibliothèque SISVAT/MAR à LMDZ pour le traitement des surfaces
"land ice"

  1. Menegoz

Integration of the SISVAT/MAR library to LMDZ to model the land ice surfaces

  1. Menegoz
File:
1 edited

Legend:

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

    r1816 r1865  
    171171       debut,     lafin,                              &
    172172       rlon,      rlat,      rugoro,   rmu0,          &
     173       zsig,      sollwd_m,  pphi,     cldt,          &
    173174       rain_f,    snow_f,    solsw_m,  sollw_m,       &
    174175       t,         q,         u,        v,             &
     
    177178       lwdown_m,  cdragh,    cdragm,   zu1,    zv1,   &
    178179       alb1_m,    alb2_m,    zxsens,   zxevap,        &
     180       alb3_lic,  runoff,    snowhgt,   qsnow,     to_ice,    sissnow,  &
    179181       zxtsol,    zxfluxlat, zt2m,     qsat2m,        &
    180182       d_t,       d_q,       d_u,      d_v, d_t_diss, &
     
    224226! rlat-----input-R- latitude en degree
    225227! rugos----input-R- longeur de rugosite (en m)
     228! Martin
     229! zsig-----input-R- slope
     230! cldt-----input-R- total cloud fraction
     231! pphi-----input-R- geopotentiel de chaque couche (g z) (reference sol)
     232! Martin
    226233!
    227234! d_t------output-R- le changement pour "t"
     
    287294    REAL, DIMENSION(klon,klev+1), INTENT(IN)        :: paprs   ! pression between layers (Pa)
    288295    REAL, DIMENSION(klon, nbsrf), INTENT(IN)        :: pctsrf  ! sub-surface fraction
     296! Martin
     297    REAL, DIMENSION(klon),        INTENT(IN)        :: zsig    ! slope
     298    REAL, DIMENSION(klon),        INTENT(IN)        :: sollwd_m ! net longwave radiation at mean s   
     299    REAL, DIMENSION(klon),        INTENT(IN)        :: cldt    ! total cloud fraction
     300    REAL, DIMENSION(klon,klev),   INTENT(IN)        :: pphi    ! geopotential (m2/s2)
     301! Martin
    289302
    290303! Input/Output variables
     
    298311    REAL, DIMENSION(klon, nbsrf), INTENT(INOUT)     :: v10m    ! v speed at 10m
    299312    REAL, DIMENSION(klon, klev+1, nbsrf+1), INTENT(INOUT) :: tke
    300 
    301313! Output variables
    302314!****************************************************************************************
     
    308320    REAL, DIMENSION(klon),        INTENT(OUT)       :: alb1_m     ! mean albedo in visible SW interval
    309321    REAL, DIMENSION(klon),        INTENT(OUT)       :: alb2_m     ! mean albedo in near IR SW interval
     322    ! Martin
     323        REAL, DIMENSION(klon),        INTENT(OUT)       :: alb3_lic
     324    ! Martin
    310325    REAL, DIMENSION(klon),        INTENT(OUT)       :: zxsens     ! sensible heat flux at surface with inversed sign
    311326                                                                  ! (=> positive sign upwards)
     
    370385    REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_q     ! water vapour flux(latent flux) (kg/m**2/s)
    371386
     387! Martin
     388! sisvat
     389    REAL, DIMENSION(klon),       INTENT(OUT)        :: qsnow      ! snow water content
     390    REAL, DIMENSION(klon),       INTENT(OUT)        :: snowhgt    ! snow height
     391    REAL, DIMENSION(klon),       INTENT(OUT)        :: to_ice     ! snow passed to ice
     392    REAL, DIMENSION(klon),       INTENT(OUT)        :: sissnow    ! snow in snow model
     393    REAL, DIMENSION(klon),       INTENT(OUT)        :: runoff     ! runoff on land ice
     394! Martin
    372395
    373396! Local variables with attribute SAVE
     
    429452    REAL, DIMENSION(klon)              :: AcoefU, AcoefV, BcoefU, BcoefV
    430453    REAL, DIMENSION(klon)              :: ypsref
    431     REAL, DIMENSION(klon)              :: yevap, ytsurf_new, yalb1_new, yalb2_new
     454    REAL, DIMENSION(klon)              :: yevap, ytsurf_new, yalb1_new, yalb2_new, yalb3_new
    432455    REAL, DIMENSION(klon)              :: ztsol
    433456    REAL, DIMENSION(klon)              :: alb_m  ! mean albedo for whole SW interval
     
    475498
    476499    REAL                               :: zx_qs1, zcor1, zdelta1
     500
     501    ! Martin
     502    REAL, DIMENSION(klon, nbsrf)       :: sollwd ! net longwave radiation at surface
     503    REAL, DIMENSION(klon)              :: ysollwd
     504    REAL, DIMENSION(klon)              :: ytoice
     505    REAL, DIMENSION(klon)              :: ysnowhgt, yqsnow, ysissnow, yrunoff
     506    REAL, DIMENSION(klon)              :: yzsig
     507    REAL, DIMENSION(klon,klev)         :: ypphi
     508    REAL, DIMENSION(klon)              :: ycldt
     509    REAL, DIMENSION(klon)              :: yrmu0
     510    ! Martin
    477511
    478512!****************************************************************************************
     
    556590    d_t_diss= 0.0 ;d_u = 0.0     ; d_v = 0.0        ; yqsol = 0.0   
    557591    ytherm = 0.0  ; ytke=0.
     592    ! Martin
     593    ysnowhgt = 0.0; yqsnow = 0.0     ; yrunoff = 0.0   ; ytoice =0.0
     594    yalb3_new = 0.0  ; ysissnow = 0.0  ; ysollwd = 0.0
     595    ypphi = 0.0   ; ycldt = 0.0      ; yrmu0 = 0.0
     596    ! Martin
    558597   
    559598    tke(:,:,is_ave)=0.
     
    644683       DO i = 1, klon
    645684          sollw(i,nsrf) = sollw_m(i) + 4.0*RSIGMA*ztsol(i)**3 * (ztsol(i)-ts(i,nsrf))
     685          ! Martin
     686          sollwd(i,nsrf)= sollwd_m(i)
     687          ! Martin
    646688          solsw(i,nsrf) = solsw_m(i) * (1.-alb(i,nsrf)) / (1.-alb_m(i))
    647689       ENDDO
     
    712754          ypaprs(j,klev+1) = paprs(i,klev+1)
    713755          ywindsp(j) = SQRT(u10m(i,nsrf)**2 + v10m(i,nsrf)**2 )
     756          ! Martin
     757          yzsig(j)   = zsig(i)
     758          ycldt(j)   = cldt(i)
     759          yrmu0(j)   = rmu0(i)
     760          ! Martin
    714761       END DO
    715762
     
    862909     
    863910       CASE(is_lic)
     911          ! Martin
    864912          CALL surf_landice(itap, dtime, knon, ni, &
     913               rlon, rlat, debut, lafin, &
     914               yrmu0, ysollwd, yalb, ypphi(:,1), &
    865915               ysolsw, ysollw, yts, ypplay(:,1), &
    866916               ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
     
    871921               ytsoil, yz0_new, yalb1_new, yalb2_new, yevap, yfluxsens, yfluxlat, &
    872922               ytsurf_new, y_dflux_t, y_dflux_q, &
     923               yzsig, ycldt, &
     924               ysnowhgt, yqsnow, ytoice, ysissnow, &
     925               yalb3_new, yrunoff, &
    873926               y_flux_u1, y_flux_v1)
     927          !CALL surf_landice(itap, dtime, knon, ni, &
     928          !     ysolsw, ysollw, yts, ypplay(:,1), &
     929          !     ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
     930          !     AcoefH, AcoefQ, BcoefH, BcoefQ, &
     931          !     AcoefU, AcoefV, BcoefU, BcoefV, &
     932          !     ypsref, yu1, yv1, yrugoro, pctsrf, &
     933          !     ysnow, yqsurf, yqsol, yagesno, &
     934          !     ytsoil, yz0_new, yalb1_new, yalb2_new, yevap, yfluxsens, yfluxlat, &
     935          !     ytsurf_new, y_dflux_t, y_dflux_q, &
     936          !     y_flux_u1, y_flux_v1)
     937
     938          alb3_lic(i)=0.
     939          DO j = 1, knon
     940             i = ni(j)
     941             alb3_lic(i) = yalb3_new(j)
     942             snowhgt(i)   = ysnowhgt(j)
     943             qsnow(i)     = yqsnow(j)
     944             to_ice(i)    = ytoice(j)
     945             sissnow(i)   = ysissnow(j)
     946             runoff(i)    = yrunoff(j)
     947          END DO
     948          ! Martin
    874949         
    875950       CASE(is_oce)
Note: See TracChangeset for help on using the changeset viewer.