/[lmdze]/trunk/dyn3d/dynredem0.f
ViewVC logotype

Annotation of /trunk/dyn3d/dynredem0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (hide annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 3 months ago) by guez
Original Path: trunk/libf/dyn3d/dynredem0.f90
File size: 9353 byte(s)
Initial import
1 guez 3 SUBROUTINE dynredem0(fichnom,iday_end,phis,nq)
2    
3     ! From dyn3d/dynredem.F, v 1.2 2004/06/22 11:45:30
4    
5     ! Ecriture du fichier de redémarrage au format NetCDF (initialisation)
6    
7     USE IOIPSL, only: ymds2ju, ju2ymds
8     use dimens_m, only: iim, jjm, llm
9     use paramet_m, only: ip1jmp1, iip1, jjp1, llmp1
10     use comconst, only: rad, cpp, daysec, dtvr, kappa, g, omeg
11     use comvert, only: pa, bp, ap, nivsigs, preff, presnivs, nivsig
12     use logic
13     use comgeom
14     use serre
15     use temps, only: annee_ref, day_ref, itaufin, itau_dyn
16     use ener
17     use advtrac_m, only: tname, ttext
18    
19     IMPLICIT NONE
20    
21     include "netcdf.inc"
22    
23     ! Arguments:
24     INTEGER, intent(in):: iday_end
25     REAL, intent(in):: phis(ip1jmp1)
26     CHARACTER(len=*) fichnom
27     INTEGER nq
28    
29     ! Local:
30     INTEGER iq,l
31     INTEGER length
32     PARAMETER (length = 100)
33     REAL tab_cntrl(length) ! tableau des parametres du run
34     INTEGER ierr
35    
36     ! Variables locales pour NetCDF:
37     !
38     INTEGER dims2(2), dims3(3), dims4(4)
39     INTEGER idim_index
40     INTEGER idim_rlonu, idim_rlonv, idim_rlatu, idim_rlatv
41     INTEGER idim_s, idim_sig
42     INTEGER idim_tim
43     INTEGER nid,nvarid
44    
45     REAL zjulian,hours
46     INTEGER yyears0,jjour0, mmois0
47     character(len=30) unites
48    
49     !-----------------------------------------------------------------------
50    
51     print *, "Call sequence information: dynredem0"
52    
53     call ymds2ju(annee_ref, 1, iday_end, 0.0, zjulian)
54     call ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
55    
56     DO l=1,length
57     tab_cntrl(l) = 0.
58     ENDDO
59     tab_cntrl(1) = REAL(iim)
60     tab_cntrl(2) = REAL(jjm)
61     tab_cntrl(3) = REAL(llm)
62     tab_cntrl(4) = REAL(day_ref)
63     tab_cntrl(5) = REAL(annee_ref)
64     tab_cntrl(6) = rad
65     tab_cntrl(7) = omeg
66     tab_cntrl(8) = g
67     tab_cntrl(9) = cpp
68     tab_cntrl(10) = kappa
69     tab_cntrl(11) = daysec
70     tab_cntrl(12) = dtvr
71     tab_cntrl(13) = etot0
72     tab_cntrl(14) = ptot0
73     tab_cntrl(15) = ztot0
74     tab_cntrl(16) = stot0
75     tab_cntrl(17) = ang0
76     tab_cntrl(18) = pa
77     tab_cntrl(19) = preff
78     !
79     ! ..... parametres pour le zoom ......
80    
81     tab_cntrl(20) = clon
82     tab_cntrl(21) = clat
83     tab_cntrl(22) = grossismx
84     tab_cntrl(23) = grossismy
85     !
86     IF ( fxyhypb ) THEN
87     tab_cntrl(24) = 1.
88     tab_cntrl(25) = dzoomx
89     tab_cntrl(26) = dzoomy
90     tab_cntrl(27) = 0.
91     tab_cntrl(28) = taux
92     tab_cntrl(29) = tauy
93     ELSE
94     tab_cntrl(24) = 0.
95     tab_cntrl(25) = dzoomx
96     tab_cntrl(26) = dzoomy
97     tab_cntrl(27) = 0.
98     tab_cntrl(28) = 0.
99     tab_cntrl(29) = 0.
100     IF( ysinus ) tab_cntrl(27) = 1.
101     ENDIF
102    
103     tab_cntrl(30) = REAL(iday_end)
104     tab_cntrl(31) = REAL(itau_dyn + itaufin)
105     !
106     ! .........................................................
107     !
108     ! Creation du fichier:
109     !
110     ierr = NF_CREATE(fichnom, NF_CLOBBER, nid)
111     IF (ierr.NE.NF_NOERR) THEN
112     WRITE(6,*)" Pb d ouverture du fichier "//fichnom
113     WRITE(6,*)' ierr = ', ierr
114     stop 1
115     ENDIF
116     !
117     ! Preciser quelques attributs globaux:
118     !
119     ierr = NF_PUT_ATT_TEXT (nid, NF_GLOBAL, "title", 27, &
120     "Fichier demmarage dynamique")
121     !
122     ! Definir les dimensions du fichiers:
123     !
124     ierr = NF_DEF_DIM (nid, "index", length, idim_index)
125     ierr = NF_DEF_DIM (nid, "rlonu", iip1, idim_rlonu)
126     ierr = NF_DEF_DIM (nid, "rlatu", jjp1, idim_rlatu)
127     ierr = NF_DEF_DIM (nid, "rlonv", iip1, idim_rlonv)
128     ierr = NF_DEF_DIM (nid, "rlatv", jjm, idim_rlatv)
129     ierr = NF_DEF_DIM (nid, "sigs", llm, idim_s)
130     ierr = NF_DEF_DIM (nid, "sig", llmp1, idim_sig)
131     ierr = NF_DEF_DIM (nid, "temps", NF_UNLIMITED, idim_tim)
132     !
133     ierr = NF_ENDDEF(nid) ! sortir du mode de definition
134     !
135     ! Definir et enregistrer certains champs invariants:
136     !
137     ierr = NF_REDEF (nid)
138     ierr = NF_DEF_VAR (nid,"controle",NF_FLOAT,1,idim_index,nvarid)
139     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22, &
140     "Parametres de controle")
141     ierr = NF_ENDDEF(nid)
142     ierr = NF_PUT_VAR_REAL (nid,nvarid,tab_cntrl)
143     !
144     ierr = NF_REDEF (nid)
145     ierr = NF_DEF_VAR (nid,"rlonu",NF_FLOAT,1,idim_rlonu,nvarid)
146     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 23, &
147     "Longitudes des points U")
148     ierr = NF_ENDDEF(nid)
149     ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonu)
150     !
151     ierr = NF_REDEF (nid)
152     ierr = NF_DEF_VAR (nid,"rlatu",NF_FLOAT,1,idim_rlatu,nvarid)
153     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22, &
154     "Latitudes des points U")
155     ierr = NF_ENDDEF(nid)
156     ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatu)
157     !
158     ierr = NF_REDEF (nid)
159     ierr = NF_DEF_VAR (nid,"rlonv",NF_FLOAT,1,idim_rlonv,nvarid)
160     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 23, &
161     "Longitudes des points V")
162     ierr = NF_ENDDEF(nid)
163     ierr = NF_PUT_VAR_REAL (nid,nvarid,rlonv)
164     !
165     ierr = NF_REDEF (nid)
166     ierr = NF_DEF_VAR (nid,"rlatv",NF_FLOAT,1,idim_rlatv,nvarid)
167     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22, &
168     "Latitudes des points V")
169     ierr = NF_ENDDEF(nid)
170     ierr = NF_PUT_VAR_REAL (nid,nvarid,rlatv)
171     !
172     ierr = NF_REDEF (nid)
173     ierr = NF_DEF_VAR (nid,"nivsigs",NF_FLOAT,1,idim_s,nvarid)
174     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 28, &
175     "Numero naturel des couches s")
176     ierr = NF_ENDDEF(nid)
177     ierr = NF_PUT_VAR_REAL (nid,nvarid,nivsigs)
178     !
179     ierr = NF_REDEF (nid)
180     ierr = NF_DEF_VAR (nid,"nivsig",NF_FLOAT,1,idim_sig,nvarid)
181     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 32, &
182     "Numero naturel des couches sigma")
183     ierr = NF_ENDDEF(nid)
184     ierr = NF_PUT_VAR_REAL (nid,nvarid,nivsig)
185     !
186     ierr = NF_REDEF (nid)
187     ierr = NF_DEF_VAR (nid,"ap",NF_FLOAT,1,idim_sig,nvarid)
188     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 26, &
189     "Coefficient A pour hybride")
190     ierr = NF_ENDDEF(nid)
191     ierr = NF_PUT_VAR_REAL (nid,nvarid,ap)
192     !
193     ierr = NF_REDEF (nid)
194     ierr = NF_DEF_VAR (nid,"bp",NF_FLOAT,1,idim_sig,nvarid)
195     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 26, &
196     "Coefficient B pour hybride")
197     ierr = NF_ENDDEF(nid)
198     ierr = NF_PUT_VAR_REAL (nid,nvarid,bp)
199     !
200     ierr = NF_REDEF (nid)
201     ierr = NF_DEF_VAR (nid,"presnivs",NF_FLOAT,1,idim_s,nvarid)
202     ierr = NF_ENDDEF(nid)
203     ierr = NF_PUT_VAR_REAL (nid,nvarid,presnivs)
204     !
205     ! Coefficients de passage cov. <-> contra. <--> naturel
206     !
207     ierr = NF_REDEF (nid)
208     dims2(1) = idim_rlonu
209     dims2(2) = idim_rlatu
210     ierr = NF_DEF_VAR (nid,"cu",NF_FLOAT,2,dims2,nvarid)
211     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 29, &
212     "Coefficient de passage pour U")
213     ierr = NF_ENDDEF(nid)
214     ierr = NF_PUT_VAR_REAL (nid,nvarid,cu)
215     !
216     ierr = NF_REDEF (nid)
217     dims2(1) = idim_rlonv
218     dims2(2) = idim_rlatv
219     ierr = NF_DEF_VAR (nid,"cv",NF_FLOAT,2,dims2,nvarid)
220     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 29, &
221     "Coefficient de passage pour V")
222     ierr = NF_ENDDEF(nid)
223     ierr = NF_PUT_VAR_REAL (nid,nvarid,cv)
224     !
225     ! Aire de chaque maille:
226     !
227     ierr = NF_REDEF (nid)
228     dims2(1) = idim_rlonv
229     dims2(2) = idim_rlatu
230     ierr = NF_DEF_VAR (nid,"aire",NF_FLOAT,2,dims2,nvarid)
231     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22, &
232     "Aires de chaque maille")
233     ierr = NF_ENDDEF(nid)
234     ierr = NF_PUT_VAR_REAL (nid,nvarid,aire)
235     !
236     ! Geopentiel au sol:
237     !
238     ierr = NF_REDEF (nid)
239     dims2(1) = idim_rlonv
240     dims2(2) = idim_rlatu
241     ierr = NF_DEF_VAR (nid,"phisinit",NF_FLOAT,2,dims2,nvarid)
242     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 19, &
243     "Geopotentiel au sol")
244     ierr = NF_ENDDEF(nid)
245     ierr = NF_PUT_VAR_REAL (nid,nvarid,phis)
246     !
247     ! Definir les variables pour pouvoir les enregistrer plus tard:
248     !
249     ierr = NF_REDEF (nid) ! entrer dans le mode de definition
250     !
251     ierr = NF_DEF_VAR (nid,"temps",NF_FLOAT,1,idim_tim,nvarid)
252     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 19, &
253     "Temps de simulation")
254     write(unites,200)yyears0,mmois0,jjour0
255     200 format('days since ',i4,'-',i2.2,'-',i2.2,' 00:00:00')
256     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "units", 30, &
257     unites)
258    
259     !
260     dims4(1) = idim_rlonu
261     dims4(2) = idim_rlatu
262     dims4(3) = idim_s
263     dims4(4) = idim_tim
264     ierr = NF_DEF_VAR (nid,"ucov",NF_FLOAT,4,dims4,nvarid)
265     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 9, &
266     "Vitesse U")
267     !
268     dims4(1) = idim_rlonv
269     dims4(2) = idim_rlatv
270     dims4(3) = idim_s
271     dims4(4) = idim_tim
272     ierr = NF_DEF_VAR (nid,"vcov",NF_FLOAT,4,dims4,nvarid)
273     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 9, &
274     "Vitesse V")
275     !
276     dims4(1) = idim_rlonv
277     dims4(2) = idim_rlatu
278     dims4(3) = idim_s
279     dims4(4) = idim_tim
280     ierr = NF_DEF_VAR (nid,"teta",NF_FLOAT,4,dims4,nvarid)
281     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 11, &
282     "Temperature")
283     !
284     dims4(1) = idim_rlonv
285     dims4(2) = idim_rlatu
286     dims4(3) = idim_s
287     dims4(4) = idim_tim
288     IF(nq.GE.1) THEN
289     DO iq=1,nq
290     ierr = NF_DEF_VAR (nid,tname(iq),NF_FLOAT,4,dims4,nvarid)
291     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 12,ttext(iq))
292     ENDDO
293     ENDIF
294     !
295     dims4(1) = idim_rlonv
296     dims4(2) = idim_rlatu
297     dims4(3) = idim_s
298     dims4(4) = idim_tim
299     ierr = NF_DEF_VAR (nid,"masse",NF_FLOAT,4,dims4,nvarid)
300     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 12, &
301     "C est quoi ?")
302     !
303     dims3(1) = idim_rlonv
304     dims3(2) = idim_rlatu
305     dims3(3) = idim_tim
306     ierr = NF_DEF_VAR (nid,"ps",NF_FLOAT,3,dims3,nvarid)
307     ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 15, &
308     "Pression au sol")
309     !
310     ierr = NF_ENDDEF(nid) ! sortir du mode de definition
311     ierr = NF_CLOSE(nid) ! fermer le fichier
312    
313     PRINT*,'iim,jjm,llm,iday_end',iim,jjm,llm,iday_end
314     PRINT*,'rad,omeg,g,cpp,kappa', &
315     rad,omeg,g,cpp,kappa
316    
317     END SUBROUTINE dynredem0

  ViewVC Help
Powered by ViewVC 1.1.21