/[lmdze]/trunk/Sources/phylmd/CV30_routines/cv30_compress.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/CV30_routines/cv30_compress.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 185 by guez, Wed Mar 16 15:04:46 2016 UTC revision 189 by guez, Tue Mar 29 15:20:23 2016 UTC
# Line 4  module cv30_compress_m Line 4  module cv30_compress_m
4    
5  contains  contains
6    
7    SUBROUTINE cv30_compress(len, nloc, ncum, nd, iflag1, nk1, icb1, icbs1, &    SUBROUTINE cv30_compress(ncum, iflag1, nk1, icb1, icbs1, plcl1, tnk1, qnk1, &
8         plcl1, tnk1, qnk1, gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, &         gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, th1, h1, lv1, cpn1, &
9         th1, h1, lv1, cpn1, p1, ph1, tv1, tp1, tvp1, clw1, sig1, w01, iflag, &         p1, ph1, tv1, tp1, tvp1, clw1, sig1, w01, iflag, nk, icb, icbs, plcl, &
10         nk, icb, icbs, plcl, tnk, qnk, gznk, pbase, buoybase, t, q, qs, u, v, &         tnk, qnk, gznk, pbase, buoybase, t, q, qs, u, v, gz, th, h, lv, cpn, p, &
11         gz, th, h, lv, cpn, p, ph, tv, tp, tvp, clw, sig, w0)         ph, tv, tp, tvp, clw, sig, w0)
12    
13      use cv30_param_m      ! Compress the fields (vectorization over convective gridpoints).
14    
15        use cv30_param_m, only: nl
16        USE dimphy, ONLY: klev, klon
17    
18      ! inputs:      ! inputs:
19      integer, intent(in):: len, ncum, nd, nloc      integer, intent(in):: ncum
20      integer iflag1(len), nk1(len), icb1(len), icbs1(len)      integer iflag1(klon), nk1(klon), icb1(klon), icbs1(klon)
21      real plcl1(len), tnk1(len), qnk1(len), gznk1(len)      real plcl1(klon), tnk1(klon), qnk1(klon), gznk1(klon)
22      real pbase1(len), buoybase1(len)      real pbase1(klon), buoybase1(klon)
23      real, intent(in):: t1(len, nd)      real, intent(in):: t1(klon, klev)
24      real, intent(in):: q1(len, nd), qs1(len, nd), u1(len, nd), v1(len, nd)      real, intent(in):: q1(klon, klev), qs1(klon, klev)
25      real gz1(len, nd), h1(len, nd), lv1(len, nd), cpn1(len, nd)      real, intent(in):: u1(klon, klev), v1(klon, klev)
26      real, intent(in):: p1(len, nd), ph1(len, nd+1), tv1(len, nd), tp1(len, nd)      real gz1(klon, klev), h1(klon, klev), lv1(klon, klev), cpn1(klon, klev)
27      real tvp1(len, nd), clw1(len, nd)      real, intent(in):: p1(klon, klev), ph1(klon, klev+1)
28      real th1(len, nd)      real, intent(in):: tv1(klon, klev), tp1(klon, klev)
29      real sig1(len, nd), w01(len, nd)      real tvp1(klon, klev), clw1(klon, klev)
30        real th1(klon, klev)
31        real sig1(klon, klev), w01(klon, klev)
32    
33      ! outputs:      ! outputs:
34      ! en fait, on a nloc=len pour l'instant (cf cv_driver)      integer iflag(klon), nk(klon), icb(klon), icbs(klon)
35      integer iflag(nloc), nk(nloc), icb(nloc), icbs(nloc)      real plcl(klon), tnk(klon), qnk(klon), gznk(klon)
36      real plcl(nloc), tnk(nloc), qnk(nloc), gznk(nloc)      real pbase(klon), buoybase(klon)
37      real pbase(nloc), buoybase(nloc)      real t(klon, klev), q(klon, klev), qs(klon, klev)
38      real t(nloc, nd), q(nloc, nd), qs(nloc, nd), u(nloc, nd), v(nloc, nd)      real u(klon, klev), v(klon, klev)
39      real gz(nloc, nd), h(nloc, nd), lv(nloc, nd), cpn(nloc, nd)      real gz(klon, klev), h(klon, klev), lv(klon, klev), cpn(klon, klev)
40      real p(nloc, nd), ph(nloc, nd+1), tv(nloc, nd), tp(nloc, nd)      real p(klon, klev), ph(klon, klev+1), tv(klon, klev), tp(klon, klev)
41      real tvp(nloc, nd), clw(nloc, nd)      real tvp(klon, klev), clw(klon, klev)
42      real th(nloc, nd)      real th(klon, klev)
43      real sig(nloc, nd), w0(nloc, nd)      real sig(klon, klev), w0(klon, klev)
44    
45      ! local variables:      ! Local:
46      integer i, k, nn      integer i, k, nn
47    
48        !---------------------------------------------------------------
49    
50      do  k=1, nl+1      do k=1, nl+1
51         nn=0         nn=0
52         do  i=1, len         do i=1, klon
53            if(iflag1(i).eq.0)then            if (iflag1(i) == 0) then
54               nn=nn+1               nn=nn+1
55               sig(nn, k)=sig1(i, k)               sig(nn, k)=sig1(i, k)
56               w0(nn, k)=w01(i, k)               w0(nn, k)=w01(i, k)
# Line 69  contains Line 74  contains
74         end do         end do
75      end do      end do
76    
77      if (nn.ne.ncum) then      if (nn /= ncum) then
78         print*, 'strange! nn not equal to ncum: ', nn, ncum         print*, 'strange! nn not equal to ncum: ', nn, ncum
79         stop         stop 1
80      endif      endif
81    
82      nn=0      nn=0
83      do  i=1, len      do i=1, klon
84         if(iflag1(i).eq.0)then         if (iflag1(i) == 0) then
85            nn=nn+1            nn=nn+1
86            pbase(nn)=pbase1(i)            pbase(nn)=pbase1(i)
87            buoybase(nn)=buoybase1(i)            buoybase(nn)=buoybase1(i)

Legend:
Removed from v.185  
changed lines
  Added in v.189

  ViewVC Help
Powered by ViewVC 1.1.21