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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (show annotations)
Fri Apr 18 14:45:53 2008 UTC (16 years, 1 month ago) by guez
File size: 3778 byte(s)
Added NetCDF directory "/home/guez/include" in "g95.mk" and
"nag_tools.mk".

Added some "intent" attributes in "PVtheta", "advtrac", "caladvtrac",
"calfis", "diagedyn", "dissip", "vlspltqs", "aeropt", "ajsec",
"calltherm", "clmain", "cltrac", "cltracrn", "concvl", "conema3",
"conflx", "fisrtilp", "newmicro", "nuage", "diagcld1", "diagcld2",
"drag_noro", "lift_noro", "SUGWD", "physiq", "phytrac", "radlwsw", "thermcell".

Removed the case "ierr == 0" in "abort_gcm"; moved call to "histclo"
and messages for end of run from "abort_gcm" to "gcm"; replaced call
to "abort_gcm" in "leapfrog" by exit from outer loop.

In "calfis": removed argument "pp" and variable "unskap"; changed
"pksurcp" from scalar to rank 2; use "pressure_var"; rewrote
computation of "zplev", "zplay", "ztfi", "pcvgt" using "dyn_phy";
added computation of "pls".

Removed unused variable in "dynredem0".

In "exner_hyb": changed "dellta" from scalar to rank 1; replaced call
to "ssum" by call to "sum"; removed variables "xpn" and "xps";
replaced some loops by array expressions.

In "leapfrog": use "pressure_var"; deleted variables "p", "longcles".

Converted common blocks "YOECUMF", "YOEGWD" to modules.

Removed argument "pplay" in "cvltr", "diagetpq", "nflxtr".

Created module "raddimlw" from include file "raddimlw.h".

Corrected call to "new_unit" in "test_disvert".

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

  ViewVC Help
Powered by ViewVC 1.1.21