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