/[lmdze]/trunk/phylmd/Conflx/flxini.f90
ViewVC logotype

Diff of /trunk/phylmd/Conflx/flxini.f90

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

trunk/libf/phylmd/Conflx/flxini.f90 revision 52 by guez, Fri Sep 23 12:28:01 2011 UTC trunk/phylmd/Conflx/flxini.f90 revision 78 by guez, Wed Feb 5 17:51:07 2014 UTC
# Line 1  Line 1 
1        SUBROUTINE flxini(pten, pqen, pqsen, pgeo, paph, pgeoh, ptenh, &  module flxini_m
2                   pqenh, pqsenh, ptu, pqu, ptd, pqd, pmfd, pmfds, pmfdq, &  
3                   pdmfdp, pmfu, pmfus, pmfuq, pdmfup, pdpmel, plu, plude, &    IMPLICIT none
4                   klab,pen_u, pde_u, pen_d, pde_d)  
5        use dimens_m  contains
6        use dimphy  
7        use SUPHEC_M    SUBROUTINE flxini(ten, pqen, pqsen, pgeo, paph, pgeoh, ptenh, pqenh, &
8        use yoethf_m         pqsenh, ptu, pqu, ptd, pqd, mfd, pmfds, pmfdq, pdmfdp, mfu, mfus, &
9        IMPLICIT none         mfuq, pdmfup, pdpmel, plu, plude, klab, pen_u, pde_u, pen_d, pde_d)
10  !----------------------------------------------------------------------  
11  ! THIS ROUTINE INTERPOLATES LARGE-SCALE FIELDS OF T,Q ETC.      ! This routine interpolates large-scale fields of T, q etc. to
12  ! TO HALF LEVELS (I.E. GRID FOR MASSFLUX SCHEME),      ! half levels (i. e. grid for massflux scheme), and initializes
13  ! AND INITIALIZES VALUES FOR UPDRAFTS      ! values for updrafts.
14  !----------------------------------------------------------------------  
15  !      USE dimphy, ONLY: klev, klon
16        REAL pten(klon,klev)   ! temperature (environnement)      use flxadjtq_m, only: flxadjtq
17        REAL pqen(klon,klev)   ! humidite (environnement)      USE suphec_m, ONLY: rcpd
18        REAL pqsen(klon,klev)  ! humidite saturante (environnement)  
19        REAL pgeo(klon,klev)   ! geopotentiel (g * metre)      REAL, intent(in):: ten(klon, klev) ! temperature (environnement)
20        REAL pgeoh(klon,klev)  ! geopotentiel aux demi-niveaux      REAL, intent(in):: pqen(klon, klev) ! humidite (environnement)
21        REAL paph(klon,klev+1) ! pression aux demi-niveaux      REAL, intent(in):: pqsen(klon, klev) ! humidite saturante (environnement)
22        REAL ptenh(klon,klev)  ! temperature aux demi-niveaux      REAL, intent(in):: pgeo(klon, klev) ! geopotentiel (g * metre)
23        REAL pqenh(klon,klev)  ! humidite aux demi-niveaux      REAL, intent(in):: paph(klon, klev+1) ! pression aux demi-niveaux
24        REAL pqsenh(klon,klev) ! humidite saturante aux demi-niveaux      REAL pgeoh(klon, klev) ! geopotentiel aux demi-niveaux
25  !      REAL ptenh(klon, klev) ! temperature aux demi-niveaux
26        REAL ptu(klon,klev)    ! temperature du panache ascendant (p-a)      REAL pqenh(klon, klev) ! humidite aux demi-niveaux
27        REAL pqu(klon,klev)    ! humidite du p-a      REAL pqsenh(klon, klev) ! humidite saturante aux demi-niveaux
28        REAL plu(klon,klev)    ! eau liquide du p-a      REAL ptu(klon, klev) ! temperature du panache ascendant
29        REAL pmfu(klon,klev)   ! flux de masse du p-a      REAL pqu(klon, klev) ! humidite du panache ascendant
30        REAL pmfus(klon,klev)  ! flux de l'energie seche dans le p-a      REAL ptd(klon, klev) ! temperature du panache descendant
31        REAL pmfuq(klon,klev)  ! flux de l'humidite dans le p-a      REAL pqd(klon, klev) ! humidite du panache descendant
32        REAL pdmfup(klon,klev) ! quantite de l'eau precipitee dans p-a      REAL, intent(out):: mfd(klon, klev) ! flux de masse du panache descendant
33        REAL plude(klon,klev)  ! quantite de l'eau liquide jetee du      REAL pmfds(klon, klev) ! flux de l'energie seche dans le panache descendant
34  !                              p-a a l'environnement      REAL pmfdq(klon, klev) ! flux de l'humidite dans le panache descendant
35        REAL pdpmel(klon,klev) ! quantite de neige fondue      REAL pdmfdp(klon, klev) ! quantite de precipitation dans panache descendant
36  !      REAL, intent(out):: mfu(klon, klev) ! flux de masse du panache ascendant
37        REAL ptd(klon,klev)    ! temperature du panache descendant (p-d)      REAL mfus(klon, klev) ! flux de l'energie seche dans le panache ascendant
38        REAL pqd(klon,klev)    ! humidite du p-d      REAL mfuq(klon, klev) ! flux de l'humidite dans le panache ascendant
39        REAL pmfd(klon,klev)   ! flux de masse du p-d  
40        REAL pmfds(klon,klev)  ! flux de l'energie seche dans le p-d      REAL pdmfup(klon, klev)
41        REAL pmfdq(klon,klev)  ! flux de l'humidite dans le p-d      ! quantite de l'eau precipitee dans panache ascendant
42        REAL pdmfdp(klon,klev) ! quantite de precipitation dans p-d  
43  !      REAL pdpmel(klon, klev) ! quantite de neige fondue
44        REAL pen_u(klon,klev) ! quantite de masse entrainee pour p-a      REAL plu(klon, klev) ! eau liquide du panache ascendant
45        REAL pde_u(klon,klev) ! quantite de masse detrainee pour p-a  
46        REAL pen_d(klon,klev) ! quantite de masse entrainee pour p-d      REAL plude(klon, klev)
47        REAL pde_d(klon,klev) ! quantite de masse detrainee pour p-d      ! quantite de l'eau liquide jetee du panache ascendant a l'environnement
48  !  
49        INTEGER  klab(klon,klev)      INTEGER klab(klon, klev)
50        LOGICAL  llflag(klon)      REAL pen_u(klon, klev) ! quantite de masse entrainee pour panache ascendant
51        INTEGER k, i, icall      REAL pde_u(klon, klev) ! quantite de masse detrainee pour panache ascendant
52        REAL zzs      REAL pen_d(klon, klev) ! quantite de masse entrainee pour panache descendant
53  !----------------------------------------------------------------------      REAL pde_d(klon, klev) ! quantite de masse detrainee pour panache descendant
54  ! SPECIFY LARGE SCALE PARAMETERS AT HALF LEVELS  
55  ! ADJUST TEMPERATURE FIELDS IF STATICLY UNSTABLE      ! Local:
56  !----------------------------------------------------------------------      LOGICAL llflag(klon)
57        DO 130 k = 2, klev      INTEGER k, i, icall
58  !      REAL zzs
59        DO i = 1, klon  
60           pgeoh(i,k)=pgeo(i,k)+(pgeo(i,k-1)-pgeo(i,k))*0.5      !----------------------------------------------------------------------
61           ptenh(i,k)=(MAX(RCPD*pten(i,k-1)+pgeo(i,k-1), &  
62                     RCPD*pten(i,k)+pgeo(i,k))-pgeoh(i,k))/RCPD      ! Specify large scale parameters at half levels. Adjust
63           pqsenh(i,k)=pqsen(i,k-1)      ! temperature fields if statically unstable.
64           llflag(i)=.TRUE.  
65        ENDDO      DO k = 2, klev
66  !         DO i = 1, klon
67        icall=0            pgeoh(i, k)=pgeo(i, k)+(pgeo(i, k-1)-pgeo(i, k))*0.5
68        CALL flxadjtq(paph(1,k),ptenh(1,k),pqsenh(1,k),llflag,icall)            ptenh(i, k)=(MAX(RCPD*ten(i, k-1)+pgeo(i, k-1), &
69  !                 RCPD*ten(i, k)+pgeo(i, k))-pgeoh(i, k))/RCPD
70        DO i = 1, klon            pqsenh(i, k)=pqsen(i, k-1)
71           pqenh(i,k)=MIN(pqen(i,k-1),pqsen(i,k-1)) &            llflag(i)=.TRUE.
72                       +(pqsenh(i,k)-pqsen(i,k-1))         ENDDO
73           pqenh(i,k)=MAX(pqenh(i,k),0.)  
74        ENDDO         icall=0
75  !         CALL flxadjtq(paph(:, k), ptenh(1, k), pqsenh(1, k), llflag, icall)
76    130 CONTINUE  
77  !         DO i = 1, klon
78        DO 140 i = 1, klon            pqenh(i, k)=MIN(pqen(i, k-1), pqsen(i, k-1)) &
79           ptenh(i,klev)=(RCPD*pten(i,klev)+pgeo(i,klev)- &                 +(pqsenh(i, k)-pqsen(i, k-1))
80                           pgeoh(i,klev))/RCPD            pqenh(i, k)=MAX(pqenh(i, k), 0.)
81           pqenh(i,klev)=pqen(i,klev)         ENDDO
82           ptenh(i,1)=pten(i,1)      end DO
83           pqenh(i,1)=pqen(i,1)  
84           pgeoh(i,1)=pgeo(i,1)      DO i = 1, klon
85    140 CONTINUE         ptenh(i, klev)=(RCPD*ten(i, klev)+pgeo(i, klev)- pgeoh(i, klev))/RCPD
86  !         pqenh(i, klev)=pqen(i, klev)
87        DO 160 k = klev-1, 2, -1         ptenh(i, 1)=ten(i, 1)
88        DO 150 i = 1, klon         pqenh(i, 1)=pqen(i, 1)
89           zzs = MAX(RCPD*ptenh(i,k)+pgeoh(i,k), &         pgeoh(i, 1)=pgeo(i, 1)
90                     RCPD*ptenh(i,k+1)+pgeoh(i,k+1))      end DO
91           ptenh(i,k) = (zzs-pgeoh(i,k))/RCPD  
92    150 CONTINUE      DO k = klev-1, 2, -1
93    160 CONTINUE         DO i = 1, klon
94  !            zzs = MAX(RCPD*ptenh(i, k)+pgeoh(i, k), &
95  !-----------------------------------------------------------------------                 RCPD*ptenh(i, k+1)+pgeoh(i, k+1))
96  ! INITIALIZE VALUES FOR UPDRAFTS AND DOWNDRAFTS            ptenh(i, k) = (zzs-pgeoh(i, k))/RCPD
97  !-----------------------------------------------------------------------         end DO
98        DO k = 1, klev      end DO
99        DO i = 1, klon  
100           ptu(i,k) = ptenh(i,k)      ! Initialize values for updrafts and downdrafts
101           pqu(i,k) = pqenh(i,k)      DO k = 1, klev
102           plu(i,k) = 0.         DO i = 1, klon
103           pmfu(i,k) = 0.            ptu(i, k) = ptenh(i, k)
104           pmfus(i,k) = 0.            pqu(i, k) = pqenh(i, k)
105           pmfuq(i,k) = 0.            plu(i, k) = 0.
106           pdmfup(i,k) = 0.            mfu(i, k) = 0.
107           pdpmel(i,k) = 0.            mfus(i, k) = 0.
108           plude(i,k) = 0.            mfuq(i, k) = 0.
109  !            pdmfup(i, k) = 0.
110           klab(i,k) = 0            pdpmel(i, k) = 0.
111  !            plude(i, k) = 0.
112           ptd(i,k) = ptenh(i,k)            klab(i, k) = 0
113           pqd(i,k) = pqenh(i,k)            ptd(i, k) = ptenh(i, k)
114           pmfd(i,k) = 0.0            pqd(i, k) = pqenh(i, k)
115           pmfds(i,k) = 0.0            mfd(i, k) = 0.0
116           pmfdq(i,k) = 0.0            pmfds(i, k) = 0.0
117           pdmfdp(i,k) = 0.0            pmfdq(i, k) = 0.0
118  !            pdmfdp(i, k) = 0.0
119           pen_u(i,k) = 0.0            pen_u(i, k) = 0.0
120           pde_u(i,k) = 0.0            pde_u(i, k) = 0.0
121           pen_d(i,k) = 0.0            pen_d(i, k) = 0.0
122           pde_d(i,k) = 0.0            pde_d(i, k) = 0.0
123        ENDDO         ENDDO
124        ENDDO      ENDDO
125  !  
126        RETURN    END SUBROUTINE flxini
127        END  
128    end module flxini_m

Legend:
Removed from v.52  
changed lines
  Added in v.78

  ViewVC Help
Powered by ViewVC 1.1.21