4 SUBROUTINE dynetat0(fichnom,vcov,ucov,
5 . teta,q,masse,ps,
phis,time)
8 use netcdf
, only: nf90_get_var
29 #include "dimensions.h"
37 #include "description.h"
56 REAL tab_cntrl(length)
57 INTEGER ierr, nid, nvarid
65 ierr = nf_open(fichnom, nf_nowrite,nid)
66 IF (ierr.NE.nf_noerr)
THEN
67 write(
lunout,*)
'dynetat0: Pb d''ouverture du fichier start.nc'
68 write(
lunout,*)
' ierr = ', ierr
73 ierr = nf_inq_varid(nid,
"controle", nvarid)
74 IF (ierr .NE. nf_noerr)
THEN
75 write(
lunout,*)
"dynetat0: Le champ <controle> est absent"
78 ierr = nf90_get_var(nid, nvarid, tab_cntrl)
79 IF (ierr .NE. nf_noerr)
THEN
80 write(
lunout,*)
"dynetat0: Lecture echoue pour <controle>"
87 print*,
'NOTE NOTE NOTE : Planeto-like start files'
91 print*,
'NOTE NOTE NOTE : Earth-like start files'
101 rad = tab_cntrl(idecal+1)
102 omeg = tab_cntrl(idecal+2)
103 g = tab_cntrl(idecal+3)
104 cpp = tab_cntrl(idecal+4)
105 kappa = tab_cntrl(idecal+5)
106 daysec = tab_cntrl(idecal+6)
107 dtvr = tab_cntrl(idecal+7)
108 etot0 = tab_cntrl(idecal+8)
109 ptot0 = tab_cntrl(idecal+9)
110 ztot0 = tab_cntrl(idecal+10)
111 stot0 = tab_cntrl(idecal+11)
112 ang0 = tab_cntrl(idecal+12)
113 pa = tab_cntrl(idecal+13)
114 preff = tab_cntrl(idecal+14)
116 clon = tab_cntrl(idecal+15)
117 clat = tab_cntrl(idecal+16)
121 IF ( tab_cntrl(idecal+19).EQ.1. )
THEN
130 IF( tab_cntrl(idecal+22).EQ.1. ) ysinus = .
true.
139 write(
lunout,*)
'dynetat0: rad,omeg,g,cpp,kappa',
145 ELSE IF(
jm.ne.jjm )
THEN
153 ierr = nf_inq_varid(nid,
"rlonu", nvarid)
154 IF (ierr .NE. nf_noerr)
THEN
155 write(
lunout,*)
"dynetat0: Le champ <rlonu> est absent"
158 ierr = nf90_get_var(nid, nvarid,
rlonu)
159 IF (ierr .NE. nf_noerr)
THEN
160 write(
lunout,*)
"dynetat0: Lecture echouee pour <rlonu>"
164 ierr = nf_inq_varid(nid,
"rlatu", nvarid)
165 IF (ierr .NE. nf_noerr)
THEN
166 write(
lunout,*)
"dynetat0: Le champ <rlatu> est absent"
169 ierr = nf90_get_var(nid, nvarid,
rlatu)
170 IF (ierr .NE. nf_noerr)
THEN
171 write(
lunout,*)
"dynetat0: Lecture echouee pour <rlatu>"
175 ierr = nf_inq_varid(nid,
"rlonv", nvarid)
176 IF (ierr .NE. nf_noerr)
THEN
177 write(
lunout,*)
"dynetat0: Le champ <rlonv> est absent"
180 ierr = nf90_get_var(nid, nvarid,
rlonv)
181 IF (ierr .NE. nf_noerr)
THEN
182 write(
lunout,*)
"dynetat0: Lecture echouee pour <rlonv>"
186 ierr = nf_inq_varid(nid,
"rlatv", nvarid)
187 IF (ierr .NE. nf_noerr)
THEN
188 write(
lunout,*)
"dynetat0: Le champ <rlatv> est absent"
191 ierr = nf90_get_var(nid, nvarid,
rlatv)
192 IF (ierr .NE. nf_noerr)
THEN
193 write(
lunout,*)
"dynetat0: Lecture echouee pour rlatv"
197 ierr = nf_inq_varid(nid,
"cu", nvarid)
198 IF (ierr .NE. nf_noerr)
THEN
199 write(
lunout,*)
"dynetat0: Le champ <cu> est absent"
202 ierr = nf90_get_var(nid, nvarid,
cu)
203 IF (ierr .NE. nf_noerr)
THEN
204 write(
lunout,*)
"dynetat0: Lecture echouee pour <cu>"
208 ierr = nf_inq_varid(nid,
"cv", nvarid)
209 IF (ierr .NE. nf_noerr)
THEN
210 write(
lunout,*)
"dynetat0: Le champ <cv> est absent"
213 ierr = nf90_get_var(nid, nvarid,
cv)
214 IF (ierr .NE. nf_noerr)
THEN
215 write(
lunout,*)
"dynetat0: Lecture echouee pour <cv>"
219 ierr = nf_inq_varid(nid,
"aire", nvarid)
220 IF (ierr .NE. nf_noerr)
THEN
221 write(
lunout,*)
"dynetat0: Le champ <aire> est absent"
224 ierr = nf90_get_var(nid, nvarid,
aire)
225 IF (ierr .NE. nf_noerr)
THEN
226 write(
lunout,*)
"dynetat0: Lecture echouee pour <aire>"
230 ierr = nf_inq_varid(nid,
"phisinit", nvarid)
231 IF (ierr .NE. nf_noerr)
THEN
232 write(
lunout,*)
"dynetat0: Le champ <phisinit> est absent"
235 ierr = nf90_get_var(nid, nvarid, phis)
236 IF (ierr .NE. nf_noerr)
THEN
237 write(
lunout,*)
"dynetat0: Lecture echouee pour <phisinit>"
241 ierr = nf_inq_varid(nid,
"temps", nvarid)
242 IF (ierr .NE. nf_noerr)
THEN
243 write(
lunout,*)
"dynetat0: Le champ <temps> est absent"
244 write(
lunout,*)
"dynetat0: J essaie <Time>"
245 ierr = nf_inq_varid(nid,
"Time", nvarid)
246 IF (ierr .NE. nf_noerr)
THEN
247 write(
lunout,*)
"dynetat0: Le champ <Time> est absent"
251 ierr = nf90_get_var(nid, nvarid, time)
252 IF (ierr .NE. nf_noerr)
THEN
253 write(
lunout,*)
"dynetat0: Lecture echouee <temps>"
257 ierr = nf_inq_varid(nid,
"ucov", nvarid)
258 IF (ierr .NE. nf_noerr)
THEN
259 write(
lunout,*)
"dynetat0: Le champ <ucov> est absent"
262 ierr = nf90_get_var(nid, nvarid, ucov)
263 IF (ierr .NE. nf_noerr)
THEN
264 write(
lunout,*)
"dynetat0: Lecture echouee pour <ucov>"
268 ierr = nf_inq_varid(nid,
"vcov", nvarid)
269 IF (ierr .NE. nf_noerr)
THEN
270 write(
lunout,*)
"dynetat0: Le champ <vcov> est absent"
273 ierr = nf90_get_var(nid, nvarid, vcov)
274 IF (ierr .NE. nf_noerr)
THEN
275 write(
lunout,*)
"dynetat0: Lecture echouee pour <vcov>"
279 ierr = nf_inq_varid(nid,
"teta", nvarid)
280 IF (ierr .NE. nf_noerr)
THEN
281 write(
lunout,*)
"dynetat0: Le champ <teta> est absent"
284 ierr = nf90_get_var(nid, nvarid, teta)
285 IF (ierr .NE. nf_noerr)
THEN
286 write(
lunout,*)
"dynetat0: Lecture echouee pour <teta>"
293 ierr = nf_inq_varid(nid,
tname(iq), nvarid)
294 IF (ierr .NE. nf_noerr)
THEN
295 write(
lunout,*)
"dynetat0: Le traceur <"//trim(
tname(iq))//
297 write(
lunout,*)
" Il est donc initialise a zero"
300 ierr = nf90_get_var(nid, nvarid, q(:,:,:,iq))
301 IF (ierr .NE. nf_noerr)
THEN
302 write(
lunout,*)
"dynetat0: Lecture echouee pour "//
tname(iq)
309 ierr = nf_inq_varid(nid,
"masse", nvarid)
310 IF (ierr .NE. nf_noerr)
THEN
311 write(
lunout,*)
"dynetat0: Le champ <masse> est absent"
314 ierr = nf90_get_var(nid, nvarid, masse)
315 IF (ierr .NE. nf_noerr)
THEN
316 write(
lunout,*)
"dynetat0: Lecture echouee pour <masse>"
320 ierr = nf_inq_varid(nid,
"ps", nvarid)
321 IF (ierr .NE. nf_noerr)
THEN
322 write(
lunout,*)
"dynetat0: Le champ <ps> est absent"
325 ierr = nf90_get_var(nid, nvarid, ps)
326 IF (ierr .NE. nf_noerr)
THEN
327 write(
lunout,*)
"dynetat0: Lecture echouee pour <ps>"
336 1
FORMAT(//10
x,
'la valeur de im =',i4,2
x,
'lue sur le fichier de dem
337 *arrage est differente de la valeur parametree iim =',i4//)
338 2
FORMAT(//10
x,
'la valeur de jm =',i4,2
x,
'lue sur le fichier de dem
339 *arrage est differente de la valeur parametree jjm =',i4//)
340 3
FORMAT(//10
x,
'la valeur de lmax =',i4,2
x,
'lue sur le fichier dema
341 *rrage est differente de la valeur parametree llm =',i4//)
342 4
FORMAT(//10
x,
'la valeur de dtrv =',i4,2
x,
'lue sur le fichier dema
343 *rrage est differente de la valeur dtinteg =',i4//)
!$Header!c!c!c include serre h!c REAL && grossismx
subroutine dynetat0(fichnom, vcov, ucov, teta, q, masse, ps, phis, time)
!$Id mode_top_bound COMMON comconstr g
!$Id mode_top_bound COMMON comconstr kappa
!$Header!c!c!c include serre h!c REAL clon
!$Id mode_top_bound COMMON comconstr omeg dissip_zref ihf INTEGER im
character(len=10), save planet_type
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
!$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
!$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
!$Id ***************************************!ECRITURE DU phis
!$Header!c c INCLUDE fxyprim h c c c Fonctions in line c c REAL fyprim REAL rj c c il faut la calculer avant d appeler ces fonctions c c c Fonctions a changer selon x(x) et y(y) choisis.c-----------------------------------------------------------------c c.....ici
character(len=20), dimension(:), allocatable, save tname
!$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 ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
!$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 grossismy
!$Id mode_top_bound COMMON comconstr dtvr
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