5 SUBROUTINE dynredem0(fichnom,iday_end,phis)
18 #include "dimensions.h"
27 #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
66 call ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
77 tab_cntrl(1) =
REAL(
iim)
78 tab_cntrl(2) =
REAL(jjm)
79 tab_cntrl(3) =
REAL(
llm)
118 IF( ysinus ) tab_cntrl(27) = 1.
121 tab_cntrl(30) =
REAL(iday_end)
130 ierr = nf_create(fichnom, nf_clobber, nid)
131 IF (ierr.NE.nf_noerr)
THEN
132 write(
lunout,*)
"dynredem0: Pb d ouverture du fichier "
134 write(
lunout,*)
' ierr = ', ierr
140 ierr = nf_put_att_text(nid, nf_global,
"title", 27,
141 .
"Fichier demmarage dynamique")
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)
154 ierr = nf_enddef(nid)
161 ierr = nf_def_var(nid,
"controle",nf_double,1,idim_index,nvarid)
163 ierr = nf_def_var(nid,
"controle",nf_float,1,idim_index,nvarid)
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)
174 ierr = nf_def_var(nid,
"rlonu",nf_double,1,idim_rlonu,nvarid)
176 ierr = nf_def_var(nid,
"rlonu",nf_float,1,idim_rlonu,nvarid)
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)
187 ierr = nf_def_var(nid,
"rlatu",nf_double,1,idim_rlatu,nvarid)
189 ierr = nf_def_var(nid,
"rlatu",nf_float,1,idim_rlatu,nvarid)
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)
200 ierr = nf_def_var(nid,
"rlonv",nf_double,1,idim_rlonv,nvarid)
202 ierr = nf_def_var(nid,
"rlonv",nf_float,1,idim_rlonv,nvarid)
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)
213 ierr = nf_def_var(nid,
"rlatv",nf_double,1,idim_rlatv,nvarid)
215 ierr = nf_def_var(nid,
"rlatv",nf_float,1,idim_rlatv,nvarid)
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)
226 ierr = nf_def_var(nid,
"nivsigs",nf_double,1,idim_s,nvarid)
228 ierr = nf_def_var(nid,
"nivsigs",nf_float,1,idim_s,nvarid)
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)
239 ierr = nf_def_var(nid,
"nivsig",nf_double,1,idim_sig,nvarid)
241 ierr = nf_def_var(nid,
"nivsig",nf_float,1,idim_sig,nvarid)
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)
252 ierr = nf_def_var(nid,
"ap",nf_double,1,idim_sig,nvarid)
254 ierr = nf_def_var(nid,
"ap",nf_float,1,idim_sig,nvarid)
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)
265 ierr = nf_def_var(nid,
"bp",nf_double,1,idim_sig,nvarid)
267 ierr = nf_def_var(nid,
"bp",nf_float,1,idim_sig,nvarid)
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)
278 ierr = nf_def_var(nid,
"presnivs",nf_double,1,idim_s,nvarid)
280 ierr = nf_def_var(nid,
"presnivs",nf_float,1,idim_s,nvarid)
283 ierr = nf_enddef(nid)
284 call nf95_put_var(nid,nvarid,
presnivs)
289 dims2(1) = idim_rlonu
290 dims2(2) = idim_rlatu
293 ierr = nf_def_var(nid,
"cu",nf_double,2,dims2,nvarid)
295 ierr = nf_def_var(nid,
"cu",nf_float,2,dims2,nvarid)
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)
304 dims2(1) = idim_rlonv
305 dims2(2) = idim_rlatv
308 ierr = nf_def_var(nid,
"cv",nf_double,2,dims2,nvarid)
310 ierr = nf_def_var(nid,
"cv",nf_float,2,dims2,nvarid)
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)
321 dims2(1) = idim_rlonv
322 dims2(2) = idim_rlatu
325 ierr = nf_def_var(nid,
"aire",nf_double,2,dims2,nvarid)
327 ierr = nf_def_var(nid,
"aire",nf_float,2,dims2,nvarid)
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)
338 dims2(1) = idim_rlonv
339 dims2(2) = idim_rlatu
342 ierr = nf_def_var(nid,
"phisinit",nf_double,2,dims2,nvarid)
344 ierr = nf_def_var(nid,
"phisinit",nf_float,2,dims2,nvarid)
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)
358 ierr = nf_def_var(nid,
"temps",nf_double,1,idim_tim,nvarid)
360 ierr = nf_def_var(nid,
"temps",nf_float,1,idim_tim,nvarid)
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,
371 dims4(1) = idim_rlonu
372 dims4(2) = idim_rlatu
377 ierr = nf_def_var(nid,
"ucov",nf_double,4,dims4,nvarid)
379 ierr = nf_def_var(nid,
"ucov",nf_float,4,dims4,nvarid)
382 ierr = nf_put_att_text(nid, nvarid,
"title", 9,
385 dims4(1) = idim_rlonv
386 dims4(2) = idim_rlatv
391 ierr = nf_def_var(nid,
"vcov",nf_double,4,dims4,nvarid)
393 ierr = nf_def_var(nid,
"vcov",nf_float,4,dims4,nvarid)
396 ierr = nf_put_att_text(nid, nvarid,
"title", 9,
399 dims4(1) = idim_rlonv
400 dims4(2) = idim_rlatu
405 ierr = nf_def_var(nid,
"teta",nf_double,4,dims4,nvarid)
407 ierr = nf_def_var(nid,
"teta",nf_float,4,dims4,nvarid)
410 ierr = nf_put_att_text(nid, nvarid,
"title", 11,
413 dims4(1) = idim_rlonv
414 dims4(2) = idim_rlatu
421 ierr = nf_def_var(nid,
tname(iq),nf_double,4,dims4,nvarid)
423 ierr = nf_def_var(nid,
tname(iq),nf_float,4,dims4,nvarid)
426 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 write(
lunout,*)
'dynredem0: iim,jjm,llm,iday_end',
462 write(
lunout,*)
'dynredem0: rad,omeg,g,cpp,kappa',
468 . vcov,ucov,teta,q,masse,ps)
471 use netcdf
, only: nf90_get_var
478 #include "dimensions.h"
480 #include "description.h"
481 #include "netcdf.inc"
485 #include "iniprint.h"
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
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)
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)
526 call nf95_put_var(nid,nvarid,time,start=(/nb/))
527 write(
lunout,*)
"dynredem1: Enregistrement pour ", nb, time
532 ierr = nf_inq_varid(nid,
"controle", nvarid)
533 IF (ierr .NE. nf_noerr)
THEN
534 abort_message=
"dynredem1: Le champ <controle> est absent"
536 CALL abort_gcm(modname,abort_message,ierr)
538 ierr = nf90_get_var(nid, nvarid, tab_cntrl)
540 call nf95_put_var(nid,nvarid,tab_cntrl)
544 ierr = nf_inq_varid(nid,
"ucov", nvarid)
545 IF (ierr .NE. nf_noerr)
THEN
546 abort_message=
"Variable ucov n est pas definie"
548 CALL abort_gcm(modname,abort_message,ierr)
550 call nf95_put_var(nid,nvarid,ucov)
552 ierr = nf_inq_varid(nid,
"vcov", nvarid)
553 IF (ierr .NE. nf_noerr)
THEN
554 abort_message=
"Variable vcov n est pas definie"
556 CALL abort_gcm(modname,abort_message,ierr)
558 call nf95_put_var(nid,nvarid,vcov)
560 ierr = nf_inq_varid(nid,
"teta", nvarid)
561 IF (ierr .NE. nf_noerr)
THEN
562 abort_message=
"Variable teta n est pas definie"
564 CALL abort_gcm(modname,abort_message,ierr)
566 call nf95_put_var(nid,nvarid,teta)
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',
574 write(
lunout,*)
' ierr = ', ierr_file
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"
586 CALL abort_gcm(modname,abort_message,ierr)
588 call nf95_put_var(nid,nvarid,q(:,:,:,iq))
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
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"
601 CALL abort_gcm(modname,abort_message,ierr)
603 call nf95_put_var(nid,nvarid,q(:,:,:,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"//
613 CALL abort_gcm(modname,abort_message,ierr)
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"
620 CALL abort_gcm(modname,abort_message,ierr)
622 call nf95_put_var(nid, nvarid, trac_tmp)
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"
633 CALL abort_gcm(modname,abort_message,ierr)
635 call nf95_put_var(nid,nvarid,q(:,:,:,iq))
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"
646 CALL abort_gcm(modname,abort_message,ierr)
648 call nf95_put_var(nid,nvarid,masse)
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"
654 CALL abort_gcm(modname,abort_message,ierr)
656 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
!$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 dynredem0(fichnom, iday_end, phis)
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
subroutine dynredem1(fichnom, time, vcov, ucov, teta, q, masse, ps)
!$Id mode_top_bound COMMON comconstr rad
!$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!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
!$Header!CDK comgeom COMMON comgeom rlonv