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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 305 - (show 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 module clqh_m
2
3 IMPLICIT none
4
5 contains
6
7 SUBROUTINE clqh(julien, nisurf, knindex, tsoil, qsol, mu0, rugos, rugoro, &
8 u1lay, v1lay, coef, tq_cdrag, t, q, ts, paprs, pplay, delp, radsol, &
9 albedo, snow, qsurf, rain_fall, snow_fall, fluxlat, pctsrf_new_sic, &
10 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
13 ! Author: Z. X. Li (LMD/CNRS)
14 ! Date: 1993 Aug. 18th
15 ! Objet : diffusion verticale de "q" et de "h"
16
17 use climb_hq_down_m, only: climb_hq_down
18 use climb_hq_up_m, only: climb_hq_up
19 USE dimphy, ONLY: klev
20 USE interfsurf_hq_m, ONLY: interfsurf_hq
21 USE suphec_m, ONLY: rkappa
22
23 integer, intent(in):: julien ! jour de l'annee en cours
24 integer, intent(in):: nisurf
25 integer, intent(in):: knindex(:) ! (knon)
26 REAL, intent(inout):: tsoil(:, :) ! (knon, nsoilmx)
27
28 REAL, intent(inout):: qsol(:) ! (knon)
29 ! column-density of water in soil, in kg m-2
30
31 real, intent(in):: mu0(:) ! (knon) cosinus de l'angle solaire zenithal
32 real, intent(in):: rugos(:) ! (knon) rugosite
33 REAL, intent(in):: rugoro(:) ! (knon)
34
35 REAL, intent(in):: u1lay(:), v1lay(:) ! (knon)
36 ! vitesse de la 1ere couche (m / s)
37
38 REAL, intent(in):: coef(:, 2:) ! (knon, 2:klev)
39 ! Le coefficient d'echange (m**2 / s) multiplie par le cisaillement
40 ! du vent (dV / dz)
41
42 REAL, intent(in):: tq_cdrag(:) ! (knon) sans unite
43
44 REAL, intent(in):: t(:, :) ! (knon, klev) temperature (K)
45 REAL, intent(in):: q(:, :) ! (knon, klev) humidite specifique (kg / kg)
46 REAL, intent(in):: ts(:) ! (knon) temperature du sol (K)
47
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 REAL, intent(in):: delp(:, :) ! (knon, klev)
55 ! epaisseur de couche en pression (Pa)
56
57 REAL, intent(in):: radsol(:) ! (knon)
58 ! rayonnement net au sol (Solaire + IR) W / m2
59
60 REAL, intent(inout):: albedo(:) ! (knon) albedo de la surface
61 REAL, intent(inout):: snow(:) ! (knon) ! hauteur de neige
62
63 REAL, intent(out):: qsurf(:) ! (knon)
64 ! humidite de l'air au dessus de la surface
65
66 real, intent(in):: rain_fall(:) ! (knon)
67 ! liquid water mass flux (kg / m2 / s), positive down
68
69 real, intent(in):: snow_fall(:) ! (knon)
70 ! solid water mass flux (kg / m2 / s), positive down
71
72 real, intent(out):: fluxlat(:) ! (knon)
73 real, intent(in):: pctsrf_new_sic(:) ! (knon)
74 REAL, intent(inout):: agesno(:) ! (knon)
75 REAL, intent(out):: d_t(:, :) ! (knon, klev) incrementation de "t"
76 REAL, intent(out):: d_q(:, :) ! (knon, klev) incrementation de "q"
77 REAL, intent(out):: d_ts(:) ! (knon) variation of surface temperature
78 real, intent(out):: z0_new(:) ! (knon)
79
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 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
90 REAL, intent(out):: fqcalving(:) ! (knon)
91 ! Flux d'eau "perdue" par la surface et n\'ecessaire pour que limiter la
92 ! hauteur de neige, en kg / m2 / s
93
94 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
100 REAL, intent(OUT):: run_off_lic(:) ! (knon) ruissellement total
101
102 ! Local:
103
104 INTEGER k
105 REAL evap(size(knindex)) ! (knon) evaporation au sol
106 REAL, dimension(size(knindex), klev):: cq, dq, ch, dh ! (knon, klev)
107 REAL pkf(size(knindex), klev) ! (knon, klev)
108 real tsurf_new(size(knindex)) ! (knon)
109
110 !----------------------------------------------------------------
111
112 forall (k = 1:klev) pkf(:, k) = (paprs(:, 1) / pplay(:, k))**RKAPPA
113 ! (La pression de r\'ef\'erence est celle au sol.)
114
115 call climb_hq_down(pkf, cq, dq, ch, dh, paprs, pplay, t, coef, delp, q)
116 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 dq(:, 1), rain_fall, snow_fall, rugos, rugoro, snow, qsurf, ts, &
119 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 flux_q = - evap
123 d_ts = tsurf_new - ts
124 call climb_hq_up(d_t, d_q, cq, dq, ch, dh, flux_t, flux_q, pkf, t, q)
125
126 END SUBROUTINE clqh
127
128 end module clqh_m

  ViewVC Help
Powered by ViewVC 1.1.21