OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
spmd_exchi_a_pon.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23C
24!||====================================================================
25!|| spmd_exchi_a_pon ../engine/source/mpi/forces/spmd_exchi_a_pon.F
26!||--- called by ------------------------------------------------------
27!|| spmd_exch2_a_pon ../engine/source/mpi/forces/spmd_exch2_a_pon.F
28!||--- calls -----------------------------------------------------
29!||--- uses -----------------------------------------------------
30!|| plyxfem_mod ../engine/share/modules/plyxfem_mod.F
31!|| spmd_comm_world_mod ../engine/source/mpi/spmd_comm_world.F90
32!||====================================================================
33 SUBROUTINE spmd_exchi_a_pon(
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)
38C
39 USE plyxfem_mod
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43 USE spmd_comm_world_mod, ONLY : spmd_comm_world
44#include "implicit_f.inc"
45C-----------------------------------------------------------------
46C M e s s a g e P a s s i n g
47C-----------------------------------------------
48#include "spmd.inc"
49C-----------------------------------------------
50C C o m m o n B l o c k s
51C-----------------------------------------------
52#include "com01_c.inc"
53#include "task_c.inc"
54#include "parit_c.inc"
55#include "scr18_c.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER IAD_ELEM(2,*), FR_ELEM(*), NBIRCP(*), NBISDP(*),
60 . ITAGX(*), ADSKYI(0:*), ISKY(*),
61 . SIZI, NBIRCT, NBISDT
62 INTEGER ,INTENT(IN) :: INTHEAT
63 INTEGER ,INTENT(IN) :: NODADT_THERM
64 my_real
65 . FSKYI(LSKYI,NFSKYI),FSKYIF(NFSKYI,*),FTHESKYI(*),
66 . ftheskyif(*),condnskyi(*),condnskyif(*),
67 . fskyif_pxfem(5,lskyi)
68C-----------------------------------------------
69C L o c a l V a r i a b l e s
70C-----------------------------------------------
71#ifdef MPI
72 INTEGER MSGTYP,I,J,NOD,LOC_PROC,IERROR,INDEX,IDEB,
73 . SIZ,L,NB_NOD,CC,NBIRECV, II, JJ, L0,MSGOFF,
74 . IAD_RECV(NSPMD+1),
75 . REQ_R(NSPMD),REQ_S(NSPMD),IRINDEX(NSPMD),
76 . status(mpi_status_size),point,lsav
77 my_real, DIMENSION(:), ALLOCATABLE :: rbuf,sbuf
78 DATA msgoff/170/
79C-----------------------------------------------
80C S o u r c e L i n e s
81C-----------------------------------------------
82 loc_proc = ispmd + 1
83C
84 ALLOCATE(rbuf((sizi)*nbirct))
85 ALLOCATE(sbuf((sizi)*nbisdt))
86 nbirecv = 0
87 l = 1
88 iad_recv(1) = 1
89 DO i = 1, nspmd
90 IF(nbircp(i)>0) THEN
91 siz = (sizi)*nbircp(i)
92 msgtyp = msgoff
93 nbirecv = nbirecv + 1
94 irindex(nbirecv) = i
95 CALL mpi_irecv(
96 s rbuf(l),siz,real,it_spmd(i),msgtyp,
97 g spmd_comm_world,req_r(nbirecv),ierror)
98 l = l + siz
99 ENDIF
100 iad_recv(i+1) = l
101 ENDDO
102C
103C Envoi interfaces
104C
105 l = 1
106 DO i=1,nspmd
107 IF(nbisdp(i)>0) THEN
108 l0 = l
109 ideb = iad_elem(1,i)-1
110C
111 lsav=l
112 IF(intplyxfem == 0) THEN
113C
114 IF(intheat == 0 )THEN
115 IF(nfskyi==4)THEN
116 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
117 nod = fr_elem(j)
118 IF(itagx(nod)==1)THEN
119 DO cc = adskyi(nod-1),adskyi(nod)-1
120 sbuf(l) = j-ideb
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)
125 l = l + sizi
126 END DO
127 END IF
128 END DO
129 ELSE
130 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
131 nod = fr_elem(j)
132 IF(itagx(nod)==1)THEN
133 DO cc = adskyi(nod-1),adskyi(nod)-1
134 sbuf(l) = j-ideb
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)
140 l = l + sizi
141 END DO
142 END IF
143 END DO
144 END IF
145C + la th ermique
146 ELSE
147 IF(nfskyi==4)THEN
148 IF(nodadt_therm == 1) THEN
149 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
150 nod = fr_elem(j)
151 IF(itagx(nod)==1)THEN
152 DO cc = adskyi(nod-1),adskyi(nod)-1
153 sbuf(l) = j-ideb
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)
160 l = l + sizi
161 END DO
162 END IF
163 END DO
164 ELSE
165 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
166 nod = fr_elem(j)
167 IF(itagx(nod)==1)THEN
168 DO cc = adskyi(nod-1),adskyi(nod)-1
169 sbuf(l) = j-ideb
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)
175 l = l + sizi
176 END DO
177 END IF
178 END DO
179 ENDIF
180 ELSE
181 IF(nodadt_therm == 1) THEN
182 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
183 nod = fr_elem(j)
184 IF(itagx(nod)==1)THEN
185 DO cc = adskyi(nod-1),adskyi(nod)-1
186 sbuf(l) = j-ideb
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)
194 l = l + sizi
195 END DO
196 END IF
197 END DO
198 ELSE
199 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
200 nod = fr_elem(j)
201 IF(itagx(nod)==1)THEN
202 DO cc = adskyi(nod-1),adskyi(nod)-1
203 sbuf(l) = j-ideb
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)
210 l = l + sizi
211 END DO
212 END IF
213 END DO
214 ENDIF
215 END IF
216 ENDIF ! INTHEAT
217 ELSE
218C for type24 + pxfem
219 IF(intheat == 0 )THEN
220 IF(nfskyi==4)THEN
221 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
222 nod = fr_elem(j)
223 IF(itagx(nod)==1)THEN
224 DO cc = adskyi(nod-1),adskyi(nod)-1
225 sbuf(l) = j-ideb
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)
230C
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)
236 l = l + sizi
237 END DO
238 END IF
239 END DO
240 ELSE
241 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
242 nod = fr_elem(j)
243 IF(itagx(nod)==1)THEN
244 DO cc = adskyi(nod-1),adskyi(nod)-1
245 sbuf(l) = j-ideb
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)
251C
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)
257 l = l + sizi
258 END DO
259 END IF
260 END DO
261 END IF
262C + la th ermique
263 ELSE
264 IF(nfskyi==4)THEN
265 IF(nodadt_therm == 1) THEN
266 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
267 nod = fr_elem(j)
268 IF(itagx(nod)==1)THEN
269 DO cc = adskyi(nod-1),adskyi(nod)-1
270 sbuf(l) = j-ideb
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)
277C
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)
283 l = l + sizi
284 END DO
285 END IF
286 END DO
287 ELSE
288 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
289 nod = fr_elem(j)
290 IF(itagx(nod)==1)THEN
291 DO cc = adskyi(nod-1),adskyi(nod)-1
292 sbuf(l) = j-ideb
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)
298C
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)
304 l = l + sizi
305 END DO
306 END IF
307 END DO
308 ENDIF
309 ELSE
310 IF(nodadt_therm == 1) THEN
311 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
312 nod = fr_elem(j)
313 IF(itagx(nod)==1)THEN
314 DO cc = adskyi(nod-1),adskyi(nod)-1
315 sbuf(l) = j-ideb
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(cc)
323C
324 sbuf(l+8) = fskyif_pxfem(1,cc)
325 sbuf(l+9) = fskyif_pxfem(2,cc)
326 sbuf(l+10)= fskyif_pxfem(3,cc)
327 sbuf(l+11)= fskyif_pxfem(4,cc)
328 sbuf(l+12)= fskyif_pxfem(5,cc)
329 l = l + sizi
330 END DO
331 END IF
332 END DO
333 ELSE
334 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
335 nod = fr_elem(j)
336 IF(itagx(nod)==1)THEN
337 DO cc = adskyi(nod-1),adskyi(nod)-1
338 sbuf(l) = j-ideb
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)
345C
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)
351 l = l + sizi
352 END DO
353 END IF
354 END DO
355 ENDIF
356 END IF
357 ENDIF ! INTHEAT
358 ENDIF ! INTPLYXFEM
359C
360 siz = nbisdp(i)*(sizi)
361 msgtyp = msgoff
362 CALL mpi_isend(
363 s sbuf(l0),siz,real,it_spmd(i),msgtyp,
364 g spmd_comm_world,req_s(i),ierror)
365 END IF
366 END DO
367C
368C decompactage partie interface
369C
370 nbirct = 0
371 DO ii=1,nbirecv
372 CALL mpi_waitany(nbirecv,req_r,index,status,ierror)
373 i = irindex(index)
374 l = iad_recv(i)
375 nb_nod = nbircp(i)
376 ideb = iad_elem(1,i)-1
377C
378 IF(intplyxfem == 0) THEN
379 IF(intheat == 0 ) THEN
380 IF(nfskyi==4)THEN
381#include "vectorize.inc"
382 DO j = 1, nb_nod
383 jj = nint(rbuf(l))+ideb
384 nod = fr_elem(jj)
385 isky(nisky+j) = nod
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)
390 l = l + sizi
391 ENDDO
392 ELSE
393#include "vectorize.inc"
394 DO j = 1, nb_nod
395 jj = nint(rbuf(l))+ideb
396 nod = fr_elem(jj)
397 isky(nisky+j) = nod
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)
403 l = l + sizi
404 ENDDO
405 ENDIF
406C + la thermique
407 ELSE
408 IF(nfskyi==4)THEN
409 IF(nodadt_therm == 1) THEN
410#include "vectorize.inc"
411 DO j = 1, nb_nod
412 jj = nint(rbuf(l))+ideb
413 nod = fr_elem(jj)
414 isky(nisky+j) = nod
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)
421 l = l + sizi
422 ENDDO
423 ELSE
424#include "vectorize.inc"
425 DO j = 1, nb_nod
426 jj = nint(rbuf(l))+ideb
427 nod = fr_elem(jj)
428 isky(nisky+j) = nod
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)
434 l = l + sizi
435 ENDDO
436 ENDIF
437 ELSE
438 IF(nodadt_therm == 1) THEN
439#include "vectorize.inc"
440 DO j = 1, nb_nod
441 jj = nint(rbuf(l))+ideb
442 nod = fr_elem(jj)
443 isky(nisky+j) = nod
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)
451 l = l + sizi
452 ENDDO
453 ELSE
454#include "vectorize.inc"
455 DO j = 1, nb_nod
456 jj = nint(rbuf(l))+ideb
457 nod = fr_elem(jj)
458 isky(nisky+j) = nod
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)
465 l = l + sizi
466 ENDDO
467 ENDIF
468 ENDIF
469
470 ENDIF ! INTHEAT
471 ELSE ! INTPLYXFEM > 0
472 IF(intheat == 0 ) THEN
473 IF(nfskyi==4)THEN
474#include "vectorize.inc"
475 DO j = 1, nb_nod
476 jj = nint(rbuf(l))+ideb
477 nod = fr_elem(jj)
478 isky(nisky+j) = nod
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)
483C
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)
489 l = l + sizi
490 ENDDO
491 ELSE
492#include "vectorize.inc"
493 DO j = 1, nb_nod
494 jj = nint(rbuf(l))+ideb
495 nod = fr_elem(jj)
496 isky(nisky+j) = nod
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)
502C
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)
508 l = l + sizi
509 ENDDO
510 ENDIF
511C + la thermique
512 ELSE
513 IF(nfskyi==4)THEN
514 IF(nodadt_therm == 1) THEN
515#include "vectorize.inc"
516 DO j = 1, nb_nod
517 jj = nint(rbuf(l))+ideb
518 nod = fr_elem(jj)
519 isky(nisky+j) = nod
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)
526C
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)
532 l = l + sizi
533 ENDDO
534 ELSE
535#include "vectorize.inc"
536 DO j = 1, nb_nod
537 jj = nint(rbuf(l))+ideb
538 nod = fr_elem(jj)
539 isky(nisky+j) = nod
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)
545C
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)
551 l = l + sizi
552 ENDDO
553 ENDIF
554 ELSE
555 IF(nodadt_therm == 1) THEN
556#include "vectorize.inc"
557 DO j = 1, nb_nod
558 jj = nint(rbuf(l))+ideb
559 nod = fr_elem(jj)
560 isky(nisky+j) = nod
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)
568C
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)
574 l = l + sizi
575 ENDDO
576 ELSE
577#include "vectorize.inc"
578 DO j = 1, nb_nod
579 jj = nint(rbuf(l))+ideb
580 nod = fr_elem(jj)
581 isky(nisky+j) = nod
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)
588C
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(l+9)
592 plyskyi%FSKYI(nisky+j,4) = rbuf(l+10)
593 plyskyi%FSKYI(nisky+j,5) = rbuf(l+11)
594 l = l + sizi
595 ENDDO
596 ENDIF
597 ENDIF
598
599 ENDIF ! INTHEAT
600
601 ENDIF ! INTPLYXFEM
602 nisky = nisky + nb_nod
603 END DO
604C
605C wait terminaison isend
606C
607 DO i = 1, nspmd
608 IF(nbisdp(i)>0)
609 . CALL mpi_wait(req_s(i),status,ierror)
610 ENDDO
611 DEALLOCATE(rbuf)
612 DEALLOCATE(sbuf)
613C
614#endif
615 RETURN
616 END
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
Definition mpi.f:382
subroutine mpi_wait(ireq, status, ierr)
Definition mpi.f:525
subroutine mpi_waitany(cnt, array_of_requests, index, status, ierr)
Definition mpi.f:549
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)
Definition mpi.f:372
type(ply_data), allocatable plyskyi
Definition plyxfem_mod.F:92
subroutine spmd_exchi_a_pon(iad_elem, fr_elem, sizi, isky, fskyi, fskyif, itagx, adskyi, nbirct, nbisdt, nbircp, nbisdp, ftheskyi, ftheskyif, condnskyi, condnskyif, fskyif_pxfem, intheat, nodadt_therm)