Changeset 764 for LMDZ4/trunk/libf/dyn3dpar/nxgrarot_p.F
- Timestamp:
- Jun 4, 2007, 4:13:10 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/dyn3dpar/nxgrarot_p.F
r630 r764 1 SUBROUTINE nxgrarot_p (klevel,xcov, ycov, lr, grx , gry)1 SUBROUTINE nxgrarot_p (klevel,xcov, ycov, lr, grx_out, gry_out ) 2 2 c *********************************************************** 3 3 c … … 26 26 INTEGER klevel 27 27 REAL xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel ) 28 REAL grx( ip1jmp1,klevel ), gry( ip1jm,klevel ) 28 REAL grx_out( ip1jmp1,klevel ), gry_out( ip1jm,klevel ) 29 REAL,SAVE :: grx( ip1jmp1,llm ), gry( ip1jm,llm ) 30 29 31 c 30 REAL rot(ip1jm,llm)32 REAL,SAVE :: rot(ip1jm,llm) 31 33 32 34 INTEGER l,ij,iter,lr 33 35 c 34 EXTERNAL filtreg35 EXTERNAL SCOPY, rotat, nXgrad36 36 INTEGER ijb,ije,jjb,jje 37 37 c … … 42 42 ijb=ij_begin 43 43 ije=ij_end 44 grx(ijb:ije,1:klevel)=xcov(ijb:ije,1:klevel) 45 44 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 45 DO l = 1, klevel 46 grx(ijb:ije,l)=xcov(ijb:ije,l) 47 ENDDO 48 c$OMP END DO NOWAIT 49 46 50 if(pole_sud) ije=ij_end-iip1 47 gry(ijb:ije,1:klevel)=ycov(ijb:ije,1:klevel) 51 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 52 DO l = 1, klevel 53 gry(ijb:ije,l)=ycov(ijb:ije,l) 54 ENDDO 55 c$OMP END DO NOWAIT 48 56 49 57 DO 10 iter = 1,lr 58 c$OMP BARRIER 59 c$OMP MASTER 50 60 call suspend_timer(timer_dissip) 51 61 call exchange_Hallo(grx,ip1jmp1,llm,0,1) 52 62 call resume_timer(timer_dissip) 63 c$OMP END MASTER 64 c$OMP BARRIER 65 53 66 CALL rotat_p (klevel,grx, gry, rot ) 54 67 c call write_field3d_p('rot',reshape(rot,(/iip1,jjm,llm/))) … … 58 71 if (pole_sud) jje=jj_end-1 59 72 CALL filtreg_p( rot,jjb,jje, jjm, klevel, 2,1, .false.,2) 60 73 74 c$OMP BARRIER 75 c$OMP MASTER 61 76 call suspend_timer(timer_dissip) 62 77 call exchange_Hallo(rot,ip1jm,llm,1,0) 63 78 call resume_timer(timer_dissip) 79 c$OMP END MASTER 80 c$OMP BARRIER 64 81 65 82 CALL nxgrad_p (klevel,rot, grx, gry ) 66 83 c 84 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 67 85 DO 5 l = 1, klevel 68 86 if(pole_sud) ije=ij_end-iip1 69 87 DO 2 ij = ijb, ije 70 gry ( ij,l ) = - gry( ij,l ) * crot88 gry_out( ij,l ) = - gry( ij,l ) * crot 71 89 2 CONTINUE 72 90 if(pole_sud) ije=ij_end 73 91 DO 3 ij = ijb, ije 74 grx ( ij,l ) = - grx( ij,l ) * crot92 grx_out( ij,l ) = - grx( ij,l ) * crot 75 93 3 CONTINUE 76 94 5 CONTINUE 77 95 c$OMP END DO NOWAIT 78 96 c call write_field3d_p('grx',reshape(grx,(/iip1,jjp1,llm/))) 79 97 c call write_field3d_p('gry',reshape(gry,(/iip1,jjm,llm/)))
Note: See TracChangeset
for help on using the changeset viewer.