Ignore:
Timestamp:
Mar 7, 2003, 5:57:53 PM (22 years ago)
Author:
lmdzadmin
Message:

Correction bug tsurf_new=RTT - 1.8 apres fonte et passage routine soil
Correction bug tsurf_new=RTT sic & lic
IM/JLD/LF

File:
1 edited

Legend:

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

    r441 r457  
    6767      & evap, fluxsens, fluxlat, dflux_l, dflux_s, &             
    6868      & tsol_rad, tsurf_new, alb_new, alblw, emis_new, &
    69       & z0_new, pctsrf_new, agesno)
     69!IM cf. JLD      & z0_new, pctsrf_new, agesno)
     70      & z0_new, pctsrf_new, agesno,fqcalving,ffonte)
    7071
    7172
     
    165166  real, dimension(klon), intent(IN) :: sollw, sollwdown, swnet, swdown
    166167  real, dimension(klon), intent(IN) :: ps, albedo
     168!IM cf LF
     169! real, dimension(klon), intent(INOUT) :: tsurf
     170! real, dimension(klon), intent(IN) :: p1lay
    167171  real, dimension(klon), intent(IN) :: tsurf, p1lay
    168172  REAL, DIMENSION(klon), INTENT(INOUT) :: radsol,fder
     
    188192  real, dimension(klon), intent(INOUT):: agesno
    189193
     194! Flux thermique utiliser pour fondre la neige
     195!jld a rajouter   real, dimension(klon), intent(INOUT):: ffonte
     196  real, dimension(klon), intent(INOUT):: ffonte
     197! Flux d'eau "perdue" par la surface et nécessaire pour que limiter la
     198! hauteur de neige, en kg/m2/s
     199!jld a rajouter   real, dimension(klon), intent(INOUT):: fqcalving
     200  real, dimension(klon), intent(INOUT):: fqcalving
     201
    190202! Local
    191203  character (len = 20),save :: modname = 'interfsurf_hq'
     
    206218  real, DIMENSION(klon):: zfra
    207219  logical              :: cumul = .false.
     220!IM cf LF
     221  integer :: i
    208222
    209223  if (check) write(*,*) 'Entree ', modname
     
    334348     &   radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
    335349     &   petAcoef, peqAcoef, petBcoef, peqBcoef, &
    336      &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     350     &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
     351!IM cf JLD
     352     &   fqcalving,ffonte)
    337353
    338354
     
    494510             &  tsurf_new, pctsrf_new)
    495511
     512!IM cf LF
     513      DO i = 1, knon
     514       IF (pctsrf_new(i,nisurf) < EPSFRA) then
     515          snow(i) = 0.0
     516!IM cf LF/JLD         tsurf(i) = RTT - 1.8
     517          tsurf_new(i) = RTT - 1.8
     518          IF (soil_model) tsoil(i,:) = RTT -1.8
     519        endif
     520      enddo
     521
    496522      CALL calbeta(dtime, nisurf, knon, snow, qsol, beta, capsol, dif_grnd)
    497523     
    498524      IF (soil_model) THEN
    499          CALL soil(dtime, nisurf, knon,snow, tsurf, tsoil,soilcap, soilflux)
     525!IM cf LF/JLD        CALL soil(dtime, nisurf, knon,snow, tsurf, tsoil,soilcap, soilflux)
     526         CALL soil(dtime, nisurf, knon,snow, tsurf_new, tsoil,soilcap, soilflux)
    500527         cal(1:knon) = RCPD / soilcap(1:knon)
    501528         radsol(1:knon) = radsol(1:knon)  + soilflux(1:knon)
     
    517544         &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
    518545
     546!IM cf JP 12.02.03
     547!     DO i = 1, knon
     548!      IF (pctsrf_new(i,nisurf) < EPSFRA) then
     549!         snow(i) = 0.0     
     550!         tsurf_new(i) = RTT - 1.8
     551!         IF (soil_model) tsoil(i,:) = RTT -1.8
     552!       endif
     553!     enddo
     554
    519555    IF (ocean /= 'couple') THEN
    520556      CALL fonte_neige( klon, knon, nisurf, dtime, &
     
    523559             &   radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
    524560             &   petAcoef, peqAcoef, petBcoef, peqBcoef, &
    525              &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     561             &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
     562!IM cf JLD
     563             &   fqcalving,ffonte)
    526564
    527565!     calcul albedo
     
    592630     &   radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, &
    593631     &   petAcoef, peqAcoef, petBcoef, peqBcoef, &
    594      &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     632     &   tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
     633!IM cf JLD
     634     &   fqcalving,ffonte)
    595635
    596636!
     
    24392479     & radsol, dif_grnd, t1lay, q1lay, u1lay, v1lay, &
    24402480     & petAcoef, peqAcoef, petBcoef, peqBcoef, &
    2441      & tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l)
     2481     & tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
     2482!IM cf JLD
     2483     & fqcalving,ffonte)
    24422484
    24432485! Routine de traitement de la fonte de la neige dans le cas du traitement
     
    24772519#include "FCTTRE.inc"
    24782520#include "indicesol.inc"
     2521!IM cf JLD
     2522!#include "YOMCST.inc"
    24792523
    24802524! Parametres d'entree
     
    24932537  real, dimension(klon), intent(INOUT):: tsurf_new, evap, fluxsens, fluxlat
    24942538  real, dimension(klon), intent(INOUT):: dflux_s, dflux_l
     2539! Flux thermique utiliser pour fondre la neige
     2540  real, dimension(klon), intent(INOUT):: ffonte
     2541! Flux d'eau "perdue" par la surface et necessaire pour que limiter la
     2542! hauteur de neige, en kg/m2/s
     2543  real, dimension(klon), intent(INOUT):: fqcalving
    24952544
    24962545! Variables locales
     2546! Masse maximum de neige (kg/m2). Au dessus de ce seuil, la neige
     2547! en exces "s'ecoule" (calving)
     2548  real, parameter :: snow_max=1.
    24972549  integer :: i
    24982550  real, dimension(klon) :: zx_mh, zx_nh, zx_oh
     
    25072559  real, parameter :: t_grnd = 271.35, t_coup = 273.15
    25082560!! PB temporaire en attendant mieux pour le modele de neige
     2561! REAL, parameter :: chasno = RLMLT/(2.3867E+06*0.15)
    25092562  REAL, parameter :: chasno = 3.334E+05/(2.3867E+06*0.15)
    25102563!
     
    25852638! Y'a-t-il fonte de neige?
    25862639!
     2640  ffonte=0.
    25872641  do i = 1, knon
    25882642    neige_fond = ((snow(i) > epsfra .OR. nisurf == is_sic .OR. nisurf == is_lic) &
     
    25902644    if (neige_fond) then
    25912645      fq_fonte = MIN( MAX((tsurf_new(i)-RTT )/chasno,0.0),snow(i))
     2646      ffonte(i) = fq_fonte * RLMLT/dtime
    25922647      snow(i) = max(0., snow(i) - fq_fonte)
    25932648      bil_eau_s(i) = bil_eau_s(i) + fq_fonte
    25942649      tsurf_new(i) = tsurf_new(i) - fq_fonte * chasno 
    2595       IF (nisurf == is_sic .OR. nisurf == is_lic ) tsurf_new(i) = RTT -1.8
     2650!IM cf JLD OK     
     2651      IF (nisurf == is_sic .OR. nisurf == is_lic ) tsurf_new(i) = RTT
    25962652      d_ts(i) = tsurf_new(i) - tsurf(i)
    25972653!      zx_h_ts(i) = tsurf_new(i) * RCPD * zx_pkh(i)
     
    26112667!!$      fq_fonte = bilan_f / zx_sl(i)
    26122668    endif
    2613 
     2669!
     2670!   s'il y a une hauteur trop importante de neige, elle s'coule
     2671    fqcalving(i) = max(0., snow(i) - snow_max)/dtime
     2672    snow(i)=min(snow(i),snow_max)
     2673!
    26142674    IF (nisurf == is_ter) then
    26152675      qsol(i) = qsol(i) + bil_eau_s(i)
Note: See TracChangeset for help on using the changeset viewer.