/[lmdze]/trunk/libf/dyn3d/dynredem0.f90
ViewVC logotype

Contents of /trunk/libf/dyn3d/dynredem0.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (show annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
File size: 9353 byte(s)
Initial import
1 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