/[lmdze]/trunk/libf/phylmd/cvltr.f90
ViewVC logotype

Contents of /trunk/libf/phylmd/cvltr.f90

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.21