54 include
"dimensions.h"
57 include
"comdissnew.h"
63 include
"description.h"
73 REAL,
ALLOCATABLE,
SAVE :: vcov(:,:),ucov(:,:)
74 REAL,
ALLOCATABLE,
SAVE :: teta(:,:)
75 REAL,
ALLOCATABLE,
SAVE :: q(:,:,:)
76 REAL,
ALLOCATABLE,
SAVE :: ps(:)
78 REAL,
ALLOCATABLE,
SAVE :: masse(:,:)
79 REAL,
ALLOCATABLE,
SAVE :: phis(:)
92 real time_step, t_wrt, t_ops
106 character (len=80) :: dynhist_file, dynhistave_file
107 character (len=20) :: modname
108 character (len=80) :: abort_message
110 INTEGER :: an, mois, jour
118 abort_message =
'last timestep reached'
120 descript =
'Run GCM LMDZ'
122 dynhist_file =
'dyn_hist'
123 dynhistave_file =
'dyn_hist_ave'
133 "iphysiq must be a multiple of iperiod", 1)
174 if (calend ==
'earth_360d')
then
175 call ioconf_calendar(
'360d')
176 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 360 jours/an'
177 else if (calend ==
'earth_365d')
then
178 call ioconf_calendar(
'noleap')
179 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 365 jours/an'
180 else if (calend ==
'gregorian')
then
181 call ioconf_calendar(
'gregorian')
182 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre bissextile'
184 abort_message =
'Mauvais choix de calendrier'
221 teta,q,masse,ps,phis, time_0)
234 'GCM: AVANT iniacademic AVANT AVANT AVANT AVANT'
246 'Il faut choisir un nb de pas par jour multiple de iperiod'
252 'Il faut choisir un nb de pas par jour multiple de iphysiq'
257 IF(
dtvr.NE.zdtvr)
THEN
259 'WARNING!!! changement de pas de temps',
dtvr,
'>',zdtvr
266 WRITE(
lunout,*)
' GCM: Attention l''heure de depart lue dans le' &
267 ,
' fichier restart ne correspond pas a celle lue dans le run.def'
269 WRITE(
lunout,*)
'Je prends l''heure lue dans run.def'
272 WRITE(
lunout,*)
'Je m''arrete'
284 'GCM: On reinitialise a la date lue dans gcm.def'
287 'GCM: Attention les dates initiales lues dans le fichier'
289 ' restart ne correspondent pas a celles lues dans '
293 write(
lunout,*)
' Pas de remise a zero'
324 jh_ref = jd_ref - int(jd_ref)
327 call ioconf_startdate(int(jd_ref), jh_ref)
330 write(
lunout,*)
'annee_ref, mois, day_ref, heure, jD_ref'
332 call ju2ymds(jd_ref+jh_ref,an, mois, jour, heure)
333 write(
lunout,*)
'jD_ref+jH_ref,an, mois, jour, heure'
334 write(
lunout,*)jd_ref+jh_ref,an, mois, jour, heure
379 rlatu,
rlatv,
rlonu,
rlonv,
aire,
cu,
cv,
rad,
g,
r,
cpp, &
397 300
FORMAT(
'1'/,15
x,
'run du jour',i7,2
x,
'au jour',i7//)
401 write (
lunout,301)jour, mois, an
403 write (
lunout,302)jour, mois, an
404 301
FORMAT(
'1'/,15
x,
'run du ', i2,
'/',i2,
'/',i4)
405 302
FORMAT(
'1'/,15
x,
' au ', i2,
'/',i2,
'/',i4)
458 CALL leapfrog_loc(ucov,vcov,teta,ps,masse,phis,q,time_0)
integer, dimension(:), allocatable distrib_phys
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
!$Id mode_top_bound COMMON comconstr g
!$Header!common tracstoke istphy
subroutine leapfrog_loc(ucov0, vcov0, teta0, ps0, masse0, phis0, q0, time_0)
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
subroutine init_mod_hallo
subroutine init_const_mpi
!$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
subroutine iniacademic_loc(vcov, ucov, teta, q, masse, ps, phis, time_0)
!$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 set_distrib(d)
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
c c zjulian c cym CALL iim cym klev iim
subroutine inidissip(lstardis, nitergdiv, nitergrot, niterh, tetagdiv, tetagrot, tetatemp, vert_prof_dissip)
!$Header!common tracstoke istdyn
subroutine dynetat0_loc(fichnom, vcov, ucov, teta, q, masse, ps, phis, time)
!$Header!CDK comgeom COMMON comgeom cv
subroutine dynredem0_loc(fichnom, iday_end, phis)
type(distrib), target, save distrib_caldyn
subroutine initdynav_loc(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