source: LMDZ.3.3/trunk/libf/dyn3d/iniav.F @ 346

Last change on this file since 346 was 2, checked in by lmdz, 25 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 7.1 KB
Line 
1      SUBROUTINE iniav(fichnom,pday0,pyear0,pfrac0,pperiod,phis,nq)
2      IMPLICIT NONE
3
4c=======================================================================
5c
6c   pday0    jour de reference pour le stockage
7c   pfrac0   decalage du debut du stockage par rapport a pday0 (en jour)
8c   pperiod  period de stockage en secondes
9c   phis     geopotentiel au sol
10c   
11c   initialisation de l'ecriture des moyennes temporelles.
12c
13c=======================================================================
14
15#include "dimensions.h"
16#include "paramet.h"
17#include "comav.h"
18#include "netcdf.inc"
19#include "comvert.h"
20#include "comgeom.h"
21
22      REAL pperiod
23
24      INTEGER*4 pday0,pyear0
25      REAL pfrac0
26      CHARACTER*(*) fichnom
27      REAL phis(ip1jmp1)
28c
29      CHARACTER str3*3
30c
31      INTEGER nq
32      INTEGER ierr, nid, nvarid, iq
33      INTEGER idim_rlonu, idim_rlonv, idim_rlatu, idim_rlatv
34      INTEGER idim_s, idim_sig
35      INTEGER idim_tim
36      INTEGER dims2(2), dims3(3), dims4(4)
37
38      period_av=pperiod
39      time0_av=pfrac0
40c
41      ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)
42      IF (ierr.NE.NF_NOERR) THEN
43         WRITE(6,*)" Pb d ouverture du fichier "//fichnom
44         WRITE(6,*)' ierr = ', ierr
45         CALL ABORT
46      ENDIF
47c
48c Preciser quelques attributs globaux:
49c
50      ierr = NF_PUT_ATT_TEXT (nid, NF_GLOBAL, "title", 32,
51     .                       "Fichier moyen histoire dynamique")
52c
53c Definir les dimensions du fichiers:
54c
55      ierr = NF_DEF_DIM (nid, "rlonu", iip1, idim_rlonu)
56      ierr = NF_DEF_DIM (nid, "rlatu", jjp1, idim_rlatu)
57      ierr = NF_DEF_DIM (nid, "rlonv", iip1, idim_rlonv)
58      ierr = NF_DEF_DIM (nid, "rlatv", jjm, idim_rlatv)
59      ierr = NF_DEF_DIM (nid, "sigs", llm, idim_s)
60      ierr = NF_DEF_DIM (nid, "sig", llmp1, idim_sig)
61      ierr = NF_DEF_DIM (nid, "temps", NF_UNLIMITED, idim_tim)
62c
63      ierr = NF_ENDDEF(nid) ! sortir du mode de definition
64c
65c Definir et enregistrer certains champs invariants:
66c
67c
68      ierr = NF_REDEF (nid)
69ccc      ierr = NF_DEF_VAR (nid,"rlonu",NF_DOUBLE,1,idim_rlonu,nvarid)
70      ierr = NF_DEF_VAR (nid,"rlonu",NF_FLOAT,1,idim_rlonu,nvarid)
71      ierr = NF_ENDDEF(nid)
72#ifdef NC_DOUBLE
73      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonu)
74#else
75      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonu)
76#endif
77c
78      ierr = NF_REDEF (nid)
79ccc      ierr = NF_DEF_VAR (nid,"rlatu",NF_DOUBLE,1,idim_rlatu,nvarid)
80      ierr = NF_DEF_VAR (nid,"rlatu",NF_FLOAT,1,idim_rlatu,nvarid)
81      ierr = NF_ENDDEF(nid)
82#ifdef NC_DOUBLE
83      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatu)
84#else
85      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatu)
86#endif
87c
88      ierr = NF_REDEF (nid)
89ccc      ierr = NF_DEF_VAR (nid,"rlonv",NF_DOUBLE,1,idim_rlonv,nvarid)
90      ierr = NF_DEF_VAR (nid,"rlonv",NF_FLOAT,1,idim_rlonv,nvarid)
91      ierr = NF_ENDDEF(nid)
92#ifdef NC_DOUBLE
93      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonv)
94#else
95      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonv)
96#endif
97c
98      ierr = NF_REDEF (nid)
99ccc      ierr = NF_DEF_VAR (nid,"rlatv",NF_DOUBLE,1,idim_rlatv,nvarid)
100      ierr = NF_DEF_VAR (nid,"rlatv",NF_FLOAT,1,idim_rlatv,nvarid)
101      ierr = NF_ENDDEF(nid)
102#ifdef NC_DOUBLE
103      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatv)
104#else
105      ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatv)
106#endif
107c
108      ierr = NF_REDEF (nid)
109ccc      ierr = NF_DEF_VAR (nid,"nivsigs",NF_DOUBLE,1,idim_s,nvarid)
110      ierr = NF_DEF_VAR (nid,"nivsigs",NF_FLOAT,1,idim_s,nvarid)
111      ierr = NF_ENDDEF(nid)
112#ifdef NC_DOUBLE
113      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,nivsigs)
114#else
115      ierr = NF_PUT_VAR_REAL (nid,nvarid,nivsigs)
116#endif
117c
118      ierr = NF_REDEF (nid)
119ccc      ierr = NF_DEF_VAR (nid,"nivsig",NF_DOUBLE,1,idim_sig,nvarid)
120      ierr = NF_DEF_VAR (nid,"nivsig",NF_FLOAT,1,idim_sig,nvarid)
121      ierr = NF_ENDDEF(nid)
122#ifdef NC_DOUBLE
123      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,nivsig)
124#else
125      ierr = NF_PUT_VAR_REAL (nid,nvarid,nivsig)
126#endif
127c
128      ierr = NF_REDEF (nid)
129ccc      ierr = NF_DEF_VAR (nid,"ap",NF_DOUBLE,1,idim_sig,nvarid)
130      ierr = NF_DEF_VAR (nid,"ap",NF_FLOAT,1,idim_sig,nvarid)
131      ierr = NF_ENDDEF(nid)
132#ifdef NC_DOUBLE
133      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,ap)
134#else
135      ierr = NF_PUT_VAR_REAL (nid,nvarid,ap)
136#endif
137c
138      ierr = NF_REDEF (nid)
139ccc      ierr = NF_DEF_VAR (nid,"bp",NF_DOUBLE,1,idim_sig,nvarid)
140      ierr = NF_DEF_VAR (nid,"bp",NF_FLOAT,1,idim_sig,nvarid)
141      ierr = NF_ENDDEF(nid)
142#ifdef NC_DOUBLE
143      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,bp)
144#else
145      ierr = NF_PUT_VAR_REAL (nid,nvarid,bp)
146#endif
147c
148      ierr = NF_REDEF (nid)
149ccc      ierr = NF_DEF_VAR (nid,"presnivs",NF_DOUBLE,1,idim_s,nvarid)
150      ierr = NF_DEF_VAR (nid,"presnivs",NF_FLOAT,1,idim_s,nvarid)
151      ierr = NF_ENDDEF(nid)
152#ifdef NC_DOUBLE
153      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,presnivs)
154#else
155      ierr = NF_PUT_VAR_REAL (nid,nvarid,presnivs)
156#endif
157c
158c Geopentiel au sol:
159c
160      ierr = NF_REDEF (nid)
161      dims2(1) = idim_rlonv
162      dims2(2) = idim_rlatu
163ccc      ierr = NF_DEF_VAR (nid,"phisinit",NF_DOUBLE,2,dims2,nvarid)
164      ierr = NF_DEF_VAR (nid,"phisinit",NF_FLOAT,2,dims2,nvarid)
165      ierr = NF_ENDDEF(nid)
166#ifdef NC_DOUBLE
167      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,phis)
168#else
169      ierr = NF_PUT_VAR_REAL (nid,nvarid,phis)
170#endif
171c
172c Definir les variables pour pouvoir les enregistrer plus tard:
173c
174      ierr = NF_REDEF (nid) ! entrer dans le mode de definition
175c
176ccc      ierr = NF_DEF_VAR (nid,"temps",NF_DOUBLE,1,idim_tim,nvarid)
177      ierr = NF_DEF_VAR (nid,"temps",NF_FLOAT,1,idim_tim,nvarid)
178      IF (ierr .NE. NF_NOERR) THEN
179         PRINT*, "iniav: Erreur pour definir <temps>"
180         CALL abort
181      ENDIF
182c
183      dims4(1) = idim_rlonu
184      dims4(2) = idim_rlatu
185      dims4(3) = idim_s
186      dims4(4) = idim_tim
187ccc      ierr = NF_DEF_VAR (nid,"vitu",NF_DOUBLE,4,dims4,nvarid)
188      ierr = NF_DEF_VAR (nid,"vitu",NF_FLOAT,4,dims4,nvarid)
189c
190      dims4(1) = idim_rlonv
191      dims4(2) = idim_rlatv
192      dims4(3) = idim_s
193      dims4(4) = idim_tim
194ccc      ierr = NF_DEF_VAR (nid,"vitv",NF_DOUBLE,4,dims4,nvarid)
195      ierr = NF_DEF_VAR (nid,"vitv",NF_FLOAT,4,dims4,nvarid)
196c
197      dims4(1) = idim_rlonv
198      dims4(2) = idim_rlatu
199      dims4(3) = idim_s
200      dims4(4) = idim_tim
201ccc      ierr = NF_DEF_VAR (nid,"temp",NF_DOUBLE,4,dims4,nvarid)
202      ierr = NF_DEF_VAR (nid,"temp",NF_FLOAT,4,dims4,nvarid)
203c
204      dims4(1) = idim_rlonv
205      dims4(2) = idim_rlatu
206      dims4(3) = idim_s
207      dims4(4) = idim_tim
208      IF(nq.GE.1) THEN
209      DO iq=1,nq
210      IF (iq.GT.99) THEN
211         PRINT*, "Trop de traceurs"
212         CALL abort
213      ELSE
214         str3(1:1)='q'
215         WRITE(str3(2:3),'(i2.2)') iq
216ccc         ierr = NF_DEF_VAR (nid,str3,NF_DOUBLE,4,dims4,nvarid)
217         ierr = NF_DEF_VAR (nid,str3,NF_FLOAT,4,dims4,nvarid)
218      ENDIF
219      ENDDO
220      ENDIF
221c
222      dims3(1) = idim_rlonv
223      dims3(2) = idim_rlatu
224      dims3(3) = idim_tim
225ccc      ierr = NF_DEF_VAR (nid,"ps",NF_DOUBLE,3,dims3,nvarid)
226      ierr = NF_DEF_VAR (nid,"ps",NF_FLOAT,3,dims3,nvarid)
227c
228      ierr = NF_ENDDEF(nid) ! sortir du mode de definition
229      ierr = NF_CLOSE(nid) ! fermer le fichier
230
231      PRINT*,'le fichier hist.moy stoke les variables toutes'
232      PRINT*,'les ',period_av,'s'
233      PRINT*,'A partir du jour de reference day0'
234      RETURN
235      END
Note: See TracBrowser for help on using the repository browser.