34 1 IAD_ELEM,FR_ELEM ,SIZI ,ISKY ,FSKYI ,
35 2 FSKYIF ,ITAGX ,ADSKYI ,NBIRCT ,NBISDT,
36 3 NBIRCP ,NBISDP ,FTHESKYI, FTHESKYIF,CONDNSKYI,
37 4 CONDNSKYIF,FSKYIF_PXFEM,INTHEAT,NODADT_THERM)
43 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
44#include "implicit_f.inc"
59 INTEGER IAD_ELEM(2,*), FR_ELEM(*), NBIRCP(*), NBISDP(*),
60 . (*), (0:*), ISKY(*),
61 . SIZI, NBIRCT, NBISDT
62 INTEGER ,
INTENT(IN) :: INTHEAT
63 INTEGER ,
INTENT(IN) :: NODADT_THERM
65 . FSKYI(LSKYI,NFSKYI),FSKYIF(NFSKYI,*),FTHESKYI(*),
66 . ftheskyif(*),condnskyi(*),condnskyif(*),
67 . fskyif_pxfem(5,lskyi)
72 INTEGER MSGTYP,I,J,NOD,LOC_PROC,IERROR,INDEX,IDEB,
73 . SIZ,L,NB_NOD,CC,NBIRECV, II, JJ, L0,MSGOFF,
75 . REQ_R(NSPMD),REQ_S(NSPMD),IRINDEX(NSPMD),
76 . status(mpi_status_size),point,lsav
77 my_real,
DIMENSION(:),
ALLOCATABLE :: rbuf,sbuf
84 ALLOCATE(rbuf((sizi)*nbirct))
85 ALLOCATE(sbuf((sizi)*nbisdt))
91 siz = (sizi)*nbircp(i)
96 s rbuf(l),siz,real,it_spmd(i),msgtyp,
97 g spmd_comm_world,req_r(nbirecv),ierror)
109 ideb = iad_elem(1,i)-1
112 IF(intplyxfem == 0)
THEN
114 IF(intheat == 0 )
THEN
116 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
118 IF(itagx(nod)==1)
THEN
121 sbuf(l+1) = fskyif(1,cc)
122 sbuf(l+2) = fskyif(2,cc)
123 sbuf(l+3) = fskyif(3,cc)
124 sbuf(l+4) = fskyif(4,cc)
130 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
132 IF(itagx(nod)==1)
THEN
133 DO cc = adskyi(nod-1),adskyi(nod)-1
135 sbuf(l+1) = fskyif(1,cc)
136 sbuf(l+2) = fskyif(2,cc)
137 sbuf(l+3) = fskyif(3,cc)
138 sbuf(l+4) = fskyif(4,cc)
139 sbuf(l+5) = fskyif(5,cc)
148 IF(nodadt_therm == 1)
THEN
149 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
151 IF(itagx(nod)==1)
THEN
152 DO cc = adskyi(nod-1),adskyi(nod)-1
154 sbuf(l+1) = fskyif(1,cc)
155 sbuf(l+2) = fskyif(2,cc)
156 sbuf(l+3) = fskyif(3,cc)
157 sbuf(l+4) = fskyif(4,cc)
158 sbuf(l+5) = ftheskyif(cc)
159 sbuf(l+6) = condnskyif(cc)
165 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
167 IF(itagx(nod)==1)
THEN
168 DO cc = adskyi(nod-1),adskyi(nod)-1
170 sbuf(l+1) = fskyif(1,cc)
171 sbuf(l+2) = fskyif(2,cc)
172 sbuf(l+3) = fskyif(3,cc)
173 sbuf(l+4) = fskyif(4,cc)
174 sbuf(l+5) = ftheskyif(cc)
181 IF(nodadt_therm == 1)
THEN
182 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
184 IF(itagx(nod)==1)
THEN
185 DO cc = adskyi(nod-1),adskyi(nod)-1
187 sbuf(l+1) = fskyif(1,cc)
188 sbuf(l+2) = fskyif(2,cc)
189 sbuf(l+3) = fskyif(3,cc)
190 sbuf(l+4) = fskyif(4,cc)
191 sbuf(l+5) = fskyif(5,cc)
192 sbuf(l+6) = ftheskyif(cc)
193 sbuf(l+7) = condnskyif(cc)
199 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
201 IF(itagx(nod)==1)
THEN
202 DO cc = adskyi(nod-1),adskyi(nod)-1
204 sbuf(l+1) = fskyif(1,cc)
205 sbuf(l+2) = fskyif(2,cc)
206 sbuf(l+3) = fskyif(3,cc)
207 sbuf(l+4) = fskyif(4,cc)
208 sbuf(l+5) = fskyif(5,cc)
209 sbuf(l+6) = ftheskyif(cc)
219 IF(intheat == 0 )
THEN
221 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
223 IF(itagx(nod)==1)
THEN
224 DO cc = adskyi(nod-1),adskyi(nod)-1
226 sbuf(l+1) = fskyif(1,cc)
227 sbuf(l+2) = fskyif(2,cc)
228 sbuf(l+3) = fskyif(3,cc)
229 sbuf(l+4) = fskyif(4,cc)
231 sbuf(l+5) = fskyif_pxfem(1,cc)
232 sbuf(l+6) = fskyif_pxfem(2,cc)
233 sbuf(l+7) = fskyif_pxfem(3,cc)
234 sbuf(l+8) = fskyif_pxfem(4,cc)
235 sbuf(l+9) = fskyif_pxfem(5,cc)
241 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
243 IF(itagx(nod)==1)
THEN
244 DO cc = adskyi(nod-1),adskyi(nod)-1
246 sbuf(l+1) = fskyif(1,cc)
247 sbuf(l+2) = fskyif(2,cc)
248 sbuf(l+3) = fskyif(3,cc)
249 sbuf(l+4) = fskyif(4,cc)
250 sbuf(l+5) = fskyif(5,cc)
252 sbuf(l+6) = fskyif_pxfem(1,cc)
253 sbuf(l+7) = fskyif_pxfem(2,cc)
254 sbuf(l+8) = fskyif_pxfem(3,cc)
255 sbuf(l+9) = fskyif_pxfem(4,cc)
256 sbuf(l+10) = fskyif_pxfem(5,cc)
265 IF(nodadt_therm == 1)
THEN
266 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
268 IF(itagx(nod)==1)
THEN
269 DO cc = adskyi(nod-1),adskyi(nod)-1
271 sbuf(l+1) = fskyif(1,cc)
272 sbuf(l+2) = fskyif(2,cc)
273 sbuf(l+3) = fskyif(3,cc)
274 sbuf(l+4) = fskyif(4,cc)
275 sbuf(l+5) = ftheskyif(cc)
276 sbuf(l+6) = condnskyif(cc)
278 sbuf(l+7) = fskyif_pxfem(1,cc)
279 sbuf(l+8) = fskyif_pxfem(2,cc
280 sbuf(l+9) = fskyif_pxfem(3,cc)
281 sbuf(l+10)= fskyif_pxfem(4,cc)
282 sbuf(l+11)= fskyif_pxfem(5,cc)
288 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
290 IF(itagx(nod)==1)
THEN
291 DO cc = adskyi(nod-1),adskyi(nod)-1
293 sbuf(l+1) = fskyif(1,cc)
294 sbuf(l+2) = fskyif(2,cc)
295 sbuf(l+3) = fskyif(3,cc)
296 sbuf(l+4) = fskyif(4,cc)
297 sbuf(l+5) = ftheskyif(cc)
299 sbuf(l+6) = fskyif_pxfem(1,cc)
300 sbuf(l+7) = fskyif_pxfem(2,cc)
301 sbuf(l+8) = fskyif_pxfem(3,cc)
302 sbuf(l+9) = fskyif_pxfem(4,cc)
303 sbuf(l+10)= fskyif_pxfem(5,cc)
310 IF(nodadt_therm == 1)
THEN
311 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
313 IF(itagx(nod)==1)
THEN
314 DO cc = adskyi(nod-1),adskyi(nod)-1
316 sbuf(l+1) = fskyif(1,cc)
317 sbuf(l+2) = fskyif(2,cc)
318 sbuf(l+3) = fskyif(3,cc)
319 sbuf(l+4) = fskyif(4,cc)
320 sbuf(l+5) = fskyif(5,cc)
321 sbuf(l+6) = ftheskyif(cc)
322 sbuf(l+7) = condnskyif
324 sbuf(l+8) = fskyif_pxfem(1,cc)
325 sbuf(l+9) = fskyif_pxfem(2,cc)
326 sbuf(l+10)= fskyif_pxfem(3,cc)
328 sbuf(l+12)= fskyif_pxfem(5,cc)
334 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
336 IF(itagx(nod)==1)
THEN
337 DO cc = adskyi(nod-1),adskyi(nod)-1
339 sbuf(l+1) = fskyif(1,cc)
340 sbuf(l+2) = fskyif(2,cc)
341 sbuf(l+3) = fskyif(3,cc)
342 sbuf(l+4) = fskyif(4,cc)
343 sbuf(l+5) = fskyif(5,cc)
344 sbuf(l+6) = ftheskyif(cc)
346 sbuf(l+7) = fskyif_pxfem(1,cc)
347 sbuf(l+8) = fskyif_pxfem(2,cc)
348 sbuf(l+9) = fskyif_pxfem(3,cc)
349 sbuf(l+10)= fskyif_pxfem(4,cc)
350 sbuf(l+11)= fskyif_pxfem(5,cc)
360 siz = nbisdp(i)*(sizi)
363 s sbuf(l0),siz,real,it_spmd(i
364 g spmd_comm_world,req_s(i),ierror)
372 CALL mpi_waitany(nbirecv,req_r,index,status,ierror)
376 ideb = iad_elem(1,i)-1
378 IF(intplyxfem == 0)
THEN
379 IF(intheat == 0 )
THEN
381#include "vectorize.inc"
383 jj = nint(rbuf(l))+ideb
386 fskyi(nisky+j,1) = rbuf(l+1)
387 fskyi(nisky+j,2) = rbuf(l+2)
388 fskyi(nisky+j,3) = rbuf(l+3)
389 fskyi(nisky+j,4) = rbuf(l+4)
393#include
"vectorize.inc"
395 jj = nint(rbuf(l))+ideb
398 fskyi(nisky+j,1) = rbuf(l+1)
399 fskyi(nisky+j,2) = rbuf(l+2)
400 fskyi(nisky+j,3) = rbuf(l+3)
401 fskyi(nisky+j,4) = rbuf(l+4)
402 fskyi(nisky+j,5) = rbuf(l+5)
409 IF(nodadt_therm == 1)
THEN
410#include "vectorize.inc"
412 jj = nint(rbuf(l))+ideb
415 fskyi(nisky+j,1) = rbuf(l+1)
416 fskyi(nisky+j,2) = rbuf(l+2)
417 fskyi(nisky+j,3) = rbuf(l+3)
418 fskyi(nisky+j,4) = rbuf(l+4)
419 ftheskyi(nisky + j) = rbuf(l+5)
420 condnskyi(nisky + j)= rbuf(l+6)
424#include "vectorize.inc"
426 jj = nint(rbuf(l))+ideb
429 fskyi(nisky+j,1) = rbuf(l+1)
430 fskyi(nisky+j,2) = rbuf(l+2)
431 fskyi(nisky+j,3) = rbuf(l+3)
432 fskyi(nisky+j,4) = rbuf(l+4)
433 ftheskyi(nisky + j) = rbuf(l+5)
438 IF(nodadt_therm == 1)
THEN
439#include "vectorize.inc"
441 jj = nint(rbuf(l))+ideb
444 fskyi(nisky+j,1) = rbuf(l+1)
445 fskyi(nisky+j,2) = rbuf(l+2)
446 fskyi(nisky+j,3) = rbuf(l+3)
447 fskyi(nisky+j,4) = rbuf(l+4)
448 fskyi(nisky+j,5) = rbuf(l+5)
449 ftheskyi(nisky + j) = rbuf(l+6)
450 condnskyi(nisky + j)= rbuf(l+7)
454#include "vectorize.inc"
456 jj = nint(rbuf(l))+ideb
459 fskyi(nisky+j,1) = rbuf(l+1)
460 fskyi(nisky+j,2) = rbuf(l+2)
461 fskyi(nisky+j,3) = rbuf(l+3)
462 fskyi(nisky+j,4) = rbuf(l+4)
463 fskyi(nisky+j,5) = rbuf(l+5)
464 ftheskyi(nisky + j) = rbuf(l+6)
472 IF(intheat == 0 )
THEN
474#include "vectorize.inc"
476 jj = nint(rbuf(l))+ideb
479 fskyi(nisky+j,1) = rbuf(l+1)
480 fskyi(nisky+j,2) = rbuf(l+2)
481 fskyi(nisky+j,3) = rbuf(l+3)
482 fskyi(nisky+j,4) = rbuf(l+4)
484 plyskyi%FSKYI(nisky+j,1) = rbuf(l+5)
485 plyskyi%FSKYI(nisky+j,2) = rbuf(l+6)
486 plyskyi%FSKYI(nisky+j,3) = rbuf(l+7)
487 plyskyi%FSKYI(nisky+j,4) = rbuf(l+8)
488 plyskyi%FSKYI(nisky+j,5) = rbuf(l+9)
492#include "vectorize.inc"
494 jj = nint(rbuf(l))+ideb
497 fskyi(nisky+j,1) = rbuf(l+1)
498 fskyi(nisky+j,2) = rbuf(l+2)
499 fskyi(nisky+j,3) = rbuf(l+3)
500 fskyi(nisky+j,4) = rbuf(l+4)
501 fskyi(nisky+j,5) = rbuf(l+5)
503 plyskyi%FSKYI(nisky+j,1) = rbuf(l+6)
504 plyskyi%FSKYI(nisky+j,2) = rbuf(l+7)
505 plyskyi%FSKYI(nisky+j,3) = rbuf(l+8)
506 plyskyi%FSKYI(nisky+j,4) = rbuf(l+9)
507 plyskyi%FSKYI(nisky+j,5) = rbuf(l+10)
514 IF(nodadt_therm == 1)
THEN
515#include "vectorize.inc"
517 jj = nint(rbuf(l))+ideb
520 fskyi(nisky+j,1) = rbuf(l+1)
521 fskyi(nisky+j,2) = rbuf(l+2)
522 fskyi(nisky+j,3) = rbuf(l+3)
523 fskyi(nisky+j,4) = rbuf(l+4)
524 ftheskyi(nisky + j) = rbuf(l+5)
525 condnskyi(nisky + j)= rbuf(l+6)
527 plyskyi%FSKYI(nisky+j,1) = rbuf(l+7)
528 plyskyi%FSKYI(nisky+j,2) = rbuf(l+8)
529 plyskyi%FSKYI(nisky+j,3) = rbuf(l+9)
530 plyskyi%FSKYI(nisky+j,4) = rbuf(l+10)
531 plyskyi%FSKYI(nisky+j,5) = rbuf(l+11)
535#include
"vectorize.inc"
537 jj = nint(rbuf(l))+ideb
540 fskyi(nisky+j,1) = rbuf(l+1)
541 fskyi(nisky+j,2) = rbuf(l+2)
542 fskyi(nisky+j,3) = rbuf(l+3)
543 fskyi(nisky+j,4) = rbuf(l+4)
544 ftheskyi(nisky + j) = rbuf(l+5)
546 plyskyi%FSKYI(nisky+j,1) = rbuf(l+6)
547 plyskyi%FSKYI(nisky+j,2) = rbuf(l+7)
548 plyskyi%FSKYI(nisky+j,3) = rbuf(l+8)
549 plyskyi%FSKYI(nisky+j,4) = rbuf(l+9)
550 plyskyi%FSKYI(nisky+j,5) = rbuf(l+10)
555 IF(nodadt_therm == 1)
THEN
556#include "vectorize.inc"
558 jj = nint(rbuf(l))+ideb
561 fskyi(nisky+j,1) = rbuf(l+1)
562 fskyi(nisky+j,2) = rbuf(l+2)
563 fskyi(nisky+j,3) = rbuf(l+3)
564 fskyi(nisky+j,4) = rbuf(l+4)
565 fskyi(nisky+j,5) = rbuf(l+5)
566 ftheskyi(nisky + j) = rbuf(l+6)
567 condnskyi(nisky + j)= rbuf(l+7)
569 plyskyi%FSKYI(nisky+j,1) = rbuf(l+8)
570 plyskyi%FSKYI(nisky+j,2) = rbuf(l+9)
571 plyskyi%FSKYI(nisky+j,3) = rbuf(l+10)
572 plyskyi%FSKYI(nisky+j,4) = rbuf(l+11)
573 plyskyi%FSKYI(nisky+j,5) = rbuf(l+12)
577#include "vectorize.inc"
579 jj = nint(rbuf(l))+ideb
582 fskyi(nisky+j,1) = rbuf(l+1)
583 fskyi(nisky+j,2) = rbuf(l+2)
584 fskyi(nisky+j,3) = rbuf(l+3)
585 fskyi(nisky+j,4) = rbuf(l+4)
586 fskyi(nisky+j,5) = rbuf(l+5)
587 ftheskyi(nisky + j) = rbuf(l+6)
589 plyskyi%FSKYI(nisky+j,1) = rbuf(l+7)
590 plyskyi%FSKYI(nisky+j,2) = rbuf(l+8)
591 plyskyi%FSKYI(nisky+j,3) = rbuf
592 plyskyi%FSKYI(nisky+j,4) = rbuf(l+10)
593 plyskyi%FSKYI(nisky+j,5) = rbuf(l+11)
602 nisky = nisky + nb_nod
609 .
CALL mpi_wait(req_s(i),status,ierror)