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

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

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

revision 304 by guez, Thu Aug 2 17:23:07 2018 UTC revision 305 by guez, Tue Sep 11 11:08:38 2018 UTC
# Line 4  module fonte_neige_m Line 4  module fonte_neige_m
4    
5  contains  contains
6    
7    SUBROUTINE fonte_neige(nisurf, precip_rain, precip_snow, snow, qsol, &    SUBROUTINE fonte_neige(nisurf, rain_fall, snow_fall, snow, qsol, &
8         tsurf_new, evap, fqcalving, ffonte, run_off_lic_0, run_off_lic)         tsurf_new, evap, fqcalving, ffonte, run_off_lic_0, run_off_lic)
9    
10      ! Routine de traitement de la fonte de la neige dans le cas du traitement      ! Routine de traitement de la fonte de la neige dans le cas du traitement
# Line 12  contains Line 12  contains
12    
13      ! Laurent Fairhead, March, 2001      ! Laurent Fairhead, March, 2001
14    
15        ! Library:
16        use nr_util, only: assert_eq
17    
18      use comconst, only: dtphys      use comconst, only: dtphys
19      USE indicesol, ONLY: epsfra, is_lic, is_sic, is_ter      USE indicesol, ONLY: epsfra, is_lic, is_sic, is_ter
20      USE conf_interface_m, ONLY: tau_calv      USE conf_interface_m, ONLY: tau_calv
     use nr_util, only: assert_eq  
21      USE suphec_m, ONLY: rday, rlmlt, rtt      USE suphec_m, ONLY: rday, rlmlt, rtt
22    
23      integer, intent(IN):: nisurf ! surface \`a traiter      integer, intent(IN):: nisurf ! surface \`a traiter
24    
25      real, intent(IN):: precip_rain(:) ! (knon)      real, intent(IN):: rain_fall(:) ! (knon)
26      ! precipitation, liquid water mass flux (kg / m2 / s), positive down      ! precipitation, liquid water mass flux (kg / m2 / s), positive down
27    
28      real, intent(IN):: precip_snow(:) ! (knon)      real, intent(IN):: snow_fall(:) ! (knon)
29      ! precipitation, solid water mass flux (kg / m2 / s), positive down      ! precipitation, solid water mass flux (kg / m2 / s), positive down
30    
31      real, intent(INOUT):: snow(:) ! (knon)      real, intent(INOUT):: snow(:) ! (knon)
# Line 50  contains Line 52  contains
52      ! Local:      ! Local:
53    
54      integer knon ! nombre de points \`a traiter      integer knon ! nombre de points \`a traiter
55      real, parameter:: snow_max=3000.      
56        real, parameter:: snow_max = 3000.
57      ! Masse maximum de neige (kg / m2). Au dessus de ce seuil, la neige      ! Masse maximum de neige (kg / m2). Au dessus de ce seuil, la neige
58      ! en exces "s'\'ecoule" (calving).      ! en exces "s'\'ecoule" (calving).
59    
60      integer i      integer i
61      real fq_fonte      real fq_fonte
62      REAL bil_eau_s(size(precip_rain)) ! (knon) in kg m-2      REAL bil_eau_s(size(rain_fall)) ! (knon) in kg m-2
63      real snow_evap(size(precip_rain)) ! (knon) in kg m-2 s-1      real snow_evap(size(rain_fall)) ! (knon) in kg m-2 s-1
64      REAL, parameter:: chasno = 3.334E5 / (2.3867E6 * 0.15)      REAL, parameter:: chasno = 3.334E5 / (2.3867E6 * 0.15)
65      REAL, parameter:: chaice = 3.334E5 / (2.3867E6 * 0.15)      REAL, parameter:: chaice = 3.334E5 / (2.3867E6 * 0.15)
66      real, parameter:: max_eau_sol = 150. ! in kg m-2      real, parameter:: max_eau_sol = 150. ! in kg m-2
# Line 65  contains Line 68  contains
68    
69      !--------------------------------------------------------------------      !--------------------------------------------------------------------
70    
71      knon = assert_eq((/size(precip_rain), size(precip_snow), size(snow), &      knon = assert_eq((/size(rain_fall), size(snow_fall), size(snow), &
72           size(qsol), size(tsurf_new), size(evap), size(fqcalving), &           size(qsol), size(tsurf_new), size(evap), size(fqcalving), &
73           size(ffonte), size(run_off_lic_0)/), "fonte_neige knon")           size(ffonte), size(run_off_lic_0)/), "fonte_neige knon")
74    
75      coeff_rel = dtphys / (tau_calv * rday)      coeff_rel = dtphys / (tau_calv * rday)
76      WHERE (precip_snow > 0.) snow = snow + precip_snow * dtphys      WHERE (snow_fall > 0.) snow = snow + snow_fall * dtphys
77    
78      WHERE (evap > 0.)      WHERE (evap > 0.)
79         snow_evap = MIN(snow / dtphys, evap)         snow_evap = MIN(snow / dtphys, evap)
# Line 80  contains Line 83  contains
83         snow_evap = 0.         snow_evap = 0.
84      end where      end where
85    
86      bil_eau_s = (precip_rain - evap + snow_evap) * dtphys      bil_eau_s = (rain_fall - evap + snow_evap) * dtphys
87    
88      ! Y a-t-il fonte de neige ?      ! Y a-t-il fonte de neige ?
89    

Legend:
Removed from v.304  
changed lines
  Added in v.305

  ViewVC Help
Powered by ViewVC 1.1.21