18 #include "dimensions.h"
27 #include "description.h"
34 REAL phis(ijb_u:ije_u)
42 REAL tab_cntrl(length)
45 character*80 abort_message
49 INTEGER dims2(2), dims3(3), dims4(4)
51 INTEGER idim_rlonu, idim_rlonv, idim_rlatu, idim_rlatv
52 INTEGER idim_s, idim_sig
57 INTEGER yyears0,jjour0, mmois0
67 modname=
'dynredem0_loc'
71 call ju2ymds(
zjulian, yyears0, mmois0, jjour0, hours)
82 tab_cntrl(1) =
REAL(
iim)
83 tab_cntrl(2) =
REAL(jjm)
84 tab_cntrl(3) =
REAL(llm)
100 tab_cntrl(19) =
preff
123 IF( ysinus ) tab_cntrl(27) = 1.
126 tab_cntrl(30) =
REAL(iday_end)
135 ierr = nf_create(fichnom, nf_clobber, nid)
136 IF (ierr.NE.nf_noerr)
THEN
137 write(
lunout,*)
"dynredem0: Pb d ouverture du fichier "
139 write(
lunout,*)
' ierr = ', ierr
145 ierr = nf_put_att_text(nid, nf_global,
"title", 27,
146 .
"Fichier demmarage dynamique")
150 ierr = nf_def_dim(nid,
"index", length, idim_index)
151 ierr = nf_def_dim(nid,
"rlonu", iip1, idim_rlonu)
152 ierr = nf_def_dim(nid,
"rlatu",
jjp1, idim_rlatu)
153 ierr = nf_def_dim(nid,
"rlonv", iip1, idim_rlonv)
154 ierr = nf_def_dim(nid,
"rlatv", jjm, idim_rlatv)
155 ierr = nf_def_dim(nid,
"sigs", llm, idim_s)
156 ierr = nf_def_dim(nid,
"sig",
llmp1, idim_sig)
157 ierr = nf_def_dim(nid,
"temps", nf_unlimited, idim_tim)
159 ierr = nf_enddef(nid)
166 ierr = nf_def_var(nid,
"controle",nf_double,1,idim_index,nvarid)
168 ierr = nf_def_var(nid,
"controle",nf_float,1,idim_index,nvarid)
171 ierr = nf_put_att_text(nid, nvarid,
"title", 22,
172 .
"Parametres de controle")
173 ierr = nf_enddef(nid)
175 ierr = nf_put_var_double(nid,nvarid,tab_cntrl)
177 ierr = nf_put_var_real(nid,nvarid,tab_cntrl)
183 ierr = nf_def_var(nid,
"rlonu",nf_double,1,idim_rlonu,nvarid)
185 ierr = nf_def_var(nid,
"rlonu",nf_float,1,idim_rlonu,nvarid)
188 ierr = nf_put_att_text(nid, nvarid,
"title", 23,
189 .
"Longitudes des points U")
190 ierr = nf_enddef(nid)
192 ierr = nf_put_var_double(nid,nvarid,
rlonu)
194 ierr = nf_put_var_real(nid,nvarid,
rlonu)
200 ierr = nf_def_var(nid,
"rlatu",nf_double,1,idim_rlatu,nvarid)
202 ierr = nf_def_var(nid,
"rlatu",nf_float,1,idim_rlatu,nvarid)
205 ierr = nf_put_att_text(nid, nvarid,
"title", 22,
206 .
"Latitudes des points U")
207 ierr = nf_enddef(nid)
209 ierr = nf_put_var_double(nid,nvarid,
rlatu)
211 ierr = nf_put_var_real(nid,nvarid,
rlatu)
217 ierr = nf_def_var(nid,
"rlonv",nf_double,1,idim_rlonv,nvarid)
219 ierr = nf_def_var(nid,
"rlonv",nf_float,1,idim_rlonv,nvarid)
222 ierr = nf_put_att_text(nid, nvarid,
"title", 23,
223 .
"Longitudes des points V")
224 ierr = nf_enddef(nid)
226 ierr = nf_put_var_double(nid,nvarid,
rlonv)
228 ierr = nf_put_var_real(nid,nvarid,
rlonv)
234 ierr = nf_def_var(nid,
"rlatv",nf_double,1,idim_rlatv,nvarid)
236 ierr = nf_def_var(nid,
"rlatv",nf_float,1,idim_rlatv,nvarid)
239 ierr = nf_put_att_text(nid, nvarid,
"title", 22,
240 .
"Latitudes des points V")
241 ierr = nf_enddef(nid)
243 ierr = nf_put_var_double(nid,nvarid,
rlatv)
245 ierr = nf_put_var_real(nid,nvarid,
rlatv)
251 ierr = nf_def_var(nid,
"nivsigs",nf_double,1,idim_s,nvarid)
253 ierr = nf_def_var(nid,
"nivsigs",nf_float,1,idim_s,nvarid)
256 ierr = nf_put_att_text(nid, nvarid,
"title", 28,
257 .
"Numero naturel des couches s")
258 ierr = nf_enddef(nid)
260 ierr = nf_put_var_double(nid,nvarid,
nivsigs)
262 ierr = nf_put_var_real(nid,nvarid,
nivsigs)
268 ierr = nf_def_var(nid,
"nivsig",nf_double,1,idim_sig,nvarid)
270 ierr = nf_def_var(nid,
"nivsig",nf_float,1,idim_sig,nvarid)
273 ierr = nf_put_att_text(nid, nvarid,
"title", 32,
274 .
"Numero naturel des couches sigma")
275 ierr = nf_enddef(nid)
277 ierr = nf_put_var_double(nid,nvarid,
nivsig)
279 ierr = nf_put_var_real(nid,nvarid,
nivsig)
285 ierr = nf_def_var(nid,
"ap",nf_double,1,idim_sig,nvarid)
287 ierr = nf_def_var(nid,
"ap",nf_float,1,idim_sig,nvarid)
290 ierr = nf_put_att_text(nid, nvarid,
"title", 26,
291 .
"Coefficient A pour hybride")
292 ierr = nf_enddef(nid)
294 ierr = nf_put_var_double(nid,nvarid,
ap)
296 ierr = nf_put_var_real(nid,nvarid,
ap)
302 ierr = nf_def_var(nid,
"bp",nf_double,1,idim_sig,nvarid)
304 ierr = nf_def_var(nid,
"bp",nf_float,1,idim_sig,nvarid)
307 ierr = nf_put_att_text(nid, nvarid,
"title", 26,
308 .
"Coefficient B pour hybride")
309 ierr = nf_enddef(nid)
311 ierr = nf_put_var_double(nid,nvarid,
bp)
313 ierr = nf_put_var_real(nid,nvarid,
bp)
319 ierr = nf_def_var(nid,
"presnivs",nf_double,1,idim_s,nvarid)
321 ierr = nf_def_var(nid,
"presnivs",nf_float,1,idim_s,nvarid)
324 ierr = nf_enddef(nid)
326 ierr = nf_put_var_double(nid,nvarid,
presnivs)
328 ierr = nf_put_var_real(nid,nvarid,
presnivs)
334 dims2(1) = idim_rlonu
335 dims2(2) = idim_rlatu
338 ierr = nf_def_var(nid,
"cu",nf_double,2,dims2,nvarid)
340 ierr = nf_def_var(nid,
"cu",nf_float,2,dims2,nvarid)
343 ierr = nf_put_att_text(nid, nvarid,
"title", 29,
344 .
"Coefficient de passage pour U")
345 ierr = nf_enddef(nid)
347 ierr = nf_put_var_double(nid,nvarid,
cu)
349 ierr = nf_put_var_real(nid,nvarid,
cu)
353 dims2(1) = idim_rlonv
354 dims2(2) = idim_rlatv
357 ierr = nf_def_var(nid,
"cv",nf_double,2,dims2,nvarid)
359 ierr = nf_def_var(nid,
"cv",nf_float,2,dims2,nvarid)
362 ierr = nf_put_att_text(nid, nvarid,
"title", 29,
363 .
"Coefficient de passage pour V")
364 ierr = nf_enddef(nid)
366 ierr = nf_put_var_double(nid,nvarid,
cv)
368 ierr = nf_put_var_real(nid,nvarid,
cv)
374 dims2(1) = idim_rlonv
375 dims2(2) = idim_rlatu
378 ierr = nf_def_var(nid,
"aire",nf_double,2,dims2,nvarid)
380 ierr = nf_def_var(nid,
"aire",nf_float,2,dims2,nvarid)
383 ierr = nf_put_att_text(nid, nvarid,
"title", 22,
384 .
"Aires de chaque maille")
385 ierr = nf_enddef(nid)
387 ierr = nf_put_var_double(nid,nvarid,
aire)
389 ierr = nf_put_var_real(nid,nvarid,
aire)
395 dims2(1) = idim_rlonv
396 dims2(2) = idim_rlatu
399 ierr = nf_def_var(nid,
"phisinit",nf_double,2,dims2,nvarid)
401 ierr = nf_def_var(nid,
"phisinit",nf_float,2,dims2,nvarid)
404 ierr = nf_put_att_text(nid, nvarid,
"title", 19,
405 .
"Geopotentiel au sol")
406 ierr = nf_enddef(nid)
408 ierr = nf_put_var_double(nid,nvarid,phis_glo)
410 ierr = nf_put_var_real(nid,nvarid,phis_glo)
419 ierr = nf_def_var(nid,
"temps",nf_double,1,idim_tim,nvarid)
421 ierr = nf_def_var(nid,
"temps",nf_float,1,idim_tim,nvarid)
424 ierr = nf_put_att_text(nid, nvarid,
"title", 19,
425 .
"Temps de simulation")
426 write(unites,200)yyears0,mmois0,jjour0
427 200
format(
'days since ',i4,
'-',i2.2,
'-',i2.2,
' 00:00:00')
428 ierr = nf_put_att_text(nid, nvarid,
"units", 30,
432 dims4(1) = idim_rlonu
433 dims4(2) = idim_rlatu
438 ierr = nf_def_var(nid,
"ucov",nf_double,4,dims4,nvarid)
440 ierr = nf_def_var(nid,
"ucov",nf_float,4,dims4,nvarid)
443 ierr = nf_put_att_text(nid, nvarid,
"title", 9,
446 dims4(1) = idim_rlonv
447 dims4(2) = idim_rlatv
452 ierr = nf_def_var(nid,
"vcov",nf_double,4,dims4,nvarid)
454 ierr = nf_def_var(nid,
"vcov",nf_float,4,dims4,nvarid)
457 ierr = nf_put_att_text(nid, nvarid,
"title", 9,
460 dims4(1) = idim_rlonv
461 dims4(2) = idim_rlatu
466 ierr = nf_def_var(nid,
"teta",nf_double,4,dims4,nvarid)
468 ierr = nf_def_var(nid,
"teta",nf_float,4,dims4,nvarid)
471 ierr = nf_put_att_text(nid, nvarid,
"title", 11,
474 dims4(1) = idim_rlonv
475 dims4(2) = idim_rlatu
482 ierr = nf_def_var(nid,tname(iq),nf_double,4,dims4,nvarid)
484 ierr = nf_def_var(nid,tname(iq),nf_float,4,dims4,nvarid)
487 ierr = nf_put_att_text(nid, nvarid,
"title", 12,ttext(iq))
490 dims4(1) = idim_rlonv
491 dims4(2) = idim_rlatu
496 ierr = nf_def_var(nid,
"masse",nf_double,4,dims4,nvarid)
498 ierr = nf_def_var(nid,
"masse",nf_float,4,dims4,nvarid)
501 ierr = nf_put_att_text(nid, nvarid,
"title", 12,
504 dims3(1) = idim_rlonv
505 dims3(2) = idim_rlatu
509 ierr = nf_def_var(nid,
"ps",nf_double,3,dims3,nvarid)
511 ierr = nf_def_var(nid,
"ps",nf_float,3,dims3,nvarid)
514 ierr = nf_put_att_text(nid, nvarid,
"title", 15,
517 ierr = nf_enddef(nid)
520 write(
lunout,*)
'dynredem_loc: iim,jjm,llm,iday_end',
521 &
iim,jjm,llm,iday_end
522 write(
lunout,*)
'dynredem_loc: rad,omeg,g,cpp,kappa',
529 . vcov,ucov,
teta,
q,masse,ps)
539 #include "dimensions.h"
541 #include "description.h"
542 #include "netcdf.inc"
546 #include "iniprint.h"
549 REAL vcov(ijb_v:ije_v,llm),ucov(ijb_u:ije_u,llm)
550 REAL teta(ijb_u:ije_u,llm)
551 REAL ps(ijb_u:ije_u),masse(ijb_u:ije_u,llm)
552 REAL q(ijb_u:ije_u,llm,nqtot)
553 CHARACTER*(*) fichnom
556 INTEGER nid, nvarid, nid_trac, nvarid_trac
557 REAL trac_tmp(ijb_u:ije_u,llm)
558 INTEGER ierr, ierr_file
562 REAL tab_cntrl(length)
564 character*80 abort_message
569 REAL,
SAVE,
ALLOCATABLE :: ucov_glo(:,:),vcov_glo(:,:),teta_glo(:,:)
570 REAL,
SAVE,
ALLOCATABLE :: masse_glo(:,:),ps_glo(:),q_glo(:,:)
571 LOGICAL,
SAVE :: exist_file
572 INTEGER,
SAVE :: ierr_var
585 if (mpi_rank==0)
then
586 modname =
'dynredem1_loc'
587 ierr = nf_open(fichnom, nf_write, nid)
588 IF (ierr .NE. nf_noerr)
THEN
589 write(
lunout,*)
"dynredem1: Pb. d ouverture "//trim(fichnom)
596 ierr = nf_inq_varid(nid,
"temps", nvarid)
597 IF (ierr .NE. nf_noerr)
THEN
598 write(
lunout,*) nf_strerror(ierr)
599 abort_message=
'Variable temps n est pas definie'
600 CALL
abort_gcm(modname,abort_message,ierr)
603 ierr = nf_put_var1_double(nid,nvarid,nb,
time)
605 ierr = nf_put_var1_real(nid,nvarid,nb,
time)
607 write(
lunout,*)
"dynredem1_loc: Enregistrement pour ", nb,
time
612 ierr = nf_inq_varid(nid,
"controle", nvarid)
613 IF (ierr .NE. nf_noerr)
THEN
614 abort_message=
"dynredem1: Le champ <controle> est absent"
616 CALL
abort_gcm(modname,abort_message,ierr)
619 ierr = nf_get_var_double(nid, nvarid, tab_cntrl)
621 ierr = nf_get_var_real(nid, nvarid, tab_cntrl)
625 ierr = nf_put_var_double(nid,nvarid,tab_cntrl)
627 ierr = nf_put_var_real(nid,nvarid,tab_cntrl)
639 IF (type_trac /=
'inca')
THEN
646 INQUIRE(file=
"start_trac.nc", exist=exist_file)
647 print *,
"EXIST", exist_file
653 ierr_file = nf_open(
"start_trac.nc", nf_nowrite,nid_trac)
654 IF (ierr_file .NE.nf_noerr)
THEN
655 WRITE(6,*)
' Pb d''ouverture du fichier start_trac.nc'
656 WRITE(6,*)
' ierr = ', ierr_file
663 ierr_var = nf_inq_varid(nid_trac, tname(iq), nvarid_trac)
666 IF (ierr == nf_noerr)
THEN
681 IF (mpi_rank==0)
THEN