11 & masse0,phis0,q0,time_0)
67 #include "dimensions.h"
70 #include "comdissnew.h"
76 #include "description.h"
83 REAL,
INTENT(IN) :: time_0
121 REAL,
SAVE,
ALLOCATABLE :: dvfi(:,:),dufi(:,:)
122 REAL,
SAVE,
ALLOCATABLE :: dtetafi(:,:)
123 REAL,
SAVE,
ALLOCATABLE :: dpfi(:)
124 REAL,
DIMENSION(:,:,:),
ALLOCATABLE,
SAVE :: dqfi
129 REAL tppn(
iim),tpps(
iim),tpn,tps
131 INTEGER itau,itaufinp1,iav
143 real time_step, t_wrt, t_ops
147 REAL :: jD_cur, jH_cur
148 INTEGER :: an, mois, jour
152 LOGICAL first,callinigrads
154 data callinigrads/.
true./
155 character*10 string10
167 REAL d_h_vcol, d_qt, d_qw, d_ql, d_ec
174 character*80 dynhist_file, dynhistave_file
175 character(len=*),
parameter :: modname=
"leapfrog_loc"
176 character*80 abort_message
179 logical,
PARAMETER :: dissip_conservative=.
true.
184 logical ,
parameter :: flag_verif = .
false.
188 LOGICAL :: FirstCaldyn
189 LOGICAL :: FirstPhysic
190 INTEGER :: ijb,ije,j,i
192 type(
request) :: Request_Dissip
193 type(
request) :: Request_physic
197 INTEGER :: AdjustCount
199 LOGICAL :: ok_start_timer=.
false.
200 LOGICAL,
SAVE :: firstcall=.
true.
299 if (pressure_exner)
then
318 if (jh_cur > 1.0 )
then
347 if (firstcaldyn)
then
367 psm1(ijb:ije) =
ps(ijb:ije)
434 if (jh_cur > 1.0 )
then
476 if (firstcaldyn)
then
489 IF (ok_start_timer)
THEN
491 ok_start_timer=.
false.
502 adjustcount=adjustcount+1
505 if (adjustcount>1)
then
512 print *,
'*********************************'
513 print *,
'****** TIMER CALDYN ******'
516 &
' : temps moyen :',
521 print *,
'*********************************'
522 print *,
'****** TIMER VANLEER ******'
525 &
' : temps moyen :',
530 print *,
'*********************************'
531 print *,
'****** TIMER DISSIP ******'
534 &
' : temps moyen :',
670 true_itau=true_itau+1
674 WRITE(
lunout,*)
"leapfrog_p: Iteration No",true_itau
693 time = jd_cur + jh_cur
723 &
'leapfrog 686: avant caladvtrac')
736 &
'leapfrog 698: apres caladvtrac')
756 if (true_itau>20)
then
777 $
dv,
du,
dteta,
dq,
dp,
vcov,
ucov,
teta,
q,
ps,
masse,
phis)
1153 if (firstphysic)
then
1154 ok_start_timer=.
true.
1167 if (firstphysic)
then
1168 ok_start_timer=.
true.
1185 & (
teta(ijb:ije,l)-tetarappel(ijb:ije,l))*
1219 if (pressure_exner)
then
1488 print *,
'*********************************'
1489 print *,
'****** TIMER CALDYN ******'
1492 &
' : temps moyen :',
1496 print *,
'*********************************'
1497 print *,
'****** TIMER VANLEER ******'
1500 &
' : temps moyen :',
1504 print *,
'*********************************'
1505 print *,
'****** TIMER DISSIP ******'
1508 &
' : temps moyen :',
1512 print *,
'*********************************'
1513 print *,
'****** TIMER PHYSIC ******'
1516 &
' : temps moyen :',
1524 print *,
'Temps total ecoule sur la parallelisation :',
difftime()
1525 print *,
'Temps CPU ecoule sur la parallelisation :',
diffcputime()
1565 IF( itau. eq. itaufinp1 )
then
1567 if (flag_verif)
then
1568 write(79,*)
'ucov',
ucov
1569 write(80,*)
'vcov',
vcov
1570 write(81,*)
'teta',
teta
1573 WRITE(85,*)
'q1 = ',
q(:,:,1)
1574 WRITE(86,*)
'q3 = ',
q(:,:,3)
1589 abort_message =
'Simulation finished'
1609 ,
ps,
masse,
pk,
pbaru,
pbarv,
teta,
phi,
ucov,
vcov,
q)
1628 IF( mod(itau,
iecri).EQ.0)
THEN
1668 IF( mod(itau,
iperiod).EQ.0 )
THEN
1670 ELSE IF ( mod(itau-1,
iperiod). eq. 0 )
THEN
1719 IF( itau. eq. itaufinp1 )
then
1731 abort_message =
'Simulation finished'
1754 ,
ps,
masse,
pk,
pbaru,
pbarv,
teta,
phi,
ucov,
vcov,
q)
1765 IF(mod(itau,
iecri ).EQ.0)
THEN
1812 abort_message =
'Simulation finished'
real, dimension(:,:,:), pointer, save q
subroutine top_bound_loc(vcov, ucov, teta, masse, dt)
integer, save maxbuffersize_used
subroutine check_isotopes(q, ijb, ije, err_msg)
real, dimension(:,:,:), pointer, save dq
!$Header llmm1 INTEGER ip1jmp1
subroutine call_dissip(ucov_dyn, vcov_dyn, teta_dyn, p_dyn, pk_dyn, ps_dyn)
integer, parameter timer_physic
real, dimension(:,:), pointer, save pkf
integer, dimension(:), allocatable jj_nb_caldyn
subroutine adjustbands_dissip(new_dist)
subroutine bilan_dyn_loc(ntrac, dt_app, dt_cum, ps, masse, pk, flux_u, flux_v, teta, phi, ucov, vcov, trac)
real, dimension(:,:), pointer, save pbarv
subroutine stop_timer(no_timer)
real, dimension(:,:), pointer, save dv
subroutine exner_milieu_loc(ngrid, ps, p, pks, pk, pkf)
type(distrib), target, save distrib_dissip
double precision function difftime()
subroutine leapfrog_loc(ucov0, vcov0, teta0, ps0, masse0, phis0, q0, time_0)
real, dimension(:,:,:), allocatable timer_average
logical, save ok_iso_verif
!$Id calend INTEGER itaufin INTEGER itau_phy INTEGER day_ref REAL dt
subroutine massdair_loc(p, masse)
character(len=10), save planet_type
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
integer, parameter vtintegre
!$Header!CDK comgeom COMMON comgeom aire
integer, dimension(:), allocatable jj_nb_dissip
subroutine writehist_loc(time, vcov, ucov, teta, ppk, phi, q, masse, ps, phis)
!$Id ysinus ok_gradsfile hybrid COMMON logici iflag_phys
subroutine caladvtrac_loc(q, pbaru, pbarv, p, masse, dq, teta, flxw, pk, iapptrac)
integer, parameter timer_caldyn
real, dimension(:,:), pointer, save vcov
subroutine exner_hyb_loc(ngrid, ps, p, pks, pk, pkf)
subroutine allgather_timer_average
real, dimension(:,:), pointer, save w
real, dimension(:), pointer, save pks
subroutine leapfrog_allocate
real, dimension(:,:), pointer, save p
subroutine pression(ngrid, ap, bp, ps, p)
subroutine pression_loc(ngrid, ap, bp, ps, p)
subroutine leapfrog_switch_caldyn(dist)
integer, parameter timer_dissip
!$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
integer, save maxbuffersize
real, dimension(:,:,:), allocatable timer_delta
subroutine finalize_parallel
integer, dimension(:), allocatable jj_nb_physic
real, dimension(:,:), pointer, save teta
integer, save dissip_period
real, dimension(:,:), pointer, save flxw
real, dimension(:,:), pointer, save phi
subroutine dynredem1_loc(fichnom, time, vcov, ucov, teta, q, masse, ps)
subroutine writedynav_loc(time, vcov, ucov, teta, ppk, phi, q, masse, ps, phis)
!$Id mode_top_bound COMMON comconstr cpp
subroutine, public print_filtre_timer
real function diffcputime()
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
real, dimension(:), pointer, save phis
integer, parameter vtcaldyn
integer, parameter vthallo
subroutine guide_main(itau, ucov, vcov, teta, q, masse, ps)
subroutine register_hallo_u(Field, ll, RUp, Rdown, SUp, SDown, a_request)
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
real, dimension(:), pointer, save dp
subroutine friction_loc(ucov, vcov, pdt)
real, dimension(:,:), pointer, save pbaru
subroutine set_distrib(d)
subroutine sendrequest(a_Request)
!$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 ysinus ok_gradsfile hybrid COMMON logici iflag_trac LOGICAL purmats
subroutine integrd_loc(nq, vcovm1, ucovm1, tetam1, psm1, massem1, dv, du, dteta, dq, dp, vcov, ucov, teta, q, ps0, masse, phis)
real, dimension(:,:), pointer, save tetam1
subroutine call_calfis(itau, lafin, ucov_dyn, vcov_dyn, teta_dyn, masse_dyn, ps_dyn, phis_dyn, q_dyn, flxw_dyn)
!$Id mode_top_bound COMMON comconstr dtvr
real, dimension(:), pointer, save psm1
real, dimension(:,:), pointer, save ucovm1
real, dimension(:,:), pointer, save ucov
c c zjulian c cym CALL iim cym klev iim
subroutine start_timer(no_timer)
subroutine caldyn_loc(itau, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, conser, du, dv, dteta, dp, w, pbaru, pbarv, time)
subroutine adjustbands_caldyn(new_dist)
real, dimension(:), pointer, save ps
character(len=maxlen) function int2str(int)
subroutine geopot_loc(ngrid, teta, pk, pks, phis, phi)
real, dimension(:,:), pointer, save vcovm1
integer, parameter timer_vanleer
integer, dimension(:), allocatable jj_nb_vanleer
real, dimension(:,:), pointer, save dteta
type(distrib), target, save distrib_caldyn
subroutine register_hallo_v(Field, ll, RUp, Rdown, SUp, SDown, a_request)
real, dimension(:,:), pointer, save massem1
real, dimension(:,:), pointer, save du
subroutine waitrequest(a_Request)
real, dimension(:,:), pointer, save masse
subroutine leapfrog_switch_dissip(dist)
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
real, dimension(:,:), pointer, save pk