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

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

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

trunk/phylmd/screenc.f revision 108 by guez, Tue Sep 16 14:00:41 2014 UTC trunk/phylmd/Interface_surf/screenc.f90 revision 328 by guez, Thu Jun 13 14:40:06 2019 UTC
# Line 1  Line 1 
1  !  module screenc_m
2  ! $Header: /home/cvsroot/LMDZ4/libf/phylmd/screenc.F90,v 1.1.1.1 2004/05/19 12:53:09 lmdzadmin Exp $  
3  !    IMPLICIT NONE
4        SUBROUTINE screenc(klon, knon, nsrf, zxli, &  
5                           speed, temp, q_zref, zref, &  contains
6                           ts, qsurf, rugos, psol, &  
7                           ustar, testar, qstar, okri, ri1, &    SUBROUTINE screenc(klon, knon, nsrf, speed, temp, q_zref, zref, ts, &
8                           pref, delu, delte, delq)         qsurf, rugos, psol, ustar, testar, qstar, pref, delu, delte, delq)
9          use coefcdrag_m, only: coefcdrag      
10        use SUPHEC_M      ! From LMDZ4/libf/phylmd/screenc.F90, version 1.1.1.1, 2004/05/19 12:53:09
11        IMPLICIT NONE  
12  !-----------------------------------------------------------------------      ! Objet : calcul "correcteur" des anomalies du vent, de la
13  !      ! temp\'erature potentielle et de l'humidit\'e relative au niveau
14  ! Objet : calcul "correcteur" des anomalies du vent, de la temperature      ! de r\'ef\'erence zref et par rapport au 1er niveau (pour u) ou
15  !         potentielle et de l'humidite relative au niveau de reference zref et      ! \`a la surface (pour theta et q) \`a partir des equations de
16  !         par rapport au 1er niveau (pour u) ou a la surface (pour theta et q)      ! Louis.
17  !         a partir des equations de Louis.  
18  !      ! Reference: Hess, Colman et McAvaney (1995)
19  ! Reference : Hess, Colman et McAvaney (1995)  
20  !      ! I. Musat, 01.07.2002
21  ! I. Musat, 01.07.2002  
22  !-----------------------------------------------------------------------      use cdrag_m, only: cdrag
23  !      use SUPHEC_M, only: RG
24  ! klon----input-I- dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)  
25  ! knon----input-I- nombre de points pour un type de surface      INTEGER, intent(in):: klon
26  ! nsrf----input-I- indice pour le type de surface; voir indicesol.inc      ! klon----input-I- dimension de la grille physique (=
27  ! zxli----input-L- TRUE si calcul des cdrags selon Laurent Li      ! nb_pts_latitude X nb_pts_longitude)
28  ! speed---input-R- module du vent au 1er niveau du modele      INTEGER, intent(in):: knon
29  ! temp----input-R- temperature de l'air au 1er niveau du modele      ! knon----input-I- nombre de points pour un type de surface
30  ! q_zref--input-R- humidite relative au 1er niveau du modele      INTEGER, intent(in):: nsrf
31  ! zref----input-R- altitude de reference      ! nsrf----input-I- indice pour le type de surface; voir indicesol.inc
32  ! ts------input-R- temperature de l'air a la surface      REAL, dimension(klon), intent(in):: speed
33  ! qsurf---input-R- humidite relative a la surface      ! speed---input-R- module du vent au 1er niveau du modele
34  ! rugos---input-R- rugosite      REAL, dimension(klon), intent(in):: temp
35  ! psol----input-R- pression au sol      ! temp----input-R- temperature de l'air au 1er niveau du modele
36  ! ustar---input-R- facteur d'echelle pour le vent      REAL, dimension(klon), intent(in):: q_zref
37  ! testar--input-R- facteur d'echelle pour la temperature potentielle      ! q_zref--input-R- humidite relative au 1er niveau du modele
38  ! qstar---input-R- facteur d'echelle pour l'humidite relative      REAL, intent(in):: zref
39  ! okri----input-L- TRUE si on veut tester le nb. Richardson entre la sfce      ! zref----input-R- altitude de reference
40  !                  et zref par rapport au Ri entre la sfce et la 1ere couche      REAL, dimension(klon), intent(in):: ts
41  ! ri1-----input-R- nb. Richardson entre la surface et la 1ere couche      ! ts------input-R- temperature de l'air a la surface
42  !      REAL, intent(in):: qsurf(:) ! (knon) humidite relative a la surface
43  ! pref----input-R- pression au niveau de reference      REAL, dimension(klon), intent(in):: rugos
44  ! delu----input-R- anomalie du vent par rapport au 1er niveau      ! rugos---input-R- rugosite
45  ! delte---input-R- anomalie de la temperature potentielle par rapport a la surface      REAL, dimension(klon), intent(in):: psol
46  ! delq----input-R- anomalie de l'humidite relative par rapport a la surface      ! psol----input-R- pression au sol
47  !      REAL, intent(in):: ustar(:) ! (knon) facteur d'\'echelle pour le vent
48        INTEGER, intent(in) :: klon, knon, nsrf      REAL, dimension(klon), intent(in):: testar
49        LOGICAL, intent(in) :: zxli, okri      ! testar--input-R- facteur d'echelle pour la temperature potentielle
50        REAL, dimension(klon), intent(in) :: speed, temp, q_zref      REAL, dimension(klon), intent(in):: qstar
51        REAL, intent(in) :: zref      ! qstar---input-R- facteur d'echelle pour l'humidite relative
52        REAL, dimension(klon), intent(in) :: ts, qsurf, rugos, psol  
53        REAL, dimension(klon), intent(in) :: ustar, testar, qstar, ri1              REAL, intent(out):: pref(:) ! (knon) pression au niveau de reference
54  !      REAL, dimension(klon), intent(out):: delu
55        REAL, dimension(klon), intent(out) :: pref, delu, delte, delq      ! delu----input-R- anomalie du vent par rapport au 1er niveau
56  !-----------------------------------------------------------------------      REAL, dimension(klon), intent(out):: delte
57  !      ! delte---input-R- anomalie de la temperature potentielle par
58  ! Variables locales        ! rapport a la surface
59        INTEGER :: i      REAL, dimension(klon), intent(out):: delq
60        REAL, dimension(klon) :: cdram, cdrah, cdran, zri1, gref      ! delq----input-R- anomalie de l'humidite relative par rapport a la surface
61  !  
62  !-------------------------------------------------------------------------      ! Local:
63        DO i=1, knon      INTEGER i
64          gref(i) = zref*RG      REAL, dimension(knon):: cdram, cdrah, gref
65        ENDDO  
66  !      !-------------------------------------------------------------------------
67  ! Richardson at reference level  
68  !      DO i=1, knon
69        CALL coefcdrag (klon, knon, nsrf, zxli, &         gref(i) = zref*RG
70                      speed, temp, q_zref, gref, &      ENDDO
71                      psol, ts, qsurf, rugos, &  
72                      okri, ri1, &      ! Richardson at reference level
73                      cdram, cdrah, cdran, zri1, &  
74                      pref)      CALL cdrag(nsrf, speed(:knon), temp(:knon), q_zref(:knon), gref(:knon), &
75  !           psol(:knon), ts(:knon), qsurf, rugos(:knon), cdram, cdrah, pref)
76        DO i = 1, knon  
77          delu(i) = ustar(i)/sqrt(cdram(i))      DO i = 1, knon
78          delte(i)= (testar(i)* sqrt(cdram(i)))/ &         delu(i) = ustar(i) / sqrt(cdram(i))
79                     cdrah(i)         delte(i) = testar(i) * sqrt(cdram(i)) / cdrah(i)
80          delq(i)= (qstar(i)* sqrt(cdram(i)))/ &         delq(i) = qstar(i) * sqrt(cdram(i)) / cdrah(i)
81                    cdrah(i)      ENDDO
82        ENDDO  
83  !    END SUBROUTINE screenc
84        RETURN  
85        END SUBROUTINE screenc  end module screenc_m

Legend:
Removed from v.108  
changed lines
  Added in v.328

  ViewVC Help
Powered by ViewVC 1.1.21