Changeset 764 for LMDZ4/trunk/libf/dyn3dpar/nxgraro2_p.F
- Timestamp:
- Jun 4, 2007, 4:13:10 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/dyn3dpar/nxgraro2_p.F
r630 r764 1 SUBROUTINE nxgraro2_p (klevel,xcov, ycov, lr, grx , gry)1 SUBROUTINE nxgraro2_p (klevel,xcov, ycov, lr, grx_out, gry_out ) 2 2 c 3 3 c P.Le Van . … … 25 25 INTEGER klevel 26 26 REAL xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel ) 27 REAL grx( ip1jmp1,klevel ), gry( ip1jm,klevel ) 27 REAL,SAVE :: grx( ip1jmp1,llm ), gry( ip1jm,llm ) 28 REAL grx_out( ip1jmp1,klevel ), gry_out( ip1jm,klevel ) 28 29 c 29 30 c ...... variables locales ........ 30 31 c 31 REAL rot(ip1jm,llm) , signe, nugradrs 32 REAL,SAVE :: rot(ip1jm,llm) 33 REAL signe, nugradrs 32 34 INTEGER l,ij,iter,lr 33 35 c ........................................................ 34 36 c 35 EXTERNAL filtreg36 EXTERNAL SCOPY, rotatf, nxgrad, laplacien_rotgam37 37 INTEGER :: ijb,ije,jjb,jje 38 38 … … 47 47 ijb=ij_begin 48 48 ije=ij_end 49 grx(ijb:ije,1:klevel)=xcov(ijb:ije,1:klevel) 50 49 50 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 51 DO l = 1, klevel 52 grx(ijb:ije,l)=xcov(ijb:ije,l) 53 ENDDO 54 c$OMP END DO NOWAIT 55 56 c$OMP BARRIER 57 c$OMP MASTER 51 58 call suspend_timer(timer_dissip) 52 59 call exchange_Hallo(grx,ip1jmp1,llm,0,1) 53 60 call resume_timer(timer_dissip) 61 c$OMP END MASTER 62 c$OMP BARRIER 54 63 55 64 ijb=ij_begin 56 65 ije=ij_end 57 66 if(pole_sud) ije=ij_end-iip1 58 gry(ijb:ije,1:klevel)=ycov(ijb:ije,1:klevel) 67 68 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 69 DO l = 1, klevel 70 gry(ijb:ije,l)=ycov(ijb:ije,l) 71 ENDDO 72 c$OMP END DO NOWAIT 73 59 74 c 60 75 CALL rotatf_p ( klevel, grx, gry, rot ) 61 76 c call write_field3d_p('rot1',reshape(rot,(/iip1,jjm,llm/))) 62 77 78 c$OMP BARRIER 79 c$OMP MASTER 63 80 call suspend_timer(timer_dissip) 64 81 call exchange_Hallo(rot,ip1jm,llm,1,1) 65 82 call resume_timer(timer_dissip) 83 c$OMP END MASTER 84 c$OMP BARRIER 66 85 67 86 CALL laplacien_rot_p ( klevel, rot, rot,grx,gry ) … … 71 90 c 72 91 DO iter = 1, lr -2 92 c$OMP BARRIER 93 c$OMP MASTER 73 94 call suspend_timer(timer_dissip) 74 95 call exchange_Hallo(rot,ip1jm,llm,1,1) 75 96 call resume_timer(timer_dissip) 97 c$OMP END MASTER 98 c$OMP BARRIER 76 99 CALL laplacien_rotgam_p ( klevel, rot, rot ) 77 100 ENDDO … … 86 109 87 110 CALL filtreg_p( rot, jjb,jje,jjm, klevel, 2,1, .FALSE.,1) 111 c$OMP BARRIER 112 c$OMP MASTER 88 113 call suspend_timer(timer_dissip) 89 114 call exchange_Hallo(rot,ip1jm,llm,1,0) 90 115 call resume_timer(timer_dissip) 116 c$OMP END MASTER 117 c$OMP BARRIER 91 118 CALL nxgrad_p ( klevel, rot, grx, gry ) 92 119 … … 94 121 ijb=ij_begin 95 122 ije=ij_end 96 123 124 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 97 125 DO l = 1, klevel 98 126 99 127 if(pole_sud) ije=ij_end-iip1 100 128 DO ij = ijb, ije 101 gry ( ij,l ) = gry( ij,l ) * nugradrs129 gry_out( ij,l ) = gry( ij,l ) * nugradrs 102 130 ENDDO 103 131 104 132 if(pole_sud) ije=ij_end 105 133 DO ij = ijb, ije 106 grx ( ij,l ) = grx( ij,l ) * nugradrs134 grx_out( ij,l ) = grx( ij,l ) * nugradrs 107 135 ENDDO 108 136 109 137 ENDDO 138 c$OMP END DO NOWAIT 110 139 c 111 140 RETURN
Note: See TracChangeset
for help on using the changeset viewer.