Changeset 709 for LMDZ4/branches/V3_test/libf/dyn3dpar/gradiv2_p.F
- Timestamp:
- Sep 20, 2006, 12:12:39 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/V3_test/libf/dyn3dpar/gradiv2_p.F
r630 r709 1 SUBROUTINE gradiv2_p(klevel, xcov, ycov, ld, gdx , gdy)1 SUBROUTINE gradiv2_p(klevel, xcov, ycov, ld, gdx_out, gdy_out ) 2 2 c 3 3 c P. Le Van … … 27 27 INTEGER klevel 28 28 REAL xcov( ip1jmp1,klevel ), ycov( ip1jm,klevel ) 29 REAL gdx( ip1jmp1,klevel ), gdy( ip1jm,klevel ) 29 REAL,SAVE :: gdx( ip1jmp1,llm ), gdy( ip1jm,llm ) 30 REAL gdx_out( ip1jmp1,klevel ), gdy_out( ip1jm,klevel ) 30 31 c 31 32 c ........ variables locales ......... 32 33 c 33 REAL div(ip1jmp1,llm)34 REAL,SAVE :: div(ip1jmp1,llm) 34 35 REAL signe, nugrads 35 36 INTEGER l,ij,iter,ld … … 38 39 c ........................................................ 39 40 c 40 EXTERNAL SCOPY, divergf, grad, laplacien_gam, filtreg41 41 c 42 42 c CALL SCOPY( ip1jmp1 * klevel, xcov, 1, gdx, 1 ) … … 45 45 ijb=ij_begin 46 46 ije=ij_end 47 gdx(ijb:ije,1:klevel)=xcov(ijb:ije,1:klevel) 48 47 48 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 49 DO l = 1, klevel 50 gdx(ijb:ije,l)=xcov(ijb:ije,l) 51 ENDDO 52 c$OMP END DO NOWAIT 49 53 50 54 ijb=ij_begin 51 55 ije=ij_end 52 56 if(pole_sud) ije=ij_end-iip1 53 gdy(ijb:ije,1:klevel)=ycov(ijb:ije,1:klevel) 54 57 58 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 59 DO l = 1, klevel 60 gdy(ijb:ije,l)=ycov(ijb:ije,l) 61 ENDDO 62 c$OMP END DO NOWAIT 63 64 c$OMP BARRIER 65 c$OMP MASTER 55 66 call suspend_timer(timer_dissip) 56 67 call exchange_Hallo(gdy,ip1jm,llm,1,0) 57 68 call resume_timer(timer_dissip) 69 c$OMP END MASTER 70 c$OMP BARRIER 58 71 c 59 72 c … … 67 80 68 81 IF( ld.GT.1 ) THEN 69 82 c$OMP BARRIER 83 c$OMP MASTER 70 84 call suspend_timer(timer_dissip) 71 85 call exchange_Hallo(div,ip1jmp1,llm,1,1) 72 86 call resume_timer(timer_dissip) 73 87 c$OMP END MASTER 88 c$OMP BARRIER 74 89 CALL laplacien_p ( klevel, div, div ) 75 90 … … 78 93 79 94 DO iter = 1, ld -2 95 c$OMP BARRIER 96 c$OMP MASTER 80 97 call suspend_timer(timer_dissip) 81 98 call exchange_Hallo(div,ip1jmp1,llm,1,1) 82 99 call resume_timer(timer_dissip) 100 c$OMP END MASTER 101 c$OMP BARRIER 83 102 CALL laplacien_gam ( klevel,cuvscvgam1,cvuscugam1,unsair_gam1, 84 103 * unsapolnga1, unsapolsga1, div, div ) … … 92 111 CALL filtreg_p( div ,jjb,jje, jjp1, klevel, 2, 1, .TRUE., 1 ) 93 112 c call exchange_Hallo(div,ip1jmp1,llm,0,1) 94 113 c$OMP BARRIER 114 c$OMP MASTER 95 115 call suspend_timer(timer_dissip) 96 116 call exchange_Hallo(div,ip1jmp1,llm,1,1) 97 117 call resume_timer(timer_dissip) 98 118 c$OMP END MASTER 119 c$OMP BARRIER 99 120 c call write_field3d_p('div4',reshape(div,(/iip1,jjp1,llm/))) 100 121 CALL grad_p ( klevel, div, gdx, gdy ) … … 104 125 ije=ij_end 105 126 106 127 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 107 128 DO l = 1, klevel 108 129 109 130 if (pole_sud) ije=ij_end 110 131 DO ij = ijb, ije 111 gdx ( ij,l ) = gdx( ij,l ) * nugrads132 gdx_out( ij,l ) = gdx( ij,l ) * nugrads 112 133 ENDDO 113 134 114 135 if (pole_sud) ije=ij_end-iip1 115 136 DO ij = ijb, ije 116 gdy ( ij,l ) = gdy( ij,l ) * nugrads137 gdy_out( ij,l ) = gdy( ij,l ) * nugrads 117 138 ENDDO 118 139 119 140 ENDDO 141 c$OMP END DO NOWAIT 120 142 c 121 143 RETURN
Note: See TracChangeset
for help on using the changeset viewer.