1 SUBROUTINE nxgraro2_p (klevel,xcov, ycov, lr, grx_out, gry_out )
4 c ***********************************************************
6 c calcul
de(
nxgrad(rot) ) du vect. v ....
8 c xcov et ycov etant les compos. covariantes
de v
9 c ***********************************************************
10 c xcov , ycov et lr sont des arguments d
'entree pour le s-prog
11 c grx et gry sont des arguments de sortie pour le s-prog
20 #include "dimensions.h"
22 #include "comdissipn.h"
24 c ...... variables en arguments .......
27 REAL xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel )
28 REAL,SAVE :: grx( ip1jmp1,llm ), gry( ip1jm,llm )
29 REAL grx_out( ip1jmp1,klevel ), gry_out( ip1jm,klevel )
31 c ...... variables locales ........
33 REAL,SAVE :: rot(ip1jm,llm)
36 Type(Request) :: Request_dissip
37 c ........................................................
39 INTEGER :: ijb,ije,jjb,jje
44 nugradrs = signe * crot
46 c CALL SCOPY ( ip1jmp1* klevel, xcov, 1, grx, 1 )
47 c CALL SCOPY ( ip1jm * klevel, ycov, 1, gry, 1 )
52 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
54 grx(ijb:ije,l)=xcov(ijb:ije,l)
59 call Register_Hallo(grx,ip1jmp1,llm,0,1,1,0,Request_dissip)
60 call SendRequest(Request_dissip)
62 call WaitRequest(Request_dissip)
67 if(pole_sud) ije=ij_end-iip1
69 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
71 gry(ijb:ije,l)=ycov(ijb:ije,l)
76 CALL rotatf_p ( klevel, grx, gry, rot )
77 c call write_field3d_p('rot1
',reshape(rot,(/iip1,jjm,llm/)))
80 call Register_Hallo(rot,ip1jm,llm,1,1,1,1,Request_dissip)
81 call SendRequest(Request_dissip)
83 call WaitRequest(Request_dissip)
86 CALL laplacien_rot_p ( klevel, rot, rot,grx,gry )
87 c call write_field3d_p('rot2
',reshape(rot,(/iip1,jjm,llm/)))
93 call register_hallo(rot,
ip1jm,
llm,1,1,1,1,request_dissip)
94 call sendrequest(request_dissip)
96 call waitrequest(request_dissip)
102 c
call write_field3d_p(
'rot3',reshape(rot,(/iip1,jjm,
llm/)))
108 if (pole_sud) jje=jj_end-1
112 call register_hallo(rot,
ip1jm,
llm,1,0,0,1,request_dissip)
113 call sendrequest(request_dissip)
115 call waitrequest(request_dissip)
118 CALL nxgrad_p ( klevel, rot, grx, gry )
124 c$omp
DO schedule(static,omp_chunk)
127 if(pole_sud) ije=ij_end-iip1
129 gry_out(
ij,
l ) = gry(
ij,
l ) * nugradrs
132 if(pole_sud) ije=ij_end
134 grx_out(
ij,
l ) = grx(
ij,
l ) * nugradrs
c c $Id c c calculs statistiques distribution nuage ftion du regime dynamique c c Ce calcul doit etre fait a partir de valeurs mensuelles CALL nbregdyn DO kmaxm1 DO l
subroutine filtreg_p(champ, ibeg, iend, nlat, nbniv, ifiltre, iaire, griscal, iter)
subroutine nxgrad(klevel, rot, x, y)
subroutine laplacien_rotgam(klevel, rotin, rotout)
!$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 nxgrad_p(klevel, rot, x, y)
!$Header llmm1 INTEGER ip1jm
!$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 klon klev DO klon!IM klev DO klon klon nbp_lat DO nbp_lon ij
subroutine nxgraro2_p(klevel, xcov, ycov, lr, grx_out, gry_out)
subroutine laplacien_rotgam_p(klevel, rotin, rotout)