source: LMDZ4/trunk/libf/phylmd/cv3a_compress.F @ 879

Last change on this file since 879 was 879, checked in by Laurent Fairhead, 17 years ago

Suite de la bascule vers une physique avec thermiques, nouvelle convection, poche froide ...
LF

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.6 KB
Line 
1      SUBROUTINE cv3a_compress( len,nloc,ncum,nd,ntra
2     :    ,iflag1,nk1,icb1,icbs1
3     :    ,plcl1,tnk1,qnk1,gznk1,hnk1,unk1,vnk1
4     :    ,wghti1,pbase1,buoybase1
5     :    ,t1,q1,qs1,t1_wake,q1_wake,qs1_wake,u1,v1,gz1,th1,th1_wake
6     :    ,tra1
7     :    ,h1     ,lv1     ,cpn1   ,p1,ph1,tv1    ,tp1,tvp1,clw1
8     :    ,h1_wake,lv1_wake,cpn1_wake     ,tv1_wake
9     :    ,sig1,w01,ptop21
10     :    ,Ale1,Alp1
11     o    ,iflag,nk,icb,icbs
12     o    ,plcl,tnk,qnk,gznk,hnk,unk,vnk
13     o    ,wghti,pbase,buoybase
14     o    ,t,q,qs,t_wake,q_wake,qs_wake,u,v,gz,th,th_wake
15     o    ,tra
16     o    ,h     ,lv     ,cpn    ,p,ph,tv    ,tp,tvp,clw
17     o    ,h_wake,lv_wake,cpn_wake    ,tv_wake
18     o    ,sig,w0,ptop2
19     o    ,Ale,Alp  )
20***************************************************************
21*                                                             *
22* CV3A_COMPRESS                                               *
23*                                                             *
24*                                                             *
25* written by   : Sandrine Bony-Lena , 17/05/2003, 11.22.15    *
26* modified by  : Jean-Yves Grandpeix, 23/06/2003, 10.28.09    *
27***************************************************************
28*
29      implicit none
30
31#include "cv3param.h"
32
33c inputs:
34      integer len,nloc,ncum,nd,ntra
35      integer iflag1(len),nk1(len),icb1(len),icbs1(len)
36      real plcl1(len),tnk1(len),qnk1(len),gznk1(len)
37      real hnk1(len),unk1(len),vnk1(len)
38      real wghti1(len,nd),pbase1(len),buoybase1(len)
39      real t1(len,nd),q1(len,nd),qs1(len,nd)
40      real t1_wake(len,nd),q1_wake(len,nd),qs1_wake(len,nd)
41      real u1(len,nd),v1(len,nd)
42      real gz1(len,nd),th1(len,nd),th1_wake(len,nd)
43      real tra1(len,nd,ntra)
44      real h1(len,nd),lv1(len,nd),cpn1(len,nd)
45      real p1(len,nd),ph1(len,nd+1),tv1(len,nd),tp1(len,nd)
46      real tvp1(len,nd),clw1(len,nd)
47      real h1_wake(len,nd),lv1_wake(len,nd),cpn1_wake(len,nd)
48      real tv1_wake(len,nd)
49      real sig1(len,nd), w01(len,nd), ptop21(len)
50      real Ale1(len),Alp1(len)
51
52c outputs:
53c en fait, on a nloc=len pour l'instant (cf cv_driver)
54      integer iflag(len),nk(len),icb(len),icbs(len)
55      real plcl(len),tnk(len),qnk(len),gznk(len)
56      real hnk(len),unk(len),vnk(len)
57      real wghti(len,nd),pbase(len),buoybase(len)
58      real t(len,nd),q(len,nd),qs(len,nd)
59      real t_wake(len,nd),q_wake(len,nd),qs_wake(len,nd)
60      real u(len,nd),v(len,nd)
61      real gz(len,nd),th(len,nd),th_wake(len,nd)
62      real tra(len,nd,ntra)
63      real h(len,nd),lv(len,nd),cpn(len,nd)
64      real p(len,nd),ph(len,nd+1),tv(len,nd),tp(len,nd)
65      real tvp(len,nd),clw(len,nd)
66      real h_wake(len,nd),lv_wake(len,nd),cpn_wake(len,nd)
67      real tv_wake(len,nd)
68      real sig(len,nd), w0(len,nd), ptop2(len)
69      real Ale(len),Alp(len)
70
71c local variables:
72      integer i,k,nn,j
73
74
75      do 110 k=1,nl+1
76       nn=0
77      do 100 i=1,len
78      if(iflag1(i).eq.0)then
79        nn=nn+1
80        wghti(nn,k)=wghti1(i,k)
81        t(nn,k)=t1(i,k)
82        q(nn,k)=q1(i,k)
83        qs(nn,k)=qs1(i,k)
84        t_wake(nn,k)=t1_wake(i,k)
85        q_wake(nn,k)=q1_wake(i,k)
86        qs_wake(nn,k)=qs1_wake(i,k)
87        u(nn,k)=u1(i,k)
88        v(nn,k)=v1(i,k)
89        gz(nn,k)=gz1(i,k)
90        th(nn,k)=th1(i,k)
91        th_wake(nn,k)=th1_wake(i,k)
92        h(nn,k)=h1(i,k)
93        lv(nn,k)=lv1(i,k)
94        cpn(nn,k)=cpn1(i,k)
95        p(nn,k)=p1(i,k)
96        ph(nn,k)=ph1(i,k)
97        tv(nn,k)=tv1(i,k)
98        tp(nn,k)=tp1(i,k)
99        tvp(nn,k)=tvp1(i,k)
100        clw(nn,k)=clw1(i,k)
101        h_wake(nn,k)=h1_wake(i,k)
102        lv_wake(nn,k)=lv1_wake(i,k)
103        cpn_wake(nn,k)=cpn1_wake(i,k)
104        tv_wake(nn,k)=tv1_wake(i,k)
105        sig(nn,k)=sig1(i,k)
106        w0(nn,k)=w01(i,k)
107      endif
108 100    continue
109 110  continue
110
111      do 121 j=1,ntra
112ccccc      do 111 k=1,nl+1
113      do 111 k=1,nd
114       nn=0
115      do 101 i=1,len
116      if(iflag1(i).eq.0)then
117       nn=nn+1
118       tra(nn,k,j)=tra1(i,k,j)
119      endif
120 101  continue
121 111  continue
122 121  continue
123
124      if (nn.ne.ncum) then
125         print*,'strange! nn not equal to ncum: ',nn,ncum
126         stop
127      endif
128
129      nn=0
130      do 150 i=1,len
131      if(iflag1(i).eq.0)then
132      nn=nn+1
133      iflag(nn)=iflag1(i)
134      nk(nn)=nk1(i)
135      icb(nn)=icb1(i)
136      icbs(nn)=icbs1(i)
137      plcl(nn)=plcl1(i)
138      tnk(nn)=tnk1(i)
139      qnk(nn)=qnk1(i)
140      gznk(nn)=gznk1(i)
141      hnk(nn)=hnk1(i)
142      unk(nn)=unk1(i)
143      vnk(nn)=vnk1(i)
144      pbase(nn)=pbase1(i)
145      buoybase(nn)=buoybase1(i)
146      ptop2(nn)=ptop2(i)
147      ale(nn) = ale1(i)
148      alp(nn) = alp1(i)
149      endif
150 150  continue
151
152      RETURN
153      END
Note: See TracBrowser for help on using the repository browser.