12 USE netcdf
, ONLY: nf90_create, nf90_def_dim, nf90_inq_varid, nf90_global, &
13 nf90_close, nf90_put_att, nf90_unlimited, nf90_clobber
16 include
"dimensions.h"
24 include
"description.h"
29 CHARACTER(LEN=*),
INTENT(IN) :: fichnom
30 INTEGER,
INTENT(IN) :: iday_end
35 INTEGER,
PARAMETER :: length=100
36 REAL :: tab_cntrl(length)
39 CHARACTER(LEN=30) :: unites
41 INTEGER :: rlonuID, rlonvID, rlatuID, rlatvID
42 INTEGER :: sID, sigID, nID, vID, timID
43 INTEGER :: yyears0, jjour0, mmois0
44 REAL :: zan0, zjulian, hours
52 CALL ju2ymds(zjulian, yyears0, mmois0, jjour0, hours)
61 tab_cntrl(1) =
REAL(
iim)
62 tab_cntrl(2) =
REAL(jjm)
63 tab_cntrl(3) =
REAL(
llm)
101 IF( ysinus ) tab_cntrl(27) = 1.
103 tab_cntrl(30) =
REAL(iday_end)
109 CALL err(nf90_create(fichnom,nf90_clobber,nid))
112 CALL err(nf90_put_att(nid,nf90_global,
"title",
"Fichier demarrage dynamique"))
115 CALL err(nf90_def_dim(nid,
"index", length, indexid))
116 CALL err(nf90_def_dim(nid,
"rlonu", iip1, rlonuid))
117 CALL err(nf90_def_dim(nid,
"rlatu",
jjp1, rlatuid))
118 CALL err(nf90_def_dim(nid,
"rlonv", iip1, rlonvid))
119 CALL err(nf90_def_dim(nid,
"rlatv", jjm, rlatvid))
120 CALL err(nf90_def_dim(nid,
"sigs",
llm, sid))
121 CALL err(nf90_def_dim(nid,
"sig",
llmp1, sigid))
122 CALL err(nf90_def_dim(nid,
"temps", nf90_unlimited, timid))
125 CALL put_var(nid,
"controle",
"Parametres de controle" ,[indexid],tab_cntrl)
126 CALL put_var(nid,
"rlonu" ,
"Longitudes des points U",[rlonuid],
rlonu)
127 CALL put_var(nid,
"rlatu" ,
"Latitudes des points U" ,[rlatuid],
rlatu)
128 CALL put_var(nid,
"rlonv" ,
"Longitudes des points V",[rlonvid],
rlonv)
129 CALL put_var(nid,
"rlatv" ,
"Latitudes des points V" ,[rlatvid],
rlatv)
130 CALL put_var(nid,
"nivsigs" ,
"Numero naturel des couches s" ,[sid] ,
nivsigs)
131 CALL put_var(nid,
"nivsig" ,
"Numero naturel des couches sigma",[sigid],
nivsig)
132 CALL put_var(nid,
"ap" ,
"Coefficient A pour hybride" ,[sigid],ap)
133 CALL put_var(nid,
"bp" ,
"Coefficient B pour hybride" ,[sigid],
bp)
136 CALL put_var(nid,
"cu",
"Coefficient de passage pour U",[rlonuid,rlatuid],
cu)
137 CALL put_var(nid,
"cv",
"Coefficient de passage pour V",[rlonvid,rlatvid],
cv)
138 CALL put_var(nid,
"aire",
"Aires de chaque maille" ,[rlonvid,rlatuid],
aire)
139 CALL put_var(nid,
"phisinit",
"Geopotentiel au sol" ,[rlonvid,rlatuid],phis_glo)
142 WRITE(unites,
"('days since ',i4,'-',i2.2,'-',i2.2,' 00:00:00')"),&
143 yyears0,mmois0,jjour0
144 CALL cre_var(nid,
"temps",
"Temps de simulation",[timid],unites)
145 CALL cre_var(nid,
"ucov" ,
"Vitesse U" ,[rlonuid,rlatuid,sid,timid])
146 CALL cre_var(nid,
"vcov" ,
"Vitesse V" ,[rlonvid,rlatvid,sid,timid])
147 CALL cre_var(nid,
"teta" ,
"Temperature",[rlonvid,rlatuid,sid,timid])
151 CALL cre_var(nid,
"masse",
"Masse d air" ,[rlonvid,rlatuid,sid,timid])
152 CALL cre_var(nid,
"ps" ,
"Pression au sol",[rlonvid,rlatuid ,timid])
153 CALL err(nf90_close(nid))
156 WRITE(
lunout,*)trim(
modname)//
': rad,omeg,g,cpp,kappa',
rad,omeg,
g,
cpp,
kappa
165 SUBROUTINE dynredem1_loc(fichnom,time,vcov,ucov,teta,q,masse,ps)
174 USE netcdf
, ONLY: nf90_open, nf90_nowrite, nf90_get_var, nf90_inq_varid, &
175 nf90_close, nf90_write, nf90_put_var, nf90_noerr
179 include
"dimensions.h"
181 include
"description.h"
188 CHARACTER(LEN=*),
INTENT(IN) :: fichnom
189 REAL,
INTENT(IN) :: time
198 INTEGER :: l, iq, nid, vID, ierr, nid_trac, vID_trac
199 INTEGER,
SAVE :: nb=0
200 INTEGER,
PARAMETER :: length=100
201 REAL :: tab_cntrl(length)
202 CHARACTER(LEN=256) :: var, dum
203 LOGICAL :: lread_inca
210 CALL err(nf90_open(
fil,nf90_write,nid),
"open",
fil)
215 CALL err(nf90_inq_varid(nid,var,vid),
"inq",var)
216 CALL err(nf90_put_var(nid,vid,[time]),
"put",var)
221 CALL err(nf90_inq_varid(nid,var,vid),
"inq",var)
222 CALL err(nf90_get_var(nid,vid,tab_cntrl),
"get",var)
224 CALL err(nf90_inq_varid(nid,var,vid),
"inq",var)
225 CALL err(nf90_put_var(nid,vid,tab_cntrl),
"put",var)
238 lread_inca=.
false.;
fil=
"start_trac.nc"
239 IF(
type_trac==
'inca')
INQUIRE(file=
fil,exist=lread_inca)
240 IF(lread_inca)
CALL err(nf90_open(
fil,nf90_nowrite,nid_trac),
"open")
249 ierr=nf90_inq_varid(nid_trac,var,vid_trac)
250 dum=
'inq';
IF(ierr==nf90_noerr) dum=
'fnd'
262 CALL err(nf90_close(nid),
"close")
264 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
!$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
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
!$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 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
subroutine dynredem1_loc(fichnom, time, vcov, ucov, teta, q, masse, ps)
!$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)
subroutine gather_field_u(field_loc, field_glo, 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
!$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
subroutine, public put_var(ncid, var, title, did, v, units)
!$Header!CDK comgeom COMMON comgeom cv
subroutine dynredem0_loc(fichnom, iday_end, phis)
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