/[lmdze]/trunk/Sources/phylmd/stdlevvar.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/stdlevvar.f

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

revision 224 by guez, Wed Dec 7 16:44:53 2016 UTC revision 225 by guez, Mon Oct 16 12:35:41 2017 UTC
# Line 9  contains Line 9  contains
9    
10      ! From LMDZ4/libf/phylmd/stdlevvar.F90, version 1.3 2005/05/25 13:10:09      ! From LMDZ4/libf/phylmd/stdlevvar.F90, version 1.3 2005/05/25 13:10:09
11    
     use coefcdrag_m, only: coefcdrag  
     USE suphec_m, ONLY: rg, rkappa  
     use screenp_m, only: screenp  
   
12      ! Objet : calcul de la température et de l'humidité relative à 2 m      ! Objet : calcul de la température et de l'humidité relative à 2 m
13      ! et du module du vent à 10 m à partir des relations de      ! et du module du vent à 10 m à partir des relations de
14      ! Dyer-Businger et des équations de Louis.      ! Dyer-Businger et des équations de Louis.
# Line 21  contains Line 17  contains
17    
18      ! Author: I. Musat, July 1st, 2002      ! Author: I. Musat, July 1st, 2002
19    
20        use coefcdrag_m, only: coefcdrag
21        USE suphec_m, ONLY: rg, rkappa
22        use screenc_m, only: screenc
23        use screenp_m, only: screenp
24    
25      INTEGER, intent(in):: klon      INTEGER, intent(in):: klon
26      ! dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)      ! dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)
27    
28      INTEGER, intent(in):: knon ! nombre de points pour un type de surface      INTEGER, intent(in):: knon ! nombre de points pour un type de surface
29        INTEGER, intent(in):: nsrf ! indice pour le type de surface
     INTEGER, intent(in):: nsrf  
     ! indice pour le type de surface; voir indicesol.inc  
   
30      LOGICAL, intent(in):: zxli ! calcul des cdrags selon Laurent Li      LOGICAL, intent(in):: zxli ! calcul des cdrags selon Laurent Li
31      REAL, dimension(klon), intent(in):: u1 ! vent zonal au 1er niveau du modele      REAL, intent(in):: u1(:) ! (knon) vent zonal au 1er niveau du modele
32        REAL, intent(in):: v1(:) ! (knon) vent meridien au 1er niveau du modele
33      REAL, dimension(klon), intent(in):: v1      REAL, intent(in):: t1 (klon) ! temperature de l'air au 1er niveau du modele
34      ! vent meridien au 1er niveau du modele      REAL, intent(in):: q1(klon) ! humidite relative au 1er niveau du modele
35        REAL, intent(in):: z1 (klon) ! geopotentiel au 1er niveau du modele
36      REAL, dimension(klon), intent(in):: t1      REAL, intent(in):: ts1(klon) ! temperature de l'air a la surface
37      ! temperature de l'air au 1er niveau du modele      REAL, intent(in):: qsurf(klon) ! humidite relative a la surface
38        REAL, intent(in):: rugos(klon) ! rugosite
39      REAL, dimension(klon), intent(in):: q1      REAL, intent(in):: psol(klon) ! pression au sol
40      ! humidite relative au 1er niveau du modele      REAL, intent(in):: pat1(klon) ! pression au 1er niveau du modele
41        REAL, intent(out):: t_2m(klon) ! temperature de l'air a 2m
42      REAL, dimension(klon), intent(in):: z1      REAL, intent(out):: q_2m(klon) ! humidite relative a 2m
43      ! geopotentiel au 1er niveau du modele      REAL, intent(out):: t_10m(klon) ! temperature de l'air a 10m
44        REAL, intent(out):: q_10m(klon) ! humidite specifique a 10m
45      REAL, dimension(klon), intent(in):: ts1 ! temperature de l'air a la surface      REAL, intent(out):: u_10m(klon) ! vitesse du vent a 10m
     REAL, dimension(klon), intent(in):: qsurf ! humidite relative a la surface  
     REAL, dimension(klon), intent(in):: rugos ! rugosite  
     REAL, dimension(klon), intent(in):: psol ! pression au sol  
     REAL, dimension(klon), intent(in):: pat1 ! pression au 1er niveau du modele  
     REAL, dimension(klon), intent(out):: t_2m ! temperature de l'air a 2m  
     REAL, dimension(klon), intent(out):: q_2m ! humidite relative a 2m  
     REAL, dimension(klon), intent(out):: t_10m ! temperature de l'air a 10m  
     REAL, dimension(klon), intent(out):: q_10m ! humidite specifique a 10m  
     REAL, dimension(klon), intent(out):: u_10m ! vitesse du vent a 10m  
46      REAL, intent(out):: ustar(klon) ! u*      REAL, intent(out):: ustar(klon) ! u*
47    
48      ! Local:      ! Local:
# Line 168  contains Line 157  contains
157      ! First aproximation of variables at zref        ! First aproximation of variables at zref  
158    
159      zref = 10.0      zref = 10.0
160      CALL screenp(klon, knon, speed, tpot, q1, &      CALL screenp(klon, knon, speed, tpot, q1, ts1, qsurf, rugos, lmon, ustar, &
161           ts1, qsurf, rugos, lmon, &           testar, qstar, zref, delu, delte, delq)
          ustar, testar, qstar, zref, &  
          delu, delte, delq)  
162    
163      DO i = 1, knon      DO i = 1, knon
164         u_zref(i) = delu(i)         u_zref(i) = delu(i)
# Line 186  contains Line 173  contains
173    
174      DO n = 1, niter      DO n = 1, niter
175         okri=.TRUE.         okri=.TRUE.
176         CALL screenc(klon, knon, nsrf, zxli, &         CALL screenc(klon, knon, nsrf, zxli, u_zref, temp, q_zref, zref, ts1, &
177              u_zref, temp, q_zref, zref, &              qsurf, rugos, psol, ustar, testar, qstar, okri, ri1, pref, delu, &
178              ts1, qsurf, rugos, psol, &              delte, delq)
             ustar, testar, qstar, okri, ri1, &  
             pref, delu, delte, delq)  
179    
180         DO i = 1, knon         DO i = 1, knon
181            u_zref(i) = delu(i)            u_zref(i) = delu(i)
# Line 202  contains Line 187  contains
187    
188      DO i = 1, knon      DO i = 1, knon
189         u_zref_c(i) = u_zref(i)         u_zref_c(i) = u_zref(i)
   
190         u_10m(i) = u_zref_p(i) * ok_pred(i) + u_zref_c(i) * ok_corr(i)         u_10m(i) = u_zref_p(i) * ok_pred(i) + u_zref_c(i) * ok_corr(i)
   
191         q_zref_c(i) = q_zref(i)         q_zref_c(i) = q_zref(i)
192         temp_c(i) = temp(i)         temp_c(i) = temp(i)
193         t_10m(i) = temp_p(i) * ok_pred(i) + temp_c(i) * ok_corr(i)         t_10m(i) = temp_p(i) * ok_pred(i) + temp_c(i) * ok_corr(i)

Legend:
Removed from v.224  
changed lines
  Added in v.225

  ViewVC Help
Powered by ViewVC 1.1.21