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

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

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

trunk/phylmd/stdlevvar.f revision 104 by guez, Thu Sep 4 10:05:52 2014 UTC trunk/Sources/phylmd/stdlevvar.f revision 208 by guez, Wed Dec 7 16:44:53 2016 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    
12        use coefcdrag_m, only: coefcdrag
13      USE suphec_m, ONLY: rg, rkappa      USE suphec_m, ONLY: rg, rkappa
14        use screenp_m, only: screenp
15    
16      ! 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
17      ! et du module du vent à 10 m à partir des relations de      ! et du module du vent à 10 m à partir des relations de
# Line 17  contains Line 19  contains
19    
20      ! Reference: Hess, Colman and McAvaney (1995)      ! Reference: Hess, Colman and McAvaney (1995)
21    
22      ! Author: I. Musat, 01.07.2002      ! Author: I. Musat, July 1st, 2002
23    
24      INTEGER, intent(in):: klon      INTEGER, intent(in):: klon
25      ! dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)      ! dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)
26    
27      INTEGER, intent(in):: knon, nsrf      INTEGER, intent(in):: knon ! nombre de points pour un type de surface
28      ! knon----input-I- nombre de points pour un type de surface  
29      ! nsrf----input-I- indice pour le type de surface; voir indicesol.inc      INTEGER, intent(in):: nsrf
30      LOGICAL, intent(in):: zxli      ! indice pour le type de surface; voir indicesol.inc
31      ! zxli----input-L- TRUE si calcul des cdrags selon Laurent Li  
32      REAL, dimension(klon), intent(in):: u1, v1, t1, q1, z1, ts1      LOGICAL, intent(in):: zxli ! calcul des cdrags selon Laurent Li
33      ! u1------input-R- vent zonal au 1er niveau du modele      REAL, dimension(klon), intent(in):: u1 ! vent zonal au 1er niveau du modele
34      ! v1------input-R- vent meridien au 1er niveau du modele  
35      ! t1------input-R- temperature de l'air au 1er niveau du modele      REAL, dimension(klon), intent(in):: v1
36      ! q1------input-R- humidite relative au 1er niveau du modele      ! vent meridien au 1er niveau du modele
37      ! z1------input-R- geopotentiel au 1er niveau du modele  
38      ! ts1-----input-R- temperature de l'air a la surface      REAL, dimension(klon), intent(in):: t1
39      REAL, dimension(klon), intent(in):: qsurf, rugos      ! temperature de l'air au 1er niveau du modele
40       ! qsurf---input-R- humidite relative a la surface  
41      ! rugos---input-R- rugosite      REAL, dimension(klon), intent(in):: q1
42     REAL, dimension(klon), intent(in):: psol, pat1      ! humidite relative au 1er niveau du modele
43      ! psol----input-R- pression au sol  
44      ! pat1----input-R- pression au 1er niveau du modele      REAL, dimension(klon), intent(in):: z1
45        ! geopotentiel au 1er niveau du modele
46      REAL, dimension(klon), intent(out):: t_2m, q_2m, t_10m, q_10m  
47      ! t_2m---output-R- temperature de l'air a 2m      REAL, dimension(klon), intent(in):: ts1 ! temperature de l'air a la surface
48      ! q_2m---output-R- humidite relative a 2m      REAL, dimension(klon), intent(in):: qsurf ! humidite relative a la surface
49      ! t_10m--output-R- temperature de l'air a 10m      REAL, dimension(klon), intent(in):: rugos ! rugosite
50      ! q_10m--output-R- humidite specifique a 10m      REAL, dimension(klon), intent(in):: psol ! pression au sol
51      REAL, dimension(klon), intent(out):: u_10m      REAL, dimension(klon), intent(in):: pat1 ! pression au 1er niveau du modele
52      ! u_10m--output-R- vitesse du vent a 10m      REAL, dimension(klon), intent(out):: t_2m ! temperature de l'air a 2m
53        REAL, dimension(klon), intent(out):: q_2m ! humidite relative a 2m
54        REAL, dimension(klon), intent(out):: t_10m ! temperature de l'air a 10m
55        REAL, dimension(klon), intent(out):: q_10m ! humidite specifique a 10m
56        REAL, dimension(klon), intent(out):: u_10m ! vitesse du vent a 10m
57      REAL, intent(out):: ustar(klon) ! u*      REAL, intent(out):: ustar(klon) ! u*
58    
59      ! Local:      ! Local:
# Line 55  contains Line 61  contains
61      ! RKAR : constante de von Karman      ! RKAR : constante de von Karman
62      REAL, PARAMETER:: RKAR=0.40      REAL, PARAMETER:: RKAR=0.40
63      ! niter : nombre iterations calcul "corrector"      ! niter : nombre iterations calcul "corrector"
64      INTEGER, parameter:: niter=2, ncon=niter-1      INTEGER, parameter:: niter=2
65    
66      ! Variables locales      ! Variables locales
67      INTEGER i, n      INTEGER i, n
# Line 71  contains Line 77  contains
77      REAL, dimension(klon):: zdte, zdq      REAL, dimension(klon):: zdte, zdq
78      ! lmon : longueur de Monin-Obukhov selon Hess, Colman and McAvaney      ! lmon : longueur de Monin-Obukhov selon Hess, Colman and McAvaney
79      DOUBLE PRECISION, dimension(klon):: lmon      DOUBLE PRECISION, dimension(klon):: lmon
     DOUBLE PRECISION, parameter:: eps=1.0D-20  
80      REAL, dimension(klon):: delu, delte, delq      REAL, dimension(klon):: delu, delte, delq
81      REAL, dimension(klon):: u_zref, te_zref, q_zref      REAL, dimension(klon):: u_zref, te_zref, q_zref
82      REAL, dimension(klon):: temp, pref      REAL, dimension(klon):: temp, pref
83      LOGICAL okri      LOGICAL okri
84      REAL, dimension(klon):: u_zref_p, temp_p, q_zref_p      REAL, dimension(klon):: u_zref_p, temp_p, q_zref_p
85      !convertgence      !convertgence
     REAL, dimension(klon):: te_zref_con, q_zref_con  
86      REAL, dimension(klon):: u_zref_c, temp_c, q_zref_c      REAL, dimension(klon):: u_zref_c, temp_c, q_zref_c
87      REAL, dimension(klon):: ok_pred, ok_corr      REAL, dimension(klon):: ok_pred, ok_corr
88    
# Line 112  contains Line 116  contains
116    
117      ! First aproximation of variables at zref        ! First aproximation of variables at zref  
118      zref = 2.0      zref = 2.0
119      CALL screenp(klon, knon, nsrf, speed, tpot, q1, &      CALL screenp(klon, knon, speed, tpot, q1, &
120           ts1, qsurf, rugos, lmon, &           ts1, qsurf, rugos, lmon, &
121           ustar, testar, qstar, zref, &           ustar, testar, qstar, zref, &
122           delu, delte, delq)           delu, delte, delq)
# Line 145  contains Line 149  contains
149            ! return to normal temperature            ! return to normal temperature
150    
151            temp(i) = te_zref(i) * (psol(i)/pref(i))**(-RKAPPA)            temp(i) = te_zref(i) * (psol(i)/pref(i))**(-RKAPPA)
   
           IF(n == ncon) THEN  
              te_zref_con(i) = te_zref(i)  
              q_zref_con(i) = q_zref(i)  
           ENDIF  
152         ENDDO         ENDDO
153      ENDDO      ENDDO
154    
# Line 169  contains Line 168  contains
168      ! First aproximation of variables at zref        ! First aproximation of variables at zref  
169    
170      zref = 10.0      zref = 10.0
171      CALL screenp(klon, knon, nsrf, speed, tpot, q1, &      CALL screenp(klon, knon, speed, tpot, q1, &
172           ts1, qsurf, rugos, lmon, &           ts1, qsurf, rugos, lmon, &
173           ustar, testar, qstar, zref, &           ustar, testar, qstar, zref, &
174           delu, delte, delq)           delu, delte, delq)

Legend:
Removed from v.104  
changed lines
  Added in v.208

  ViewVC Help
Powered by ViewVC 1.1.21