68 include
"dimensions.h"
71 include
"comdissnew.h"
78 include
"description.h"
89 REAL,
ALLOCATABLE,
DIMENSION(:,:,:):: q
108 real time_step, t_wrt, t_ops
123 CHARACTER (len=15) :: ztit
127 character (len=80) :: dynhist_file, dynhistave_file
128 character (len=20) :: modname
129 character (len=80) :: abort_message
131 INTEGER :: an, mois, jour
133 logical use_filtre_fft
139 abort_message =
'last timestep reached'
141 descript =
'Run GCM LMDZ'
143 dynhist_file =
'dyn_hist.nc'
144 dynhistave_file =
'dyn_hist_ave.nc'
155 "iphysiq must be a multiple of iperiod", 1)
157 use_filtre_fft=.
false.
158 CALL getin(
'use_filtre_fft',use_filtre_fft)
159 IF (use_filtre_fft)
call abort_gcm(
'FFT filter is not available in the ' &
160 //
'sequential version of the dynamics.', 1)
167 CALL wxios_init(
"LMDZ")
187 if (calend ==
'earth_360d')
then
188 call ioconf_calendar(
'360d')
189 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 360 jours/an'
190 else if (calend ==
'earth_365d')
then
191 call ioconf_calendar(
'noleap')
192 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 365 jours/an'
193 else if (calend ==
'gregorian')
then
194 call ioconf_calendar(
'gregorian')
195 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre bissextile'
197 abort_message =
'Mauvais choix de calendrier'
229 CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
234 CALL dynetat0(
"start.nc",vcov,ucov, &
235 teta,q,masse,ps,phis, time_0)
249 'GCM: AVANT iniacademic AVANT AVANT AVANT AVANT'
251 CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
262 'Il faut choisir un nb de pas par jour multiple de iperiod'
268 'Il faut choisir un nb de pas par jour multiple de iphysiq'
273 IF(
dtvr.NE.zdtvr)
THEN
275 'WARNING!!! changement de pas de temps',
dtvr,
'>',zdtvr
282 WRITE(
lunout,*)
' GCM: Attention l''heure de depart lue dans le' &
283 ,
' fichier restart ne correspond pas a celle lue dans le run.def'
285 WRITE(
lunout,*)
'Je prends l''heure lue dans run.def'
288 call abort_gcm(
"gcm",
"'Je m''arrete'", 1)
299 'GCM: On reinitialise a la date lue dans gcm.def'
302 'GCM: Attention les dates initiales lues dans le fichier'
304 ' restart ne correspondent pas a celles lues dans '
308 write(
lunout,*)
' Pas de remise a zero'
340 jh_ref = jd_ref - int(jd_ref)
343 call ioconf_startdate(int(jd_ref), jh_ref)
346 write(
lunout,*)
'annee_ref, mois, day_ref, heure, jD_ref'
348 call ju2ymds(jd_ref+jh_ref,an, mois, jour, heure)
349 write(
lunout,*)
'jD_ref+jH_ref,an, mois, jour, heure'
350 write(
lunout,*)jd_ref+jh_ref,an, mois, jour, heure
397 rlatu,
rlatv,
rlonu,
rlonv,
aire,
cu,
cv,
rad,
g,
r,
cpp, &
415 300
FORMAT(
'1'/,15
x,
'run du jour',i7,2
x,
'au jour',i7//)
419 write (
lunout,301)jour, mois, an
421 write (
lunout,302)jour, mois, an
422 301
FORMAT(
'1'/,15
x,
'run du ', i2,
'/',i2,
'/',i4)
423 302
FORMAT(
'1'/,15
x,
' au ', i2,
'/',i2,
'/',i4)
475 CALL leapfrog(ucov,vcov,teta,ps,masse,phis,q,time_0)
!$Header llmm1 INTEGER ip1jmp1
subroutine iniphysiq(iim, jjm, nlayer, nbp, communicator, punjours, pdayref, ptimestep, rlatu, rlatv, rlonu, rlonv, aire, cu, cv, prad, pg, pr, pcpp, iflag_phys)
!$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 r
subroutine dynetat0(fichnom, vcov, ucov, teta, q, masse, ps, phis, time)
!$Id mode_top_bound COMMON comconstr g
!$Header!common tracstoke istphy
subroutine dynredem0(fichnom, iday_end, phis)
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 ysinus ok_gradsfile hybrid COMMON logici iflag_phys
!$Header llmm1 INTEGER ip1jm
!$Id mode_top_bound COMMON comconstr dtphys
!$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
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
!$Id mode_top_bound COMMON comconstr daysec
subroutine conf_gcm(tapedef, etatinit)
!$Header!CDK comgeom COMMON comgeom rlonu
!$Header!CDK comgeom COMMON comgeom rlatv
subroutine inithist(day0, anne0, tstep, t_ops, t_wrt)
!$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
!$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
!$Id mode_top_bound COMMON comconstr dtvr
integer, save nsplit_phys
!$Header!INCLUDE comdissip h COMMON comdissip tetatemp
subroutine leapfrog(ucov, vcov, teta, ps, masse, phis, q, time_0)
c c zjulian c cym CALL iim cym klev iim
subroutine iniacademic(vcov, ucov, teta, q, masse, ps, phis, time_0)
subroutine inidissip(lstardis, nitergdiv, nitergrot, niterh, tetagdiv, tetagrot, tetatemp, vert_prof_dissip)
!$Header!common tracstoke istdyn
!$Header!CDK comgeom COMMON comgeom cv
subroutine initdynav(day0, anne0, tstep, t_ops, t_wrt)
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
!$Header!CDK comgeom COMMON comgeom rlonv