LMDZ
dynredem.F
Go to the documentation of this file.
1 !
2 ! $Id: dynredem.F 1930 2014-01-17 16:45:09Z lguez $
3 !
4 c
5  SUBROUTINE dynredem0(fichnom,iday_end,phis)
6 #ifdef CPP_IOIPSL
7  USE ioipsl
8 #endif
9  USE infotrac
10  use netcdf95, only: nf95_put_var
11 
12  IMPLICIT NONE
13 c=======================================================================
14 c Ecriture du fichier de redemarrage sous format NetCDF (initialisation)
15 c=======================================================================
16 c Declarations:
17 c -------------
18 #include "dimensions.h"
19 #include "paramet.h"
20 #include "comconst.h"
21 #include "comvert.h"
22 #include "comgeom2.h"
23 #include "temps.h"
24 #include "ener.h"
25 #include "logic.h"
26 #include "netcdf.inc"
27 #include "description.h"
28 #include "serre.h"
29 #include "iniprint.h"
30 
31 c Arguments:
32 c ----------
33  INTEGER iday_end
34  REAL phis(iip1, jjp1)
35  CHARACTER*(*) fichnom
36 
37 c Local:
38 c ------
39  INTEGER iq,l
40  INTEGER length
41  parameter(length = 100)
42  REAL tab_cntrl(length) ! tableau des parametres du run
43  INTEGER ierr
44  character*20 modname
45  character*80 abort_message
46 
47 c Variables locales pour NetCDF:
48 c
49  INTEGER dims2(2), dims3(3), dims4(4)
50  INTEGER idim_index
51  INTEGER idim_rlonu, idim_rlonv, idim_rlatu, idim_rlatv
52  INTEGER idim_s, idim_sig
53  INTEGER idim_tim
54  INTEGER nid,nvarid
55 
56  REAL zan0,zjulian,hours
57  INTEGER yyears0,jjour0, mmois0
58  character*30 unites
59 
60 
61 c-----------------------------------------------------------------------
62  modname='dynredem0'
63 
64 #ifdef CPP_IOIPSL
65  call ymds2ju(annee_ref, 1, iday_end, 0.0, zjulian)
66  call ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
67 #else
68 ! set yyears0, mmois0, jjour0 to 0,1,1 (hours is not used)
69  yyears0=0
70  mmois0=1
71  jjour0=1
72 #endif
73 
74  DO l=1,length
75  tab_cntrl(l) = 0.
76  ENDDO
77  tab_cntrl(1) = REAL(iim)
78  tab_cntrl(2) = REAL(jjm)
79  tab_cntrl(3) = REAL(llm)
80  tab_cntrl(4) = REAL(day_ref)
81  tab_cntrl(5) = REAL(annee_ref)
82  tab_cntrl(6) = rad
83  tab_cntrl(7) = omeg
84  tab_cntrl(8) = g
85  tab_cntrl(9) = cpp
86  tab_cntrl(10) = kappa
87  tab_cntrl(11) = daysec
88  tab_cntrl(12) = dtvr
89  tab_cntrl(13) = etot0
90  tab_cntrl(14) = ptot0
91  tab_cntrl(15) = ztot0
92  tab_cntrl(16) = stot0
93  tab_cntrl(17) = ang0
94  tab_cntrl(18) = pa
95  tab_cntrl(19) = preff
96 c
97 c ..... parametres pour le zoom ......
98 
99  tab_cntrl(20) = clon
100  tab_cntrl(21) = clat
101  tab_cntrl(22) = grossismx
102  tab_cntrl(23) = grossismy
103 c
104  IF ( fxyhypb ) THEN
105  tab_cntrl(24) = 1.
106  tab_cntrl(25) = dzoomx
107  tab_cntrl(26) = dzoomy
108  tab_cntrl(27) = 0.
109  tab_cntrl(28) = taux
110  tab_cntrl(29) = tauy
111  ELSE
112  tab_cntrl(24) = 0.
113  tab_cntrl(25) = dzoomx
114  tab_cntrl(26) = dzoomy
115  tab_cntrl(27) = 0.
116  tab_cntrl(28) = 0.
117  tab_cntrl(29) = 0.
118  IF( ysinus ) tab_cntrl(27) = 1.
119  ENDIF
120 
121  tab_cntrl(30) = REAL(iday_end)
122  tab_cntrl(31) = REAL(itau_dyn + itaufin)
123 c start_time: start_time of simulation (not necessarily 0.)
124  tab_cntrl(32) = start_time
125 c
126 c .........................................................
127 c
128 c Creation du fichier:
129 c
130  ierr = nf_create(fichnom, nf_clobber, nid)
131  IF (ierr.NE.nf_noerr) THEN
132  write(lunout,*)"dynredem0: Pb d ouverture du fichier "
133  & //trim(fichnom)
134  write(lunout,*)' ierr = ', ierr
135  CALL abort_gcm("DYNREDEM0", "", 1)
136  ENDIF
137 c
138 c Preciser quelques attributs globaux:
139 c
140  ierr = nf_put_att_text(nid, nf_global, "title", 27,
141  . "Fichier demmarage dynamique")
142 c
143 c Definir les dimensions du fichiers:
144 c
145  ierr = nf_def_dim(nid, "index", length, idim_index)
146  ierr = nf_def_dim(nid, "rlonu", iip1, idim_rlonu)
147  ierr = nf_def_dim(nid, "rlatu", jjp1, idim_rlatu)
148  ierr = nf_def_dim(nid, "rlonv", iip1, idim_rlonv)
149  ierr = nf_def_dim(nid, "rlatv", jjm, idim_rlatv)
150  ierr = nf_def_dim(nid, "sigs", llm, idim_s)
151  ierr = nf_def_dim(nid, "sig", llmp1, idim_sig)
152  ierr = nf_def_dim(nid, "temps", nf_unlimited, idim_tim)
153 c
154  ierr = nf_enddef(nid) ! sortir du mode de definition
155 c
156 c Definir et enregistrer certains champs invariants:
157 c
158  ierr = nf_redef(nid)
159 cIM 220306 BEG
160 #ifdef NC_DOUBLE
161  ierr = nf_def_var(nid,"controle",nf_double,1,idim_index,nvarid)
162 #else
163  ierr = nf_def_var(nid,"controle",nf_float,1,idim_index,nvarid)
164 #endif
165 cIM 220306 END
166  ierr = nf_put_att_text(nid, nvarid, "title", 22,
167  . "Parametres de controle")
168  ierr = nf_enddef(nid)
169  call nf95_put_var(nid,nvarid,tab_cntrl)
170 c
171  ierr = nf_redef(nid)
172 cIM 220306 BEG
173 #ifdef NC_DOUBLE
174  ierr = nf_def_var(nid,"rlonu",nf_double,1,idim_rlonu,nvarid)
175 #else
176  ierr = nf_def_var(nid,"rlonu",nf_float,1,idim_rlonu,nvarid)
177 #endif
178 cIM 220306 END
179  ierr = nf_put_att_text(nid, nvarid, "title", 23,
180  . "Longitudes des points U")
181  ierr = nf_enddef(nid)
182  call nf95_put_var(nid,nvarid,rlonu)
183 c
184  ierr = nf_redef(nid)
185 cIM 220306 BEG
186 #ifdef NC_DOUBLE
187  ierr = nf_def_var(nid,"rlatu",nf_double,1,idim_rlatu,nvarid)
188 #else
189  ierr = nf_def_var(nid,"rlatu",nf_float,1,idim_rlatu,nvarid)
190 #endif
191 cIM 220306 END
192  ierr = nf_put_att_text(nid, nvarid, "title", 22,
193  . "Latitudes des points U")
194  ierr = nf_enddef(nid)
195  call nf95_put_var (nid,nvarid,rlatu)
196 c
197  ierr = nf_redef(nid)
198 cIM 220306 BEG
199 #ifdef NC_DOUBLE
200  ierr = nf_def_var(nid,"rlonv",nf_double,1,idim_rlonv,nvarid)
201 #else
202  ierr = nf_def_var(nid,"rlonv",nf_float,1,idim_rlonv,nvarid)
203 #endif
204 cIM 220306 END
205  ierr = nf_put_att_text(nid, nvarid, "title", 23,
206  . "Longitudes des points V")
207  ierr = nf_enddef(nid)
208  call nf95_put_var(nid,nvarid,rlonv)
209 c
210  ierr = nf_redef(nid)
211 cIM 220306 BEG
212 #ifdef NC_DOUBLE
213  ierr = nf_def_var(nid,"rlatv",nf_double,1,idim_rlatv,nvarid)
214 #else
215  ierr = nf_def_var(nid,"rlatv",nf_float,1,idim_rlatv,nvarid)
216 #endif
217 cIM 220306 END
218  ierr = nf_put_att_text(nid, nvarid, "title", 22,
219  . "Latitudes des points V")
220  ierr = nf_enddef(nid)
221  call nf95_put_var(nid,nvarid,rlatv)
222 c
223  ierr = nf_redef(nid)
224 cIM 220306 BEG
225 #ifdef NC_DOUBLE
226  ierr = nf_def_var(nid,"nivsigs",nf_double,1,idim_s,nvarid)
227 #else
228  ierr = nf_def_var(nid,"nivsigs",nf_float,1,idim_s,nvarid)
229 #endif
230 cIM 220306 END
231  ierr = nf_put_att_text(nid, nvarid, "title", 28,
232  . "Numero naturel des couches s")
233  ierr = nf_enddef(nid)
234  call nf95_put_var(nid,nvarid,nivsigs)
235 c
236  ierr = nf_redef(nid)
237 cIM 220306 BEG
238 #ifdef NC_DOUBLE
239  ierr = nf_def_var(nid,"nivsig",nf_double,1,idim_sig,nvarid)
240 #else
241  ierr = nf_def_var(nid,"nivsig",nf_float,1,idim_sig,nvarid)
242 #endif
243 cIM 220306 END
244  ierr = nf_put_att_text(nid, nvarid, "title", 32,
245  . "Numero naturel des couches sigma")
246  ierr = nf_enddef(nid)
247  call nf95_put_var(nid,nvarid,nivsig)
248 c
249  ierr = nf_redef(nid)
250 cIM 220306 BEG
251 #ifdef NC_DOUBLE
252  ierr = nf_def_var(nid,"ap",nf_double,1,idim_sig,nvarid)
253 #else
254  ierr = nf_def_var(nid,"ap",nf_float,1,idim_sig,nvarid)
255 #endif
256 cIM 220306 END
257  ierr = nf_put_att_text(nid, nvarid, "title", 26,
258  . "Coefficient A pour hybride")
259  ierr = nf_enddef(nid)
260  call nf95_put_var(nid,nvarid,ap)
261 c
262  ierr = nf_redef(nid)
263 cIM 220306 BEG
264 #ifdef NC_DOUBLE
265  ierr = nf_def_var(nid,"bp",nf_double,1,idim_sig,nvarid)
266 #else
267  ierr = nf_def_var(nid,"bp",nf_float,1,idim_sig,nvarid)
268 #endif
269 cIM 220306 END
270  ierr = nf_put_att_text(nid, nvarid, "title", 26,
271  . "Coefficient B pour hybride")
272  ierr = nf_enddef(nid)
273  call nf95_put_var(nid,nvarid,bp)
274 c
275  ierr = nf_redef(nid)
276 cIM 220306 BEG
277 #ifdef NC_DOUBLE
278  ierr = nf_def_var(nid,"presnivs",nf_double,1,idim_s,nvarid)
279 #else
280  ierr = nf_def_var(nid,"presnivs",nf_float,1,idim_s,nvarid)
281 #endif
282 cIM 220306 END
283  ierr = nf_enddef(nid)
284  call nf95_put_var(nid,nvarid,presnivs)
285 c
286 c Coefficients de passage cov. <-> contra. <--> naturel
287 c
288  ierr = nf_redef(nid)
289  dims2(1) = idim_rlonu
290  dims2(2) = idim_rlatu
291 cIM 220306 BEG
292 #ifdef NC_DOUBLE
293  ierr = nf_def_var(nid,"cu",nf_double,2,dims2,nvarid)
294 #else
295  ierr = nf_def_var(nid,"cu",nf_float,2,dims2,nvarid)
296 #endif
297 cIM 220306 END
298  ierr = nf_put_att_text(nid, nvarid, "title", 29,
299  . "Coefficient de passage pour U")
300  ierr = nf_enddef(nid)
301  call nf95_put_var(nid,nvarid,cu)
302 c
303  ierr = nf_redef(nid)
304  dims2(1) = idim_rlonv
305  dims2(2) = idim_rlatv
306 cIM 220306 BEG
307 #ifdef NC_DOUBLE
308  ierr = nf_def_var(nid,"cv",nf_double,2,dims2,nvarid)
309 #else
310  ierr = nf_def_var(nid,"cv",nf_float,2,dims2,nvarid)
311 #endif
312 cIM 220306 END
313  ierr = nf_put_att_text(nid, nvarid, "title", 29,
314  . "Coefficient de passage pour V")
315  ierr = nf_enddef(nid)
316  call nf95_put_var(nid,nvarid,cv)
317 c
318 c Aire de chaque maille:
319 c
320  ierr = nf_redef(nid)
321  dims2(1) = idim_rlonv
322  dims2(2) = idim_rlatu
323 cIM 220306 BEG
324 #ifdef NC_DOUBLE
325  ierr = nf_def_var(nid,"aire",nf_double,2,dims2,nvarid)
326 #else
327  ierr = nf_def_var(nid,"aire",nf_float,2,dims2,nvarid)
328 #endif
329 cIM 220306 END
330  ierr = nf_put_att_text(nid, nvarid, "title", 22,
331  . "Aires de chaque maille")
332  ierr = nf_enddef(nid)
333  call nf95_put_var(nid,nvarid,aire)
334 c
335 c Geopentiel au sol:
336 c
337  ierr = nf_redef(nid)
338  dims2(1) = idim_rlonv
339  dims2(2) = idim_rlatu
340 cIM 220306 BEG
341 #ifdef NC_DOUBLE
342  ierr = nf_def_var(nid,"phisinit",nf_double,2,dims2,nvarid)
343 #else
344  ierr = nf_def_var(nid,"phisinit",nf_float,2,dims2,nvarid)
345 #endif
346 cIM 220306 END
347  ierr = nf_put_att_text(nid, nvarid, "title", 19,
348  . "Geopotentiel au sol")
349  ierr = nf_enddef(nid)
350  call nf95_put_var(nid,nvarid,phis)
351 c
352 c Definir les variables pour pouvoir les enregistrer plus tard:
353 c
354  ierr = nf_redef(nid) ! entrer dans le mode de definition
355 c
356 cIM 220306 BEG
357 #ifdef NC_DOUBLE
358  ierr = nf_def_var(nid,"temps",nf_double,1,idim_tim,nvarid)
359 #else
360  ierr = nf_def_var(nid,"temps",nf_float,1,idim_tim,nvarid)
361 #endif
362 cIM 220306 END
363  ierr = nf_put_att_text(nid, nvarid, "title", 19,
364  . "Temps de simulation")
365  write(unites,200)yyears0,mmois0,jjour0
366 200 format('days since ',i4,'-',i2.2,'-',i2.2,' 00:00:00')
367  ierr = nf_put_att_text(nid, nvarid, "units", 30,
368  . unites)
369 
370 c
371  dims4(1) = idim_rlonu
372  dims4(2) = idim_rlatu
373  dims4(3) = idim_s
374  dims4(4) = idim_tim
375 cIM 220306 BEG
376 #ifdef NC_DOUBLE
377  ierr = nf_def_var(nid,"ucov",nf_double,4,dims4,nvarid)
378 #else
379  ierr = nf_def_var(nid,"ucov",nf_float,4,dims4,nvarid)
380 #endif
381 cIM 220306 END
382  ierr = nf_put_att_text(nid, nvarid, "title", 9,
383  . "Vitesse U")
384 c
385  dims4(1) = idim_rlonv
386  dims4(2) = idim_rlatv
387  dims4(3) = idim_s
388  dims4(4) = idim_tim
389 cIM 220306 BEG
390 #ifdef NC_DOUBLE
391  ierr = nf_def_var(nid,"vcov",nf_double,4,dims4,nvarid)
392 #else
393  ierr = nf_def_var(nid,"vcov",nf_float,4,dims4,nvarid)
394 #endif
395 cIM 220306 END
396  ierr = nf_put_att_text(nid, nvarid, "title", 9,
397  . "Vitesse V")
398 c
399  dims4(1) = idim_rlonv
400  dims4(2) = idim_rlatu
401  dims4(3) = idim_s
402  dims4(4) = idim_tim
403 cIM 220306 BEG
404 #ifdef NC_DOUBLE
405  ierr = nf_def_var(nid,"teta",nf_double,4,dims4,nvarid)
406 #else
407  ierr = nf_def_var(nid,"teta",nf_float,4,dims4,nvarid)
408 #endif
409 cIM 220306 END
410  ierr = nf_put_att_text(nid, nvarid, "title", 11,
411  . "Temperature")
412 c
413  dims4(1) = idim_rlonv
414  dims4(2) = idim_rlatu
415  dims4(3) = idim_s
416  dims4(4) = idim_tim
417  IF(nqtot.GE.1) THEN
418  DO iq=1,nqtot
419 cIM 220306 BEG
420 #ifdef NC_DOUBLE
421  ierr = nf_def_var(nid,tname(iq),nf_double,4,dims4,nvarid)
422 #else
423  ierr = nf_def_var(nid,tname(iq),nf_float,4,dims4,nvarid)
424 #endif
425 cIM 220306 END
426  ierr = nf_put_att_text(nid, nvarid, "title", 12,ttext(iq))
427  ENDDO
428  ENDIF
429 c
430  dims4(1) = idim_rlonv
431  dims4(2) = idim_rlatu
432  dims4(3) = idim_s
433  dims4(4) = idim_tim
434 cIM 220306 BEG
435 #ifdef NC_DOUBLE
436  ierr = nf_def_var(nid,"masse",nf_double,4,dims4,nvarid)
437 #else
438  ierr = nf_def_var(nid,"masse",nf_float,4,dims4,nvarid)
439 #endif
440 cIM 220306 END
441  ierr = nf_put_att_text(nid, nvarid, "title", 12,
442  . "C est quoi ?")
443 c
444  dims3(1) = idim_rlonv
445  dims3(2) = idim_rlatu
446  dims3(3) = idim_tim
447 cIM 220306 BEG
448 #ifdef NC_DOUBLE
449  ierr = nf_def_var(nid,"ps",nf_double,3,dims3,nvarid)
450 #else
451  ierr = nf_def_var(nid,"ps",nf_float,3,dims3,nvarid)
452 #endif
453 cIM 220306 END
454  ierr = nf_put_att_text(nid, nvarid, "title", 15,
455  . "Pression au sol")
456 c
457  ierr = nf_enddef(nid) ! sortir du mode de definition
458  ierr = nf_close(nid) ! fermer le fichier
459 
460  write(lunout,*)'dynredem0: iim,jjm,llm,iday_end',
461  & iim,jjm,llm,iday_end
462  write(lunout,*)'dynredem0: rad,omeg,g,cpp,kappa',
463  & rad,omeg,g,cpp,kappa
464 
465  RETURN
466  END
467  SUBROUTINE dynredem1(fichnom,time,
468  . vcov,ucov,teta,q,masse,ps)
470  USE control_mod
471  use netcdf, only: nf90_get_var
472  use netcdf95, only: nf95_put_var
473 
474  IMPLICIT NONE
475 c=================================================================
476 c Ecriture du fichier de redemarrage sous format NetCDF
477 c=================================================================
478 #include "dimensions.h"
479 #include "paramet.h"
480 #include "description.h"
481 #include "netcdf.inc"
482 #include "comvert.h"
483 #include "comgeom.h"
484 #include "temps.h"
485 #include "iniprint.h"
486 
487 
488  INTEGER l
489  REAL vcov(iip1,jjm,llm),ucov(iip1, jjp1,llm)
490  REAL teta(iip1, jjp1,llm)
491  REAL ps(iip1, jjp1),masse(iip1, jjp1,llm)
492  REAL q(iip1, jjp1, llm, nqtot)
493  CHARACTER*(*) fichnom
494 
495  REAL time
496  INTEGER nid, nvarid, nid_trac, nvarid_trac
497  REAL trac_tmp(ip1jmp1,llm)
498  INTEGER ierr, ierr_file
499  INTEGER iq
500  INTEGER length
501  parameter(length = 100)
502  REAL tab_cntrl(length) ! tableau des parametres du run
503  character*20 modname
504  character*80 abort_message
505 c
506  INTEGER nb
507  SAVE nb
508  DATA nb / 0 /
509 
510  modname = 'dynredem1'
511  ierr = nf_open(fichnom, nf_write, nid)
512  IF (ierr .NE. nf_noerr) THEN
513  write(lunout,*)"dynredem1: Pb. d ouverture "//trim(fichnom)
514  call abort_gcm("dynredem1", "", 1)
515  ENDIF
516 
517 c Ecriture/extension de la coordonnee temps
518 
519  nb = nb + 1
520  ierr = nf_inq_varid(nid, "temps", nvarid)
521  IF (ierr .NE. nf_noerr) THEN
522  write(lunout,*) nf_strerror(ierr)
523  abort_message='Variable temps n est pas definie'
524  CALL abort_gcm(modname,abort_message,ierr)
525  ENDIF
526  call nf95_put_var(nid,nvarid,time,start=(/nb/))
527  write(lunout,*) "dynredem1: Enregistrement pour ", nb, time
528 
529 c
530 c Re-ecriture du tableau de controle, itaufin n'est plus defini quand
531 c on passe dans dynredem0
532  ierr = nf_inq_varid(nid, "controle", nvarid)
533  IF (ierr .NE. nf_noerr) THEN
534  abort_message="dynredem1: Le champ <controle> est absent"
535  ierr = 1
536  CALL abort_gcm(modname,abort_message,ierr)
537  ENDIF
538  ierr = nf90_get_var(nid, nvarid, tab_cntrl)
539  tab_cntrl(31) = REAL(itau_dyn + itaufin)
540  call nf95_put_var(nid,nvarid,tab_cntrl)
541 
542 c Ecriture des champs
543 c
544  ierr = nf_inq_varid(nid, "ucov", nvarid)
545  IF (ierr .NE. nf_noerr) THEN
546  abort_message="Variable ucov n est pas definie"
547  ierr=1
548  CALL abort_gcm(modname,abort_message,ierr)
549  ENDIF
550  call nf95_put_var(nid,nvarid,ucov)
551 
552  ierr = nf_inq_varid(nid, "vcov", nvarid)
553  IF (ierr .NE. nf_noerr) THEN
554  abort_message="Variable vcov n est pas definie"
555  ierr=1
556  CALL abort_gcm(modname,abort_message,ierr)
557  ENDIF
558  call nf95_put_var(nid,nvarid,vcov)
559 
560  ierr = nf_inq_varid(nid, "teta", nvarid)
561  IF (ierr .NE. nf_noerr) THEN
562  abort_message="Variable teta n est pas definie"
563  ierr=1
564  CALL abort_gcm(modname,abort_message,ierr)
565  ENDIF
566  call nf95_put_var(nid,nvarid,teta)
567 
568  IF (type_trac == 'inca') THEN
569 ! Ajout Anne pour lecture valeurs traceurs dans un fichier start_trac.nc
570  ierr_file = nf_open("start_trac.nc", nf_nowrite,nid_trac)
571  IF (ierr_file .NE.nf_noerr) THEN
572  write(lunout,*)'dynredem1: Pb d''ouverture du fichier',
573  & ' start_trac.nc'
574  write(lunout,*)' ierr = ', ierr_file
575  ENDIF
576  END IF
577 
578  IF(nqtot.GE.1) THEN
579  do iq=1,nqtot
580 
581  IF (type_trac /= 'inca') THEN
582  ierr = nf_inq_varid(nid, tname(iq), nvarid)
583  IF (ierr .NE. nf_noerr) THEN
584  abort_message="Variable tname(iq) n est pas definie"
585  ierr=1
586  CALL abort_gcm(modname,abort_message,ierr)
587  ENDIF
588  call nf95_put_var(nid,nvarid,q(:,:,:,iq))
589  ELSE ! type_trac = inca
590 ! lecture de la valeur du traceur dans start_trac.nc
591  IF (ierr_file .ne. 2) THEN
592  ierr = nf_inq_varid(nid_trac, tname(iq), nvarid_trac)
593  IF (ierr .NE. nf_noerr) THEN
594  write(lunout,*) "dynredem1: ",trim(tname(iq)),
595  & " est absent de start_trac.nc"
596  ierr = nf_inq_varid(nid, tname(iq), nvarid)
597  IF (ierr .NE. nf_noerr) THEN
598  abort_message="dynredem1: Variable "//
599  & trim(tname(iq))//" n est pas definie"
600  ierr=1
601  CALL abort_gcm(modname,abort_message,ierr)
602  ENDIF
603  call nf95_put_var(nid,nvarid,q(:,:,:,iq))
604 
605  ELSE
606  write(lunout,*) "dynredem1: ",trim(tname(iq)),
607  & " est present dans start_trac.nc"
608  ierr = nf90_get_var(nid_trac, nvarid_trac, trac_tmp)
609  IF (ierr .NE. nf_noerr) THEN
610  abort_message="dynredem1: Lecture echouee pour"//
611  & trim(tname(iq))
612  ierr=1
613  CALL abort_gcm(modname,abort_message,ierr)
614  ENDIF
615  ierr = nf_inq_varid(nid, tname(iq), nvarid)
616  IF (ierr .NE. nf_noerr) THEN
617  abort_message="dynredem1: Variable "//
618  & trim(tname(iq))//" n est pas definie"
619  ierr=1
620  CALL abort_gcm(modname,abort_message,ierr)
621  ENDIF
622  call nf95_put_var(nid, nvarid, trac_tmp)
623 
624  ENDIF ! IF (ierr .NE. NF_NOERR)
625 ! fin lecture du traceur
626  ELSE ! si il n'y a pas de fichier start_trac.nc
627 ! print *, 'il n y a pas de fichier start_trac'
628  ierr = nf_inq_varid(nid, tname(iq), nvarid)
629  IF (ierr .NE. nf_noerr) THEN
630  abort_message="dynredem1: Variable "//
631  & trim(tname(iq))//" n est pas definie"
632  ierr=1
633  CALL abort_gcm(modname,abort_message,ierr)
634  ENDIF
635  call nf95_put_var(nid,nvarid,q(:,:,:,iq))
636  ENDIF ! (ierr_file .ne. 2)
637  END IF !type_trac
638 
639  ENDDO
640  ENDIF
641 c
642  ierr = nf_inq_varid(nid, "masse", nvarid)
643  IF (ierr .NE. nf_noerr) THEN
644  abort_message="dynredem1: Variable masse n est pas definie"
645  ierr=1
646  CALL abort_gcm(modname,abort_message,ierr)
647  ENDIF
648  call nf95_put_var(nid,nvarid,masse)
649 c
650  ierr = nf_inq_varid(nid, "ps", nvarid)
651  IF (ierr .NE. nf_noerr) THEN
652  abort_message="dynredem1: Variable ps n est pas definie"
653  ierr=1
654  CALL abort_gcm(modname,abort_message,ierr)
655  ENDIF
656  call nf95_put_var(nid,nvarid,ps)
657 
658  ierr = nf_close(nid)
659 c
660  RETURN
661  END
662 
!$Header!c!c!c include serre h!c REAL dzoomy
Definition: serre.h:8
!$Id && itau_dyn
Definition: temps.h:15
character(len=23), dimension(:), allocatable, save ttext
Definition: infotrac.F90:19
!$Header llmm1 INTEGER ip1jmp1
Definition: paramet.h:14
!$Header!c!c!c include serre h!c REAL && grossismx
Definition: serre.h:8
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL ymds2ju(annee_ref, 1, day_ref, hour, zjulian)!jyg CALL histbeg_phy("histrac"
!$Id mode_top_bound COMMON comconstr g
Definition: comconst.h:7
!$Id preff
Definition: comvert.h:8
!$Header llmp1
Definition: paramet.h:14
!$Id bp(llm+1)
!$Id mode_top_bound COMMON comconstr kappa
Definition: comconst.h:7
!$Header!c!c!c include serre h!c REAL clon
Definition: serre.h:8
subroutine dynredem0(fichnom, iday_end, phis)
Definition: dynredem.F90:2
subroutine abort_gcm(modname, message, ierr)
Definition: abort_gcm.F:7
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
!$Header!CDK comgeom COMMON comgeom aire
Definition: comgeom.h:25
!$Header!CDK comgeom COMMON comgeom rlatu
Definition: comgeom.h:25
!$Id presnivs(llm)
integer, save nqtot
Definition: infotrac.F90:6
subroutine dynredem1(fichnom, time, vcov, ucov, teta, q, masse, ps)
Definition: dynredem.F90:160
!$Id nivsigs(llm)
!$Id etot0
Definition: ener.h:11
!$Id mode_top_bound COMMON comconstr rad
Definition: comconst.h:7
!$Id day_ref
Definition: temps.h:15
!$Id fxyhypb
Definition: logic.h:10
!$Header jjp1
Definition: paramet.h:14
!$Id mode_top_bound COMMON comconstr cpp
Definition: comconst.h:7
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
!$Id mode_top_bound COMMON comconstr daysec
Definition: comconst.h:7
!$Header!CDK comgeom COMMON comgeom rlonu
Definition: comgeom.h:25
!$Id ztot0
Definition: ener.h:11
!$Header!CDK comgeom COMMON comgeom rlatv
Definition: comgeom.h:25
character(len=20), dimension(:), allocatable, save tname
Definition: infotrac.F90:18
!$Id && pa
Definition: comvert.h:8
character(len=4), save type_trac
Definition: infotrac.F90:40
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs cu
Definition: cvparam.h:12
!$Header!c!c!c include serre h!c REAL dzoomx
Definition: serre.h:8
!$Header!c!c!c include serre h!c REAL grossismy
Definition: serre.h:8
!$Id mode_top_bound COMMON comconstr dtvr
Definition: comconst.h:7
!$Header!c!c!c include serre h!c REAL taux
Definition: serre.h:8
c c zjulian c cym CALL iim cym klev iim
Definition: ini_bilKP_ave.h:24
!$Id stot0
Definition: ener.h:11
!$Header!c!c!c include serre h!c REAL clat
Definition: serre.h:8
!$Id itaufin
Definition: temps.h:15
!$Header!CDK comgeom COMMON comgeom cv
Definition: comgeom.h:25
!$Id start_time
Definition: temps.h:15
!$Id ptot0
Definition: ener.h:11
!$Id nivsig(llm+1)
!$Id annee_ref
Definition: temps.h:15
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
Definition: iniprint.h:7
!$Header!CDK comgeom COMMON comgeom rlonv
Definition: comgeom.h:25