/[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

trunk/phylmd/CV3_routines/cv3_compress.f90 revision 76 by guez, Fri Nov 15 18:45:49 2013 UTC trunk/Sources/phylmd/CV30_routines/cv30_compress.f revision 189 by guez, Tue Mar 29 15:20:23 2016 UTC
# Line 1  Line 1 
1    module cv30_compress_m
2    
3        SUBROUTINE cv3_compress( len,nloc,ncum,nd,ntra &    implicit none
           ,iflag1,nk1,icb1,icbs1 &  
           ,plcl1,tnk1,qnk1,gznk1,pbase1,buoybase1 &  
           ,t1,q1,qs1,u1,v1,gz1,th1 &  
           ,tra1 &  
           ,h1,lv1,cpn1,p1,ph1,tv1,tp1,tvp1,clw1  &  
           ,sig1,w01 &  
           ,iflag,nk,icb,icbs &  
           ,plcl,tnk,qnk,gznk,pbase,buoybase &  
           ,t,q,qs,u,v,gz,th &  
           ,tra &  
           ,h,lv,cpn,p,ph,tv,tp,tvp,clw  &  
           ,sig,w0  )  
             use cv3_param_m  
       implicit none  
   
   
 ! inputs:  
       integer, intent(in):: len,ncum,nd,ntra,nloc  
       integer iflag1(len),nk1(len),icb1(len),icbs1(len)  
       real plcl1(len),tnk1(len),qnk1(len),gznk1(len)  
       real pbase1(len),buoybase1(len)  
       real, intent(in):: t1(len,nd)  
       real q1(len,nd),qs1(len,nd),u1(len,nd),v1(len,nd)  
       real gz1(len,nd),h1(len,nd),lv1(len,nd),cpn1(len,nd)  
       real p1(len,nd),ph1(len,nd+1),tv1(len,nd),tp1(len,nd)  
       real tvp1(len,nd),clw1(len,nd)  
       real th1(len,nd)  
       real sig1(len,nd), w01(len,nd)  
       real, intent(in):: tra1(len,nd,ntra)  
   
 ! outputs:  
 ! en fait, on a nloc=len pour l'instant (cf cv_driver)  
       integer iflag(nloc),nk(nloc),icb(nloc),icbs(nloc)  
       real plcl(nloc),tnk(nloc),qnk(nloc),gznk(nloc)  
       real pbase(nloc),buoybase(nloc)  
       real t(nloc,nd),q(nloc,nd),qs(nloc,nd),u(nloc,nd),v(nloc,nd)  
       real gz(nloc,nd),h(nloc,nd),lv(nloc,nd),cpn(nloc,nd)  
       real p(nloc,nd),ph(nloc,nd+1),tv(nloc,nd),tp(nloc,nd)  
       real tvp(nloc,nd),clw(nloc,nd)  
       real th(nloc,nd)  
       real sig(nloc,nd), w0(nloc,nd)  
       real tra(nloc,nd,ntra)  
4    
5  ! local variables:  contains
       integer i,k,nn,j  
6    
7      SUBROUTINE cv30_compress(ncum, iflag1, nk1, icb1, icbs1, plcl1, tnk1, qnk1, &
8           gznk1, pbase1, buoybase1, t1, q1, qs1, u1, v1, gz1, th1, h1, lv1, cpn1, &
9           p1, ph1, tv1, tp1, tvp1, clw1, sig1, w01, iflag, nk, icb, icbs, plcl, &
10           tnk, qnk, gznk, pbase, buoybase, t, q, qs, u, v, gz, th, h, lv, cpn, p, &
11           ph, tv, tp, tvp, clw, sig, w0)
12    
13        ! Compress the fields (vectorization over convective gridpoints).
14    
15        use cv30_param_m, only: nl
16        USE dimphy, ONLY: klev, klon
17    
18        ! inputs:
19        integer, intent(in):: ncum
20        integer iflag1(klon), nk1(klon), icb1(klon), icbs1(klon)
21        real plcl1(klon), tnk1(klon), qnk1(klon), gznk1(klon)
22        real pbase1(klon), buoybase1(klon)
23        real, intent(in):: t1(klon, klev)
24        real, intent(in):: q1(klon, klev), qs1(klon, klev)
25        real, intent(in):: u1(klon, klev), v1(klon, klev)
26        real gz1(klon, klev), h1(klon, klev), lv1(klon, klev), cpn1(klon, klev)
27        real, intent(in):: p1(klon, klev), ph1(klon, klev+1)
28        real, intent(in):: tv1(klon, klev), tp1(klon, klev)
29        real tvp1(klon, klev), clw1(klon, klev)
30        real th1(klon, klev)
31        real sig1(klon, klev), w01(klon, klev)
32    
33        ! outputs:
34        integer iflag(klon), nk(klon), icb(klon), icbs(klon)
35        real plcl(klon), tnk(klon), qnk(klon), gznk(klon)
36        real pbase(klon), buoybase(klon)
37        real t(klon, klev), q(klon, klev), qs(klon, klev)
38        real u(klon, klev), v(klon, klev)
39        real gz(klon, klev), h(klon, klev), lv(klon, klev), cpn(klon, klev)
40        real p(klon, klev), ph(klon, klev+1), tv(klon, klev), tp(klon, klev)
41        real tvp(klon, klev), clw(klon, klev)
42        real th(klon, klev)
43        real sig(klon, klev), w0(klon, klev)
44    
45        do 110 k=1,nl+1      ! Local:
46        integer i, k, nn
47    
48        !---------------------------------------------------------------
49    
50        do k=1, nl+1
51         nn=0         nn=0
52        do 100 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)
57          t(nn,k)=t1(i,k)               t(nn, k)=t1(i, k)
58          q(nn,k)=q1(i,k)               q(nn, k)=q1(i, k)
59          qs(nn,k)=qs1(i,k)               qs(nn, k)=qs1(i, k)
60          u(nn,k)=u1(i,k)               u(nn, k)=u1(i, k)
61          v(nn,k)=v1(i,k)               v(nn, k)=v1(i, k)
62          gz(nn,k)=gz1(i,k)               gz(nn, k)=gz1(i, k)
63          h(nn,k)=h1(i,k)               h(nn, k)=h1(i, k)
64          lv(nn,k)=lv1(i,k)               lv(nn, k)=lv1(i, k)
65          cpn(nn,k)=cpn1(i,k)               cpn(nn, k)=cpn1(i, k)
66          p(nn,k)=p1(i,k)               p(nn, k)=p1(i, k)
67          ph(nn,k)=ph1(i,k)               ph(nn, k)=ph1(i, k)
68          tv(nn,k)=tv1(i,k)               tv(nn, k)=tv1(i, k)
69          tp(nn,k)=tp1(i,k)               tp(nn, k)=tp1(i, k)
70          tvp(nn,k)=tvp1(i,k)               tvp(nn, k)=tvp1(i, k)
71          clw(nn,k)=clw1(i,k)               clw(nn, k)=clw1(i, k)
72          th(nn,k)=th1(i,k)               th(nn, k)=th1(i, k)
73        endif            endif
74   100    continue         end do
75   110  continue      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 150 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)
88        plcl(nn)=plcl1(i)            plcl(nn)=plcl1(i)
89        tnk(nn)=tnk1(i)            tnk(nn)=tnk1(i)
90        qnk(nn)=qnk1(i)            qnk(nn)=qnk1(i)
91        gznk(nn)=gznk1(i)            gznk(nn)=gznk1(i)
92        nk(nn)=nk1(i)            nk(nn)=nk1(i)
93        icb(nn)=icb1(i)            icb(nn)=icb1(i)
94        icbs(nn)=icbs1(i)            icbs(nn)=icbs1(i)
95        iflag(nn)=iflag1(i)            iflag(nn)=iflag1(i)
96        endif         endif
97   150  continue      end do
98    
99      end SUBROUTINE cv30_compress
100    
101        return  end module cv30_compress_m
       end  

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

  ViewVC Help
Powered by ViewVC 1.1.21