60 #include "dimensions.h"
63 #include "comdissnew.h"
69 #include "description.h"
73 #include "tracstoke.h"
77 #include "indicesol.h"
82 REAL clesphy0( longcles )
92 REAL,
ALLOCATABLE,
DIMENSION(:,:,:) ::
q
115 real time_step, t_wrt, t_ops
119 data call_iniphys/.true./
134 character (len=80) :: dynhist_file, dynhistave_file
135 character (len=20) :: modname
136 character (len=80) :: abort_message
138 INTEGER :: an, mois, jour
147 REAL zcufi(ngridmx),zcvfi(ngridmx)
148 REAL latfi(ngridmx),lonfi(ngridmx)
159 abort_message =
'last timestep reached'
161 descript =
'Run GCM LMDZ'
163 dynhist_file =
'dyn_hist'
164 dynhistave_file =
'dyn_hist_ave'
174 CALL
conf_gcm( 99, .true. , clesphy0 )
194 CALL init_interface_dyn_phys
218 if (calend ==
'earth_360d')
then
219 call ioconf_calendar(
'360d')
220 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 360 jours/an'
221 else if (calend ==
'earth_365d')
then
222 call ioconf_calendar(
'noleap')
223 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 365 jours/an'
224 else if (calend ==
'earth_366d')
then
225 call ioconf_calendar(
'gregorian')
226 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre bissextile'
228 abort_message =
'Mauvais choix de calendrier'
233 IF (type_trac ==
'inca')
THEN
235 call init_const_lmdz(
236 $ nbtr,anneeref,dayref,
237 $ iphysiq,day_step,nday,
238 $ nbsrf, is_oce,is_sic,
242 $
iim,jjm+1,llm,klon_glo,mpi_size,
243 $ distrib_phys,comm_lmdz)
285 .
'GCM: AVANT iniacademic AVANT AVANT AVANT AVANT'
295 IF(mod(day_step,iperiod).NE.0)
THEN
297 .
'Il faut choisir un nb de pas par jour multiple de iperiod'
301 IF(mod(day_step,iphysiq).NE.0)
THEN
303 *
'Il faut choisir un nb de pas par jour multiple de iphysiq'
307 zdtvr =
daysec/
REAL(day_step)
308 IF(
dtvr.NE.zdtvr)
THEN
310 .
'WARNING!!! changement de pas de temps',
dtvr,
'>',zdtvr
317 WRITE(
lunout,*)
' GCM: Attention l''heure de depart lue dans le'
318 &,
' fichier restart ne correspond pas à celle lue dans le run.def'
319 IF (raz_date == 1)
then
320 WRITE(
lunout,*)
'Je prends l''heure lue dans run.def'
323 WRITE(
lunout,*)
'Je m''arrete'
327 IF (raz_date == 1)
THEN
335 .
'GCM: On reinitialise a la date lue dans gcm.def'
338 .
'GCM: Attention les dates initiales lues dans le fichier'
340 .
' restart ne correspondent pas a celles lues dans '
344 write(
lunout,*)
' Pas de remise a zero'
375 jh_ref = jd_ref - int(jd_ref)
378 call ioconf_startdate(int(jd_ref), jh_ref)
381 write(
lunout,*)
'annee_ref, mois, day_ref, heure, jD_ref'
383 call ju2ymds(jd_ref+jh_ref,an, mois, jour, heure)
384 write(
lunout,*)
'jD_ref+jH_ref,an, mois, jour, heure'
385 write(
lunout,*)jd_ref+jh_ref,an, mois, jour, heure
445 .
'GCM: WARNING!!! vitesse verticale nulle dans la physique'
459 IF (type_trac ==
'inca')
THEN
462 CALL init_inca_dim(klon_omp,llm,
iim,jjm,
475 300
FORMAT(
'1'/,15
x,
'run du jour',i7,2
x,
'au jour',i7//)
479 write (
lunout,301)jour, mois, an
481 write (
lunout,302)jour, mois, an
482 301
FORMAT(
'1'/,15
x,
'run du ', i2,
'/',i2,
'/',i4)
483 302
FORMAT(
'1'/,15
x,
' au ', i2,
'/',i2,
'/',i4)
495 IF (mpi_rank==0)
then
499 t_ops =((1.0*iecri)/day_step) *
daysec
508 t_ops = iperiod * time_step