/[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/Sources/phylmd/Interface_surf/interfsurf_hq.f revision 222 by guez, Tue Apr 25 15:31:48 2017 UTC trunk/phylmd/Interface_surf/interfsurf_hq.f revision 254 by guez, Mon Feb 5 10:39:38 2018 UTC
# Line 6  contains Line 6  contains
6    
7    SUBROUTINE interfsurf_hq(dtime, julien, rmu0, nisurf, knindex, debut, &    SUBROUTINE interfsurf_hq(dtime, julien, rmu0, nisurf, knindex, debut, &
8         tsoil, qsol, u1_lay, v1_lay, temp_air, spechum, tq_cdrag, petAcoef, &         tsoil, qsol, u1_lay, v1_lay, temp_air, spechum, tq_cdrag, petAcoef, &
9         peqAcoef, petBcoef, peqBcoef, precip_rain, precip_snow, fder, rugos, &         peqAcoef, petBcoef, peqBcoef, precip_rain, precip_snow, rugos, rugoro, &
10         rugoro, snow, qsurf, ts, p1lay, ps, radsol, evap, flux_t, fluxlat, &         snow, qsurf, ts, p1lay, ps, radsol, evap, flux_t, fluxlat, dflux_l, &
11         dflux_l, dflux_s, tsurf_new, albedo, z0_new, pctsrf_new_sic, agesno, &         dflux_s, tsurf_new, albedo, z0_new, pctsrf_new_sic, agesno, fqcalving, &
12         fqcalving, ffonte, run_off_lic_0)         ffonte, run_off_lic_0)
13    
14      ! Cette routine sert d'aiguillage entre l'atmosph\`ere et la surface      ! Cette routine sert d'aiguillage entre l'atmosph\`ere et la surface
15      ! en g\'en\'eral (sols continentaux, oc\'eans, glaces) pour les flux de      ! en g\'en\'eral (sols continentaux, oc\'eans, glaces) pour les flux de
# Line 45  contains Line 45  contains
45    
46      REAL, intent(inout):: tsoil(:, :) ! (knon, nsoilmx)      REAL, intent(inout):: tsoil(:, :) ! (knon, nsoilmx)
47    
48      REAL, intent(INOUT):: qsol(klon)      REAL, intent(INOUT):: qsol(:) ! (knon)
49      ! column-density of water in soil, in kg m-2      ! column-density of water in soil, in kg m-2
50    
51      real, dimension(klon), intent(IN):: u1_lay, v1_lay      real, intent(IN):: u1_lay(:), v1_lay(:) ! (knon) vitesse 1ere couche
52      ! u1_lay vitesse u 1ere couche  
     ! v1_lay vitesse v 1ere couche  
53      real, dimension(klon), intent(IN):: temp_air, spechum      real, dimension(klon), intent(IN):: temp_air, spechum
54      ! temp_air temperature de l'air 1ere couche      ! temp_air temperature de l'air 1ere couche
55      ! spechum humidite specifique 1ere couche      ! spechum humidite specifique 1ere couche
56      real, dimension(klon), intent(INOUT):: tq_cdrag ! coefficient d'echange      real, intent(IN):: tq_cdrag(:) ! (knon) coefficient d'echange
57    
58      real, dimension(klon), intent(IN):: petAcoef, peqAcoef      real, dimension(klon), intent(IN):: petAcoef, peqAcoef
59      ! coefficients A de la r\'esolution de la couche limite pour t et q      ! coefficients A de la r\'esolution de la couche limite pour t et q
# Line 68  contains Line 67  contains
67      real, intent(IN):: precip_snow(klon)      real, intent(IN):: precip_snow(klon)
68      ! precipitation, solid water mass flux (kg / m2 / s), positive down      ! precipitation, solid water mass flux (kg / m2 / s), positive down
69    
     REAL, INTENT(INOUT):: fder(:) ! (knon) derivee des flux (pour le couplage)  
70      real, intent(IN):: rugos(klon) ! rugosite      real, intent(IN):: rugos(klon) ! rugosite
71      real, intent(IN):: rugoro(klon) ! rugosite orographique      real, intent(IN):: rugoro(klon) ! rugosite orographique
72      real, intent(INOUT):: snow(:) ! (knon)      real, intent(INOUT):: snow(:) ! (knon)
# Line 167  contains Line 165  contains
165         call interfsur_lim(dtime, julien, knindex, debut, albedo, z0_new)         call interfsur_lim(dtime, julien, knindex, debut, albedo, z0_new)
166    
167         ! Calcul de snow et qsurf, hydrologie adapt\'ee         ! Calcul de snow et qsurf, hydrologie adapt\'ee
168         CALL calbeta(is_ter, snow, qsol(:knon), beta, capsol(:knon), &         CALL calbeta(is_ter, snow, qsol, beta, capsol(:knon), dif_grnd(:knon))
             dif_grnd(:knon))  
169    
170         IF (soil_model) THEN         IF (soil_model) THEN
171            CALL soil(dtime, is_ter, snow, ts, tsoil, soilcap, soilflux)            CALL soil(dtime, is_ter, snow, ts, tsoil, soilcap, soilflux)
# Line 178  contains Line 175  contains
175            cal = RCPD * capsol(:knon)            cal = RCPD * capsol(:knon)
176         ENDIF         ENDIF
177    
178         CALL calcul_fluxs(dtime, ts, p1lay(:knon), cal, beta, tq_cdrag(:knon), &         CALL calcul_fluxs(dtime, ts, p1lay(:knon), cal, beta, tq_cdrag, &
179              ps(:knon), qsurf(:knon), radsol, dif_grnd(:knon), &              ps(:knon), qsurf(:knon), radsol, dif_grnd(:knon), &
180              temp_air(:knon), spechum(:knon), u1_lay(:knon), v1_lay(:knon), &              temp_air(:knon), spechum(:knon), u1_lay, v1_lay, &
181              petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &              petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &
182              peqBcoef(:knon), tsurf_new, evap, fluxlat, flux_t, dflux_s, dflux_l)              peqBcoef(:knon), tsurf_new, evap, fluxlat, flux_t, dflux_s, dflux_l)
183         CALL fonte_neige(is_ter, dtime, precip_rain(:knon), &         CALL fonte_neige(is_ter, dtime, precip_rain(:knon), &
184              precip_snow(:knon), snow, qsol(:knon), tsurf_new, evap, &              precip_snow(:knon), snow, qsol, tsurf_new, evap, &
185              fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))              fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))
186    
187         call albsno(dtime, agesno, alb_neig, precip_snow(:knon))         call albsno(dtime, agesno, alb_neig, precip_snow(:knon))
# Line 200  contains Line 197  contains
197         beta = 1.         beta = 1.
198         dif_grnd = 0.         dif_grnd = 0.
199         call calcul_fluxs(dtime, tsurf, p1lay(:knon), cal, beta, &         call calcul_fluxs(dtime, tsurf, p1lay(:knon), cal, beta, &
200              tq_cdrag(:knon), ps(:knon), qsurf(:knon), radsol, &              tq_cdrag, ps(:knon), qsurf(:knon), radsol, &
201              dif_grnd(:knon), temp_air(:knon), spechum(:knon), u1_lay(:knon), &              dif_grnd(:knon), temp_air(:knon), spechum(:knon), u1_lay, &
202              v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &              v1_lay, petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &
203              peqBcoef(:knon), tsurf_new, evap, fluxlat, flux_t, dflux_s, dflux_l)              peqBcoef(:knon), tsurf_new, evap, fluxlat, flux_t, dflux_s, dflux_l)
204         agesno = 0.         agesno = 0.
        fder = fder + dflux_s + dflux_l  
205         albedo = alboc_cd(rmu0(knindex)) * fmagic         albedo = alboc_cd(rmu0(knindex)) * fmagic
206         z0_new = sqrt(rugos**2 + rugoro**2)         z0_new = sqrt(rugos**2 + rugoro**2)
207      case (is_sic)      case (is_sic)
# Line 221  contains Line 217  contains
217            endif            endif
218         enddo         enddo
219    
220         CALL calbeta(is_sic, snow, qsol(:knon), beta, capsol(:knon), &         CALL calbeta(is_sic, snow, qsol, beta, capsol(:knon), dif_grnd(:knon))
             dif_grnd(:knon))  
221    
222         IF (soil_model) THEN         IF (soil_model) THEN
223            CALL soil(dtime, is_sic, snow, tsurf_new, tsoil, soilcap, &            CALL soil(dtime, is_sic, snow, tsurf_new, tsoil, soilcap, &
# Line 239  contains Line 234  contains
234         beta = 1.         beta = 1.
235    
236         CALL calcul_fluxs(dtime, tsurf, p1lay(:knon), cal, beta, &         CALL calcul_fluxs(dtime, tsurf, p1lay(:knon), cal, beta, &
237              tq_cdrag(:knon), ps(:knon), qsurf(:knon), radsol, &              tq_cdrag, ps(:knon), qsurf(:knon), radsol, &
238              dif_grnd(:knon), temp_air(:knon), spechum(:knon), u1_lay(:knon), &              dif_grnd(:knon), temp_air(:knon), spechum(:knon), u1_lay, &
239              v1_lay(:knon), petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &              v1_lay, petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &
240              peqBcoef(:knon), tsurf_new, evap, fluxlat, flux_t, dflux_s, dflux_l)              peqBcoef(:knon), tsurf_new, evap, fluxlat, flux_t, dflux_s, dflux_l)
241         CALL fonte_neige(is_sic, dtime, precip_rain(:knon), &         CALL fonte_neige(is_sic, dtime, precip_rain(:knon), &
242              precip_snow(:knon), snow, qsol(:knon), tsurf_new, evap, &              precip_snow(:knon), snow, qsol, tsurf_new, evap, &
243              fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))              fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))
244    
245         ! Compute the albedo:         ! Compute the albedo:
# Line 254  contains Line 249  contains
249         zfra = MAX(0., MIN(1., snow / (snow + 10.)))         zfra = MAX(0., MIN(1., snow / (snow + 10.)))
250         albedo = alb_neig * zfra + 0.6 * (1. - zfra)         albedo = alb_neig * zfra + 0.6 * (1. - zfra)
251    
        fder = fder + dflux_s + dflux_l  
252         z0_new = SQRT(0.002**2 + rugoro**2)         z0_new = SQRT(0.002**2 + rugoro**2)
253      case (is_lic)      case (is_lic)
254         ! Surface "glacier continentaux" appel a l'interface avec le sol         ! Surface "glacier continentaux" appel a l'interface avec le sol
# Line 270  contains Line 264  contains
264         beta = 1.         beta = 1.
265         dif_grnd = 0.         dif_grnd = 0.
266    
267         call calcul_fluxs(dtime, ts, p1lay(:knon), cal, beta, tq_cdrag(:knon), &         call calcul_fluxs(dtime, ts, p1lay(:knon), cal, beta, tq_cdrag, &
268              ps(:knon), qsurf(:knon), radsol, dif_grnd(:knon), &              ps(:knon), qsurf(:knon), radsol, dif_grnd(:knon), &
269              temp_air(:knon), spechum(:knon), u1_lay(:knon), v1_lay(:knon), &              temp_air(:knon), spechum(:knon), u1_lay, v1_lay, &
270              petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &              petAcoef(:knon), peqAcoef(:knon), petBcoef(:knon), &
271              peqBcoef(:knon), tsurf_new, evap, fluxlat, flux_t, dflux_s, dflux_l)              peqBcoef(:knon), tsurf_new, evap, fluxlat, flux_t, dflux_s, dflux_l)
272         call fonte_neige(is_lic, dtime, precip_rain(:knon), &         call fonte_neige(is_lic, dtime, precip_rain(:knon), &
273              precip_snow(:knon), snow, qsol(:knon), tsurf_new, evap, &              precip_snow(:knon), snow, qsol, tsurf_new, evap, &
274              fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))              fqcalving(:knon), ffonte(:knon), run_off_lic_0(:knon))
275    
276         ! calcul albedo         ! calcul albedo

Legend:
Removed from v.222  
changed lines
  Added in v.254

  ViewVC Help
Powered by ViewVC 1.1.21