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

Annotation of /trunk/Sources/phylmd/cvltr.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (hide annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
Original Path: trunk/libf/phylmd/cvltr.f
File size: 3844 byte(s)
Initial import
1 guez 3 c
2     c $Header: /home/cvsroot/LMDZ4/libf/phylmd/cvltr.F,v 1.1 2005/04/15 12:36:17 lmdzadmin Exp $
3     c
4     SUBROUTINE cvltr(pdtime,da, phi, mp,paprs,pplay,x,upd,dnd,dx)
5     use dimens_m
6     use dimphy
7     use YOMCST
8     IMPLICIT NONE
9     c=====================================================================
10     c Objet : convection des traceurs / KE
11     c Auteurs: M-A Filiberti and J-Y Grandpeix
12     c=====================================================================
13     c
14     include "YOECUMF.h"
15     c
16     REAL pdtime
17     REAL, intent(in):: paprs(klon,klev+1) ! pression aux 1/2 couches (bas en haut)
18     REAL pplay(klon,klev) ! pression pour le milieu de chaque couche
19     REAL x(klon,klev) ! q de traceur (bas en haut)
20     REAL dx(klon,klev) ! tendance de traceur (bas en haut)
21     real da(klon,klev),phi(klon,klev,klev),mp(klon,klev)
22     REAL upd(klon,klev) ! saturated updraft mass flux
23     REAL dnd(klon,klev) ! saturated downdraft mass flux
24     c
25     c--variables locales
26     real zed(klon,klev),zmd(klon,klev,klev)
27     real za(klon,klev,klev)
28     real zmfd(klon,klev),zmfa(klon,klev)
29     real zmfp(klon,klev),zmfu(klon,klev)
30     integer i,k,j
31     c test conservation
32     c real conserv
33     c =========================================
34     c calcul des tendances liees au downdraft
35     c =========================================
36     zed(:,:)=0.
37     zmfd(:,:)=0.
38     zmfa(:,:)=0.
39     zmfu(:,:)=0.
40     zmfp(:,:)=0.
41     zmd(:,:,:)=0.
42     za(:,:,:)=0.
43     c entrainement
44     do k=1,klev-1
45     do i=1,klon
46     zed(i,k)=max(0.,mp(i,k)-mp(i,k+1))
47     end do
48     end do
49     c
50     c calcul de la matrice d echange
51     c matrice de distribution de la masse entrainee en k
52     c
53     do k=1,klev
54     do i=1,klon
55     zmd(i,k,k)=zed(i,k)
56     end do
57     end do
58     do k=2,klev
59     do j=k-1,1,-1
60     do i=1,klon
61     if(mp(i,j+1).ne.0) then
62     zmd(i,j,k)=zmd(i,j+1,k)*min(1.,mp(i,j)/mp(i,j+1))
63     endif
64     end do
65     end do
66     end do
67     do k=1,klev
68     do j=1,klev-1
69     do i=1,klon
70     za(i,j,k)=max(0.,zmd(i,j+1,k)-zmd(i,j,k))
71     end do
72     end do
73     end do
74     c
75     c rajout du terme lie a l ascendance induite
76     c
77     do j=2,klev
78     do i=1,klon
79     za(i,j,j-1)=za(i,j,j-1)+mp(i,j)
80     end do
81     end do
82     C
83     c tendances
84     c
85     do k=1,klev
86     do j=1,klev
87     do i=1,klon
88     zmfd(i,j)=zmfd(i,j)+za(i,j,k)*(x(i,k)-x(i,j))
89     end do
90     end do
91     end do
92     c
93     c =========================================
94     c calcul des tendances liees aux flux satures
95     c =========================================
96     do j=1,klev
97     do i=1,klon
98     zmfa(i,j)=da(i,j)*(x(i,1)-x(i,j))
99     end do
100     end do
101     do k=1,klev
102     do j=1,klev
103     do i=1,klon
104     zmfp(i,j)=zmfp(i,j)+phi(i,j,k)*(x(i,k)-x(i,j))
105     end do
106     end do
107     end do
108     do j=1,klev-1
109     do i=1,klon
110     zmfu(i,j)=max(0.,upd(i,j+1)+dnd(i,j+1))*(x(i,j+1)-x(i,j))
111     end do
112     end do
113     do j=2,klev
114     do i=1,klon
115     zmfu(i,j)=zmfu(i,j)
116     . +min(0.,upd(i,j)+dnd(i,j))*(x(i,j)-x(i,j-1))
117     end do
118     end do
119    
120     c =========================================
121     c--calcul final des tendances
122     c =========================================
123     do k=1, klev
124     do i=1, klon
125     dx(i,k)=(zmfd(i,k)+zmfu(i,k)
126     . +zmfa(i,k)+zmfp(i,k))*pdtime
127     . *RG/(paprs(i,k)-paprs(i,k+1))
128     c print*,'dx',k,dx(i,k)
129     enddo
130     enddo
131     c
132     c test de conservation du traceur
133     c conserv=0.
134     c do k=1, klev
135     c do i=1, klon
136     c conserv=conserv+dx(i,k)*
137     c . (paprs(i,k)-paprs(i,k+1))/RG
138     C
139     c enddo
140     c enddo
141     c print *,'conserv',conserv
142    
143     return
144     end

  ViewVC Help
Powered by ViewVC 1.1.21