Changeset 274 for LMDZ.3.3/branches


Ignore:
Timestamp:
Sep 18, 2001, 4:09:28 PM (23 years ago)
Author:
lmdzadmin
Message:

Reglage albedo, z0_new PB
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ.3.3/branches/rel-LF/libf/phylmd/interface_surf.F90

    r273 r274  
    312312           cal(1:knon) = RCPD / soilcap(1:knon)
    313313           radsol(1:knon) = radsol(1:knon)  + soilflux(1:knon)
    314 !!$           WRITE(*,*) 'radsol'
    315 !!$           WRITE(*,*) radsol(1 : knon)
    316 !!$           WRITE(*,*) 'soilflux'
    317 !!$           WRITE(*,*) soilflux(1 : knon)
    318314       ELSE
    319 !      if (check) write(*,*)'Sortie calbeta'
    320 !      if (check) write(*,*)'RCPD = ',RCPD,' capsol = '
    321 !      if (check) write(*,*)capsol
    322315           cal = RCPD * capsol
    323316!!$      cal = capsol
     
    337330     &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
    338331
    339 !!$       DO ii = 1, knon
    340 !!$         index = knindex(ii)
    341 !!$         alb_neig(ii) = alb_neig_grid(index)
    342 !!$         agesno(index)  = (agesno(index) + (1.-agesno(index)/50.)*dtime/86400.)&
    343 !!$            &             * EXP(-1.*MAX(0.0,precip_snow(ii))*dtime/0.3)
    344 !!$         agesno(index) = MAX(agesno(index),0.0)
    345 !!$         IF(snow(ii) .LT. 0.0001) agesno(index) = 0.
    346 !!$       ENDDO
    347332
    348333     call albsno(klon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:)) 
     
    399384      & swdown, sollw, precip_rain, precip_snow, evap, tsurf, &
    400385      & fluxlat, fluxsens, fder, albedo, taux, tauy, zmasq, &
    401       & tsurf_new, alb_new, alb_ice, pctsrf_new)
     386      & tsurf_new, alb_new, pctsrf_new)
    402387
    403388!    else if (ocean == 'slab  ') then
     
    440425      & swdown, sollw, precip_rain, precip_snow, evap, tsurf, &
    441426      & fluxlat, fluxsens, fder, albedo, taux, tauy, zmasq, &
    442       & tsurf_new, alb_new, alb_ice, pctsrf_new)
     427      & tsurf_new, alb_new, pctsrf_new)
    443428
    444429!    else if (ocean == 'slab  ') then
     
    460445    enddo
    461446
    462     z0_new = rugos
     447    z0_new = sqrt(rugos**2 + rugoro**2)
    463448!
    464449  else if (nisurf == is_sic) then
     
    479464      & swdown, sollw, precip_rain, precip_snow, evap, tsurf, &
    480465      & fluxlat, fluxsens, fder, albedo, taux, tauy, zmasq, &
    481       & tsurf_new, alb_new, alb_ice, pctsrf_new)
     466      & tsurf_new, alb_new, pctsrf_new)
    482467
    483468      tsurf_temp = tsurf_new
     
    488473!    else if (ocean == 'slab  ') then
    489474!      call interfoce(nisurf)
    490       ELSE
     475    ELSE
    491476!                              ! lecture conditions limites
    492           CALL interfoce(itime, dtime, jour, &
     477      CALL interfoce(itime, dtime, jour, &
    493478             &  klon, nisurf, knon, knindex, &
    494479             &  debut, &
    495480             &  tsurf_new, pctsrf_new)
    496481
    497           CALL calbeta(dtime, nisurf, knon, snow, qsol, beta, capsol, dif_grnd)
     482      CALL calbeta(dtime, nisurf, knon, snow, qsol, beta, capsol, dif_grnd)
    498483     
    499           IF (soil_model) THEN
    500               CALL soil(dtime, nisurf, knon,snow, tsurf, tsoil,soilcap, soilflux)
    501               cal(1:knon) = RCPD / soilcap(1:knon)
    502               radsol(1:knon) = radsol(1:knon)  + soilflux(1:knon)
    503               dif_grnd = 0.
    504 !!$           WRITE(*,*) 'radsol'
    505 !!$           WRITE(*,*) radsol(1 : knon)
    506 !!$           WRITE(*,*) 'soilflux'
    507 !!$           WRITE(*,*) soilflux(1 : knon)
    508           ELSE
    509 !      if (check) write(*,*)'Sortie calbeta'
    510 !      if (check) write(*,*)'RCPD = ',RCPD,' capsol = '
    511 !      if (check) write(*,*)capsol
    512               dif_grnd = 1.0 / tau_gl
    513               cal = RCPD * calice
    514               WHERE (snow > 0.0) cal = RCPD * calsno
    515           ENDIF
    516           tsurf_temp = tsurf
    517           beta = 1.0
     484      IF (soil_model) THEN
     485         CALL soil(dtime, nisurf, knon,snow, tsurf, tsoil,soilcap, soilflux)
     486         cal(1:knon) = RCPD / soilcap(1:knon)
     487         radsol(1:knon) = radsol(1:knon)  + soilflux(1:knon)
     488         dif_grnd = 0.
     489      ELSE
     490         dif_grnd = 1.0 / tau_gl
     491         cal = RCPD * calice
     492         WHERE (snow > 0.0) cal = RCPD * calsno
    518493      ENDIF
    519 
    520       CALL calcul_fluxs( klon, knon, nisurf, dtime, &
     494      tsurf_temp = tsurf
     495      beta = 1.0
     496    ENDIF
     497
     498    CALL calcul_fluxs( klon, knon, nisurf, dtime, &
    521499         &   tsurf_temp, p1lay, cal, beta, tq_cdrag, ps, &
    522500         &   precip_rain, precip_snow, snow, qsol,  &
     
    525503         &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
    526504
    527     fder = fder + dflux_s + dflux_l
    528 
    529       IF (ocean /= 'couple') THEN
    530           CALL fonte_neige( klon, knon, nisurf, dtime, &
     505    IF (ocean /= 'couple') THEN
     506      CALL fonte_neige( klon, knon, nisurf, dtime, &
    531507             &   tsurf_temp, p1lay, cal, beta, tq_cdrag, ps, &
    532508             &   precip_rain, precip_snow, snow, qsol,  &
     
    534510             &   petAcoef, peqAcoef, petBcoef, peqBcoef, &
    535511             &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
    536       ENDIF
     512
     513!     calcul albedo
     514
     515      CALL albsno(klon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:)) 
     516      WHERE (snow(1 : knon) .LT. 0.0001) agesno(1 : knon) = 0.
     517      zfra = MAX(0.0,MIN(1.0,snow/(snow+10.0)))
     518      alb_new(1 : knon) = alb_neig(1 : knon) *zfra + 0.6 * (1.0-zfra)
     519!!      alb_new(1 : knon) = 0.6
     520    ENDIF
     521
     522    fder = fder + dflux_s + dflux_l
     523
    537524!
    538525! 2eme appel a interfoce pour le cumul et le passage des flux a l'ocean
     
    547534      & swdown, sollw, precip_rain, precip_snow, evap, tsurf, &
    548535      & fluxlat, fluxsens, fder, albedo, taux, tauy, zmasq, &
    549       & tsurf_new, alb_new, alb_ice, pctsrf_new)
     536      & tsurf_new, alb_new, pctsrf_new)
    550537
    551538!    else if (ocean == 'slab  ') then
     
    554541    endif
    555542
    556 !
    557 ! calcul albedo
    558 !
    559 !
    560      CALL albsno(klon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:)) 
    561      WHERE (snow(1 : knon) .LT. 0.0001) agesno(1 : knon) = 0.
    562      zfra = MAX(0.0,MIN(1.0,snow/(snow+10.0)))
    563 !!$     alb_new(1 : knon) = alb_neig(1 : knon) *zfra + 0.6 * (1.0-zfra)
    564      alb_new(1 : knon) = 0.6
    565543     
    566544     z0_new = 0.001
     
    579557        cal(1:knon) = RCPD / soilcap(1:knon)
    580558        radsol(1:knon)  = radsol(1:knon) + soilflux(1:knon)
    581 !!$           WRITE(*,*) 'radsol'
    582 !!$           WRITE(*,'(16f17.4)') radsol(1 : knon)
    583 !!$           WRITE(*,*) 'soilflux'
    584 !!$           WRITE(*,'(16f17.4)')soilflux(1:knon)
    585559    ELSE
    586560        cal = RCPD * calice
     
    610584     WHERE (snow(1 : knon) .LT. 0.0001) agesno(1 : knon) = 0.
    611585     zfra = MAX(0.0,MIN(1.0,snow/(snow+10.0)))
    612 !!$     alb_new(1 : knon)  = alb_neig(1 : knon)*zfra + 0.6 * (1.0-zfra)
    613      alb_new(1 : knon)  = 0.6
     586     alb_new(1 : knon)  = alb_neig(1 : knon)*zfra + 0.6 * (1.0-zfra)
     587!!     alb_new(1 : knon)  = 0.6
    614588!
    615589! Rugosite
     
    901875      endif
    902876    endif
    903     neighbours = 0.
     877    neighbours = -1.
    904878    if (( .not. allocated(contfrac))) then
    905879      allocate(contfrac(knon), stat = error)
     
    1011985      & swdown, lwdown, precip_rain, precip_snow, evap, tsurf, &
    1012986      & fluxlat, fluxsens, fder, albsol, taux, tauy, zmasq, &
    1013       & tsurf_new, alb_new, alb_ice, pctsrf_new)
     987      & tsurf_new, alb_new, pctsrf_new)
    1014988
    1015989! Cette routine sert d'interface entre le modele atmospherique et un
     
    10881062
    10891063! Parametres de sortie
    1090   real, dimension(klon), intent(OUT):: tsurf_new, alb_new, alb_ice
     1064  real, dimension(klon), intent(OUT):: tsurf_new, alb_new
    10911065  real, dimension(klon,nbsrf), intent(OUT) :: pctsrf_new
    10921066
     
    12491223
    12501224! Initialisations
    1251   alb_ice= 0.0
    12521225
    12531226! calcul des fluxs a passer
Note: See TracChangeset for help on using the changeset viewer.