OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
spmd_ifront.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/.
23!||====================================================================
24!|| spmd_ifront ../engine/source/mpi/interfaces/spmd_ifront.f
25!||--- called by ------------------------------------------------------
26!|| imp_tripi ../engine/source/implicit/imp_int_k.F
27!|| inttri ../engine/source/interfaces/intsort/inttri.F
28!||--- calls -----------------------------------------------------
29!|| ancmsg ../engine/source/output/message/message.F
30!|| arret ../engine/source/system/arret.F
31!||--- uses -----------------------------------------------------
32!|| ifront_mod ../engine/share/modules/ifront_mod.F
33!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
34!|| message_mod ../engine/share/message_module/message_mod.F
35!|| sensor_mod ../common_source/modules/sensor_mod.F90
36!|| spmd_comm_world_mod ../engine/source/mpi/spmd_comm_world.F90
37!|| tri25ebox ../engine/share/modules/tri25ebox.F
38!|| tri7box ../engine/share/modules/tri7box.F
39!||====================================================================
40 SUBROUTINE spmd_ifront(
41 1 IPARI ,NEWFRONT,ISENDTO ,IRCVFROM,
42 2 NSENSOR ,NBINTC ,INTLIST ,ISLEN7 ,IRLEN7 ,
43 3 ISLEN11 ,IRLEN11 ,ISLEN17 ,IRLEN17 ,IRLEN7T ,
44 4 ISLEN7T ,IRLEN20 ,ISLEN20 ,IRLEN20T,ISLEN20T,
45 5 IRLEN20E,ISLEN20E,SENSOR_TAB,INTBUF_TAB, MODE)
46C============================================================================
47C M o d u l e s
48C-----------------------------------------------
49 USE tri25ebox
50 USE tri7box
51 USE ifront_mod
52 USE message_mod
53 USE intbufdef_mod
54 USE sensor_mod
55C-----------------------------------------------
56C I m p l i c i t T y p e s
57C-----------------------------------------------
58 USE spmd_comm_world_mod, ONLY : spmd_comm_world
59#include "implicit_f.inc"
60C-----------------------------------------------
61C M e s s a g e P a s s i n g
62C-----------------------------------------------
63#include "spmd.inc"
64C-----------------------------------------------
65C C o m m o n B l o c k s
66C-----------------------------------------------
67#include "com01_c.inc"
68#include "com04_c.inc"
69#include "com08_c.inc"
70#include "param_c.inc"
71#include "task_c.inc"
72#include "assert.inc"
73C-----------------------------------------------
74C D u m m y A r g u m e n t s
75C-----------------------------------------------
76 INTEGER ,INTENT(IN) :: NSENSOR
77 INTEGER NBINTC,ISLEN7,IRLEN7,ISLEN11,IRLEN11,ISLEN17,IRLEN17,
78 . IRLEN7T,ISLEN7T,IRLEN20,ISLEN20 ,IRLEN20T,ISLEN20T,
79 . IRLEN20E,ISLEN20E,
80 . IPARI(NPARI,NINTER),
81 . newfront(*), intlist(*),
82 . isendto(ninter+1,*) ,ircvfrom(ninter+1,*)
83 INTEGER MODE
84 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
85 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
86C-----------------------------------------------
87C L o c a l V a r i a b l e s
88C-----------------------------------------------
89#ifdef MPI
90 INTEGER NSEG, LEN, NI, ITYP, OLD_LEN,
91 . N, P, I, J, K, L, PP, NIN ,IDEB, IDEB2, IDEB3, II,
92 . LENOUT, I0, NS, INTTH,
93 . NOINT, MULTIMP, ITY, I_STOK_G, ISTK,
94 . SIZE, ALEN, LOC_PROC, MSGTYP,
95 . msgoff, msgoff2, msgoff3, msgoff4,
96 . ierror, ierror2, idebut(nspmd+ninter),
97 . status(mpi_status_size),req_s(nspmd),
98 . isubtmp(ninter,2,nspmd),isubtmp2(ninter,2,nspmd),
99 . idebut2(ninter), isens,interact,
100 . iedge
101 INTEGER :: SIZ,IDEB_EDGE,NB_SUBINT
102 INTEGER :: INDEX_PROC
103 LOGICAL :: ONLY_INTER_7
104 DATA MSGOFF/1009/
105 DATA MSGOFF2/1010/
106 DATA msgoff3/1011/
107 DATA msgoff4/1012/
108
109C REAL
110 my_real
111 . startt,gap,maxbox,minbox,stopt,dist,tzinf,dist0,
112 . xmax, ymax, zmax, xmin, ymin, zmin,ts
113
114
115C-----------------------------------------------
116 IF(nspmd==1) RETURN
117 loc_proc = ispmd+1
118
119
120c NBINTC = 0
121c DO NIN = 1,NINTER
122c IF(IPARI(7,NIN) == 25) THEN
123c NBINTC = NBINTC + 1
124c INTLIST(NBINTC) = NIN
125c ENDIF
126c ENDDO
127c DO II = 1, NBINTC
128c NIN = INTLIST(II)
129c ITY=IPARI(7,NIN)
130c IF(ITY /= 25) THEN
131c NBINTC = NBINTC + 1
132c INTLIST(NBINTC) = NIN
133c ENDIF
134c ENDDO
135C Attention aux interfaces inactives
136
137C ===========================================================
138 IF(mode == 1) THEN
139
140 icomm = 0
141C
142
143 ! Allocation done once for all
144 IF(.NOT. ALLOCATED(proc_list)) THEN
145 ALLOCATE(proc_list(nspmd) )
146 ALLOCATE(icomm2(nspmd), req_send_siz(nspmd), req_send_msg(nspmd))
147 ALLOCATE(req_recv_siz(nspmd), req_recv_msg(nspmd))
148 ALLOCATE(ircom(nspmd), iscom(nspmd), iscoms(nspmd))
149 ALLOCATE(sizbuf_r(nspmd))
150 ALLOCATE(sizbuf_s(nspmd))
151 ALLOCATE(msgbuf_r(nspmd))
152 ALLOCATE(msgbuf_s(nspmd))
153 ALLOCATE(icomm2_send(nspmd),icomm2_rcv(nspmd))
154c ALLOCATE(MSGBUF_S_LEN(NSPMD))
155c MSGBUF_S_LEN(1:NSPMD) = 0
156c ALLOCATE(MSGBUF_R_LEN(NSPMD))
157c MSGBUF_R_LEN(1:NSPMD) = 0
158 DO p=1,nspmd
159 ALLOCATE(sizbuf_r(p)%P(2*nbintc))
160 ALLOCATE(sizbuf_s(p)%P(2*nbintc))
161 sizbuf_r(p)%P(1:2*nbintc) = 0
162 sizbuf_s(p)%P(1:2*nbintc) = 0
163 ENDDO
164 ENDIF
165
166 !Initialization
167 req_recv_siz(1:nspmd) = mpi_request_null
168 req_recv_msg(1:nspmd) = mpi_request_null
169 proc_list(1:nspmd) = 0
170 iscom(1:nspmd) = 0
171 iscoms(1:nspmd) = 0
172
173
174C
175 nisubg = 0
176 l = 0
177 SIZE = 4+2*nspmd
178 DO ii = 1, nbintc
179 nin = intlist(ii)
180 ity=ipari(7,nin)
181 IF(ity==7.OR.ity==10.OR.
182 . ity==22.OR.ity==23.OR.ity==24.OR.
183 . ity==20.OR.ity==11.OR.ity==17.OR.
184 . ity==25) THEN
185C Attention aux interfaces inactives
186C
187 interact = 0
188 isens = 0
189 IF(ity == 7.OR.ity == 11.OR.ity == 24.OR.ity == 25) THEN
190 isens = ipari(64,nin) ! IF an interface sensor is defined
191 ENDIF
192 IF (isens > 0) THEN ! Sensor ID
193 ts = sensor_tab(isens)%TSTART
194 IF (tt>=ts) interact = 1
195 ELSE
196 startt= intbuf_tab(nin)%VARIABLES(3)
197 stopt = intbuf_tab(nin)%VARIABLES(11)
198 IF (startt<=tt.AND.tt<=stopt) interact = 1
199 ENDIF
200C
201 dist = intbuf_tab(nin)%VARIABLES(5)
202C
203c IF(ITY == 25) THEN
204c WRITE(6,*) "DIST=",DIST
205c WRITE(6,*) "INTERACT=",INTERACT
206c ENDIF
207
208 IF (ity == 25 .OR. (dist<=zero.AND.interact/=0))THEN
209 IF(isendto(nin,loc_proc)/=0.OR.
210 . ircvfrom(nin,loc_proc)/=0) THEN
211
212 newfront(nin) = 2
213c IF(ITY == 25) THEN
214c WRITE(6,*) "NEWFRONT",NIN,"=",2
215c ENDIF
216
217 icomm = 1
218 intbuf_tab(nin)%VARIABLES(5) = -dist
219c RBUFS(L+1)= NIN
220c RBUFS(L+2)= INTBUF_TAB(NIN)%VARIABLES(8)
221c RBUFS(L+3)= INTBUF_TAB(NIN)%VARIABLES(9)
222c RBUFS(L+4)= INTBUF_TAB(NIN)%VARIABLES(12)
223
224 DO p = 1, nspmd
225 len = nsnfi(nin)%P(p)
226C IF(IPARI(7,NIN)==20) LEN = LEN + NSNFIE(NIN)%P(P)
227 sizbuf_s(p)%P(ii)= len
228 iscom(p) = iscom(p) + len
229 ENDDO
230 IF (ipari(36,nin)>0.AND.ipari(7,nin)/=17) THEN
231 nisubg = max(nisubg,ipari(36,nin))
232 DO p=1,nspmd
233 iscoms(p) = iscoms(p) + nsnfi(nin)%P(p)
234 IF(ipari(7,nin)==25.AND. ipari(58,nin) > 0) THEN
235 iscoms(p) = iscoms(p) + nsnfie(nin)%P(p)
236 ENDIF
237 ENDDO
238 END IF
239C
240C Rajout partie Edge pour type 20
241C
242 ity=ipari(7,nin)
243 IF (ity == 20 .OR. (ity == 25.AND. ipari(58,nin) > 0)) THEN
244 DO p = 1, nspmd
245 len = nsnfie(nin)%P(p)
246 sizbuf_s(p)%P(ii+nbintc)= len
247 iscom(p) = iscom(p) + len
248 END DO
249 ELSE
250 DO p = 1, nspmd
251 sizbuf_s(p)%P(ii+nbintc)= 0
252 END DO
253 END IF
254C
255 l = l + SIZE
256 ENDIF
257 ENDIF
258 ENDIF
259 ENDDO
260C
261C Verification de la fin du tri (i7buce)
262C
263 DO p = 1, nspmd
264 icomm2(p) = 0
265 icomm2_send(p) = 0
266 icomm2_rcv(p) = 0
267 only_inter_7 = .true.
268 IF (p/=loc_proc) THEN
269 DO ii = 1, nbintc
270 nin = intlist(ii)
271 ity=ipari(7,nin)
272 IF(newfront(nin)==2) THEN
273 IF(isendto(nin,p)/=0.OR.ircvfrom(nin,p)/=0) THEN
274 icomm2(p) = 1
275 IF(ity/=7.AND.ity/=11) only_inter_7 = .false.
276 ENDIF
277 IF(isendto(nin,p)/=0.AND.ircvfrom(nin,loc_proc)/=0) icomm2_send(p) = 1 ! nsn > 0 on p & nmn > 0 on ispmd
278 IF(ircvfrom(nin,p)/=0.AND.isendto(nin,loc_proc)/=0) icomm2_rcv(p) = 1 ! nmn > 0 on p & nsn > 0 on ispmd
279 ENDIF
280 ENDDO
281 IF(.NOT.only_inter_7) THEN
282 icomm2_rcv(p) = icomm2(p)
283 icomm2_send(p) = icomm2(p)
284 ENDIF
285 END IF
286 IF (icomm2_send(p)==1)THEN
287 msgtyp = msgoff
288 l = 2*nbintc
289 CALL mpi_isend(
290 s sizbuf_s(p)%P(1),l,mpi_integer,it_spmd(p),msgtyp,
291 g spmd_comm_world,req_send_siz(p),ierror)
292 ENDIF
293 ENDDO
294
295
296 nb_to_recv = 0
297 DO p = 1, nspmd
298 ircom(p) = 0
299 IF(icomm2_rcv(p)==1)THEN
300 msgtyp = msgoff
303 l = 2 * nbintc
304 CALL mpi_irecv(sizbuf_r(p)%P(1),l,
305 . mpi_integer,it_spmd(p),
306 . msgtyp,spmd_comm_world,req_recv_siz(nb_to_recv),ierror)
307
308 ENDIF
309 ENDDO
310C=======================================================================
311C ENVOI
312 IF(icomm /= 0) THEN
313 DO ii = 1, nbintc
314 i = intlist(ii)
315 idebut(i) = 0
316 idebut2(i) = 0
317 ENDDO
318 DO p = 1, nspmd
319 len = iscom(p)
320 IF(len/=0) THEN
321C alloc structure de comm
322 ALLOCATE(msgbuf_s(p)%P(len),stat=ierror)
323
324 IF(ierror/=0) THEN
325 CALL ancmsg(msgid=20,anmode=aninfo)
326 CALL arret(2)
327 ENDIF
328 ideb = 0
329 DO ii = 1, nbintc
330 nin = intlist(ii)
331C interface retriee ?
332 IF(newfront(nin)==2) THEN
333 IF(nsnfi(nin)%P(p)>0) THEN
334 ideb2 = idebut(nin)
335 len = nsnfi(nin)%P(p)
336 DO i = 1, len
337 msgbuf_s(p)%P(ideb+i) = nsvfi(nin)%P(ideb2+i)
338 ENDDO
339 idebut(nin) = idebut(nin) + len
340 ideb = ideb + len
341 ENDIF
342 IF(ipari(7,nin) == 20 .OR. (ipari(7,nin) == 25.AND. ipari(58,nin) > 0))THEN
343 IF(nsnfie(nin)%P(p)>0) THEN
344 ideb2 = idebut2(nin)
345 len = nsnfie(nin)%P(p)
346C WRITE(6,*) __FILE__,ISPMD,"RECV",P-1,LEN
347 DO i = 1, len
348 assert(nsvfie(nin)%P(ideb2+i) > 0)
349 msgbuf_s(p)%P(ideb+i) = abs(nsvfie(nin)%P(ideb2+i))
350 ENDDO
351 idebut2(nin) = idebut2(nin) + len
352 ideb = ideb + len
353 ENDIF
354 END IF
355 ENDIF
356 ENDDO
357 msgtyp = msgoff2
358 CALL mpi_isend(
359 s msgbuf_s(p)%P(1),ideb,mpi_integer,it_spmd(p),msgtyp,
360 g spmd_comm_world,req_send_msg(p),ierror)
361 ENDIF
362 ENDDO
363 ENDIF ! ICOMM /= 0)
364
365 ELSEIF( mode == 2 ) THEN
366C =========================================
367c _ ,/'
368c (_). ,/'
369c __ :: - - - - - - - - - - - -
370c (__)' `\.
371c `\.
372C ==========================================
373
374
375
376
377C ==========================================================================
378C RECEPTION OF sizes
379! CALL MPI_WAITALL(NB_TO_RECV,REQ_RECV_SIZ(1:NB_TO_RECV),MPI_STATUSES_IGNORE,IERROR)
380
381 DO i = 1, nb_to_recv
382 CALL mpi_waitany(nb_to_recv,req_recv_siz,index_proc,status,ierror)
383 p = proc_list(index_proc)
384! P = PROC_LIST(I)
385
386 ircom(p) = 0
387 DO ii = 1, nbintc
388 nin = intlist(ii)
389 ity=ipari(7,nin)
390 IF(newfront(nin) == 2) THEN
391 IF(isendto(nin,loc_proc)/=0.OR.
392 . ircvfrom(nin,loc_proc)/=0) THEN
393 len = sizbuf_r(p)%P(ii)
394 nsnsi(nin)%P(p) = len
395 ircom(p) = ircom(p) + len
396 IF(ity == 20 .OR. (ity == 25.AND. ipari(58,nin) > 0))THEN
397 len = sizbuf_r(p)%P(ii+nbintc)
398 nsnsie(nin)%P(p) = len
399 ircom(p) = ircom(p) + len
400 END IF
401 ENDIF
402 ENDIF
403 ENDDO ! NBINTC
404 len = ircom(p)
405 IF(len>0) THEN
406 ALLOCATE(msgbuf_r(p)%P(len),stat=ierror)
407 IF(ierror/=0) THEN
408 CALL ancmsg(msgid=20,anmode=aninfo)
409 CALL arret(2)
410 ENDIF
411 msgtyp = msgoff2
412 CALL mpi_irecv(msgbuf_r(p)%P(1),len,mpi_integer,it_spmd(p),
413 . msgtyp,spmd_comm_world,req_recv_msg(i),ierror)
414
415 ENDIF
416 ENDDO
417
418
419
420
421
422
423C RECEPTION of messages
424 DO p = 1, nb_to_recv
425 CALL mpi_wait(req_recv_msg(p),status,ierror)
426 ENDDO
427 DO p = 1, nspmd
428 IF (icomm2_send(p)==1) THEN
429 CALL mpi_wait(req_send_siz(p),status,ierror)
430 ENDIF
431 ENDDO
432
433 IF(icomm==0) RETURN
434
435 DO p = 1, nspmd
436 idebut(p) = 0
437 ENDDO
438C MAJ STRUCTURES D ECHANGES
439 DO ii = 1, nbintc
440 nin = intlist(ii)
441C interface retriee ?
442 IF(newfront(nin)==2) THEN
443 ideb = 0
444 IF(ASSOCIATED(nsvsi(nin)%P))DEALLOCATE(nsvsi(nin)%P)
445 len = 0
446 DO p = 1, nspmd
447 len = len + nsnsi(nin)%P(p)
448 ENDDO
449 ierror = 0
450 IF(len>0)ALLOCATE(nsvsi(nin)%P(len),stat=ierror)
451 IF(ierror/=0) THEN
452 CALL ancmsg(msgid=20,anmode=aninfo)
453 CALL arret(2)
454 ENDIF
455 DO p = 1, nspmd
456 len = nsnsi(nin)%P(p)
457C test si proc a envoye qqchose
458 IF(len>0) THEN
459 ideb2 = idebut(p)
460 DO i = 1, len
461 nsvsi(nin)%P(ideb+i) = msgbuf_r(p)%P(ideb2+i)
462 ENDDO
463 ideb = ideb + len
464 idebut(p) = idebut(p) + len
465 ENDIF
466 ENDDO
467C
468 IF(ipari(7,nin) == 20 .OR. (ipari(7,nin) == 25.AND. ipari(58,nin) > 0) )THEN
469 ideb = 0
470 IF(ASSOCIATED(nsvsie(nin)%P))DEALLOCATE(nsvsie(nin)%P)
471 len = 0
472 DO p = 1, nspmd
473 len = len + nsnsie(nin)%P(p)
474 ENDDO
475 ierror = 0
476 IF(len>0)ALLOCATE(nsvsie(nin)%P(len),stat=ierror)
477 IF(ierror/=0) THEN
478 CALL ancmsg(msgid=20,anmode=aninfo)
479 CALL arret(2)
480 ENDIF
481 DO p = 1, nspmd
482 len = nsnsie(nin)%P(p)
483C test si proc a envoye qqchose
484 IF(len>0) THEN
485C WRITE(6,*) __FILE__,ISPMD,"SEND",P-1,LEN
486 ideb2 = idebut(p)
487 DO i = 1, len
488 assert(msgbuf_r(p)%P(ideb2+i) > 0)
489 nsvsie(nin)%P(ideb+i) = abs(msgbuf_r(p)%P(ideb2+i))
490 ENDDO
491 ideb = ideb + len
492 idebut(p) = idebut(p) + len
493 ENDIF
494 ENDDO
495 END IF
496 ENDIF
497 ENDDO
498C Attente reception de msg
499 DO p = 1, nspmd
500 IF(ircom(p)>0) THEN
501 DEALLOCATE(msgbuf_r(p)%P)
502 ENDIF
503 IF(iscom(p)>0) THEN
504 CALL mpi_wait(req_send_msg(p),status,ierror)
505 DEALLOCATE(msgbuf_s(p)%P)
506 ENDIF
507 ENDDO
508
509C
510 IF(nisubg>0) THEN
511C interface avec output sous interfaces
512C
513C Calcul et envoi de la taille des parties sous interfaces sur partie frontiere
514C
515 DO p = 1, nspmd
516 IF(ircom(p)>0) THEN
517 DO ii = 1, nbintc
518 i = intlist(ii)
519 isubtmp(i,1,p) = 0
520 isubtmp(i,2,p) = 0
521 END DO
522 END IF
523 END DO
524 DO ii = 1, nbintc
525 nin = intlist(ii)
526C interface retriee avec sous interfaces ?
527 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
528 + ipari(7,nin)/=17) THEN
529 ideb = 0
530 DO p = 1, nspmd
531 len = nsnsi(nin)%P(p)
532 lenout = 0
533 IF(len>0) THEN
534 DO i = 1, len
535 ns = nsvsi(nin)%P(ideb+i)
536C rajout +1 pour envoyer le nb de sous interface par noeud
537 lenout = lenout + intbuf_tab(nin)%ADDSUBS(ns+1)-
538 . intbuf_tab(nin)%ADDSUBS(ns) + 1
539 END DO
540 ideb = ideb + len
541 END IF
542 isubtmp(nin,1,p) = lenout
543 ENDDO
544 IF(ipari(7,nin) ==25 .AND. ipari(58,nin) > 0) THEN
545 ideb = 0
546 DO p=1,nspmd
547C Partie Eedge
548 len = nsnsie(nin)%P(p)
549 lenout = 0
550 IF(len>0) THEN
551 DO i = 1, len
552 ns = nsvsie(nin)%P(ideb+i)
553C rajout +1 pour envoyer le nb de sous interface par noeud
554 lenout = lenout + intbuf_tab(nin)%ADDSUBE(ns+1)-
555 . intbuf_tab(nin)%ADDSUBE(ns) + 1
556C WRITE(6,*) "Node",I,INTBUF_TAB(NIN)%ADDSUBE(NS),
557C . INTBUF_TAB(NIN)%ADDSUBE(NS+1)-1
558 END DO
559 ideb = ideb + len
560 END IF
561C WRITE(6,*) "ISUBTMP(",P-1,")=",LENOUT
562 isubtmp(nin,2,p) = lenout
563 END DO ! NSPMD
564 ENDIF ! type 25 E2E
565 END IF ! NEWFRONT
566 END DO ! NBINTC
567C
568 DO p = 1, nspmd
569 IF(ircom(p)>0) THEN
570 lenout = 0
571 DO ii = 1, nbintc
572 nin = intlist(ii)
573 lenout = lenout + isubtmp(nin,1,p)
574 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
575 + (ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25)) THEN
576 lenout = lenout + isubtmp(nin,1,p) - nsnsi(nin)%P(p)
577 ENDIF
578 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
579 + ipari(7,nin)==25) THEN
580 IF(ipari(58,nin) /= 0) THEN
581 lenout = lenout + 2*isubtmp(nin,2,p) - nsnsie(nin)%P(p)
582 ENDIF
583 ENDIF
584 END DO
585C longueur comm sauvegardee ds ircom
586 ircom(p) = lenout
587 IF(lenout>0) THEN
588C alloc structure de comm
589 ALLOCATE(msgbuf_s(p)%P(lenout),stat=ierror)
590 IF(ierror/=0) THEN
591 CALL ancmsg(msgid=20,anmode=aninfo)
592 CALL arret(2)
593 END IF
594 msgtyp = msgoff3
595 siz = ninter * 2
596 CALL mpi_isend(
597 s isubtmp(1,1,p),siz,mpi_integer,it_spmd(p),msgtyp,
598 g spmd_comm_world,req_s(p),ierror)
599 END IF
600 END IF
601 END DO
602C
603C Reception de la taille des parties sous interfaces sur partie frontiere
604C
605 DO p = 1, nspmd
606 IF(iscoms(p)>0) THEN
607 msgtyp = msgoff3
608 lenout = 0
609 siz = ninter * 2
610C on recoit dans la partie de buffer isubtmp non utilisee
611 CALL mpi_recv(isubtmp2(1,1,p),siz,mpi_integer,it_spmd(p),
612 . msgtyp,spmd_comm_world,status,ierror)
613 DO ii = 1, nbintc
614 nin = intlist(ii)
615C interface retriee avec sous interfaces ?
616 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
617 + ipari(7,nin)/=17) THEN
618C on retranche le nbre de noeuds pour retrouver la longeur des sous interfaces
619 nb_subint = isubtmp2(nin,1,p) - nsnfi(nin)%P(p)
620 nisubsfi(nin)%P(p) = nb_subint
621 lenout = lenout + isubtmp2(nin,1,p)
622 IF(ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25) THEN
623 lenout = lenout + nb_subint
624 ENDIF
625 IF(ipari(7,nin)==25) THEN
626 IF(ipari(58,nin) /= 0) THEN ! edge to edge
627 nisubsfie(nin)%P(p) = isubtmp2(nin,2,p) - nsnfie(nin)%P(p)
628C WRITE(6,*) "NISUBSFIE(NIN)%P(",P-1,")=",NISUBSFIE(NIN)%P(P),ISUBTMP2(NIN,2,P)
629 lenout = lenout + 2*isubtmp2(nin,2,p) - nsnfie(nin)%P(p)
630! Buffer is [ Size , I_1, I_2, ...., wize]
631 ENDIF
632 ENDIF
633 END IF
634 END DO
635C longueur comm sauvegardee ds iscom
636 iscom(p) = lenout
637 IF(lenout>0) THEN
638 ALLOCATE(msgbuf_r(p)%P(lenout),stat=ierror)
639 IF(ierror/=0) THEN
640 CALL ancmsg(msgid=20,anmode=aninfo)
641 CALL arret(2)
642 ENDIF
643 END IF
644 ELSE
645 iscom(p) = 0
646 END IF
647 END DO
648C
649 DO p = 1, nspmd
650 IF(ircom(p)>0) THEN
651 CALL mpi_wait(req_s(p),status,ierror)
652 END IF
653 END DO
654C
655C Envoi des parties sous interfaces sur partie frontiere
656C
657 DO p = 1, nspmd
658 idebut(p) = 0
659 END DO
660 DO ii = 1, nbintc
661 nin = intlist(ii)
662C interface retriee avec sous interfaces ?
663 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
664 + ipari(7,nin)/=17) THEN
665 ideb = 0
666 DO p = 1, nspmd
667 len = nsnsi(nin)%P(p)
668 IF(len>0) THEN
669 i0 = idebut(p)
670 DO i = 1, len
671 ns = nsvsi(nin)%P(ideb+i)
672 i0 = i0 + 1
673C recupere le nbre de sous interface pour le noeud
674 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%ADDSUBS(ns+1)-
675 . intbuf_tab(nin)%ADDSUBS(ns)
676
677 DO j = intbuf_tab(nin)%ADDSUBS(ns),
678 . intbuf_tab(nin)%ADDSUBS(ns+1)-1
679 i0 = i0 + 1
680 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%LISUBS(j)
681 END DO
682 IF(ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25) THEN
683 DO j = intbuf_tab(nin)%ADDSUBS(ns),
684 . intbuf_tab(nin)%ADDSUBS(ns+1)-1
685 i0 = i0 + 1
686 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%INFLG_SUBS(j)
687 END DO
688 END IF
689 END DO
690 idebut(p) = i0
691 ideb = ideb + len
692 END IF
693 END DO
694 IF(ipari(7,nin) == 25 .AND. ipari(58,nin) /= 0)THEN
695 ideb_edge = 0
696 DO p = 1,nspmd
697C Sub interface for Edges
698 len = nsnsie(nin)%P(p)
699 IF(len>0) THEN
700 i0 = idebut(p)
701 DO i = 1, len
702 ns = nsvsie(nin)%P(ideb_edge+i)
703 i0 = i0 + 1
704C recupere le nbre de sous interface pour le noeud
705 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%ADDSUBE(ns+1)-
706 . intbuf_tab(nin)%ADDSUBE(ns)
707
708C WRITE(6,*) P-1,"MSGBUF_S(",I0,")=",LEN
709
710 DO j = intbuf_tab(nin)%ADDSUBE(ns),
711 . intbuf_tab(nin)%ADDSUBE(ns+1)-1
712 i0 = i0 + 1
713 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%LISUBE(j)
714C WRITE(6,*) P-1,"LISUBE---MSGBUF_S(",I0,")=",MSGBUF_S(P)%P(I0)
715 END DO
716 DO j = intbuf_tab(nin)%ADDSUBE(ns),
717 . intbuf_tab(nin)%ADDSUBE(ns+1)-1
718 i0 = i0 + 1
719 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%INFLG_SUBE(j)
720C WRITE(6,*) P-1,"INFLG---MSGBUF_S(",I0,")=",MSGBUF_S(P)%P(I0)
721 END DO
722 END DO
723 idebut(p) = i0
724 ideb_edge = ideb_edge + len
725 END IF ! LEN
726 END DO
727 ENDIF ! IEDGE
728 END IF
729 END DO
730C
731 DO p = 1, nspmd
732C longueur comm sauvegardee ds ircom
733 IF(ircom(p)>0) THEN
734 msgtyp = msgoff4
735C WRITE(6,*) "SEND",IRCOM(P) ,"TO",P-1
736 CALL mpi_isend(
737 s msgbuf_s(p)%P(1),ircom(p),mpi_integer,it_spmd(p),msgtyp,
738 g spmd_comm_world,req_s(p),ierror)
739 END IF
740 END DO
741C
742C Reception des parties sous interfaces sur partie frontiere
743C
744 DO p = 1, nspmd
745C longueur comm sauvegardee ds iscom
746 IF(iscom(p)>0) THEN
747 msgtyp = msgoff4
748C WRITE(6,*) "RECV",ISCOM(P) ,"FROM",P-1
749
750 CALL mpi_recv(msgbuf_r(p)%P(1),iscom(p),mpi_integer,it_spmd(p),
751 . msgtyp,spmd_comm_world,status,ierror)
752C DO II = 1,ISCOM(P)
753C WRITE(6,*) "MSGBUF_R(",P-1,")%P(",II,")=",MSGBUF_R(P)%P(II)
754C ENDDO
755 END IF
756 END DO
757C
758C Maj structures sous interfaces
759C
760 DO p = 1, nspmd
761 idebut(p) = 0
762 END DO
763 DO ii = 1, nbintc
764 nin = intlist(ii)
765C interface retriee avec sous interfaces ?
766 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
767 + ipari(7,nin)/=17) THEN
768 IF(ASSOCIATED(lisubsfi(nin)%P))DEALLOCATE(lisubsfi(nin)%P)
769 len = 0
770 DO p = 1, nspmd
771 len = len + nisubsfi(nin)%P(p)
772 END DO
773 ierror = 0
774 IF(len>0) THEN
775 ALLOCATE(lisubsfi(nin)%P(len),stat=ierror)
776 IF(ierror/=0) THEN
777 CALL ancmsg(msgid=20,anmode=aninfo)
778 CALL arret(2)
779 END IF
780 IF(ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25) THEN
781 IF(ASSOCIATED(inflg_subsfi(nin)%P))DEALLOCATE(inflg_subsfi(nin)%P)
782 ALLOCATE(inflg_subsfi(nin)%P(len),stat=ierror)
783 IF(ierror/=0) THEN
784 CALL ancmsg(msgid=20,anmode=aninfo)
785 CALL arret(2)
786 END IF
787 END IF
788 len = 1
789 IF(ASSOCIATED(addsubsfi(nin)%P))
790 . DEALLOCATE(addsubsfi(nin)%P)
791 DO p = 1, nspmd
792 len = len + nsnfi(nin)%P(p)
793 END DO
794 ALLOCATE(addsubsfi(nin)%P(len),stat=ierror)
795 IF(ierror/=0) THEN
796 CALL ancmsg(msgid=20,anmode=aninfo)
797 CALL arret(2)
798 END IF
799 ideb = 0
800 ideb3 = 0
801 addsubsfi(nin)%P(1) = 1
802 DO p = 1, nspmd
803 IF(iscom(p)>0) THEN
804 DO i = 1, nsnfi(nin)%P(p)
805 ideb2 = idebut(p)
806 ideb2 = ideb2 + 1
807 len = msgbuf_r(p)%P(ideb2)
808 addsubsfi(nin)%P(ideb3+i+1) =
809 + addsubsfi(nin)%P(ideb3+i) + len
810 DO j = 1, len
811 lisubsfi(nin)%P(ideb+j) = msgbuf_r(p)%P(ideb2+j)
812 END DO
813 idebut(p) = idebut(p) + len + 1
814 IF(ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25) THEN
815 ideb2 = ideb2 + len
816 DO j = 1, len
817 inflg_subsfi(nin)%P(ideb+j) = msgbuf_r(p)%P(ideb2+j)
818 END DO
819 idebut(p) = idebut(p) + len
820 END IF
821 ideb = ideb + len
822 END DO
823 ideb3 = ideb3 + nsnfi(nin)%P(p)
824 ENDIF
825 END DO
826 ELSE
827 len = 1
828 IF(ASSOCIATED(addsubsfi(nin)%P))
829 . DEALLOCATE(addsubsfi(nin)%P)
830 DO p = 1, nspmd
831 len = len + nsnfi(nin)%P(p)
832 END DO
833 ALLOCATE(addsubsfi(nin)%P(len),stat=ierror)
834 IF(ierror/=0) THEN
835 CALL ancmsg(msgid=20,anmode=aninfo)
836 CALL arret(2)
837 END IF
838 ideb3 = 0
839 addsubsfi(nin)%P(1) = 1
840 DO p = 1, nspmd
841 DO i = 1, nsnfi(nin)%P(p)
842 addsubsfi(nin)%P(ideb3+i+1) =
843 + addsubsfi(nin)%P(ideb3+i)
844 END DO
845 ideb3 = ideb3 + nsnfi(nin)%P(p)
846 END DO
847 END IF
848 IF(ipari(7,nin) == 25 .AND. ipari(58,nin) > 0) THEN
849 !type 25 edge part
850 IF(ASSOCIATED(lisubsfie(nin)%P))DEALLOCATE(lisubsfie(nin)%P)
851 len = 0
852 DO p = 1, nspmd
853 len = len + nisubsfie(nin)%P(p)
854 END DO
855 ierror = 0
856C WRITE(6,*) NIN,"SIZE LISUBSFIE=",LEN
857 IF(len>0) THEN
858 ALLOCATE(lisubsfie(nin)%P(len),stat=ierror)
859 IF(ierror/=0) THEN
860 CALL ancmsg(msgid=20,anmode=aninfo)
861 CALL arret(2)
862 END IF
863 IF(ipari(7,nin)==25)THEN
864 IF(ASSOCIATED(inflg_subsfie(nin)%P))DEALLOCATE(inflg_subsfie(nin)%P)
865 ALLOCATE(inflg_subsfie(nin)%P(len),stat=ierror)
866 IF(ierror/=0) THEN
867 CALL ancmsg(msgid=20,anmode=aninfo)
868 CALL arret(2)
869 END IF
870 END IF
871 len = 1
872 IF(ASSOCIATED(addsubsfie(nin)%P))
873 . DEALLOCATE(addsubsfie(nin)%P)
874 DO p = 1, nspmd
875 len = len + nsnfie(nin)%P(p)
876 END DO
877 ALLOCATE(addsubsfie(nin)%P(len),stat=ierror)
878C WRITE(6,*) NIN,"ADDSUBSFIE size:",LEN
879 IF(ierror/=0) THEN
880 CALL ancmsg(msgid=20,anmode=aninfo)
881 CALL arret(2)
882 END IF
883 ideb = 0
884 ideb3 = 0
885 addsubsfie(nin)%P(1) = 1
886 DO p = 1, nspmd
887 IF(iscom(p)>0) THEN
888 DO i = 1, nsnfie(nin)%P(p)
889 ideb2 = idebut(p)
890 ideb2 = ideb2 + 1
891 len = msgbuf_r(p)%P(ideb2)
892C WRITE(6,*) P-1,"MSGBUF_R(",IDEB2,")=",LEN
893 addsubsfie(nin)%P(ideb3+i+1) =
894 + addsubsfie(nin)%P(ideb3+i) + len
895C WRITE(6,*) "ADDSUBSFIE(NIN)%P(",IDEB3+I+1,") =", ADDSUBSFIE(NIN)%P(IDEB3+I+1)
896 DO j = 1, len
897 lisubsfie(nin)%P(ideb+j) = msgbuf_r(p)%P(ideb2+j)
898C WRITE(6,*) P-1,"LISUBFIE --- MSGBUF_R(",IDEB2+J,")=", MSGBUF_R(P)%P(IDEB2+J)
899 END DO
900 idebut(p) = idebut(p) + len + 1
901 ideb2 = ideb2 + len
902 DO j = 1, len
903 inflg_subsfie(nin)%P(ideb+j) = msgbuf_r(p)%P(ideb2+j)
904C WRITE(6,*) P-1,"INFLG --- MSGBUF_R(",IDEB2+J,")=", MSGBUF_R(P)%P(IDEB2+J)
905 END DO
906 idebut(p) = idebut(p) + len
907 ideb = ideb + len
908 END DO
909 ideb3 = ideb3 + nsnfie(nin)%P(p)
910 ENDIF
911 END DO
912 ELSE
913 len = 1
914 IF(ASSOCIATED(addsubsfie(nin)%P))
915 . DEALLOCATE(addsubsfie(nin)%P)
916 DO p = 1, nspmd
917 len = len + nsnfi(nin)%P(p)
918 END DO
919 ALLOCATE(addsubsfie(nin)%P(len),stat=ierror)
920 IF(ierror/=0) THEN
921 CALL ancmsg(msgid=20,anmode=aninfo)
922 CALL arret(2)
923 END IF
924 ideb3 = 0
925 addsubsfie(nin)%P(1) = 1
926 DO p = 1, nspmd
927 DO i = 1, nsnfi(nin)%P(p)
928 addsubsfie(nin)%P(ideb3+i+1) =
929 + addsubsfie(nin)%P(ideb3+i)
930 END DO
931 ideb3 = ideb3 + nsnfi(nin)%P(p)
932 END DO
933 END IF
934 ENDIF ! TYPE25 EDGE PART
935 END IF
936 END DO
937C
938 DO p = 1, nspmd
939 IF(ircom(p)>0) THEN
940 CALL mpi_wait(req_s(p),status,ierror)
941 DEALLOCATE(msgbuf_s(p)%P)
942 END IF
943 IF(iscom(p)>0) THEN
944 DEALLOCATE(msgbuf_r(p)%P)
945 END IF
946 END DO
947C
948 END IF
949C
950C remise a 0 de newfront + recalcul size msg
951C
952 islen7 = 0
953 irlen7 = 0
954 islen7t = 0
955 irlen7t = 0
956 islen11 = 0
957 irlen11 = 0
958 islen17 = 0
959 irlen17 = 0
960 irlen20 = 0
961 islen20 = 0
962 irlen20t = 0
963 islen20t = 0
964 irlen20e = 0
965 islen20e = 0
966C type 25
967 islen25 = 0
968 islen25e = 0
969 irlen25 = 0
970 irlen25e = 0
971 islen25t = 0
972 islen25et = 0
973 irlen25t = 0
974 irlen25et = 0
975
976 DO ii = 1, nbintc
977 nin = intlist(ii)
978
979 IF(newfront(nin)==2) newfront(nin)=0
980 ityp = ipari(7,nin)
981 intth = ipari(47,nin)
982
983C type 7
984 IF(ityp==7.OR.ityp==10.OR.ityp==22.OR.
985 . ityp==23.OR.ityp==24)THEN
986 IF(intth == 0 ) THEN
987 DO p = 1, nspmd
988 islen7 = islen7 + nsnsi(nin)%P(p)
989 irlen7 = irlen7 + nsnfi(nin)%P(p)
990 END DO
991C type 7 + heat trasfert
992 ELSE
993 DO p = 1, nspmd
994 islen7t = islen7t + nsnsi(nin)%P(p)
995 irlen7t = irlen7t + nsnfi(nin)%P(p)
996 END DO
997 ENDIF
998 ELSEIF(ityp == 11) THEN
999C type 11
1000 DO p = 1, nspmd
1001 islen11 = islen11 + nsnsi(nin)%P(p)
1002 irlen11 = irlen11 + nsnfi(nin)%P(p)
1003 END DO
1004C type 17
1005 ELSEIF(ityp == 17) THEN
1006 DO p = 1, nspmd
1007 islen17 = islen17 + nsnsi(nin)%P(p)
1008 irlen17 = irlen17 + nsnfi(nin)%P(p)
1009 END DO
1010 ELSEIF(ityp == 20)THEN
1011C type 20
1012 IF(intth == 0) THEN
1013 DO p = 1, nspmd
1014 islen20 = islen20 + nsnsi(nin)%P(p)
1015 irlen20 = irlen20 + nsnfi(nin)%P(p)
1016 islen20e= islen20e+ nsnsie(nin)%P(p)
1017 irlen20e= irlen20e+ nsnfie(nin)%P(p)
1018 END DO
1019 ELSE
1020 DO p = 1, nspmd
1021 islen20t = islen20t + nsnsi(nin)%P(p)
1022 irlen20t = irlen20t + nsnfi(nin)%P(p)
1023 islen20e= islen20e+ nsnsie(nin)%P(p)
1024 irlen20e= irlen20e+ nsnfie(nin)%P(p)
1025 END DO
1026 ENDIF
1027 ELSEIF(ityp == 25)THEN
1028C type 25
1029 iedge = ipari(58,nin)
1030 IF(intth == 0) THEN
1031 DO p = 1, nspmd
1032 islen25 = islen25 + nsnsi(nin)%P(p)
1033 irlen25 = irlen25 + nsnfi(nin)%P(p)
1034 IF( iedge /= 0) THEN
1035 islen25e= islen25e+ nsnsie(nin)%P(p)
1036 irlen25e= irlen25e+ nsnfie(nin)%P(p)
1037 ENDIF
1038 END DO
1039 ELSE
1040 DO p = 1, nspmd
1041 islen25t = islen25t + nsnsi(nin)%P(p)
1042 irlen25t = irlen25t + nsnfi(nin)%P(p)
1043 IF( iedge /= 0) THEN
1044 islen25e= islen25e+ nsnsie(nin)%P(p)
1045 irlen25e= irlen25e+ nsnfie(nin)%P(p)
1046 ENDIF
1047 END DO
1048 ENDIF
1049
1050 END IF
1051 ENDDO
1052
1053C ====================
1054 ENDIF ! MODE = 2
1055C ====================
1056
1057C
1058#endif
1059 RETURN
1060 END
1061
#define my_real
Definition cppsort.cpp:32
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
Definition law100_upd.F:272
#define max(a, b)
Definition macros.h:21
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
Definition mpi.f:461
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
integer, dimension(:), allocatable icomm2_rcv
Definition ifront_mod.F:39
integer, dimension(:), allocatable req_recv_msg
Definition ifront_mod.F:40
integer nb_to_recv
Definition ifront_mod.F:36
integer, dimension(:), allocatable proc_list
Definition ifront_mod.F:37
integer, dimension(:), allocatable icomm2_send
Definition ifront_mod.F:39
integer, dimension(:), allocatable req_send_msg
Definition ifront_mod.F:41
integer nisubg
Definition ifront_mod.F:36
integer, dimension(:), allocatable req_recv_siz
Definition ifront_mod.F:40
integer, dimension(:), allocatable ircom
Definition ifront_mod.F:42
type(int_pointer), dimension(:), allocatable sizbuf_r
Definition ifront_mod.F:35
integer, dimension(:), allocatable iscoms
Definition ifront_mod.F:42
integer icomm
Definition ifront_mod.F:36
type(int_pointer), dimension(:), allocatable sizbuf_s
Definition ifront_mod.F:35
integer, dimension(:), allocatable req_send_siz
Definition ifront_mod.F:41
integer, dimension(:), allocatable icomm2
Definition ifront_mod.F:38
integer, dimension(:), allocatable iscom
Definition ifront_mod.F:42
type(int_pointer), dimension(:), allocatable msgbuf_r
Definition ifront_mod.F:34
type(int_pointer), dimension(:), allocatable msgbuf_s
Definition ifront_mod.F:34
type(int_pointer), dimension(:), allocatable nisubsfie
Definition tri25ebox.F:101
integer islen25e
Definition tri25ebox.F:77
type(int_pointer), dimension(:), allocatable inflg_subsfie
Definition tri25ebox.F:109
integer islen25et
Definition tri25ebox.F:79
integer irlen25et
Definition tri25ebox.F:79
integer irlen25
Definition tri25ebox.F:76
integer irlen25t
Definition tri25ebox.F:78
type(int_pointer), dimension(:), allocatable lisubsfie
Definition tri25ebox.F:105
type(int_pointer), dimension(:), allocatable addsubsfie
Definition tri25ebox.F:113
integer islen25t
Definition tri25ebox.F:78
integer islen25
Definition tri25ebox.F:76
integer irlen25e
Definition tri25ebox.F:77
type(int_pointer), dimension(:), allocatable inflg_subsfi
Definition tri7box.F:505
type(int_pointer), dimension(:), allocatable nsvsi
Definition tri7box.F:485
type(int_pointer), dimension(:), allocatable nsnfie
Definition tri7box.F:440
type(int_pointer), dimension(:), allocatable nsnsie
Definition tri7box.F:491
type(int_pointer), dimension(:), allocatable lisubsfi
Definition tri7box.F:501
type(int_pointer), dimension(:), allocatable nsvsie
Definition tri7box.F:485
type(int_pointer), dimension(:), allocatable nsnsi
Definition tri7box.F:491
type(int_pointer), dimension(:), allocatable nisubsfi
Definition tri7box.F:497
type(int_pointer), dimension(:), allocatable nsvfi
Definition tri7box.F:431
type(int_pointer), dimension(:), allocatable nsvfie
Definition tri7box.F:440
type(int_pointer), dimension(:), allocatable addsubsfi
Definition tri7box.F:509
type(int_pointer), dimension(:), allocatable nsnfi
Definition tri7box.F:440
subroutine spmd_ifront(ipari, newfront, isendto, ircvfrom, nsensor, nbintc, intlist, islen7, irlen7, islen11, irlen11, islen17, irlen17, irlen7t, islen7t, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, sensor_tab, intbuf_tab, mode)
Definition spmd_ifront.F:46
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87