1 SUBROUTINE nxgraro2_p (klevel,xcov, ycov, lr, grx_out, gry_out )
4 c ***********************************************************
8 c xcov et ycov etant les compos. covariantes
de v
9 c ***********************************************************
77 'entree pour le s-progc grx et gry sont des arguments de sortie pour le s-progcc USE write_Field_p USE parallel USE times USE mod_hallo IMPLICIT NONEc#include "dimensions.h"#include "paramet.h"#include "comdissipn.h"cc ...... variables en arguments .......c INTEGER klevel REAL xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel ) REAL,SAVE :: grx( ip1jmp1,llm ), gry( ip1jm,llm ) REAL grx_out( ip1jmp1,klevel ), gry_out( ip1jm,klevel )cc ...... variables locales ........c REAL,SAVE :: rot(ip1jm,llm) REAL signe, nugradrs INTEGER l,ij,iter,lr Type(Request) :: Request_dissipc ........................................................c INTEGER :: ijb,ije,jjb,jje cc signe = (-1.)**lr nugradrs = signe * crotcc CALL SCOPY ( ip1jmp1* klevel, xcov, 1, grx, 1 )c CALL SCOPY ( ip1jm * klevel, ycov, 1, gry, 1 ) ijb=ij_begin ije=ij_endc$OMP DO SCHEDULE(STATIC,OMP_CHUNK) DO l = 1, klevel grx(ijb:ije,l)=xcov(ijb:ije,l) ENDDOc$OMP END DO NOWAITc$OMP BARRIER call Register_Hallo(grx,ip1jmp1,llm,0,1,1,0,Request_dissip) call SendRequest(Request_dissip)c$OMP BARRIER call WaitRequest(Request_dissip)c$OMP BARRIER ijb=ij_begin ije=ij_end if(pole_sud) ije=ij_end-iip1c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) DO l = 1, klevel gry(ijb:ije,l)=ycov(ijb:ije,l) ENDDOc$OMP END DO NOWAIT c CALL rotatf_p ( klevel, grx, gry, rot )c call write_field3d_p('rot1
87 ',reshape(rot,(/iip1,jjm,llm/)))c$OMP BARRIER call Register_Hallo(rot,ip1jm,llm,1,1,1,1,Request_dissip) call SendRequest(Request_dissip)c$OMP BARRIER call WaitRequest(Request_dissip)c$OMP BARRIER CALL laplacien_rot_p ( klevel, rot, rot,grx,gry )c call write_field3d_p('rot2
89 ',reshape(rot,(/iip1,jjm,llm/)))cc ..... Iteration de l'operateur
laplacien_rotgam .....
108 if (pole_sud) jje=jj_end-1
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