/[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/libf/phylmd/CV3_routines/cv3_compress.f90 revision 52 by guez, Fri Sep 23 12:28:01 2011 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 cvparam3  
       implicit none  
   
   
 ! inputs:  
       integer 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  !      do 121 j=1,ntra      if (nn /= ncum) then
78  !      do 111 k=1,nd         print*, 'strange! nn not equal to ncum: ', nn, ncum
79  !       nn=0         stop 1
80  !      do 101 i=1,len      endif
81  !      if(iflag1(i).eq.0)then  
82  !       nn=nn+1      nn=0
83  !       tra(nn,k,j)=tra1(i,k,j)      do i=1, klon
84  !      endif         if (iflag1(i) == 0) then
85  ! 101  continue            nn=nn+1
86  ! 111  continue            pbase(nn)=pbase1(i)
87  ! 121  continue            buoybase(nn)=buoybase1(i)
88              plcl(nn)=plcl1(i)
89        if (nn.ne.ncum) then            tnk(nn)=tnk1(i)
90           print*,'strange! nn not equal to ncum: ',nn,ncum            qnk(nn)=qnk1(i)
91           stop            gznk(nn)=gznk1(i)
92        endif            nk(nn)=nk1(i)
93              icb(nn)=icb1(i)
94        nn=0            icbs(nn)=icbs1(i)
95        do 150 i=1,len            iflag(nn)=iflag1(i)
96        if(iflag1(i).eq.0)then         endif
97        nn=nn+1      end do
98        pbase(nn)=pbase1(i)  
99        buoybase(nn)=buoybase1(i)    end SUBROUTINE cv30_compress
       plcl(nn)=plcl1(i)  
       tnk(nn)=tnk1(i)  
       qnk(nn)=qnk1(i)  
       gznk(nn)=gznk1(i)  
       nk(nn)=nk1(i)  
       icb(nn)=icb1(i)  
       icbs(nn)=icbs1(i)  
       iflag(nn)=iflag1(i)  
       endif  
  150  continue  
100    
101        return  end module cv30_compress_m
       end  

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

  ViewVC Help
Powered by ViewVC 1.1.21