source: LMDZ4/branches/IPSL-CM4_IPCC_branch/libf/phylmd/read_pstoke.F @ 5373

Last change on this file since 5373 was 524, checked in by lmdzadmin, 21 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 14.4 KB
Line 
1!
2! $Header$
3!
4c
5c
6        subroutine read_pstoke(irec,
7     .   zrec,zklono,zklevo,airefi,phisfi,
8     .   t,mfu,mfd,en_u,de_u,en_d,de_d,coefh,
9     .   frac_impa,frac_nucl,pyu1,pyv1,ftsol,psrf)
10
11
12       IMPLICIT NONE
13
14#include "netcdf.inc"
15#include "dimensions.h"
16#include "paramet.h"
17#include "comconst.h"
18#include "comgeom.h"
19#include "temps.h"
20#include "ener.h"
21#include "logic.h"
22#include "description.h"
23#include "serre.h"
24#include "indicesol.h"
25#include "control.h"
26#include "dimphy.h"
27       
28          integer*4 klono,klevo,imo,jmo
29          parameter (imo=iim/2,jmo=(jjm+1)/2)
30          parameter(klono=(jmo-1)*imo+2,klevo=llm)
31          REAL*4 phisfi(klono)
32          REAL*4 phisfi2(imo,jmo+1),airefi2(imo,jmo+1)
33
34          REAL*4 mfu(klono,klevo), mfd(klono,klevo)
35          REAL*4 en_u(klono,klevo), de_u(klono,klevo)
36          REAL*4 en_d(klono,klevo), de_d(klono,klevo)
37          REAL*4 coefh(klono,klevo)
38
39          REAL*4 mfu2(imo,jmo+1,klevo), mfd2(imo,jmo+1,klevo)
40          REAL*4 en_u2(imo,jmo+1,klevo), de_u2(imo,jmo+1,klevo)
41          REAL*4 en_d2(imo,jmo+1,klevo), de_d2(imo,jmo+1,klevo)
42          REAL*4 coefh2(imo,jmo+1,klevo)
43
44          REAL*4 pl(klevo)
45          integer irec
46          integer*4 xid,yid,zid,tid
47          real zrec,zklono,zklevo,zim,zjm
48          integer*4 ncrec,ncklono,ncklevo,ncim,ncjm
49
50          real*4 airefi(klono)
51          character namedim
52
53c  !! attention !!
54c attention il y a aussi le pb de def klono
55c dim de phis??
56         
57         
58          REAL*4 frac_impa(klono,klevo), frac_nucl(klono,klevo)
59          REAL*4 frac_impa2(imo,jmo+1,klevo),
60     .     frac_nucl2(imo,jmo+1,klevo)
61          REAL*4 pyu1(klono), pyv1(klono)
62          REAL*4 pyu12(imo,jmo+1), pyv12(imo,jmo+1)
63          REAL*4 ftsol(klono,nbsrf)
64          REAL*4 psrf(klono,nbsrf)
65          REAL*4 ftsol1(klono),ftsol2(klono),ftsol3(klono),ftsol4(klono)
66          REAL*4 psrf1(klono),psrf2(klono),psrf3(klono),psrf4(klono)
67          REAL*4 ftsol12(imo,jmo+1),ftsol22(imo,jmo+1),
68     .     ftsol32(imo,jmo+1),
69     .     ftsol42(imo,jmo+1)
70          REAL*4 psrf12(imo,jmo+1),psrf22(imo,jmo+1),psrf32(imo,jmo+1),
71     .     psrf42(imo,jmo+1)
72                REAL*4 t(klono,klevo)
73                REAL*4 t2(imo,jmo+1)   
74          integer ncidp
75          save ncidp
76                integer varidt
77          integer varidmfu, varidmfd, varidps, varidenu, variddeu       
78          integer varidend,varidded,varidch,varidfi,varidfn
79          integer varidyu1,varidyv1,varidpl,varidai,varididvt
80          integer varidfts1,varidfts2,varidfts3,varidfts4
81          integer varidpsr1,varidpsr2,varidpsr3,varidpsr4
82          save varidmfu, varidmfd, varidps, varidenu, variddeu
83          save varidend,varidded,varidch,varidfi,varidfn
84          save varidyu1,varidyv1,varidpl,varidai,varididvt
85          save varidfts1,varidfts2,varidfts3,varidfts4
86          save varidpsr1,varidpsr2,varidpsr3,varidpsr4
87                save varidt
88
89          integer l, i
90          integer start(4),count(4),status
91          real rcode
92          logical first
93          save first
94          data first/.true./
95
96
97
98c ---------------------------------------------
99c   Initialisation de la lecture des fichiers
100c ---------------------------------------------
101
102      if (irec .eq. 0) then
103
104            ncidp=NCOPN('phystoke.nc',NCNOWRIT,rcode)
105
106            varidps=NCVID(ncidp,'phis',rcode)
107            print*,'ncidp,varidps',ncidp,varidps
108
109            varidpl=NCVID(ncidp,'sig_s',rcode)
110            print*,'ncidp,varidpl',ncidp,varidpl
111
112            varidai=NCVID(ncidp,'aire',rcode)
113            print*,'ncidp,varidai',ncidp,varidai
114
115                varidt=NCVID(ncidp,'t',rcode)
116                print*,'ncidp,varidt',ncidp,varidt
117            varidmfu=NCVID(ncidp,'mfu',rcode)
118            print*,'ncidp,varidmfu',ncidp,varidmfu
119
120            varidmfd=NCVID(ncidp,'mfd',rcode)
121            print*,'ncidp,varidmfd',ncidp,varidmfd
122
123            varidenu=NCVID(ncidp,'en_u',rcode)
124            print*,'ncidp,varidenu',ncidp,varidenu
125
126            variddeu=NCVID(ncidp,'de_u',rcode)
127            print*,'ncidp,variddeu',ncidp,variddeu
128
129            varidend=NCVID(ncidp,'en_d',rcode)
130            print*,'ncidp,varidend',ncidp,varidend
131       
132            varidded=NCVID(ncidp,'de_d',rcode)
133            print*,'ncidp,varidded',ncidp,varidded
134       
135            varidch=NCVID(ncidp,'coefh',rcode)
136            print*,'ncidp,varidch',ncidp,varidch
137       
138            varidfi=NCVID(ncidp,'frac_impa',rcode)
139            print*,'ncidp,varidfi',ncidp,varidfi
140       
141            varidfn=NCVID(ncidp,'frac_nucl',rcode)
142            print*,'ncidp,varidfn',ncidp,varidfn
143       
144            varidyu1=NCVID(ncidp,'pyu1',rcode)
145            print*,'ncidp,varidyu1',ncidp,varidyu1
146       
147            varidyv1=NCVID(ncidp,'pyv1',rcode)
148            print*,'ncidp,varidyv1',ncidp,varidyv1
149       
150            varidfts1=NCVID(ncidp,'ftsol1',rcode)
151            print*,'ncidp,varidfts1',ncidp,varidfts1
152       
153            varidfts2=NCVID(ncidp,'ftsol2',rcode)
154            print*,'ncidp,varidfts2',ncidp,varidfts2
155         
156            varidfts3=NCVID(ncidp,'ftsol3',rcode)
157            print*,'ncidp,varidfts3',ncidp,varidfts3
158 
159            varidfts4=NCVID(ncidp,'ftsol4',rcode)
160            print*,'ncidp,varidfts4',ncidp,varidfts4
161       
162            varidpsr1=NCVID(ncidp,'psrf1',rcode)
163            print*,'ncidp,varidpsr1',ncidp,varidpsr1
164       
165            varidpsr2=NCVID(ncidp,'psrf2',rcode)
166            print*,'ncidp,varidpsr2',ncidp,varidpsr2
167       
168            varidpsr3=NCVID(ncidp,'psrf3',rcode)
169            print*,'ncidp,varidpsr3',ncidp,varidpsr3
170
171            varidpsr4=NCVID(ncidp,'psrf4',rcode)
172            print*,'ncidp,varidpsr4',ncidp,varidpsr4
173       
174c ID pour les dimensions
175
176            status = nf_inq_dimid(ncidp,'y',yid)
177            status = nf_inq_dimid(ncidp,'x',xid)
178            status = nf_inq_dimid(ncidp,'sig_s',zid)
179            status = nf_inq_dimid(ncidp,'time_counter',tid)
180
181c lecture des dimensions
182
183            status = nf_inq_dim(ncidp,yid,namedim,ncjm)
184            status = nf_inq_dim(ncidp,xid,namedim,ncim)
185            status = nf_inq_dim(ncidp,zid,namedim,ncklevo)
186            status = nf_inq_dim(ncidp,tid,namedim,ncrec)
187       
188            zrec=ncrec
189            zklevo=ncklevo
190            zim=ncim
191            zjm=ncjm
192       
193            zklono=zim*(zjm-2)+2
194       
195            write(*,*) 'read_pstoke : zrec = ', zrec
196            write(*,*) 'read_pstoke : zklevo = ', zklevo
197            write(*,*) 'read_pstoke : zim = ', zim
198            write(*,*) 'read_pstoke : zjm = ', zjm
199            write(*,*) 'read_pstoke : zklono = ', zklono
200
201c niveaux de pression
202
203            status=NF_GET_VARA_REAL(ncidp,varidpl,1,zklevo,pl)
204
205c lecture de aire et phis
206       
207      start(1)=1
208      start(2)=1
209      start(3)=1
210      start(4)=0
211
212      count(1)=zim
213      count(2)=zjm
214      count(3)=1
215      count(4)=0
216
217c phis
218      status=NF_GET_VARA_REAL(ncidp,varidps,start,count,phisfi2)
219c      print*,'WARNING!!! Correction bidon pour palier a un '
220c      print*,'probleme dans la creation des fichiers nc'
221c      call correctbid(iim,jjp1*1,phisfi2)
222c      call dump2d(iip1-1,jjp1,phisfi2,'PHISNC')
223      call gr_ecrit_fi(1,klono,imo,jmo+1,phisfi2,phisfi)
224
225c aire
226      status=NF_GET_VARA_REAL(ncidp,varidai,start,count,airefi2)
227c      call correctbid(iim,jjp1*1,airefi2)
228c       call dump2d(iip1-1,jjp1,airefi2,'AIRENC')
229       call gr_ecrit_fi(1,klono,imo,jmo+1,airefi2,airefi)
230      else
231
232      print*,'ok1'
233
234c ---------------------
235c   lecture des champs
236c ---------------------
237       
238        print*,'WARNING!!! Il n y a pas de test de coherence'
239        print*,'sur le nombre de niveaux verticaux dans le fichier nc'
240
241      start(1)=1
242      start(2)=1
243      start(3)=1
244      start(4)=irec
245
246      count(1)=zim
247      count(2)=zjm
248      count(3)=zklevo
249      count(4)=1
250
251c frac_impa
252
253      status=NF_GET_VARA_REAL(ncidp,varidfi,start,count,frac_impa2)
254c      print*,'WARNING!!! Correction bidon pour palier a un '
255c      print*,'probleme dans la creation des fichiers nc'
256c      call correctbid(iim,jjp1*klevo,frac_impa2)
257c      call dump2d(iip1-1,jjp1,frac_impa2,'FINC COUCHE 1')
258      call gr_ecrit_fi(klevo,klono,imo,jmo+1,frac_impa2,frac_impa)
259
260c frac_nucl
261
262      status=NF_GET_VARA_REAL(ncidp,varidfn,start,count,frac_nucl2)
263c      print*,'WARNING!!! Correction bidon pour palier a un '
264c      print*,'probleme dans la creation des fichiers nc'
265c      call correctbid(iim,jjp1*klevo,frac_nucl2)
266c      call dump2d(iip1-1,jjp1,frac_nucl2,'FINC COUCHE 1')
267      call gr_ecrit_fi(klevo,klono,imo,jmo+1,frac_nucl2,frac_nucl)
268
269c abder t
270      status=NF_GET_VARA_REAL(ncidp,varidt,start,count,t2)
271      call gr_ecrit_fi(klevo,klono,imo,jmo+1,t2,t)
272
273c mfu
274      status=NF_GET_VARA_REAL(ncidp,varidmfu,start,count,mfu2)
275c      print*,'WARNING!!! Correction bidon pour palier a un '
276c      print*,'probleme dans la creation des fichiers nc'
277c      call correctbid(iim,jjp1*klevo,mfu2)
278c      call dump2d(iip1-1,jjp1,mfu2,'MFUNC COUCHE 1')
279      call gr_ecrit_fi(klevo,klono,imo,jmo+1,mfu2,mfu)
280
281c mfd
282      status=NF_GET_VARA_REAL(ncidp,varidmfd,start,count,mfd2)
283c      print*,'WARNING!!! Correction bidon pour palier a un '
284c      print*,'probleme dans la creation des fichiers nc'
285c      call correctbid(iim,jjp1*klevo,mfd2)
286c      call dump2d(iip1-1,jjp1,mfd2,'MFDNC COUCHE 1')
287      call gr_ecrit_fi(klevo,klono,imo,jmo+1,mfd2,mfd)
288
289c en_u
290      status=NF_GET_VARA_REAL(ncidp,varidenu,start,count,en_u2)
291c      print*,'WARNING!!! Correction bidon pour palier a un '
292c      print*,'probleme dans la creation des fichiers nc'
293c      call correctbid(iim,jjp1*klevo,en_u2)
294c      call dump2d(iip1-1,jjp1,en_u2,'ENUNC COUCHE 1')
295      call gr_ecrit_fi(klevo,klono,imo,jmo+1,en_u2,en_u)
296
297c de_u
298      status=NF_GET_VARA_REAL(ncidp,variddeu,start,count,de_u2)
299c      print*,'WARNING!!! Correction bidon pour palier a un '
300c      print*,'probleme dans la creation des fichiers nc'
301c      call correctbid(iim,jjp1*klevo,de_u2)
302c      call dump2d(iip1-1,jjp1,de_u2,'DEUNC COUCHE 1')
303      call gr_ecrit_fi(klevo,klono,imo,jmo+1,de_u2,de_u)
304
305c en_d
306      status=NF_GET_VARA_REAL(ncidp,varidend,start,count,en_d2)
307c      print*,'WARNING!!! Correction bidon pour palier a un '
308c      print*,'probleme dans la creation des fichiers nc'
309c      call correctbid(iim,jjp1*klevo,en_d2)
310c      call dump2d(iip1-1,jjp1,en_d2,'ENDNC COUCHE 1')
311      call gr_ecrit_fi(klevo,klono,imo,jmo+1,en_d2,en_d)
312
313c de_d
314      status=NF_GET_VARA_REAL(ncidp,varidded,start,count,de_d2)
315c      print*,'WARNING!!! Correction bidon pour palier a un '
316c      print*,'probleme dans la creation des fichiers nc'
317c      call correctbid(iim,jjp1*klevo,de_d2)
318c      call dump2d(iip1-1,jjp1,de_d2,'DEDNC COUCHE 1')
319      call gr_ecrit_fi(klevo,klono,imo,jmo+1,de_d2,de_d)
320
321c coefh
322      status=NF_GET_VARA_REAL(ncidp,varidch,start,count,coefh2)
323c      print*,'WARNING!!! Correction bidon pour palier a un '
324c      print*,'probleme dans la creation des fichiers nc'
325c      call correctbid(iim,jjp1*klevo,coefh2)
326c      call dump2d(iip1-1,jjp1,coefh2,'CHNC COUCHE 1')
327       call gr_ecrit_fi(klevo,klono,imo,jmo+1,coefh2,coefh)
328
329      start(3)=irec
330      start(4)=0
331      count(3)=1
332      count(4)=0
333
334c pyu1
335      status=NF_GET_VARA_REAL(ncidp,varidyu1,start,count,pyu12)
336c      print*,'WARNING!!! Correction bidon pour palier a un '
337c      print*,'probleme dans la creation des fichiers nc'
338c      call correctbid(iim,jjp1*1,pyu12)
339c      call dump2d(iip1-1,jjp1,pyu12,'PYU1NC')
340      call gr_ecrit_fi(1,klono,imo,jmo+1,pyu12,pyu1)
341
342c pyv1
343      status=NF_GET_VARA_REAL(ncidp,varidyv1,start,count,pyv12)
344c      print*,'WARNING!!! Correction bidon pour palier a un '
345c      print*,'probleme dans la creation des fichiers nc'
346c      call correctbid(iim,jjp1*1,pyv12)
347c      call dump2d(iip1-1,jjp1,pyv12,'PYV1NC')
348      call gr_ecrit_fi(1,klono,imo,jmo+1,pyv12,pyv1)
349
350c ftsol1
351      status=NF_GET_VARA_REAL(ncidp,varidfts1,start,count,ftsol12)
352c      print*,'WARNING!!! Correction bidon pour palier a un '
353c      print*,'probleme dans la creation des fichiers nc'
354c      call correctbid(iim,jjp1*1,ftsol12)
355c      call dump2d(iip1-1,jjp1,ftsol12,'FTS1NC')
356       call gr_ecrit_fi(1,klono,imo,jmo+1,ftsol12,ftsol1)
357
358c ftsol2
359      status=NF_GET_VARA_REAL(ncidp,varidfts2,start,count,ftsol22)
360c      print*,'WARNING!!! Correction bidon pour palier a un '
361c      print*,'probleme dans la creation des fichiers nc'
362c      call correctbid(iim,jjp1*1,ftsol22)
363c      call dump2d(iip1-1,jjp1,ftsol22,'FTS2NC')
364      call gr_ecrit_fi(1,klono,imo,jmo+1,ftsol22,ftsol2)
365
366c ftsol3
367      status=NF_GET_VARA_REAL(ncidp,varidfts3,start,count,ftsol32)
368c      print*,'WARNING!!! Correction bidon pour palier a un '
369c      print*,'probleme dans la creation des fichiers nc'
370c      call correctbid(iim,jjp1*1,ftsol32)
371c      call dump2d(iip1-1,jjp1,ftsol32,'FTS3NC')
372      call gr_ecrit_fi(1,klono,imo,jmo+1,ftsol32,ftsol3)
373
374c ftsol4
375      status=NF_GET_VARA_REAL(ncidp,varidfts4,start,count,ftsol42)
376c      print*,'WARNING!!! Correction bidon pour palier a un '
377c      print*,'probleme dans la creation des fichiers nc'
378c      call correctbid(iim,jjp1*1,ftsol42)
379c      call dump2d(iip1-1,jjp1,ftsol42,'FTS4NC')
380      call gr_ecrit_fi(1,klono,imo,jmo+1,ftsol42,ftsol4)
381
382c psrf1
383      status=NF_GET_VARA_REAL(ncidp,varidpsr1,start,count,psrf12)
384c      print*,'WARNING!!! Correction bidon pour palier a un '
385c      print*,'probleme dans la creation des fichiers nc'
386c      call correctbid(iim,jjp1*1,psrf12)
387c      call dump2d(iip1-1,jjp1,psrf12,'PSRF1NC')
388      call gr_ecrit_fi(1,klono,imo,jmo+1,psrf12,psrf1)
389
390c psrf2
391      status=NF_GET_VARA_REAL(ncidp,varidpsr2,start,count,psrf22)
392c      print*,'WARNING!!! Correction bidon pour palier a un '
393c      print*,'probleme dans la creation des fichiers nc'
394c      call correctbid(iim,jjp1*1,psrf22)
395c      call dump2d(iip1-1,jjp1,psrf22,'PSRF2NC')
396      call gr_ecrit_fi(1,klono,imo,jmo+1,psrf22,psrf2)
397
398c psrf3
399      status=NF_GET_VARA_REAL(ncidp,varidpsr3,start,count,psrf32)
400c      print*,'WARNING!!! Correction bidon pour palier a un '
401c      print*,'probleme dans la creation des fichiers nc'
402c      call correctbid(iim,jjp1*1,psrf32)
403c      call dump2d(iip1-1,jjp1,psrf32,'PSRF3NC')
404      call gr_ecrit_fi(1,klono,imo,jmo+1,psrf32,psrf3)
405
406c psrf4
407      status=NF_GET_VARA_REAL(ncidp,varidpsr4,start,count,psrf42)
408c      print*,'WARNING!!! Correction bidon pour palier a un '
409c      print*,'probleme dans la creation des fichiers nc'
410c      call correctbid(iim,jjp1*1,psrf42)
411c      call dump2d(iip1-1,jjp1,psrf42,'PSRF4NC')
412      call gr_ecrit_fi(1,klono,imo,jmo+1,psrf42,psrf4)
413       
414          do i = 1,klono
415       
416        psrf(i,1) = psrf1(i)
417        psrf(i,2) = psrf2(i)
418        psrf(i,3) = psrf3(i)
419        psrf(i,4) = psrf4(i)
420 
421        ftsol(i,1) = ftsol1(i)
422        ftsol(i,2) = ftsol2(i)
423        ftsol(i,3) = ftsol3(i)
424        ftsol(i,4) = ftsol4(i)
425       
426          enddo
427       
428        endif
429       
430        return
431       
432        end
433
Note: See TracBrowser for help on using the repository browser.