/[lmdze]/trunk/phylmd/Interface_surf/hbtm.f90
ViewVC logotype

Diff of /trunk/phylmd/Interface_surf/hbtm.f90

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

trunk/Sources/phylmd/hbtm.f revision 186 by guez, Mon Mar 21 15:36:26 2016 UTC trunk/phylmd/hbtm.f revision 254 by guez, Mon Feb 5 10:39:38 2018 UTC
# Line 4  module HBTM_m Line 4  module HBTM_m
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, 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
# Line 35  contains Line 35  contains
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)
# Line 45  contains Line 42  contains
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)
# Line 67  contains Line 63  contains
63      REAL pblT(klon)      REAL pblT(klon)
64      ! thermal virtual temperature excess      ! thermal virtual temperature excess
65      REAL therm(klon)      REAL therm(klon)
     REAL trmb1(klon), trmb2(klon), trmb3(klon)  
66      REAL plcl(klon)      REAL plcl(klon)
67    
68      ! Local:      ! Local:
69        
70        INTEGER knon ! nombre de points a calculer
71      INTEGER isommet      INTEGER isommet
72      ! limite max sommet pbl      ! limite max sommet pbl
73      PARAMETER (isommet=klev)      PARAMETER (isommet=klev)
# Line 80  contains Line 76  contains
76      PARAMETER (vk=0.35)      PARAMETER (vk=0.35)
77      REAL ricr      REAL ricr
78      PARAMETER (ricr=0.4)      PARAMETER (ricr=0.4)
     REAL fak  
     ! b calcul du Prandtl et de dTetas  
     PARAMETER (fak=8.5)  
     REAL fakn  
79      ! a      ! a
     PARAMETER (fakn=7.2)  
80      REAL onet      REAL onet
81      PARAMETER (onet=1.0/3.0)      PARAMETER (onet=1.0/3.0)
     REAL t_coup  
     PARAMETER(t_coup=273.15)  
82      REAL zkmin      REAL zkmin
83      PARAMETER (zkmin=0.01)      PARAMETER (zkmin=0.01)
84      REAL betam      REAL betam
85      ! pour Phim / h dans la S.L stable      ! pour Phim / h dans la S.L stable
86      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)  
87      ! z/OBL<>1      ! z/OBL<>1
88      REAL sffrac      REAL sffrac
89      ! S.L. = z/h < .1      ! S.L. = z/h < .1
90      PARAMETER (sffrac=0.1)      PARAMETER (sffrac=0.1)
91      REAL binm      REAL binm
92      PARAMETER (binm=betam*sffrac)      PARAMETER (binm=betam*sffrac)
     REAL binh  
     PARAMETER (binh=betah*sffrac)  
     REAL ccon  
     PARAMETER (ccon=fak*sffrac*vk)  
93    
94      REAL q_star, t_star      REAL q_star, t_star
95      ! Lambert correlations T' q' avec T* q*      ! Lambert correlations T' q' avec T* q*
# Line 166  contains Line 146  contains
146    
147      !-----------------------------------------------------------------      !-----------------------------------------------------------------
148    
149        knon = size(pblh)
150    
151      ! initialisations      ! initialisations
152      q_star = 0      q_star = 0
153      t_star = 0      t_star = 0
# Line 203  contains Line 185  contains
185         zxt = t2m(i)         zxt = t2m(i)
186    
187         ! convention >0 vers le bas ds lmdz         ! convention >0 vers le bas ds lmdz
188         khfs(i) = - flux_t(i, 1)*zxt*Rd / (RCPD*paprs(i, 1))         khfs(i) = - flux_t(i)*zxt*Rd / (RCPD*paprs(i, 1))
189         kqfs(i) = - flux_q(i, 1)*zxt*Rd / paprs(i, 1)         kqfs(i) = - flux_q(i)*zxt*Rd / paprs(i, 1)
190         ! verifier que khfs et kqfs sont bien de la forme w'l'         ! verifier que khfs et kqfs sont bien de la forme w'l'
191         heatv(i) = khfs(i) + 0.608*zxt*kqfs(i)         heatv(i) = khfs(i) + 0.608*zxt*kqfs(i)
192         ! 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
# Line 223  contains Line 205  contains
205         plcl(i) = 6000.         plcl(i) = 6000.
206         ! Lambda = -u*^3 / (alpha.g.kvon.<w'Theta'v>         ! Lambda = -u*^3 / (alpha.g.kvon.<w'Theta'v>
207         obklen(i) = -t(i, 1)*ustar(i)**3/(RG*vk*heatv(i))         obklen(i) = -t(i, 1)*ustar(i)**3/(RG*vk*heatv(i))
        trmb1(i) = 0.  
        trmb2(i) = 0.  
        trmb3(i) = 0.  
208      ENDDO      ENDDO
209    
210      ! PBL height calculation: Search for level of pbl. Scan upward      ! PBL height calculation: Search for level of pbl. Scan upward

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

  ViewVC Help
Powered by ViewVC 1.1.21