62 #include "dimensions.h"
65 #include "comdissnew.h"
72 #include "description.h"
76 #include "tracstoke.h"
79 #include "indicesol.h"
83 REAL clesphy0( longcles )
93 REAL,
ALLOCATABLE,
DIMENSION(:,:,:)::
q
115 real time_step, t_wrt, t_ops
120 data call_iniphys/.true./
131 CHARACTER (len=15) :: ztit
135 character (len=80) :: dynhist_file, dynhistave_file
136 character (len=20) :: modname
137 character (len=80) :: abort_message
139 INTEGER :: an, mois, jour
148 REAL zcufi(ngridmx),zcvfi(ngridmx)
149 REAL latfi(ngridmx),lonfi(ngridmx)
157 abort_message =
'last timestep reached'
159 descript =
'Run GCM LMDZ'
161 dynhist_file =
'dyn_hist.nc'
162 dynhistave_file =
'dyn_hist_ave.nc'
172 CALL
conf_gcm( 99, .true. , clesphy0 )
193 if (calend ==
'earth_360d')
then
194 call ioconf_calendar(
'360d')
195 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 360 jours/an'
196 else if (calend ==
'earth_365d')
then
197 call ioconf_calendar(
'noleap')
198 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 365 jours/an'
199 else if (calend ==
'earth_366d')
then
200 call ioconf_calendar(
'gregorian')
201 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre bissextile'
203 abort_message =
'Mauvais choix de calendrier'
209 IF (type_trac ==
'inca')
THEN
211 call init_const_lmdz(nbtr,anneeref,dayref,iphysiq,day_step,nday,
212 $ nbsrf, is_oce,is_sic,is_ter,is_lic)
213 call init_inca_para(
iim,jjm+1,klon,1,klon_mpi_para_nb,0)
260 IF (type_trac ==
'inca')
THEN
262 call init_inca_dim(klon,llm,
iim,jjm,
270 .
'GCM: AVANT iniacademic AVANT AVANT AVANT AVANT'
281 IF(mod(day_step,iperiod).NE.0)
THEN
283 .
'Il faut choisir un nb de pas par jour multiple de iperiod'
287 IF(mod(day_step,iphysiq).NE.0)
THEN
289 *
'Il faut choisir un nb de pas par jour multiple de iphysiq'
293 zdtvr =
daysec/
REAL(day_step)
294 IF(
dtvr.NE.zdtvr)
THEN
296 .
'WARNING!!! changement de pas de temps',
dtvr,
'>',zdtvr
303 WRITE(
lunout,*)
' GCM: Attention l''heure de depart lue dans le'
304 &,
' fichier restart ne correspond pas à celle lue dans le run.def'
305 IF (raz_date == 1)
then
306 WRITE(
lunout,*)
'Je prends l''heure lue dans run.def'
309 WRITE(
lunout,*)
'Je m''arrete'
313 IF (raz_date == 1)
THEN
321 .
'GCM: On reinitialise a la date lue dans gcm.def'
324 .
'GCM: Attention les dates initiales lues dans le fichier'
326 .
' restart ne correspondent pas a celles lues dans '
330 write(
lunout,*)
' Pas de remise a zero'
362 jh_ref = jd_ref - int(jd_ref)
365 call ioconf_startdate(int(jd_ref), jh_ref)
368 write(
lunout,*)
'annee_ref, mois, day_ref, heure, jD_ref'
370 call ju2ymds(jd_ref+jh_ref,an, mois, jour, heure)
371 write(
lunout,*)
'jD_ref+jH_ref,an, mois, jour, heure'
372 write(
lunout,*)jd_ref+jh_ref,an, mois, jour, heure
432 .
'GCM: WARNING!!! vitesse verticale nulle dans la physique'
451 300
FORMAT(
'1'/,15
x,
'run du jour',i7,2
x,
'au jour',i7//)
455 write (
lunout,301)jour, mois, an
457 write (
lunout,302)jour, mois, an
458 301
FORMAT(
'1'/,15
x,
'run du ', i2,
'/',i2,
'/',i4)
459 302
FORMAT(
'1'/,15
x,
' au ', i2,
'/',i2,
'/',i4)
475 t_ops =((1.0*iecri)/day_step) *
daysec
483 t_ops = iperiod * time_step