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

Annotation of /trunk/phylmd/Interface_surf/clqh.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 305 - (hide annotations)
Tue Sep 11 11:08:38 2018 UTC (5 years, 8 months ago) by guez
File size: 4811 byte(s)
We want to keep the same variable names throughout procedures. In
pbl_surface, rain_fall and snow_fall were passed to clqh and became
precip_rain and precip_snow. Which name should we choose?
Precipitation normally refers to water in all phases. Rainfall and
snowfall seem to be more common names to distinguish liquid water and
snow. Cf. CF standard names. So change everywhere precip_rain to
rain_fall and precip_snow to snow_fall.

1 guez 49 module clqh_m
2 guez 3
3 guez 38 IMPLICIT none
4 guez 3
5 guez 49 contains
6 guez 3
7 guez 301 SUBROUTINE clqh(julien, nisurf, knindex, tsoil, qsol, mu0, rugos, rugoro, &
8     u1lay, v1lay, coef, tq_cdrag, t, q, ts, paprs, pplay, delp, radsol, &
9 guez 305 albedo, snow, qsurf, rain_fall, snow_fall, fluxlat, pctsrf_new_sic, &
10 guez 301 agesno, d_t, d_q, d_ts, z0_new, flux_t, flux_q, dflux_s, dflux_l, &
11     fqcalving, ffonte, run_off_lic_0, run_off_lic)
12 guez 3
13 guez 62 ! Author: Z. X. Li (LMD/CNRS)
14 guez 279 ! Date: 1993 Aug. 18th
15 guez 49 ! Objet : diffusion verticale de "q" et de "h"
16 guez 3
17 guez 295 use climb_hq_down_m, only: climb_hq_down
18 guez 296 use climb_hq_up_m, only: climb_hq_up
19 guez 300 USE dimphy, ONLY: klev
20 guez 154 USE interfsurf_hq_m, ONLY: interfsurf_hq
21 guez 297 USE suphec_m, ONLY: rkappa
22 guez 38
23 guez 221 integer, intent(in):: julien ! jour de l'annee en cours
24 guez 175 integer, intent(in):: nisurf
25 guez 154 integer, intent(in):: knindex(:) ! (knon)
26 guez 208 REAL, intent(inout):: tsoil(:, :) ! (knon, nsoilmx)
27 guez 202
28 guez 225 REAL, intent(inout):: qsol(:) ! (knon)
29 guez 154 ! column-density of water in soil, in kg m-2
30    
31 guez 300 real, intent(in):: mu0(:) ! (knon) cosinus de l'angle solaire zenithal
32 guez 282 real, intent(in):: rugos(:) ! (knon) rugosite
33     REAL, intent(in):: rugoro(:) ! (knon)
34 guez 70
35 guez 225 REAL, intent(in):: u1lay(:), v1lay(:) ! (knon)
36     ! vitesse de la 1ere couche (m / s)
37    
38 guez 236 REAL, intent(in):: coef(:, 2:) ! (knon, 2:klev)
39 guez 155 ! Le coefficient d'echange (m**2 / s) multiplie par le cisaillement
40 guez 236 ! du vent (dV / dz)
41 guez 70
42 guez 236 REAL, intent(in):: tq_cdrag(:) ! (knon) sans unite
43    
44 guez 280 REAL, intent(in):: t(:, :) ! (knon, klev) temperature (K)
45     REAL, intent(in):: q(:, :) ! (knon, klev) humidite specifique (kg / kg)
46 guez 207 REAL, intent(in):: ts(:) ! (knon) temperature du sol (K)
47 guez 280
48     REAL, intent(in):: paprs(:, :) ! (knon, klev + 1)
49     ! pression a inter-couche (Pa)
50    
51     REAL, intent(in):: pplay(:, :) ! (knon, klev)
52     ! pression au milieu de couche (Pa)
53    
54 guez 283 REAL, intent(in):: delp(:, :) ! (knon, klev)
55     ! epaisseur de couche en pression (Pa)
56 guez 222
57 guez 267 REAL, intent(in):: radsol(:) ! (knon)
58 guez 222 ! rayonnement net au sol (Solaire + IR) W / m2
59    
60 guez 155 REAL, intent(inout):: albedo(:) ! (knon) albedo de la surface
61 guez 215 REAL, intent(inout):: snow(:) ! (knon) ! hauteur de neige
62 guez 101
63 guez 283 REAL, intent(out):: qsurf(:) ! (knon)
64     ! humidite de l'air au dessus de la surface
65    
66 guez 305 real, intent(in):: rain_fall(:) ! (knon)
67 guez 155 ! liquid water mass flux (kg / m2 / s), positive down
68 guez 101
69 guez 305 real, intent(in):: snow_fall(:) ! (knon)
70 guez 155 ! solid water mass flux (kg / m2 / s), positive down
71 guez 101
72 guez 214 real, intent(out):: fluxlat(:) ! (knon)
73 guez 300 real, intent(in):: pctsrf_new_sic(:) ! (knon)
74 guez 175 REAL, intent(inout):: agesno(:) ! (knon)
75 guez 281 REAL, intent(out):: d_t(:, :) ! (knon, klev) incrementation de "t"
76     REAL, intent(out):: d_q(:, :) ! (knon, klev) incrementation de "q"
77 guez 221 REAL, intent(out):: d_ts(:) ! (knon) variation of surface temperature
78 guez 282 real, intent(out):: z0_new(:) ! (knon)
79 guez 206
80     REAL, intent(out):: flux_t(:) ! (knon)
81     ! (diagnostic) flux de chaleur sensible (Cp T) à la surface,
82     ! positif vers le bas, W / m2
83    
84     REAL, intent(out):: flux_q(:) ! (knon)
85     ! flux de la vapeur d'eau à la surface, en kg / (m**2 s)
86    
87 guez 283 REAL, intent(out):: dflux_s(:) ! (knon) derivee du flux sensible dF / dTs
88     REAL, intent(out):: dflux_l(:) ! (knon) derivee du flux latent dF / dTs
89 guez 154
90 guez 279 REAL, intent(out):: fqcalving(:) ! (knon)
91 guez 150 ! Flux d'eau "perdue" par la surface et n\'ecessaire pour que limiter la
92 guez 155 ! hauteur de neige, en kg / m2 / s
93 guez 101
94 guez 300 REAL, intent(out):: ffonte(:) ! (knon)
95     ! flux thermique utilis\'e pour fondre la neige
96    
97     REAL, intent(inout):: run_off_lic_0(:) ! (knon)
98     ! run-off glacier au pas de temps precedent
99 guez 154
100 guez 301 REAL, intent(OUT):: run_off_lic(:) ! (knon) ruissellement total
101    
102 guez 154 ! Local:
103 guez 285
104 guez 297 INTEGER k
105 guez 206 REAL evap(size(knindex)) ! (knon) evaporation au sol
106 guez 281 REAL, dimension(size(knindex), klev):: cq, dq, ch, dh ! (knon, klev)
107 guez 280 REAL pkf(size(knindex), klev) ! (knon, klev)
108 guez 206 real tsurf_new(size(knindex)) ! (knon)
109 guez 3
110 guez 49 !----------------------------------------------------------------
111 guez 3
112 guez 297 forall (k = 1:klev) pkf(:, k) = (paprs(:, 1) / pplay(:, k))**RKAPPA
113     ! (La pression de r\'ef\'erence est celle au sol.)
114    
115 guez 299 call climb_hq_down(pkf, cq, dq, ch, dh, paprs, pplay, t, coef, delp, q)
116 guez 301 CALL interfsurf_hq(julien, mu0, nisurf, knindex, tsoil, qsol, u1lay, &
117     v1lay, t(:, 1), q(:, 1), tq_cdrag, ch(:, 1), cq(:, 1), dh(:, 1), &
118 guez 305 dq(:, 1), rain_fall, snow_fall, rugos, rugoro, snow, qsurf, ts, &
119 guez 301 pplay(:, 1), paprs(:, 1), radsol, evap, flux_t, fluxlat, dflux_l, &
120     dflux_s, tsurf_new, albedo, z0_new, pctsrf_new_sic, agesno, &
121     fqcalving, ffonte, run_off_lic_0, run_off_lic)
122 guez 206 flux_q = - evap
123 guez 207 d_ts = tsurf_new - ts
124 guez 299 call climb_hq_up(d_t, d_q, cq, dq, ch, dh, flux_t, flux_q, pkf, t, q)
125 guez 49
126     END SUBROUTINE clqh
127    
128     end module clqh_m

  ViewVC Help
Powered by ViewVC 1.1.21