1 SUBROUTINE dynredem0(fichnom,iday_end,phis)
10 USE netcdf
, ONLY: nf90_create, nf90_def_dim, nf90_inq_varid, nf90_global, &
11 nf90_close, nf90_put_att, nf90_unlimited, nf90_clobber
14 include
"dimensions.h"
22 include
"description.h"
27 CHARACTER(LEN=*),
INTENT(IN) :: fichnom
28 INTEGER,
INTENT(IN) :: iday_end
29 REAL,
INTENT(IN) :: phis(iip1,
jjp1)
33 INTEGER,
PARAMETER :: length=100
34 REAL :: tab_cntrl(length)
36 CHARACTER(LEN=30) :: unites
38 INTEGER :: rlonuID, rlonvID, rlatuID, rlatvID
39 INTEGER :: sID, sigID, nID, vID, timID
40 INTEGER :: yyears0, jjour0, mmois0
41 REAL :: zan0, zjulian, hours
46 CALL ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
55 tab_cntrl(1) =
REAL(
iim)
56 tab_cntrl(2) =
REAL(jjm)
57 tab_cntrl(3) =
REAL(
llm)
95 IF( ysinus ) tab_cntrl(27) = 1.
97 tab_cntrl(30) =
REAL(iday_end)
103 CALL err(nf90_create(fichnom,nf90_clobber,nid))
106 CALL err(nf90_put_att(nid,nf90_global,
"title",
"Fichier demarrage dynamique"))
109 CALL err(nf90_def_dim(nid,
"index", length, indexid))
110 CALL err(nf90_def_dim(nid,
"rlonu", iip1, rlonuid))
111 CALL err(nf90_def_dim(nid,
"rlatu",
jjp1, rlatuid))
112 CALL err(nf90_def_dim(nid,
"rlonv", iip1, rlonvid))
113 CALL err(nf90_def_dim(nid,
"rlatv", jjm, rlatvid))
114 CALL err(nf90_def_dim(nid,
"sigs",
llm, sid))
115 CALL err(nf90_def_dim(nid,
"sig",
llmp1, sigid))
116 CALL err(nf90_def_dim(nid,
"temps", nf90_unlimited, timid))
119 CALL put_var1(nid,
"controle",
"Parametres de controle" ,[indexid],tab_cntrl)
120 CALL put_var1(nid,
"rlonu" ,
"Longitudes des points U",[rlonuid],
rlonu)
121 CALL put_var1(nid,
"rlatu" ,
"Latitudes des points U" ,[rlatuid],
rlatu)
122 CALL put_var1(nid,
"rlonv" ,
"Longitudes des points V",[rlonvid],
rlonv)
123 CALL put_var1(nid,
"rlatv" ,
"Latitudes des points V" ,[rlatvid],
rlatv)
124 CALL put_var1(nid,
"nivsigs" ,
"Numero naturel des couches s" ,[sid] ,
nivsigs)
125 CALL put_var1(nid,
"nivsig" ,
"Numero naturel des couches sigma",[sigid],
nivsig)
126 CALL put_var1(nid,
"ap" ,
"Coefficient A pour hybride" ,[sigid],ap)
127 CALL put_var1(nid,
"bp" ,
"Coefficient B pour hybride" ,[sigid],
bp)
130 CALL put_var2(nid,
"cu",
"Coefficient de passage pour U",[rlonuid,rlatuid],
cu)
131 CALL put_var2(nid,
"cv",
"Coefficient de passage pour V",[rlonvid,rlatvid],
cv)
132 CALL put_var2(nid,
"aire",
"Aires de chaque maille" ,[rlonvid,rlatuid],
aire)
133 CALL put_var2(nid,
"phisinit",
"Geopotentiel au sol" ,[rlonvid,rlatuid],phis)
136 WRITE(unites,
"('days since ',i4,'-',i2.2,'-',i2.2,' 00:00:00')"),&
137 yyears0,mmois0,jjour0
138 CALL cre_var(nid,
"temps",
"Temps de simulation",[timid],unites)
139 CALL cre_var(nid,
"ucov" ,
"Vitesse U" ,[rlonuid,rlatuid,sid,timid])
140 CALL cre_var(nid,
"vcov" ,
"Vitesse V" ,[rlonvid,rlatvid,sid,timid])
141 CALL cre_var(nid,
"teta" ,
"Temperature",[rlonvid,rlatuid,sid,timid])
145 CALL cre_var(nid,
"masse",
"Masse d air" ,[rlonvid,rlatuid,sid,timid])
146 CALL cre_var(nid,
"ps" ,
"Pression au sol",[rlonvid,rlatuid ,timid])
147 CALL err(nf90_close(nid))
150 WRITE(
lunout,*)trim(
modname)//
': rad,omeg,g,cpp,kappa',
rad,omeg,
g,
cpp,
kappa
159 SUBROUTINE dynredem1(fichnom,time,vcov,ucov,teta,q,masse,ps)
166 USE netcdf
, ONLY: nf90_open, nf90_nowrite, nf90_get_var, nf90_inq_varid, &
167 nf90_close, nf90_write, nf90_put_var, nf90_noerr
171 include
"dimensions.h"
173 include
"description.h"
180 CHARACTER(LEN=*),
INTENT(IN) :: fichnom
181 REAL,
INTENT(IN) :: time
182 REAL,
INTENT(IN) :: vcov(iip1,jjm,
llm)
183 REAL,
INTENT(IN) :: ucov(iip1,
jjp1,
llm)
184 REAL,
INTENT(IN) :: teta(iip1,
jjp1,
llm)
186 REAL,
INTENT(IN) :: masse(iip1,
jjp1,
llm)
187 REAL,
INTENT(IN) :: ps(iip1,
jjp1)
190 INTEGER :: l, iq, nid, vID, ierr, nid_trac, vID_trac
191 INTEGER,
SAVE :: nb=0
192 INTEGER,
PARAMETER :: length=100
193 REAL :: tab_cntrl(length)
194 CHARACTER(LEN=256) :: var, dum
195 LOGICAL :: lread_inca
199 CALL err(nf90_open(
fil,nf90_write,nid),
"open",
fil)
204 CALL err(nf90_inq_varid(nid,var,vid),
"inq",var)
205 CALL err(nf90_put_var(nid,vid,[time]),
"put",var)
210 CALL err(nf90_inq_varid(nid,var,vid),
"inq",var)
211 CALL err(nf90_get_var(nid,vid,tab_cntrl),
"get",var)
213 CALL err(nf90_inq_varid(nid,var,vid),
"inq",var)
214 CALL err(nf90_put_var(nid,vid,tab_cntrl),
"put",var)
224 lread_inca=.
false.;
fil=
"start_trac.nc"
225 IF(
type_trac==
'inca')
INQUIRE(file=
fil,exist=lread_inca)
226 IF(lread_inca)
CALL err(nf90_open(
fil,nf90_nowrite,nid_trac),
"open")
232 ierr=nf90_inq_varid(nid_trac,var,vid_trac)
233 dum=
'inq';
IF(ierr==nf90_noerr) dum=
'fnd'
242 CALL err(nf90_close(nid),
"close")
244 IF(lread_inca)
CALL err(nf90_close(nid_trac),
"close")
!$Header!c!c!c include serre h!c REAL dzoomy
character(len=23), dimension(:), allocatable, save ttext
subroutine, public put_var2(ncid, var, title, did, v, units)
!$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
subroutine, public dynredem_write_u(ncid, id, var, ll)
character(len=256), save, public fil
!$Header!c!c!c include serre h!c REAL clon
subroutine dynredem0(fichnom, iday_end, phis)
!$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)
subroutine err(ierr, typ, nam)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
!$Id mode_top_bound COMMON comconstr rad
character(len=256), save, public modname
!$Id mode_top_bound COMMON comconstr cpp
character(len=256) function, public msg(typ, nam)
!$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
subroutine, public dynredem_write_v(ncid, id, var, ll)
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
subroutine, public put_var1(ncid, var, title, did, v, units)
!$Header!c!c!c include serre h!c REAL taux
c c zjulian c cym CALL iim cym klev iim
subroutine, public dynredem_read_u(ncid, id, var, ll)
!$Header!c!c!c include serre h!c REAL clat
!$Header!CDK comgeom COMMON comgeom cv
subroutine, public cre_var(ncid, var, title, did, units)
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
!$Header!CDK comgeom COMMON comgeom rlonv