3 SUBROUTINE advtrac_p(pbaru,pbarv , p, masse,q,iapptrac,teta, flxw, pk)
23 include
"dimensions.h"
32 include
"description.h"
37 INTEGER,
INTENT(OUT) :: iapptrac
57 REAL (kind=kind(1.d0)) :: t_initial, t_final, tps_cpu
61 SAVE iadvtr, massem, pbaruc, pbarvc
79 integer ijb,ije,ijb_u,ijb_v,ije_u,ije_v,j
80 type(
request) :: Request_vanleer
98 pbaruc(ijb_u:ije_u,l)=0.
99 pbarvc(ijb_v:ije_v,l)=0.
108 pbaruc(ij,l) = pbaruc(ij,l) + pbaru(ij,l)
111 pbarvc(ij,l) = pbarvc(ij,l) + pbarv(ij,l)
125 massem(ijb:ije,l)=masse(ijb:ije,l)
157 CALL groupe_p( massem, pbaruc,pbarvc, pbarug,pbarvg,wg )
163 p_tmp(ijb:ije,l)=p(ijb:ije,l)
169 pk_tmp(ijb:ije,l)=pk(ijb:ije,l)
170 teta_tmp(ijb:ije,l)=teta(ijb:ije,l)
225 zdp(ij) = pbarug(ij-1,l) - pbarug(ij,l) &
226 - pbarvg(ij-iip1,l) + pbarvg(ij,l) &
227 + wg(ij,l+1) - wg(ij,l)
233 do ij=ijb,ije-iip1+1,iip1
234 zdp(ij)=zdp(ij+iip1-1)
238 zdp(ij)= zdp(ij)*
dtvr/ massem(ij,l)
244 CALL minmax ( ije-ijb+1, zdp(ijb), zdpmin,zdpmax )
246 IF(max(abs(zdpmin),abs(zdpmax)).GT.0.5)
THEN
247 print*,
'WARNING DP/P l=',l,
' MIN:',zdpmin, &
268 pbarug,pbarvg,
dtvr,p_tmp,pk_tmp,teta_tmp )
277 if(
iadv(iq) == 0) cycle
281 if(
iadv(iq).eq.10)
THEN
283 call vlsplt_p(q(1,1,iq),2.,massem,wg,pbarug,pbarvg,
dtvr)
289 else if(
iadv(iq).eq.14)
then
293 pbarug,pbarvg,
dtvr,p_tmp,pk_tmp,teta_tmp )
297 else if(
iadv(iq).eq.12)
then
298 stop
'advtrac : schema non parallelise'
302 write(*,*)
'WARNING horizontal dt=',dtbon,
'dtvr=', &
306 call advn(q(1,1,iq),massem,wg,pbarug,pbarvg,dtbon,1)
308 else if(
iadv(iq).eq.13)
then
309 stop
'advtrac : schema non parallelise'
313 write(*,*)
'WARNING horizontal dt=',dtbon,
'dtvr=', &
317 call advn(q(1,1,iq),massem,wg,pbarug,pbarvg,dtbon,2)
322 else if (
iadv(iq).eq.20)
then
323 stop
'advtrac : schema non parallelise'
325 call pentes_ini (q(1,1,iq),wg,massem,pbarug,pbarvg,0)
330 else if (
iadv(iq).eq.30)
then
331 stop
'advtrac : schema non parallelise'
335 write(*,*)
'WARNING horizontal dt=',dtbon,
'dtvr=', &
338 call prather(q(1,1,iq),wg,massem,pbarug,pbarvg, &
343 else if (
iadv(iq).eq.11.OR.(
iadv(iq).GE.16.AND. &
344 iadv(iq).LE.18))
then
346 stop
'advtrac : schema non parallelise'
352 write(*,*)
'WARNING horizontal dt=',dtbon,
'dtvr=', &
359 aaa=wg(ij,l)*
dtvr/massem(ij,l)
360 cflmaxz=max(cflmaxz,aaa)
361 bbb=-wg(ij,l)*
dtvr/massem(ij,l-1)
362 cflmaxz=max(cflmaxz,bbb)
365 if (cflmaxz.GE.1)
then
366 write(*,*)
'WARNING vertical',
'CFLmaxz=', cflmaxz
373 call interpre(q(1,1,iq),qppm(1,1,iq),wg,fluxwppm,massem, &
374 apppm,bpppm,massebx,masseby,pbarug,pbarvg, &
375 unatppm,vnatppm,psppm)
381 if (
iadv(iq).eq.11)
then
383 call ppm3d(1,qppm(1,1,iq), &
385 unatppm,vnatppm,fluxwppm,dtbon,2,2,2,1, &
392 else if (
iadv(iq).eq.16)
then
394 call ppm3d(1,qppm(1,1,iq), &
396 unatppm,vnatppm,fluxwppm,dtbon,3,3,3,1, &
404 else if (
iadv(iq).eq.17)
then
406 call ppm3d(1,qppm(1,1,iq), &
408 unatppm,vnatppm,fluxwppm,dtbon,4,4,4,1, &
416 else if (
iadv(iq).eq.18)
then
418 call ppm3d(1,qppm(1,1,iq), &
420 unatppm,vnatppm,fluxwppm,dtbon,5,5,5,1, &
459 finmasse(ij,l) = p(ij,l) - p(ij,l+1)
subroutine pentes_ini(q, w, masse, pbaru, pbarv, mode)
integer, save iapp_tracvl
!$Header llmm1 INTEGER ip1jmp1
subroutine interpost(q, qppm)
subroutine groupe_p(pext, pbaru, pbarv, pbarum, pbarvm, wm)
integer, dimension(:), allocatable jj_nb_caldyn
subroutine qminimum_p(q, nq, deltap)
subroutine stop_timer(no_timer)
subroutine adaptdt(nadv, dtbon, n, pbaru, masse)
subroutine advtrac_p(pbaru, pbarv, p, masse, q, iapptrac, teta, flxw, pk)
subroutine vlspltqs_p(q, pente_max, masse, w, pbaru, pbarv, pdt, p, pk, teta)
character(len=10), save planet_type
subroutine vlsplt_p(q, pente_max, masse, w, pbaru, pbarv, pdt)
!$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
subroutine vlspltgen_p(q, iadv, pente_max, masse, w, pbaru, pbarv, pdt,
subroutine advn(q, masse, w, pbaru, pbarv, pdt, mode)
integer, parameter timer_caldyn
subroutine resume_timer(no_timer)
!$Header llmm1 INTEGER ip1jm
subroutine register_swapfieldhallo(FieldS, FieldR, ij, ll, jj_Nb_New, Up, Down, a_request)
subroutine minmax(imax, xi, zmin, zmax)
integer, parameter vthallo
subroutine ppm3d(IGD, Q, PS1, PS2, U, V, W, NDT, IORD, JORD, KORD, NC, IMR, JNP, j1, NLAY, AP, BP, PT, AE, fill, dum, Umax)
subroutine prather(q, w, masse, pbaru, pbarv, nt, dt)
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
subroutine setdistrib(jj_Nb_New)
!$Id mode_top_bound COMMON comconstr dtvr
subroutine suspend_timer(no_timer)
integer, parameter vtadvection
c c zjulian c cym CALL iim cym klev iim
subroutine start_timer(no_timer)
integer, parameter timer_vanleer
integer, dimension(:), allocatable jj_nb_vanleer
subroutine waitrequest(a_Request)
integer, dimension(:), allocatable, save iadv