4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE HBTM(knon, paprs, pplay, t2m, q2m, ustar, flux_t, flux_q, u, v, & |
SUBROUTINE HBTM(paprs, pplay, t2m, q2m, ustar, flux_t, flux_q, u, v, t, q, & |
8 |
t, q, pblh, cape, EauLiq, ctei, pblT, therm, trmb1, trmb2, trmb3, plcl) |
pblh, cape, EauLiq, ctei, pblT, therm, trmb1, trmb2, trmb3, plcl) |
9 |
|
|
10 |
! D'apr\'es Holstag et Boville et Troen et Mahrt |
! D'apr\'es Holstag et Boville et Troen et Mahrt |
11 |
! JAS 47 BLM |
! JAS 47 BLM |
35 |
|
|
36 |
! Arguments: |
! Arguments: |
37 |
|
|
|
! nombre de points a calculer |
|
|
INTEGER, intent(in):: knon |
|
|
|
|
38 |
! pression a inter-couche (Pa) |
! pression a inter-couche (Pa) |
39 |
REAL, intent(in):: paprs(klon, klev+1) |
REAL, intent(in):: paprs(klon, klev+1) |
40 |
! pression au milieu de couche (Pa) |
! pression au milieu de couche (Pa) |
42 |
REAL, intent(in):: t2m(klon) ! temperature a 2 m |
REAL, intent(in):: t2m(klon) ! temperature a 2 m |
43 |
! q a 2 et 10m |
! q a 2 et 10m |
44 |
REAL, intent(in):: q2m(klon) |
REAL, intent(in):: q2m(klon) |
45 |
REAL, intent(in):: ustar(klon) |
REAL, intent(in):: ustar(:) ! (knon) |
46 |
! Flux |
REAL, intent(in):: flux_t(:), flux_q(:) ! (knon) flux à la surface |
47 |
REAL, intent(in):: flux_t(klon, klev), flux_q(klon, klev) |
|
48 |
! vitesse U (m/s) |
REAL, intent(in):: u(klon, klev) ! vitesse U (m/s) |
49 |
REAL, intent(in):: u(klon, klev) |
REAL, intent(in):: v(klon, klev) ! vitesse V (m/s) |
50 |
! vitesse V (m/s) |
|
|
REAL, intent(in):: v(klon, klev) |
|
51 |
! temperature (K) |
! temperature (K) |
52 |
REAL, intent(in):: t(klon, klev) |
REAL, intent(in):: t(klon, klev) |
53 |
! vapeur d'eau (kg/kg) |
! vapeur d'eau (kg/kg) |
67 |
REAL plcl(klon) |
REAL plcl(klon) |
68 |
|
|
69 |
! Local: |
! Local: |
70 |
|
|
71 |
|
INTEGER knon ! nombre de points a calculer |
72 |
INTEGER isommet |
INTEGER isommet |
73 |
! limite max sommet pbl |
! limite max sommet pbl |
74 |
PARAMETER (isommet=klev) |
PARAMETER (isommet=klev) |
77 |
PARAMETER (vk=0.35) |
PARAMETER (vk=0.35) |
78 |
REAL ricr |
REAL ricr |
79 |
PARAMETER (ricr=0.4) |
PARAMETER (ricr=0.4) |
|
REAL fak |
|
|
! b calcul du Prandtl et de dTetas |
|
|
PARAMETER (fak=8.5) |
|
|
REAL fakn |
|
80 |
! a |
! a |
|
PARAMETER (fakn=7.2) |
|
81 |
REAL onet |
REAL onet |
82 |
PARAMETER (onet=1.0/3.0) |
PARAMETER (onet=1.0/3.0) |
|
REAL t_coup |
|
|
PARAMETER(t_coup=273.15) |
|
83 |
REAL zkmin |
REAL zkmin |
84 |
PARAMETER (zkmin=0.01) |
PARAMETER (zkmin=0.01) |
85 |
REAL betam |
REAL betam |
86 |
! pour Phim / h dans la S.L stable |
! pour Phim / h dans la S.L stable |
87 |
PARAMETER (betam=15.0) |
PARAMETER (betam=15.0) |
|
REAL betah |
|
|
PARAMETER (betah=15.0) |
|
|
REAL betas |
|
|
! Phit dans la S.L. stable (mais 2 formes / |
|
|
PARAMETER (betas=5.0) |
|
88 |
! z/OBL<>1 |
! z/OBL<>1 |
89 |
REAL sffrac |
REAL sffrac |
90 |
! S.L. = z/h < .1 |
! S.L. = z/h < .1 |
91 |
PARAMETER (sffrac=0.1) |
PARAMETER (sffrac=0.1) |
92 |
REAL binm |
REAL binm |
93 |
PARAMETER (binm=betam*sffrac) |
PARAMETER (binm=betam*sffrac) |
|
REAL binh |
|
|
PARAMETER (binh=betah*sffrac) |
|
|
REAL ccon |
|
|
PARAMETER (ccon=fak*sffrac*vk) |
|
94 |
|
|
95 |
REAL q_star, t_star |
REAL q_star, t_star |
96 |
! Lambert correlations T' q' avec T* q* |
! Lambert correlations T' q' avec T* q* |
147 |
|
|
148 |
!----------------------------------------------------------------- |
!----------------------------------------------------------------- |
149 |
|
|
150 |
|
knon = size(pblh) |
151 |
|
|
152 |
! initialisations |
! initialisations |
153 |
q_star = 0 |
q_star = 0 |
154 |
t_star = 0 |
t_star = 0 |
186 |
zxt = t2m(i) |
zxt = t2m(i) |
187 |
|
|
188 |
! convention >0 vers le bas ds lmdz |
! convention >0 vers le bas ds lmdz |
189 |
khfs(i) = - flux_t(i, 1)*zxt*Rd / (RCPD*paprs(i, 1)) |
khfs(i) = - flux_t(i)*zxt*Rd / (RCPD*paprs(i, 1)) |
190 |
kqfs(i) = - flux_q(i, 1)*zxt*Rd / paprs(i, 1) |
kqfs(i) = - flux_q(i)*zxt*Rd / paprs(i, 1) |
191 |
! verifier que khfs et kqfs sont bien de la forme w'l' |
! verifier que khfs et kqfs sont bien de la forme w'l' |
192 |
heatv(i) = khfs(i) + 0.608*zxt*kqfs(i) |
heatv(i) = khfs(i) + 0.608*zxt*kqfs(i) |
193 |
! a comparer aussi aux sorties de clqh : flux_T/RoCp et flux_q/RoLv |
! a comparer aussi aux sorties de clqh : flux_T/RoCp et flux_q/RoLv |