19 #include "dimensions.h"
28 #include "description.h"
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
56 REAL zan0,zjulian,hours
57 INTEGER yyears0,jjour0, mmois0
68 call ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
79 tab_cntrl(1) =
REAL(
iim)
80 tab_cntrl(2) =
REAL(jjm)
81 tab_cntrl(3) =
REAL(
llm)
120 IF( ysinus ) tab_cntrl(27) = 1.
123 tab_cntrl(30) =
REAL(iday_end)
132 ierr = nf_create(fichnom, nf_clobber, nid)
133 IF (ierr.NE.nf_noerr)
THEN
134 WRITE(6,*)
" Pb d ouverture du fichier "//fichnom
135 WRITE(6,*)
' ierr = ', ierr
141 ierr = nf_put_att_text(nid, nf_global,
"title", 27,
142 .
"Fichier demmarage dynamique")
146 ierr = nf_def_dim(nid,
"index", length, idim_index)
147 ierr = nf_def_dim(nid,
"rlonu", iip1, idim_rlonu)
148 ierr = nf_def_dim(nid,
"rlatu",
jjp1, idim_rlatu)
149 ierr = nf_def_dim(nid,
"rlonv", iip1, idim_rlonv)
150 ierr = nf_def_dim(nid,
"rlatv", jjm, idim_rlatv)
151 ierr = nf_def_dim(nid,
"sigs",
llm, idim_s)
152 ierr = nf_def_dim(nid,
"sig",
llmp1, idim_sig)
153 ierr = nf_def_dim(nid,
"temps", nf_unlimited, idim_tim)
155 ierr = nf_enddef(nid)
162 ierr = nf_def_var(nid,
"controle",nf_double,1,idim_index,nvarid)
164 ierr = nf_def_var(nid,
"controle",nf_float,1,idim_index,nvarid)
167 ierr = nf_put_att_text(nid, nvarid,
"title", 22,
168 .
"Parametres de controle")
169 ierr = nf_enddef(nid)
170 call nf95_put_var(nid,nvarid,tab_cntrl)
175 ierr = nf_def_var(nid,
"rlonu",nf_double,1,idim_rlonu,nvarid)
177 ierr = nf_def_var(nid,
"rlonu",nf_float,1,idim_rlonu,nvarid)
180 ierr = nf_put_att_text(nid, nvarid,
"title", 23,
181 .
"Longitudes des points U")
182 ierr = nf_enddef(nid)
183 call nf95_put_var(nid,nvarid,
rlonu)
188 ierr = nf_def_var(nid,
"rlatu",nf_double,1,idim_rlatu,nvarid)
190 ierr = nf_def_var(nid,
"rlatu",nf_float,1,idim_rlatu,nvarid)
193 ierr = nf_put_att_text(nid, nvarid,
"title", 22,
194 .
"Latitudes des points U")
195 ierr = nf_enddef(nid)
196 call nf95_put_var (nid,nvarid,
rlatu)
201 ierr = nf_def_var(nid,
"rlonv",nf_double,1,idim_rlonv,nvarid)
203 ierr = nf_def_var(nid,
"rlonv",nf_float,1,idim_rlonv,nvarid)
206 ierr = nf_put_att_text(nid, nvarid,
"title", 23,
207 .
"Longitudes des points V")
208 ierr = nf_enddef(nid)
209 call nf95_put_var(nid,nvarid,
rlonv)
214 ierr = nf_def_var(nid,
"rlatv",nf_double,1,idim_rlatv,nvarid)
216 ierr = nf_def_var(nid,
"rlatv",nf_float,1,idim_rlatv,nvarid)
219 ierr = nf_put_att_text(nid, nvarid,
"title", 22,
220 .
"Latitudes des points V")
221 ierr = nf_enddef(nid)
222 call nf95_put_var(nid,nvarid,
rlatv)
227 ierr = nf_def_var(nid,
"nivsigs",nf_double,1,idim_s,nvarid)
229 ierr = nf_def_var(nid,
"nivsigs",nf_float,1,idim_s,nvarid)
232 ierr = nf_put_att_text(nid, nvarid,
"title", 28,
233 .
"Numero naturel des couches s")
234 ierr = nf_enddef(nid)
235 call nf95_put_var(nid,nvarid,
nivsigs)
240 ierr = nf_def_var(nid,
"nivsig",nf_double,1,idim_sig,nvarid)
242 ierr = nf_def_var(nid,
"nivsig",nf_float,1,idim_sig,nvarid)
245 ierr = nf_put_att_text(nid, nvarid,
"title", 32,
246 .
"Numero naturel des couches sigma")
247 ierr = nf_enddef(nid)
248 call nf95_put_var(nid,nvarid,
nivsig)
253 ierr = nf_def_var(nid,
"ap",nf_double,1,idim_sig,nvarid)
255 ierr = nf_def_var(nid,
"ap",nf_float,1,idim_sig,nvarid)
258 ierr = nf_put_att_text(nid, nvarid,
"title", 26,
259 .
"Coefficient A pour hybride")
260 ierr = nf_enddef(nid)
261 call nf95_put_var(nid,nvarid,ap)
266 ierr = nf_def_var(nid,
"bp",nf_double,1,idim_sig,nvarid)
268 ierr = nf_def_var(nid,
"bp",nf_float,1,idim_sig,nvarid)
271 ierr = nf_put_att_text(nid, nvarid,
"title", 26,
272 .
"Coefficient B pour hybride")
273 ierr = nf_enddef(nid)
274 call nf95_put_var(nid,nvarid,
bp)
279 ierr = nf_def_var(nid,
"presnivs",nf_double,1,idim_s,nvarid)
281 ierr = nf_def_var(nid,
"presnivs",nf_float,1,idim_s,nvarid)
284 ierr = nf_enddef(nid)
285 call nf95_put_var(nid,nvarid,
presnivs)
290 dims2(1) = idim_rlonu
291 dims2(2) = idim_rlatu
294 ierr = nf_def_var(nid,
"cu",nf_double,2,dims2,nvarid)
296 ierr = nf_def_var(nid,
"cu",nf_float,2,dims2,nvarid)
299 ierr = nf_put_att_text(nid, nvarid,
"title", 29,
300 .
"Coefficient de passage pour U")
301 ierr = nf_enddef(nid)
302 call nf95_put_var(nid,nvarid,
cu)
305 dims2(1) = idim_rlonv
306 dims2(2) = idim_rlatv
309 ierr = nf_def_var(nid,
"cv",nf_double,2,dims2,nvarid)
311 ierr = nf_def_var(nid,
"cv",nf_float,2,dims2,nvarid)
314 ierr = nf_put_att_text(nid, nvarid,
"title", 29,
315 .
"Coefficient de passage pour V")
316 ierr = nf_enddef(nid)
317 call nf95_put_var(nid,nvarid,
cv)
322 dims2(1) = idim_rlonv
323 dims2(2) = idim_rlatu
326 ierr = nf_def_var(nid,
"aire",nf_double,2,dims2,nvarid)
328 ierr = nf_def_var(nid,
"aire",nf_float,2,dims2,nvarid)
331 ierr = nf_put_att_text(nid, nvarid,
"title", 22,
332 .
"Aires de chaque maille")
333 ierr = nf_enddef(nid)
334 call nf95_put_var(nid,nvarid,
aire)
339 dims2(1) = idim_rlonv
340 dims2(2) = idim_rlatu
343 ierr = nf_def_var(nid,
"phisinit",nf_double,2,dims2,nvarid)
345 ierr = nf_def_var(nid,
"phisinit",nf_float,2,dims2,nvarid)
348 ierr = nf_put_att_text(nid, nvarid,
"title", 19,
349 .
"Geopotentiel au sol")
350 ierr = nf_enddef(nid)
351 call nf95_put_var(nid,nvarid,phis)
359 ierr = nf_def_var(nid,
"temps",nf_double,1,idim_tim,nvarid)
361 ierr = nf_def_var(nid,
"temps",nf_float,1,idim_tim,nvarid)
364 ierr = nf_put_att_text(nid, nvarid,
"title", 19,
365 .
"Temps de simulation")
366 write(unites,200)yyears0,mmois0,jjour0
367 200
format(
'days since ',i4,
'-',i2.2,
'-',i2.2,
' 00:00:00')
368 ierr = nf_put_att_text(nid, nvarid,
"units", 30,
372 dims4(1) = idim_rlonu
373 dims4(2) = idim_rlatu
378 ierr = nf_def_var(nid,
"ucov",nf_double,4,dims4,nvarid)
380 ierr = nf_def_var(nid,
"ucov",nf_float,4,dims4,nvarid)
383 ierr = nf_put_att_text(nid, nvarid,
"title", 9,
386 dims4(1) = idim_rlonv
387 dims4(2) = idim_rlatv
392 ierr = nf_def_var(nid,
"vcov",nf_double,4,dims4,nvarid)
394 ierr = nf_def_var(nid,
"vcov",nf_float,4,dims4,nvarid)
397 ierr = nf_put_att_text(nid, nvarid,
"title", 9,
400 dims4(1) = idim_rlonv
401 dims4(2) = idim_rlatu
406 ierr = nf_def_var(nid,
"teta",nf_double,4,dims4,nvarid)
408 ierr = nf_def_var(nid,
"teta",nf_float,4,dims4,nvarid)
411 ierr = nf_put_att_text(nid, nvarid,
"title", 11,
414 dims4(1) = idim_rlonv
415 dims4(2) = idim_rlatu
422 ierr = nf_def_var(nid,
tname(iq),nf_double,4,dims4,nvarid)
424 ierr = nf_def_var(nid,
tname(iq),nf_float,4,dims4,nvarid)
427 ierr = nf_put_att_text(nid, nvarid,
"title", 12,
ttext(iq))
430 dims4(1) = idim_rlonv
431 dims4(2) = idim_rlatu
436 ierr = nf_def_var(nid,
"masse",nf_double,4,dims4,nvarid)
438 ierr = nf_def_var(nid,
"masse",nf_float,4,dims4,nvarid)
441 ierr = nf_put_att_text(nid, nvarid,
"title", 12,
444 dims3(1) = idim_rlonv
445 dims3(2) = idim_rlatu
449 ierr = nf_def_var(nid,
"ps",nf_double,3,dims3,nvarid)
451 ierr = nf_def_var(nid,
"ps",nf_float,3,dims3,nvarid)
454 ierr = nf_put_att_text(nid, nvarid,
"title", 15,
457 ierr = nf_enddef(nid)
460 print*,
'iim,jjm,llm,iday_end',
iim,jjm,
llm,iday_end
461 print*,
'rad,omeg,g,cpp,kappa',
468 . vcov,ucov,teta,q,masse,ps)
472 use netcdf
, only: nf90_get_var
479 #include "dimensions.h"
481 #include "description.h"
482 #include "netcdf.inc"
493 CHARACTER*(*) fichnom
496 INTEGER nid, nvarid, nid_trac, nvarid_trac
498 INTEGER ierr, ierr_file
502 REAL tab_cntrl(length)
504 character*80 abort_message
525 modname =
'dynredem1'
526 ierr = nf_open(fichnom, nf_write, nid)
527 IF (ierr .NE. nf_noerr)
THEN
528 print*,
"Pb. d ouverture "//fichnom
535 ierr = nf_inq_varid(nid,
"temps", nvarid)
536 IF (ierr .NE. nf_noerr)
THEN
537 print *, nf_strerror(ierr)
538 abort_message=
'Variable temps n est pas definie'
539 CALL abort_gcm(modname,abort_message,ierr)
541 call nf95_put_var(nid,nvarid,time,start=(/nb/))
542 print*,
"Enregistrement pour ", nb, time
547 ierr = nf_inq_varid(nid,
"controle", nvarid)
548 IF (ierr .NE. nf_noerr)
THEN
549 abort_message=
"dynredem1: Le champ <controle> est absent"
551 CALL abort_gcm(modname,abort_message,ierr)
553 ierr = nf90_get_var(nid, nvarid, tab_cntrl)
555 call nf95_put_var(nid,nvarid,tab_cntrl)
559 ierr = nf_inq_varid(nid,
"ucov", nvarid)
560 IF (ierr .NE. nf_noerr)
THEN
561 print*,
"Variable ucov n est pas definie"
564 call nf95_put_var(nid,nvarid,ucov)
566 ierr = nf_inq_varid(nid,
"vcov", nvarid)
567 IF (ierr .NE. nf_noerr)
THEN
568 print*,
"Variable vcov n est pas definie"
571 call nf95_put_var(nid,nvarid,vcov)
573 ierr = nf_inq_varid(nid,
"teta", nvarid)
574 IF (ierr .NE. nf_noerr)
THEN
575 print*,
"Variable teta n est pas definie"
578 call nf95_put_var(nid,nvarid,teta)
582 inquire(file=
"start_trac.nc", exist=exist_file)
583 print *,
"EXIST", exist_file
585 ierr_file = nf_open(
"start_trac.nc", nf_nowrite,nid_trac)
586 IF (ierr_file .NE.nf_noerr)
THEN
587 write(6,*)
' Pb d''ouverture du fichier start_trac.nc'
588 write(6,*)
' ierr = ', ierr_file
598 ierr = nf_inq_varid(nid,
tname(iq), nvarid)
599 IF (ierr .NE. nf_noerr)
THEN
600 print*,
"Variable tname(iq) n est pas definie"
603 call nf95_put_var(nid,nvarid,q(:,:,:,iq))
606 IF (ierr_file .ne. 2)
THEN
607 ierr = nf_inq_varid(nid_trac,
tname(iq), nvarid_trac)
608 IF (ierr .NE. nf_noerr)
THEN
609 print*,
tname(iq),
"est absent de start_trac.nc"
610 ierr = nf_inq_varid(nid,
tname(iq), nvarid)
611 IF (ierr .NE. nf_noerr)
THEN
612 print*,
"Variable ",
tname(iq),
" n est pas definie"
615 call nf95_put_var(nid,nvarid,q(:,:,:,iq))
618 print*,
tname(iq),
"est present dans start_trac.nc"
619 ierr = nf90_get_var(nid_trac, nvarid_trac, trac_tmp)
620 IF (ierr .NE. nf_noerr)
THEN
621 print*,
"Lecture echouee pour",
tname(iq)
624 ierr = nf_inq_varid(nid,
tname(iq), nvarid)
625 IF (ierr .NE. nf_noerr)
THEN
626 print*,
"Variable ",
tname(iq),
" n est pas definie"
629 call nf95_put_var(nid, nvarid, trac_tmp)
635 ierr = nf_inq_varid(nid,
tname(iq), nvarid)
636 IF (ierr .NE. nf_noerr)
THEN
637 print*,
"Variable tname(iq) n est pas definie"
640 call nf95_put_var(nid,nvarid,q(:,:,:,iq))
649 ierr = nf_inq_varid(nid,
"masse", nvarid)
650 IF (ierr .NE. nf_noerr)
THEN
651 print*,
"Variable masse n est pas definie"
654 call nf95_put_var(nid,nvarid,masse)
656 ierr = nf_inq_varid(nid,
"ps", nvarid)
657 IF (ierr .NE. nf_noerr)
THEN
658 print*,
"Variable ps n est pas definie"
661 call nf95_put_var(nid,nvarid,ps)
!$Header!c!c!c include serre h!c REAL dzoomy
character(len=23), dimension(:), allocatable, save ttext
!$Header llmm1 INTEGER ip1jmp1
subroutine dynredem0_p(fichnom, iday_end, phis)
subroutine gather_field(Field, ij, ll, rank)
!$Header!c!c!c include serre h!c REAL && grossismx
!$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
!$Id mode_top_bound COMMON comconstr kappa
!$Header!c!c!c include serre h!c REAL clon
subroutine abort_gcm(modname, message, ierr)
!$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
!$Header!CDK comgeom COMMON comgeom rlatu
!$Header llmm1 INTEGER ip1jm
!$Id mode_top_bound COMMON comconstr rad
subroutine dynredem1_p(fichnom, time, vcov, ucov, teta, q, masse, ps)
!$Id mode_top_bound COMMON comconstr cpp
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
!$Id mode_top_bound COMMON comconstr daysec
!$Header!CDK comgeom COMMON comgeom rlonu
!$Header!CDK comgeom COMMON comgeom rlatv
character(len=20), dimension(:), allocatable, save tname
character(len=4), save type_trac
!$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
!$Header!c!c!c include serre h!c REAL dzoomx
!$Header!c!c!c include serre h!c REAL grossismy
!$Id mode_top_bound COMMON comconstr dtvr
!$Header!c!c!c include serre h!c REAL taux
c c zjulian c cym CALL iim cym klev iim
!$Header!c!c!c include serre h!c REAL clat
!$Header!CDK comgeom COMMON comgeom cv
!$Header!CDK comgeom COMMON comgeom rlonv