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
Location:
LMDZ5/trunk/libf/phylmd
Files:
16 added
10 edited

Legend:

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

    r1849 r1865  
    8383  character (len = 10),SAVE  :: type_veget_omp
    8484  CHARACTER(len = 8),SAVE   :: aer_type_omp
     85  logical,SAVE              :: ok_snow_omp
    8586  logical,SAVE              :: ok_newmicro_omp
    8687  logical,SAVE        :: ok_journe_omp, ok_mensuel_omp, ok_instan_omp, ok_hf_omp       
     
    227228  call getin('VEGET', type_veget_omp)
    228229!
     230
     231! Martin
     232!Config Key  = ok_snow
     233!Config Desc = Flag to activate snow model SISVAT
     234!Config Def  = .false.
     235  ok_snow_omp = .false.
     236  call getin('ok_snow', ok_snow_omp)
     237! Martin
     238
    229239!Config Key  = OK_journe
    230240!Config Desc = Pour des sorties journalieres
     
    17371747         ok_veget=.false.
    17381748    endif
     1749    ! Martin
     1750    ok_snow = ok_snow_omp
     1751    ! Martin
    17391752
    17401753    ok_newmicro = ok_newmicro_omp
     
    18601873  write(lunout,*)' Version ocean = ', version_ocean
    18611874  write(lunout,*)' Config veget = ', ok_veget,type_veget
     1875  write(lunout,*)' Snow model SISVAT : ok_snow = ', ok_snow
    18621876  write(lunout,*)' Sortie journaliere = ', ok_journe
    18631877  write(lunout,*)' Sortie haute frequence = ', ok_hf
  • 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)
  • LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90

    r1828 r1865  
    264264!$OMP THREADPRIVATE(rneb)
    265265
     266! variables de sorties MM
     267      REAL, ALLOCATABLE,DIMENSION(:) :: zxsnow,snowhgt,qsnow,to_ice
     268      REAL, ALLOCATABLE,DIMENSION(:) :: sissnow,runoff,albsol3_lic
     269
    266270CONTAINS
    267271
     
    414418
    415419
     420      ALLOCATE (zxsnow(klon),snowhgt(klon),qsnow(klon),to_ice(klon),sissnow(klon),runoff(klon),albsol3_lic(klon))
     421
     422
     423
    416424END SUBROUTINE phys_local_var_init
    417425
     
    554562      DEALLOCATE(beta_prec)
    555563      DEALLOCATE(rneb)
     564      DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic)
    556565
    557566END SUBROUTINE phys_local_var_end
  • LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r1852 r1865  
    11531153  TYPE(ctrl_out), SAVE :: o_rldcs4co2 = ctrl_out((/ 5, 10, 10, 10, 10, 10, 11, 11, 11 /), &
    11541154    'rldcs4co2', 'Downwelling CS LW 4xCO2 atmosphere', 'W/m2', (/ ('', i=1, 9) /))
     1155  TYPE(ctrl_out), SAVE :: o_snowsrf = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1156    'snowsrf', 'Snow mass at surface', 'kg/m2', (/ ('', i=1, 9) /))
     1157  TYPE(ctrl_out), SAVE :: o_qsnow = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1158    'qsnow', 'Water contained in snow', 'kg/m2', (/ ('', i=1, 9) /))
     1159  TYPE(ctrl_out), SAVE :: o_snowhgt = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1160    'snowhgt', 'Snow height at surface', 'm', (/ ('', i=1, 9) /))
     1161  TYPE(ctrl_out), SAVE :: o_toice = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1162    'to_ice', 'Snow passed to ice model', 'kg/m2', (/ ('', i=1, 9) /))
     1163  TYPE(ctrl_out), SAVE :: o_sissnow = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1164    'sissnow', 'Snow in snow model', 'kg/m2', (/ ('', i=1, 9) /))
     1165  TYPE(ctrl_out), SAVE :: o_runoff = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11 /), &
     1166    'runoff', 'Run-off rate land ice', 'kg/m2/s', (/ ('', i=1, 9) /))
     1167  TYPE(ctrl_out), SAVE :: o_albslw3 = ctrl_out((/ 1, 1, 1, 1, 10, 10, 11, 11, 11 /), &
     1168    'albslw3', 'Surface albedo LW3', '-', (/ ('', i=1, 9) /))
    11551169
    11561170!!!!!!!!!!!!! Sorties niveaux standards de pression NMC
  • LMDZ5/trunk/libf/phylmd/phys_output_mod.F90

    r1852 r1865  
    4141    USE mod_phys_lmdz_para
    4242    USE aero_mod, only : naero_spc,name_aero
     43        !Martin
     44    USE surface_data, ONLY : ok_snow
    4345    USE phys_output_ctrlout_mod
    4446
  • LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90

    r1828 r1865  
    2323      REAL, ALLOCATABLE :: bils_latent(:) ! bilan de chaleur au sol
    2424!$OMP THREADPRIVATE(bils_ec,bils_tke,bils_diss,bils_kinetic,bils_enthalp,bils_latent)
     25
    2526
    2627! ug Plein de variables venues de phys_output_mod
  • LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90

    r1852 r1865  
    3131    USE phys_state_var_mod
    3232    USE phys_local_var_mod
     33    USE phys_output_var_mod
    3334    USE indice_sol_mod
    3435    USE infotrac
    3536    USE comgeomphy
    36     USE surface_data,     ONLY : type_ocean, ok_veget
     37    USE surface_data,     ONLY : type_ocean, ok_veget, ok_snow
    3738    USE aero_mod
    3839    USE ioipsl
     
    296297ENDIF
    297298      CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
     299
     300      IF (ok_snow) THEN
     301         CALL histwrite_phy(o_snowsrf, zxsnow)
     302         CALL histwrite_phy(o_qsnow, qsnow)
     303         CALL histwrite_phy(o_snowhgt,snowhgt)
     304         CALL histwrite_phy(o_toice,to_ice)
     305         CALL histwrite_phy(o_sissnow,sissnow)
     306         CALL histwrite_phy(o_runoff,runoff)
     307         CALL histwrite_phy(o_albslw3,albsol3_lic)
     308      ENDIF
    298309
    299310
  • LMDZ5/trunk/libf/phylmd/physiq.F90

    r1863 r1865  
    2525  USE pbl_surface_mod, ONLY : pbl_surface
    2626  USE change_srf_frac_mod
    27   USE surface_data,     ONLY : type_ocean, ok_veget
     27  USE surface_data,     ONLY : type_ocean, ok_veget, ok_snow
    2828  USE phys_local_var_mod ! Variables internes non sauvegardees de la physique
    2929  USE phys_state_var_mod ! Variables sauvegardees de la physique
     
    773773
    774774  !
    775   REAL zxsnow(klon)
     775!  REAL zxsnow(klon)
    776776  REAL zxsnow_dummy(klon)
    777777  !
     
    19971997          debut,     lafin, &
    19981998          rlon,      rlat,      rugoro,  rmu0,      &
     1999          zsig,      sollwdown, pphi,    cldt,      &
    19992000          rain_fall, snow_fall, solsw,   sollw,     &
    20002001          t_seri,    q_seri,    u_seri,  v_seri,    &
     
    20032004          sollwdown, cdragh,    cdragm,  u1,    v1, &
    20042005          albsol1,   albsol2,   sens,    evap,   &
     2006          albsol3_lic,runoff,   snowhgt,   qsnow, to_ice, sissnow, &
    20052007          zxtsol,    zxfluxlat, zt2m,    qsat2m,  &
    20062008          d_t_vdf,   d_q_vdf,   d_u_vdf, d_v_vdf, d_t_diss, &
  • LMDZ5/trunk/libf/phylmd/surf_landice_mod.F90

    r1785 r1865  
    99!
    1010  SUBROUTINE surf_landice(itime, dtime, knon, knindex, &
     11       rlon, rlat, debut, lafin, &
     12       rmu0, lwdownm, albedo, pphi1, &
    1113       swnet, lwnet, tsurf, p1lay, &
    1214       cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
     
    1719       tsoil, z0_new, alb1, alb2, evap, fluxsens, fluxlat, &
    1820       tsurf_new, dflux_s, dflux_l, &
     21       slope, cloudf, &
     22       snowhgt, qsnow, to_ice, sissnow, &
     23       alb3, runoff, &
    1924       flux_u1, flux_v1)
    2025
    2126    USE dimphy
    22     USE surface_data,     ONLY : type_ocean, calice, calsno
     27    USE surface_data,     ONLY : type_ocean, calice, calsno, ok_snow
    2328    USE fonte_neige_mod,  ONLY : fonte_neige, run_off_lic
    2429    USE cpl_mod,          ONLY : cpl_send_landice_fields
    2530    USE calcul_fluxs_mod
    2631    USE phys_output_var_mod
     32#ifdef CPP_SISVAT
     33    USE surf_sisvat_mod,  ONLY : surf_sisvat
     34#endif
    2735    USE indice_sol_mod
    2836
     
    5260    REAL, DIMENSION(klon,nbsrf), INTENT(IN)       :: pctsrf
    5361
     62    LOGICAL,  INTENT(IN)                          :: debut   !true if first step
     63    LOGICAL,  INTENT(IN)                          :: lafin   !true if last step
     64    REAL, DIMENSION(klon), INTENT(IN)             :: rlon, rlat
     65    REAL, DIMENSION(klon), INTENT(IN)             :: rmu0
     66    REAL, DIMENSION(klon), INTENT(IN)             :: lwdownm !ylwdown
     67    REAL, DIMENSION(klon), INTENT(IN)             :: albedo  !mean albedo
     68    REAL, DIMENSION(klon), INTENT(IN)             :: pphi1   
     69    REAL, DIMENSION(klon), INTENT(IN)             :: slope   !mean slope in grid box 
     70    REAL, DIMENSION(klon), INTENT(IN)             :: cloudf  !total cloud fraction
     71
    5472! In/Output variables
    5573!****************************************************************************************
     
    6987    REAL, DIMENSION(klon), INTENT(OUT)            :: flux_u1, flux_v1
    7088
     89    REAL, DIMENSION(klon), INTENT(OUT)           :: alb3
     90    REAL, DIMENSION(klon), INTENT(OUT)           :: qsnow   !column water in snow [kg/m2]
     91    REAL, DIMENSION(klon), INTENT(OUT)           :: snowhgt !Snow height (m)
     92    REAL, DIMENSION(klon), INTENT(OUT)           :: to_ice
     93    REAL, DIMENSION(klon), INTENT(OUT)           :: sissnow
     94    REAL, DIMENSION(klon), INTENT(OUT)           :: runoff  !Land ice runoff
     95 
     96
    7197! Local variables
    7298!****************************************************************************************
     
    78104    INTEGER                  :: i,j
    79105
     106    REAL, DIMENSION(klon)    :: emis_new                  !Emissivity
     107    REAL, DIMENSION(klon)    :: swdown,lwdown
     108    REAL, DIMENSION(klon)    :: precip_snow_adv, snow_adv !Snow Drift precip./advection
     109    REAL, DIMENSION(klon)    :: bl_height, wind_velo      !height boundary layer, wind spd
     110    REAL, DIMENSION(klon)    :: dens_air,  snow_cont_air  !air density; snow content air
     111    REAL, DIMENSION(klon)    :: alb_soil                  !albedo of underlying ice
     112    REAL, DIMENSION(klon)    :: pexner                    !Exner potential
     113    REAL                     :: pref
     114    REAL, DIMENSION(klon,nsoilmx) :: tsoil0 !modfi
     115
     116    CHARACTER (len = 20)                      :: modname = 'surf_landice'
     117    CHARACTER (len = 80)                      :: abort_message
     118
    80119! End definition
    81120!****************************************************************************************
    82121!
    83122! Initialize output variables
     123    alb3(:) = 999999.
    84124    alb2(:) = 999999.
    85125    alb1(:) = 999999.
    86 
     126   
     127    runoff(:) = 0.
    87128!****************************************************************************************
    88129! Calculate total absorbed radiance at surface
     
    91132    radsol(:) = 0.0
    92133    radsol(1:knon) = swnet(1:knon) + lwnet(1:knon)
     134
     135!****************************************************************************************
     136!   ok_snow = TRUE  : prepare and call SISVAT snow model
     137!   ok_snow = FALSE : soil_model, calcul_flux, fonte_neige, ...
     138!
     139!****************************************************************************************
     140    IF (ok_snow) THEN
     141#ifdef CPP_SISVAT
     142       ! Prepare for calling SISVAT
     143       
     144       ! Calculate incoming flux for SW and LW interval: swdown, lwdown
     145       swdown(:)        = 0.0
     146       lwdown(:)        = 0.0
     147       DO i = 1, knon
     148          swdown(i)        = swnet(i)/(1-albedo(i))
     149          lwdown(i)        = lwdownm(i)
     150       END DO
     151       
     152       ! Set constants and compute some input for SISVAT
     153       snow_adv(:)      = 0.                          ! no snow blown in for now
     154       snow_cont_air(:) = 0.       
     155       alb_soil(:)      = albedo(:)
     156       pref             = 100000.                     ! = 1000 hPa
     157       DO i = 1, knon
     158          wind_velo(i)     = u1(i)**2 + v1(i)**2
     159          wind_velo(i)     = wind_velo(i)**0.5
     160          pexner(i)        = (p1lay(i)/pref)**(RD/RCPD)
     161          dens_air(i)      = p1lay(i)/RD/temp_air(i)  ! dry air density
     162          bl_height(i)     = pphi1(i)/RG             
     163       END DO
     164
     165!****************************************************************************************
     166! CALL to SISVAT interface
     167!
     168!****************************************************************************************
     169       ! config: compute everything with SV but temperatures afterwards with soil/calculfluxs
     170       DO i = 1, knon
     171          tsoil0(i,:)=tsoil(i,:)
     172       END DO
     173           ! Martin
     174           PRINT*, 'on appelle surf_sisvat'
     175           ! Martin
     176       CALL surf_sisvat(knon, rlon, rlat, knindex, itime, dtime, debut, lafin, &
     177            rmu0, swdown, lwdown, pexner, ps, p1lay, &
     178            precip_rain, precip_snow, precip_snow_adv, snow_adv, &
     179            bl_height, wind_velo, temp_air, dens_air, spechum, tsurf, &
     180            rugoro, snow_cont_air, alb_soil, slope, cloudf, &
     181            radsol, qsol, tsoil0, snow, snowhgt, qsnow, to_ice,sissnow, agesno, &
     182            AcoefH, AcoefQ, BcoefH, BcoefQ, cdragh, &
     183            run_off_lic, evap, fluxsens, fluxlat, dflux_s, dflux_l, &       
     184            tsurf_new, alb1, alb2, alb3, &
     185            emis_new, z0_new, qsurf)
     186       
     187       ! Suppose zero surface speed
     188       u0(:)            = 0.0
     189       v0(:)            = 0.0
     190       ! The calculation of heat/water fluxes, otherwise done by "CALL calcul_fluxs" is
     191       ! integrated in SISVAT, using the same method. It can be found in "sisvat.f", in the
     192       ! subroutine "SISVAT_TS2".
     193       ! u0, v0=0., dif_grnd=0. and beta=1 are assumed there!
     194       
     195       CALL calcul_flux_wind(knon, dtime, &
     196            u0, v0, u1, v1, cdragm, &
     197            AcoefU, AcoefV, BcoefU, BcoefV, &
     198            p1lay, temp_air, &
     199            flux_u1, flux_v1)
     200#else
     201       abort_message='Pb de coherence: ok_snow = .true. mais CPP_SISVAT = .false.'
     202       CALL abort_gcm(modname,abort_message,1)
     203#endif
     204    ELSE ! ok_snow=FALSE
    93205
    94206!****************************************************************************************
     
    168280!****************************************************************************************
    169281    z0_new(:) = MAX(1.E-3,rugoro(:))
     282    END IF ! ok_snow
     283
    170284
    171285!****************************************************************************************
    172286! Send run-off on land-ice to coupler if coupled ocean.
    173 ! run_off_lic has been calculated in fonte_neige
     287! run_off_lic has been calculated in fonte_neige or surf_sisvat
    174288!
    175289!****************************************************************************************
     
    177291       CALL cpl_send_landice_fields(itime, knon, knindex, run_off_lic)
    178292    ENDIF
     293
     294 ! transfer runoff rate [kg/m2/s](!) to physiq for output
     295    runoff(1:knon)=run_off_lic(1:knon)/dtime
     296
    179297 
    180298!****************************************************************************************
  • LMDZ5/trunk/libf/phylmd/surface_data.F90

    r1724 r1865  
    1111  CHARACTER(len=10), SAVE :: type_veget    ! orchidee/y/bucket/n/betaclim
    1212  !$OMP THREADPRIVATE(ok_veget)
     13  ! Martin
     14  LOGICAL, SAVE          :: ok_snow       ! true for coupling to snow model SISVAT
     15  !$OMP THREADPRIVATE(ok_snow)
     16  ! Martin
    1317
    1418  CHARACTER(len=6), SAVE :: type_ocean    ! force/slab/couple
Note: See TracChangeset for help on using the changeset viewer.