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

Diff of /trunk/phylmd/stdlevvar.f

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

revision 254 by guez, Mon Feb 5 10:39:38 2018 UTC revision 272 by guez, Wed Jul 11 14:51:28 2018 UTC
# Line 4  module stdlevvar_m Line 4  module stdlevvar_m
4    
5  contains  contains
6    
7    SUBROUTINE stdlevvar(klon, knon, nsrf, u1, v1, t1, q1, z1, ts1, qsurf, &    SUBROUTINE stdlevvar(nsrf, u1, v1, t1, q1, z1, ts1, qsurf, rugos, psol, &
8         rugos, psol, pat1, t_2m, q_2m, t_10m, q_10m, wind10m, ustar)         pat1, t_2m, q_2m, t_10m, q_10m, wind10m, ustar)
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    
# Line 17  contains Line 17  contains
17    
18      ! Author: I. Musat, July 1st, 2002      ! Author: I. Musat, July 1st, 2002
19    
20        use nr_util, only: assert_eq
21    
22      use coefcdrag_m, only: coefcdrag      use coefcdrag_m, only: coefcdrag
23        USE dimphy, ONLY: klon
24      USE suphec_m, ONLY: rg, rkappa      USE suphec_m, ONLY: rg, rkappa
25      use screenc_m, only: screenc      use screenc_m, only: screenc
26      use screenp_m, only: screenp      use screenp_m, only: screenp
27    
     INTEGER, intent(in):: klon  
     ! dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)  
   
     INTEGER, intent(in):: knon ! nombre de points pour un type de surface  
28      INTEGER, intent(in):: nsrf ! indice pour le type de surface      INTEGER, intent(in):: nsrf ! indice pour le type de surface
29      REAL, intent(in):: u1(:) ! (knon) vent zonal au 1er niveau du modele      REAL, intent(in):: u1(:) ! (knon) vent zonal au 1er niveau du modele
30      REAL, intent(in):: v1(:) ! (knon) vent meridien au 1er niveau du modele      REAL, intent(in):: v1(:) ! (knon) vent meridien au 1er niveau du modele
# Line 46  contains Line 45  contains
45      REAL, intent(out):: ustar(:) ! (knon) u*      REAL, intent(out):: ustar(:) ! (knon) u*
46    
47      ! Local:      ! Local:
48        INTEGER knon ! nombre de points pour un type de surface
49      REAL, PARAMETER:: RKAR = 0.4 ! constante de von Karman      REAL, PARAMETER:: RKAR = 0.4 ! constante de von Karman
50      INTEGER, parameter:: niter = 2 ! nombre iterations calcul "corrector"      INTEGER, parameter:: niter = 2 ! nombre iterations calcul "corrector"
51      INTEGER i, n      INTEGER i, n
# Line 53  contains Line 53  contains
53      REAL, dimension(klon):: speed      REAL, dimension(klon):: speed
54      ! tpot : temperature potentielle      ! tpot : temperature potentielle
55      REAL, dimension(klon):: tpot      REAL, dimension(klon):: tpot
     REAL, dimension(klon):: zri1, cdran  
56      REAL cdram(klon), cdrah(klon)      REAL cdram(klon), cdrah(klon)
     ! ri1 : nb. de Richardson entre la surface --> la 1ere couche  
     REAL, dimension(klon):: ri1  
57      REAL, dimension(klon):: testar, qstar      REAL, dimension(klon):: testar, qstar
58      REAL, dimension(klon):: zdte, zdq      REAL, dimension(klon):: zdte, zdq
59      ! lmon : longueur de Monin-Obukhov selon Hess, Colman and McAvaney      ! lmon : longueur de Monin-Obukhov selon Hess, Colman and McAvaney
60      DOUBLE PRECISION, dimension(klon):: lmon      DOUBLE PRECISION, dimension(klon):: lmon
61      REAL, dimension(klon):: delu, delte, delq      REAL, dimension(klon):: delu, delte, delq
62      REAL, dimension(klon):: u_zref, te_zref, q_zref      REAL, dimension(klon):: u_zref, te_zref, q_zref
63      REAL, dimension(klon):: temp, pref      REAL, dimension(klon):: temp
64        real pref(size(u1)) ! (knon)
65    
66      !-------------------------------------------------------------------------      !-------------------------------------------------------------------------
67    
68        knon = assert_eq([size(u1), size(v1), size(t1), size(wind10m), &
69             size(ustar)], "stdlevvar knon")
70        
71      DO i=1, knon      DO i=1, knon
72         speed(i)=SQRT(u1(i)**2+v1(i)**2)         speed(i)=SQRT(u1(i)**2+v1(i)**2)
        ri1(i) = 0.0  
73      ENDDO      ENDDO
74    
75      CALL coefcdrag(nsrf, speed(:knon), t1(:knon), q1(:knon), z1(:knon), &      CALL coefcdrag(nsrf, speed(:knon), t1(:knon), q1(:knon), z1(:knon), &
76           psol(:knon), ts1, qsurf, rugos, cdram, cdrah, cdran, zri1, pref)           psol(:knon), ts1, qsurf, rugos, cdram, cdrah)
77    
78      ! Star variables      ! Star variables
79    
80      DO i = 1, knon      DO i = 1, knon
        ri1(i) = zri1(i)  
81         tpot(i) = t1(i)* (psol(i)/pat1(i))**RKAPPA         tpot(i) = t1(i)* (psol(i)/pat1(i))**RKAPPA
82         ustar(i) = sqrt(cdram(i) * speed(i) * speed(i))         ustar(i) = sqrt(cdram(i) * speed(i) * speed(i))
83         zdte(i) = tpot(i) - ts1(i)         zdte(i) = tpot(i) - ts1(i)

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

  ViewVC Help
Powered by ViewVC 1.1.21