/[lmdze]/trunk/phylmd/Interface_surf/interfsurf_hq.f
ViewVC logotype

Diff of /trunk/phylmd/Interface_surf/interfsurf_hq.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/phylmd/Interface_surf/interfsurf_hq.f revision 106 by guez, Tue Sep 9 12:54:30 2014 UTC trunk/Sources/phylmd/Interface_surf/interfsurf_hq.f revision 150 by guez, Thu Jun 18 13:49:26 2015 UTC
# Line 12  contains Line 12  contains
12         tsurf_new, alb_new, alblw, z0_new, pctsrf_new, agesno, fqcalving, &         tsurf_new, alb_new, alblw, z0_new, pctsrf_new, agesno, fqcalving, &
13         ffonte, run_off_lic_0, flux_o, flux_g)         ffonte, run_off_lic_0, flux_o, flux_g)
14    
15      ! Cette routine sert d'aiguillage entre l'atmosphère et la surface      ! Cette routine sert d'aiguillage entre l'atmosph\`ere et la surface
16      ! en général (sols continentaux, océans, glaces) pour les flux de      ! en g\'en\'eral (sols continentaux, oc\'eans, glaces) pour les flux de
17      ! chaleur et d'humidité.      ! chaleur et d'humidit\'e.
18    
19      ! Laurent Fairhead, February 2000      ! Laurent Fairhead, February 2000
20    
21      USE abort_gcm_m, ONLY: abort_gcm      USE abort_gcm_m, ONLY: abort_gcm
22        use alboc_m, only: alboc
23      USE albsno_m, ONLY: albsno      USE albsno_m, ONLY: albsno
24      use calbeta_m, only: calbeta      use calbeta_m, only: calbeta
25      USE calcul_fluxs_m, ONLY: calcul_fluxs      USE calcul_fluxs_m, ONLY: calcul_fluxs
# Line 83  contains Line 84  contains
84      ! rugos rugosite      ! rugos rugosite
85      ! rugoro rugosite orographique      ! rugoro rugosite orographique
86      real, intent(INOUT):: snow(klon), qsurf(klon)      real, intent(INOUT):: snow(klon), qsurf(klon)
87      real, intent(IN):: tsurf(:) ! (knon) température de surface      real, intent(IN):: tsurf(:) ! (knon) temp\'erature de surface
88      real, dimension(klon), intent(IN):: p1lay      real, dimension(klon), intent(IN):: p1lay
89      ! p1lay pression 1er niveau (milieu de couche)      ! p1lay pression 1er niveau (milieu de couche)
90      real, dimension(klon), intent(IN):: ps      real, dimension(klon), intent(IN):: ps
# Line 95  contains Line 96  contains
96      ! fluxsens flux de chaleur sensible      ! fluxsens flux de chaleur sensible
97      ! fluxlat flux de chaleur latente      ! fluxlat flux de chaleur latente
98      real, dimension(klon), intent(OUT):: dflux_l, dflux_s      real, dimension(klon), intent(OUT):: dflux_l, dflux_s
99      real, intent(OUT):: tsurf_new(knon) ! température au sol      real, intent(OUT):: tsurf_new(knon) ! temp\'erature au sol
100      real, intent(OUT):: alb_new(klon) ! albedo      real, intent(OUT):: alb_new(klon) ! albedo
101      real, dimension(klon), intent(OUT):: alblw      real, dimension(klon), intent(OUT):: alblw
102      real, dimension(klon), intent(OUT):: z0_new      real, dimension(klon), intent(OUT):: z0_new
# Line 104  contains Line 105  contains
105      ! pctsrf_new nouvelle repartition des surfaces      ! pctsrf_new nouvelle repartition des surfaces
106      real, dimension(klon), intent(INOUT):: agesno      real, dimension(klon), intent(INOUT):: agesno
107    
108      ! Flux d'eau "perdue" par la surface et nécessaire pour que limiter la      ! Flux d'eau "perdue" par la surface et n\'ecessaire pour que limiter la
109      ! hauteur de neige, en kg/m2/s      ! hauteur de neige, en kg/m2/s
110      !jld a rajouter real, dimension(klon), intent(INOUT):: fqcalving      !jld a rajouter real, dimension(klon), intent(INOUT):: fqcalving
111      real, dimension(klon), intent(INOUT):: fqcalving      real, dimension(klon), intent(INOUT):: fqcalving
# Line 206  contains Line 207  contains
207    
208         ! calcul albedo: lecture albedo fichier boundary conditions         ! calcul albedo: lecture albedo fichier boundary conditions
209         ! puis ajout albedo neige         ! puis ajout albedo neige
210         call interfsur_lim(itime, dtime, jour, nisurf, knindex, debut, &         call interfsur_lim(itime, dtime, jour, knindex, debut, alb_new, z0_new)
             alb_new, z0_new)  
211    
212         ! calcul snow et qsurf, hydrol adapté         ! calcul snow et qsurf, hydrol adapt\'e
213         CALL calbeta(nisurf, snow(:knon), qsol(:knon), beta(:knon), &         CALL calbeta(nisurf, snow(:knon), qsol(:knon), beta(:knon), &
214              capsol(:knon), dif_grnd(:knon))              capsol(:knon), dif_grnd(:knon))
215    
# Line 220  contains Line 220  contains
220         ELSE         ELSE
221            cal = RCPD * capsol            cal = RCPD * capsol
222         ENDIF         ENDIF
223         CALL calcul_fluxs(nisurf, dtime, tsurf, p1lay(:knon), cal(:knon), beta(:knon), &         CALL calcul_fluxs(nisurf, dtime, tsurf, p1lay(:knon), cal(:knon), &
224              tq_cdrag(:knon), ps(:knon), qsurf(:knon), radsol(:knon), &              beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), &
225              dif_grnd(:knon), temp_air(:knon), spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), &              radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), &
226              petBcoef(:knon), peqBcoef(:knon), tsurf_new, evap(:knon), fluxlat(:knon), fluxsens(:knon), dflux_s(:knon), &              u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), &
227              dflux_l(:knon))              petBcoef(:knon), peqBcoef(:knon), tsurf_new, evap(:knon), &
228                fluxlat(:knon), fluxsens(:knon), dflux_s(:knon), dflux_l(:knon))
229    
230         CALL fonte_neige(nisurf, dtime, tsurf, p1lay(:knon), beta(:knon), &         CALL fonte_neige(nisurf, dtime, tsurf, p1lay(:knon), beta(:knon), &
231              tq_cdrag(:knon), ps(:knon), precip_rain(:knon), precip_snow(:knon), snow(:knon), qsol(:knon), &              tq_cdrag(:knon), ps(:knon), precip_rain(:knon), &
232              temp_air(:knon), spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &              precip_snow(:knon), snow(:knon), qsol(:knon), temp_air(:knon), &
233              peqBcoef(:knon), tsurf_new, evap(:knon), fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))              spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), &
234                peqAcoef(:knon), petBcoef(:knon), peqBcoef(:knon), tsurf_new, &
235                evap(:knon), fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))
236    
237         call albsno(klon, knon, dtime, agesno, alb_neig, precip_snow)         call albsno(klon, knon, dtime, agesno, alb_neig, precip_snow)
238         where (snow(1 : knon) < 0.0001) agesno(1 : knon) = 0.         where (snow(1 : knon) < 0.0001) agesno(1 : knon) = 0.
# Line 242  contains Line 245  contains
245         ! Remplissage des pourcentages de surface         ! Remplissage des pourcentages de surface
246         pctsrf_new(:, nisurf) = pctsrf(:, nisurf)         pctsrf_new(:, nisurf) = pctsrf(:, nisurf)
247      case (is_oce)      case (is_oce)
248         ! Surface "ocean" appel à l'interface avec l'océan         ! Surface "ocean" appel \`a l'interface avec l'oc\'ean
249         ! lecture conditions limites         ! lecture conditions limites
250         call interfoce_lim(itime, dtime, jour, knindex, debut, tsurf_temp, &         call interfoce_lim(itime, dtime, jour, knindex, debut, tsurf_temp, &
251              pctsrf_new)              pctsrf_new)
# Line 272  contains Line 275  contains
275    
276         ! calcul albedo         ! calcul albedo
277         if (minval(rmu0) == maxval(rmu0) .and. minval(rmu0) == -999.999) then         if (minval(rmu0) == maxval(rmu0) .and. minval(rmu0) == -999.999) then
278            CALL alboc(FLOAT(jour), rlat, alb_eau)            CALL alboc(jour, rlat, alb_eau)
279         else ! cycle diurne         else ! cycle diurne
280            CALL alboc_cd(rmu0, alb_eau)            CALL alboc_cd(rmu0, alb_eau)
281         endif         endif
# Line 317  contains Line 320  contains
320    
321         CALL calcul_fluxs(nisurf, dtime, tsurf_temp, p1lay(:knon), cal(:knon), &         CALL calcul_fluxs(nisurf, dtime, tsurf_temp, p1lay(:knon), cal(:knon), &
322              beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), &              beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), &
323              radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), &              radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), &
324              peqAcoef(:knon), petBcoef(:knon), peqBcoef(:knon), tsurf_new, evap(:knon), fluxlat(:knon), fluxsens(:knon), &              u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), &
325              dflux_s(:knon), dflux_l(:knon))              petBcoef(:knon), peqBcoef(:knon), tsurf_new, evap(:knon), &
326                fluxlat(:knon), fluxsens(:knon), dflux_s(:knon), dflux_l(:knon))
327    
328         !IM: flux entre l'ocean et la glace de mer pour le "slab" ocean         !IM: flux entre l'ocean et la glace de mer pour le "slab" ocean
329         DO i = 1, knon         DO i = 1, knon
# Line 329  contains Line 333  contains
333         ENDDO         ENDDO
334    
335         CALL fonte_neige(nisurf, dtime, tsurf_temp, p1lay(:knon), beta(:knon), &         CALL fonte_neige(nisurf, dtime, tsurf_temp, p1lay(:knon), beta(:knon), &
336              tq_cdrag(:knon), ps(:knon), precip_rain(:knon), precip_snow(:knon), snow(:knon), qsol(:knon), &              tq_cdrag(:knon), ps(:knon), precip_rain(:knon), &
337              temp_air(:knon), spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &              precip_snow(:knon), snow(:knon), qsol(:knon), temp_air(:knon), &
338              peqBcoef(:knon), tsurf_new, evap(:knon), fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))              spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), &
339                peqAcoef(:knon), petBcoef(:knon), peqBcoef(:knon), tsurf_new, &
340                evap(:knon), fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))
341    
342         ! calcul albedo         ! calcul albedo
343    
# Line 371  contains Line 377  contains
377         beta = 1.0         beta = 1.0
378         dif_grnd = 0.0         dif_grnd = 0.0
379    
380         call calcul_fluxs(nisurf, dtime, tsurf, p1lay(:knon), cal(:knon), beta(:knon), &         call calcul_fluxs(nisurf, dtime, tsurf, p1lay(:knon), cal(:knon), &
381              tq_cdrag(:knon), ps(:knon), qsurf(:knon), radsol(:knon), &              beta(:knon), tq_cdrag(:knon), ps(:knon), qsurf(:knon), &
382              dif_grnd(:knon), temp_air(:knon), spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), &              radsol(:knon), dif_grnd(:knon), temp_air(:knon), spechum(:knon), &
383              petBcoef(:knon), peqBcoef(:knon), tsurf_new, evap(:knon), fluxlat(:knon), fluxsens(:knon), dflux_s(:knon), &              u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), &
384              dflux_l(:knon))              petBcoef(:knon), peqBcoef(:knon), tsurf_new, evap(:knon), &
385                fluxlat(:knon), fluxsens(:knon), dflux_s(:knon), dflux_l(:knon))
386    
387         call fonte_neige(nisurf, dtime, tsurf, p1lay(:knon), beta(:knon), &         call fonte_neige(nisurf, dtime, tsurf, p1lay(:knon), beta(:knon), &
388              tq_cdrag(:knon), ps(:knon), precip_rain(:knon), precip_snow(:knon), snow(:knon), qsol(:knon), &              tq_cdrag(:knon), ps(:knon), precip_rain(:knon), &
389              temp_air(:knon), spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &              precip_snow(:knon), snow(:knon), qsol(:knon), temp_air(:knon), &
390              peqBcoef(:knon), tsurf_new, evap(:knon), fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))              spechum(:knon), u1_lay(:knon), v1_lay(:knon), petAcoef(:knon), &
391                peqAcoef(:knon), petBcoef(:knon), peqBcoef(:knon), tsurf_new, &
392                evap(:knon), fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))
393    
394         ! calcul albedo         ! calcul albedo
395         CALL albsno(klon, knon, dtime, agesno, alb_neig, precip_snow)         CALL albsno(klon, knon, dtime, agesno, alb_neig, precip_snow)

Legend:
Removed from v.106  
changed lines
  Added in v.150

  ViewVC Help
Powered by ViewVC 1.1.21