34 1 A ,AR ,MS ,IN ,STIFN,
35 2 STIFR,FR_I2M,IAD_I2M,LCOMI2M,ISIZE,
36 3 INTTH2,FTHE ,CONDN ,FNCONT ,FNCONTP,
37 4 FTCONTP,H3D_DATA ,IDT_THERM)
45 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
46#include "implicit_f.inc"
61 INTEGER LCOMI2M, ISIZE, INTTH2,
62 . FR_I2M(*), IAD_I2M(*)
63 INTEGER ,
INTENT(IN) :: IDT_THERM
65 . a(3,*), ar(3,*), ms(*), in(*),
66 . stifn(*), stifr(*),fthe(*),condn(*)
67 my_real ,
INTENT(INOUT) :: fncont(3,numnod),
68 . fncontp(3,numnod),ftcontp(3,numnod)
74 INTEGER MSGTYP,LOC_PROC,NOD,I,J,L,IDEB,IAD,LEN,
75 . NBINDEX,INDEX,MSGOFF,SIZ,IERROR,ISIZE2,
76 . STATUS(MPI_STATUS_SIZE),
77 . (NSPMD),REQ_R(NSPMD),INDEXI(NSPMD)
81 .
DIMENSION (:),
ALLOCATABLE :: sbuf,rbuf
88 IF (h3d_data%N_VECT_CONT2_MAX > 0.OR.h3d_data%N_VECT_CONT2_MIN > 0)
THEN
91 IF (h3d_data%N_VECT_PCONT2_MAX > 0.OR.h3d_data%N_VECT_PCONT2_MIN > 0)
THEN
94 ALLOCATE(sbuf(lcomi2m*isize2))
95 ALLOCATE(rbuf(lcomi2m*isize2))
101 len = iad_i2m(i+1)-iad_i2m(i)
108 s rbuf(ideb),siz,real,it_spmd(i),msgtyp,
109 g spmd_comm_world,req_r(l),ierror)
118 len = iad_i2m(i+1) - iad_i2m(i)
120 IF (intth2 == 1)
THEN
121 IF(idt_therm == 1)
THEN
123#include "vectorize.inc"
126 sbuf(ideb) = a(1,nod)
127 sbuf(ideb+1) = a(2,nod)
128 sbuf(ideb+2) = a(3,nod)
129 sbuf(ideb+3) = ms(nod)
130 sbuf(ideb+4) = stifn(nod)
131 sbuf(ideb+5) = fthe(nod)
132 sbuf(ideb+6) = condn(nod)
136#include "vectorize.inc"
139 sbuf(ideb) = a(1,nod)
140 sbuf(ideb+1) = a(2,nod)
141 sbuf(ideb+2) = a(3,nod)
142 sbuf(ideb+3) = ar(1,nod)
143 sbuf(ideb+4) = ar(2,nod)
144 sbuf(ideb+5) = ar(3,nod)
145 sbuf(ideb+6) = ms(nod)
146 sbuf(ideb+7) = in(nod)
147 sbuf(ideb+8) = stifn(nod)
148 sbuf(ideb+9) = stifr(nod)
149 sbuf(ideb+10) = fthe(nod
150 sbuf(ideb+11) = condn(nod)
156#include "vectorize.inc"
159 sbuf(ideb) = a(1,nod)
160 sbuf(ideb+1) = a(2,nod)
161 sbuf(ideb+2) = a(3,nod)
162 sbuf(ideb+3) = ms(nod)
163 sbuf(ideb+4) = stifn(nod)
164 sbuf(ideb+5) = fthe(nod)
168#include "vectorize.inc"
171 sbuf(ideb) = a(1,nod)
172 sbuf(ideb+1) = a(2,nod)
173 sbuf(ideb+2) = a(3,nod)
174 sbuf(ideb+3) = ar(1,nod)
175 sbuf(ideb+4) = ar(2,nod)
176 sbuf(ideb+5) = ar(3,nod)
177 sbuf(ideb+6) = ms(nod)
178 sbuf(ideb+7) = in(nod)
179 sbuf(ideb+8) = stifn(nod)
180 sbuf(ideb+9) = stifr(nod)
181 sbuf(ideb+10) = fthe(nod)
188#include "vectorize.inc"
191 sbuf(ideb) = a(1,nod)
192 sbuf(ideb+1) = a(2,nod)
193 sbuf(ideb+2) = a(3,nod)
194 sbuf(ideb+3) = ms(nod)
195 sbuf(ideb+4) = stifn(nod)
199#include "vectorize.inc"
202 sbuf(ideb) = a(1,nod)
203 sbuf(ideb+1) = a(2,nod)
204 sbuf(ideb+2) = a(3,nod)
205 sbuf(ideb+3) = ar(1,nod)
206 sbuf(ideb+4) = ar(2,nod)
207 sbuf(ideb+5) = ar(3,nod)
208 sbuf(ideb+6) = ms(nod)
209 sbuf(ideb+7) = in(nod)
210 sbuf(ideb+8) = stifn(nod)
211 sbuf(ideb+9) = stifr(nod)
217 IF (h3d_data%N_VECT_CONT2_MAX > 0.OR.h3d_data%N_VECT_CONT2_MIN > 0)
THEN
218#include "vectorize.inc"
221 sbuf(ideb) = fncont(1,nod)
222 sbuf(ideb+1) = fncont(2,nod)
223 sbuf(ideb+2) = fncont(3,nod)
227 IF (h3d_data%N_VECT_PCONT2_MAX > 0.OR.h3d_data%N_VECT_PCONT2_MIN > 0)
THEN
228#include "vectorize.inc"
231 sbuf(ideb) = fncontp(1,nod)
232 sbuf(ideb+1) = fncontp(2,nod)
233 sbuf(ideb+2) = fncontp(3,nod)
234 sbuf(ideb+3) = ftcontp(1,nod)
235 sbuf(ideb+4) = ftcontp(2,nod)
236 sbuf(ideb+5) = ftcontp(3,nod)
246 len = iad_i2m(i+1)-iad_i2m(i)
250 s sbuf(ideb),siz,real,it_spmd(i),msgtyp,
251 g spmd_comm_world,req_s(l),ierror)
256 CALL mpi_waitany(nbindex,req_r,index,status,ierror)
258 ideb = 1+(iad_i2m(i)-1)*(isize2)
259 len = iad_i2m(i+1)-iad_i2m(i)
261 IF (intth2 == 1)
THEN
262 IF(idt_therm == 1)
THEN
264#include "vectorize.inc"
267 a(1,nod) = a(1,nod) + rbuf(ideb)
268 a(2,nod) = a(2,nod) + rbuf(ideb+1)
269 a(3,nod) = a(3,nod) + rbuf(ideb+2)
270 ms(nod) = ms(nod) + rbuf(ideb+3)
271 stifn(nod) = stifn(nod)+rbuf(ideb+4)
272 fthe(nod) = fthe(nod) +rbuf(ideb+5)
273 condn(nod) = condn(nod)+rbuf(ideb+6)
277#include "vectorize.inc"
280 a(1,nod) = a(1,nod) + rbuf(ideb)
281 a(2,nod) = a(2,nod) + rbuf(ideb+1)
282 a(3,nod) = a(3,nod) + rbuf(ideb+2)
283 ar(1,nod) = ar(1,nod)+ rbuf(ideb+3)
284 ar(2,nod) = ar(2,nod)+ rbuf(ideb+4)
285 ar(3,nod) = ar(3,nod)+ rbuf(ideb+5)
286 ms(nod) = ms(nod) + rbuf(ideb+6)
287 in(nod) = in(nod) + rbuf(ideb+7)
288 stifn(nod) = stifn(nod)+rbuf(ideb+8)
289 stifr(nod) = stifr(nod)+rbuf(ideb+9)
290 fthe(nod) = fthe(nod) +rbuf(ideb+10)
291 condn(nod) = condn(nod)+rbuf(ideb+11)
297#include "vectorize.inc"
300 a(1,nod) = a(1,nod) + rbuf(ideb)
301 a(2,nod) = a(2,nod) + rbuf(ideb+1)
302 a(3,nod) = a(3,nod) + rbuf(ideb+2)
303 ms(nod) = ms(nod) + rbuf(ideb+3)
304 stifn(nod) = stifn(nod)+rbuf(ideb+4)
305 fthe(nod) = fthe(nod) +rbuf(ideb+5)
309#include "vectorize.inc"
312 a(1,nod) = a(1,nod) + rbuf(ideb)
313 a(2,nod) = a(2,nod) + rbuf(ideb+1)
314 a(3,nod) = a(3,nod) + rbuf(ideb+2)
315 ar(1,nod) = ar(1,nod)+ rbuf(ideb+3)
316 ar(2,nod) = ar(2,nod)+ rbuf(ideb+4)
317 ar(3,nod) = ar(3,nod)+ rbuf(ideb+5)
318 ms(nod) = ms(nod) + rbuf(ideb+6)
319 in(nod) = in(nod) + rbuf(ideb+7)
320 stifn(nod) = stifn(nod)+rbuf(ideb+8)
321 stifr(nod) = stifr(nod)+rbuf(ideb+9)
322 fthe(nod) = fthe(nod) +rbuf(ideb+10)
329#include "vectorize.inc"
332 a(1,nod) = a(1,nod) + rbuf(ideb)
333 a(2,nod) = a(2,nod) + rbuf(ideb+1)
334 a(3,nod) = a(3,nod) + rbuf(ideb+2)
335 ms(nod) = ms(nod) + rbuf(ideb+3)
336 stifn(nod) = stifn(nod)+rbuf(ideb+4)
340#include "vectorize.inc"
343 a(1,nod) = a(1,nod) + rbuf(ideb)
344 a(2,nod) = a(2,nod) + rbuf(ideb+1)
345 a(3,nod) = a(3,nod) + rbuf(ideb+2)
346 ar(1,nod) = ar(1,nod)+ rbuf(ideb+3)
347 ar(2,nod) = ar(2,nod)+ rbuf(ideb+4)
348 ar(3,nod) = ar(3,nod)+ rbuf(ideb+5)
349 ms(nod) = ms(nod) + rbuf(ideb+6)
350 in(nod) = in(nod) + rbuf(ideb+7)
351 stifn(nod) = stifn(nod)+rbuf(ideb+8)
352 stifr(nod) = stifr(nod)+rbuf(ideb+9)
359 IF (h3d_data%N_VECT_CONT2_MAX > 0.OR.h3d_data%N_VECT_CONT2_MIN > 0)
THEN
360#include "vectorize.inc"
363 fncont(1,nod) = fncont(1,nod) + rbuf(ideb)
364 fncont(2,nod) = fncont(2,nod) + rbuf(ideb+1)
365 fncont(3,nod) = fncont
369 IF (h3d_data%N_VECT_PCONT2_MAX > 0.OR.h3d_data%N_VECT_PCONT2_MIN > 0)
THEN
370#include "vectorize.inc"
373 fncontp(1,nod) = fncontp(1,nod) + rbuf(ideb)
374 fncontp(2,nod) = fncontp(2,nod) + rbuf(ideb+1)
375 fncontp(3,nod) = fncontp(3,nod) + rbuf(ideb+2)
376 ftcontp(1,nod) = ftcontp(1,nod) + rbuf(ideb+3)
377 ftcontp(2,nod) = ftcontp(2,nod) + rbuf(ideb+4)
378 ftcontp(3,nod) = ftcontp(3,nod) + rbuf(ideb+5)
387 CALL mpi_waitany(nbindex,req_s,index,status,ierror)