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

Contents of /trunk/phylmd/cvltr.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 99 - (show annotations)
Wed Jul 2 18:39:15 2014 UTC (9 years, 10 months ago) by guez
File size: 3599 byte(s)
Created procedure test_disvert (following LMDZ). Added procedures
hybrid and funcd in module disvert_m. Upgraded compute_ab from
internal procedure of disvert to module procedure. Added variables y,
ya in module disvert_m. Upgraded s from local variable of procedure
disvert to module variable.

Renamed allowed value of variable vert_sampling in procedure disvert
from "read" to "read_hybrid". Added possibility to read pressure
values, value "read_pressure". Replaced vertical distribution for
value "param" by the distribution "strato_correct" from LMDZ (but kept
the value "param"). In case "tropo", replaced 1 by dsigmin (following
LMDZ). In case "strato", replaced 0.3 by dsigmin (following LMDZ).

Changed computation of bp in procedure compute_ab.

Removed debugindex case in clmain. Removed useless argument rlon of
procedure clmain. Removed useless variables ytaux, ytauy of procedure
clmain.

Removed intermediary variables tsol, qsol, tsolsrf, tslab in procedure
etat0.

Removed variable ok_veget:. coupling with the model Orchid is not
possible. Removed variable ocean: modeling an ocean slab is not
possible.

Removed useless variables tmp_rriv and tmp_rcoa from module
interface_surf.

Moved initialization of variables da, mp, phi in procedure physiq to
to inside the test iflag_con >= 3.

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, intent(in):: 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