65 #include "dimensions.h"
68 #include "comdissnew.h"
74 #include "description.h"
78 #include "tracstoke.h"
90 REAL,
ALLOCATABLE,
DIMENSION(:,:,:) :: q
107 real time_step, t_wrt, t_ops
122 character (len=80) :: dynhist_file, dynhistave_file
123 character (len=20) :: modname
124 character (len=80) :: abort_message
126 INTEGER :: an, mois, jour
134 abort_message =
'last timestep reached'
136 descript =
'Run GCM LMDZ'
138 dynhist_file =
'dyn_hist'
139 dynhistave_file =
'dyn_hist_ave'
149 s
"iphysiq must be a multiple of iperiod", 1)
196 if (calend ==
'earth_360d')
then
197 call ioconf_calendar(
'360d')
198 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 360 jours/an'
199 else if (calend ==
'earth_365d')
then
200 call ioconf_calendar(
'noleap')
201 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre a 365 jours/an'
202 else if (calend ==
'earth_366d')
then
203 call ioconf_calendar(
'gregorian')
204 write(
lunout,*)
'CALENDRIER CHOISI: Terrestre bissextile'
206 abort_message =
'Mauvais choix de calendrier'
213 call init_const_lmdz(
244 CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
250 & teta,q,masse,ps,phis, time_0)
263 .
'GCM: AVANT iniacademic AVANT AVANT AVANT AVANT'
265 CALL iniacademic(vcov,ucov,teta,q,masse,ps,phis,time_0)
275 .
'Il faut choisir un nb de pas par jour multiple de iperiod'
281 *
'Il faut choisir un nb de pas par jour multiple de iphysiq'
286 IF(
dtvr.NE.zdtvr)
THEN
288 .
'WARNING!!! changement de pas de temps',
dtvr,
'>',zdtvr
295 WRITE(
lunout,*)
' GCM: Attention l''heure de depart lue dans le'
296 &,
' fichier restart ne correspond pas à celle lue dans le run.def'
298 WRITE(
lunout,*)
'Je prends l''heure lue dans run.def'
301 call abort_gcm(
"gcm",
"'Je m''arrete'", 1)
312 .
'GCM: On reinitialise a la date lue dans gcm.def'
315 .
'GCM: Attention les dates initiales lues dans le fichier'
317 .
' restart ne correspondent pas a celles lues dans '
321 write(
lunout,*)
' Pas de remise a zero'
352 jh_ref = jd_ref - int(jd_ref)
355 call ioconf_startdate(int(jd_ref), jh_ref)
358 write(
lunout,*)
'annee_ref, mois, day_ref, heure, jD_ref'
360 call ju2ymds(jd_ref+jh_ref,an, mois, jour, heure)
361 write(
lunout,*)
'jD_ref+jH_ref,an, mois, jour, heure'
362 write(
lunout,*)jd_ref+jh_ref,an, mois, jour, heure
408 &
rlatu,
rlatv,
rlonu,
rlonv,
aire,
cu,
cv,
rad,
g,
r,
cpp,
438 300
FORMAT(
'1'/,15
x,
'run du jour',i7,2
x,
'au jour',i7//)
442 write (
lunout,301)jour, mois, an
444 write (
lunout,302)jour, mois, an
445 301
FORMAT(
'1'/,15
x,
'run du ', i2,
'/',i2,
'/',i4)
446 302
FORMAT(
'1'/,15
x,
' au ', i2,
'/',i2,
'/',i4)
502 CALL leapfrog_p(ucov,vcov,teta,ps,masse,phis,q,time_0)
integer, dimension(:), allocatable distrib_phys
!$Header llmm1 INTEGER ip1jmp1
subroutine dynredem0_p(fichnom, iday_end, phis)
subroutine iniphysiq(iim, jjm, nlayer, nbp, communicator, punjours, pdayref, ptimestep, rlatu, rlatv, rlonu, rlonv, aire, cu, cv, prad, pg, pr, pcpp, iflag_phys)
integer, parameter is_ter
!$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
integer, dimension(:), allocatable jj_nb_caldyn
subroutine dynetat0(fichnom, vcov, ucov, teta, q, masse, ps, phis, time)
!$Id mode_top_bound COMMON comconstr g
!$Header!common tracstoke istphy
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
subroutine ini_getparam(fichier)
!$Header!CDK comgeom COMMON comgeom rlatu
!$Id ysinus ok_gradsfile hybrid COMMON logici iflag_phys
subroutine leapfrog_p(ucov, vcov, teta, ps, masse, phis, q, time_0)
subroutine init_mod_hallo
subroutine init_const_mpi
!$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
integer, parameter is_lic
!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
character(len=4), save type_trac
!$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
subroutine setdistrib(jj_Nb_New)
!$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 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
integer, parameter is_sic
!$Header!CDK comgeom COMMON comgeom cv
integer, parameter is_oce
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