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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (hide annotations)
Fri Apr 18 14:45:53 2008 UTC (16 years, 1 month ago) by guez
Original Path: trunk/libf/phylmd/cvltr.f
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 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 guez 10 SUBROUTINE cvltr(pdtime,da, phi, mp,paprs,x,upd,dnd,dx)
5 guez 3 use dimens_m
6     use dimphy
7     use YOMCST
8 guez 10 use yoecumf
9 guez 3 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 guez 7 REAL, intent(in):: pdtime
17 guez 3 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