OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sptrivox.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "param_c.inc"
#include "task_c.inc"
#include "sphcom.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine sptrivox (nsn, nsnr, x, bminma, nod2sp, nbx, nby, nbz, marge, itask, nlist, spbuf, jvois, jstor, jperm, dvois, ireduce, nsp2sortf, nsp2sortl, voxel, kxsp, ixsp, kreduce, lgauge, gauge, kxspr, ixspr)

Function/Subroutine Documentation

◆ sptrivox()

subroutine sptrivox ( integer nsn,
integer nsnr,
x,
bminma,
integer, dimension(*) nod2sp,
integer nbx,
integer nby,
integer nbz,
marge,
integer itask,
integer, dimension(*) nlist,
spbuf,
integer, dimension(*) jvois,
integer, dimension(*) jstor,
integer, dimension(*) jperm,
dvois,
integer ireduce,
integer nsp2sortf,
integer nsp2sortl,
integer, dimension(nbx+2,nby+2,nbz+2) voxel,
integer, dimension(nisp,*) kxsp,
integer, dimension(kvoisph,*) ixsp,
integer, dimension(*) kreduce,
integer, dimension(3,*) lgauge,
gauge,
integer, dimension(*) kxspr,
integer, dimension(kvoisph,*) ixspr )

Definition at line 36 of file sptrivox.F.

43C============================================================================
44C M o d u l e s
45C-----------------------------------------------
46 USE tri7box
47 USE sphbox
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C G l o b a l P a r a m e t e r s
54C-----------------------------------------------
55#include "mvsiz_p.inc"
56c parameter setting the size for the vector (orig version is 128)
57 INTEGER NVECSZ ,NSP2SORTF, NSP2SORTL
58 parameter(nvecsz = mvsiz)
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62#include "com01_c.inc"
63#include "com04_c.inc"
64#include "param_c.inc"
65#include "task_c.inc"
66#include "sphcom.inc"
67C-----------------------------------------------
68C ROLE OF THE ROUTINE:
69C ===================
70C CLASSIFY NODES IN BOXES
71C SEARCH FOR EACH FACET THE CONCERNED BOXES
72C SEARCH FOR CANDIDATES
73C-----------------------------------------------
74C D u m m y A r g u m e n t s
75C
76C NOM DESCRIPTION E/S
77C
78C X(3,*) COORDONNEES NODALES E
79C Xmax larger abcisse existing e
80C XMAX largest order.existing E
81C Xmax larger existing side E
82C VOXEL(ix,iy,iz) contains the local number of the first node of
83C the box
84C Next_nod (i) Next node in the same box (if /= 0)
85C Last_nod (i) Last node in the same box (if /= 0)
86C used only to go directly from the first
87C node at the last
88C-----------------------------------------------
89C D u m m y A r g u m e n t s
90C-----------------------------------------------
91 INTEGER NSN,ITASK,NSNR,NBX,NBY,NBZ,
92 . NLIST(*),NOD2SP(*) ,
93 . VOXEL(NBX+2,NBY+2,NBZ+2),JVOIS(*) ,JSTOR(*), JPERM(*) ,
94 . IREDUCE,KXSP(NISP,*), IXSP(KVOISPH,*), KREDUCE(*),
95 . LGAUGE(3,*),KXSPR(*),IXSPR(KVOISPH,*)
96C REAL
98 . x(3,*),bminma(12),
99 . marge ,spbuf(nspbuf,*), dvois(*), gauge(llgauge,*)
100C-----------------------------------------------
101C L o c a l V a r i a b l e s
102C-----------------------------------------------
103 INTEGER I,J,
104 . NN,NE,JJ,JS,NS,N,
105 . NSNF, NSNL,NVOIS, IG, IL
106C REAL
107 my_real
108 . xs,ys,zs,xn,yn,zn,
109 . xmin, xmax,ymin, ymax,zmin, zmax,
110 . d1x,d1y,d1z,d2,a2,alpha_marge,distmax
111 my_real, DIMENSION(:), ALLOCATABLE :: tab_dk
112c provisional
113 INTEGER LAST_NOD(NSN+NSNR)
114 INTEGER IX,IY,IZ,
115 . IX1,IY1,IZ1,IX2,IY2,IZ2
116 INTEGER, DIMENSION(:),ALLOCATABLE :: IIX,IIY,IIZ
117 my_real
118 . xminb,yminb,zminb,xmaxb,ymaxb,zmaxb,
119 . aaa,bbb,
120 . aaa2
121 INTEGER FIRST,LAST,REQ_RECV(NSPMD)
122 SAVE iix,iiy,iiz,distmax,tab_dk
123 INTEGER, DIMENSION(:), ALLOCATABLE, SAVE :: NEXT_NOD_LOCAL
124 INTEGER, DIMENSION(:,:,:), ALLOCATABLE, SAVE :: VOXEL_LOCAL
125C-----------------------------------------------
126 IF(itask == 0)THEN
127 ALLOCATE(next_nod(nsn+nsnr))
128 ALLOCATE(iix(nsn+nsnr))
129 ALLOCATE(iiy(nsn+nsnr))
130 ALLOCATE(iiz(nsn+nsnr))
131 ALLOCATE(tab_dk(numsph))
132 ALLOCATE(next_nod_local(nsn))
133 ALLOCATE( voxel_local(nbx+2,nby+2,nbz+2) )
134 END IF
135C Barrier to wait init voxel and allocation NEX_NOD
136 CALL my_barrier
137C Initial construction phase of BPE and BPN moved from I7BUCE => I7TRI
138C
139 alpha_marge = sqrt(one +spasort)
140
141 xmin = bminma(4)
142 ymin = bminma(5)
143 zmin = bminma(6)
144 xmax = bminma(1)
145 ymax = bminma(2)
146 zmax = bminma(3)
147
148 xminb = bminma(10)
149 yminb = bminma(11)
150 zminb = bminma(12)
151 xmaxb = bminma(7)
152 ymaxb = bminma(8)
153 zmaxb = bminma(9)
154
155C=======================================================================
156C 1 placing nodes in boxes
157C=======================================================================
158 IF(itask == 0)THEN
159
160 distmax = zero
161
162 DO i=1,nsn
163 iix(i)=0
164 iiy(i)=0
165 iiz(i)=0
166
167 j=nlist(i)
168 nn = kxsp(3,j)
169
170 distmax = max(distmax,spbuf(1,j))
171C Optimization // search for nodes within xmin xmax of
172C processor elements
173 IF(x(1,nn) < xmin) cycle
174 IF(x(1,nn) > xmax) cycle
175 IF(x(2,nn) < ymin) cycle
176 IF(x(2,nn) > ymax) cycle
177 IF(x(3,nn) < zmin) cycle
178 IF(x(3,nn) > zmax) cycle
179
180 iix(i)=int(nbx*(x(1,nn)-xminb)/(xmaxb-xminb))
181 iiy(i)=int(nby*(x(2,nn)-yminb)/(ymaxb-yminb))
182 iiz(i)=int(nbz*(x(3,nn)-zminb)/(zmaxb-zminb))
183
184 iix(i)=max(1,2+min(nbx,iix(i)))
185 iiy(i)=max(1,2+min(nby,iiy(i)))
186 iiz(i)=max(1,2+min(nbz,iiz(i)))
187
188 first = voxel(iix(i),iiy(i),iiz(i))
189 IF(first == 0)THEN
190c Empty Cell
191 voxel(iix(i),iiy(i),iiz(i)) = i ! first
192 next_nod(i) = 0 ! last one
193 last_nod(i) = 0 ! no last
194 ELSEIF(last_nod(first) == 0)THEN
195c cell containing one node
196c add as next node
197 next_nod(first) = i ! next
198 last_nod(first) = i ! last
199 next_nod(i) = 0 ! last one
200 ELSE
201c
202c jump to the last node of the cell
203 last = last_nod(first) ! last node in this voxel
204 next_nod(last) = i ! next
205 last_nod(first) = i ! last
206 next_nod(i) = 0 ! last one
207 ENDIF
208 ENDDO
209 voxel_local(1:nbx+2,1:nby+2,1:nbz+2) = voxel(1:nbx+2,1:nby+2,1:nbz+2)
210 next_nod_local(1:nsn) = next_nod(1:nsn)
211C=======================================================================
212C 2 placing nodes in boxes
213C non -local candidates in SPMD
214C=======================================================================
215 DO j = 1, nsnr
216 i = j+nsn
217 n = nlist(i)-numsph
218 distmax = max(distmax,xsphr(2,n))
219 iix(i)=int(nbx*(xsphr(3,n)-xminb)/(xmaxb-xminb))
220 iiy(i)=int(nby*(xsphr(4,n)-yminb)/(ymaxb-yminb))
221 iiz(i)=int(nbz*(xsphr(5,n)-zminb)/(zmaxb-zminb))
222 iix(i)=max(1,2+min(nbx,iix(i)))
223 iiy(i)=max(1,2+min(nby,iiy(i)))
224 iiz(i)=max(1,2+min(nbz,iiz(i)))
225
226 first = voxel(iix(i),iiy(i),iiz(i))
227 IF(first == 0)THEN
228c Empty Cell
229 voxel(iix(i),iiy(i),iiz(i)) = i ! first
230 next_nod(i) = 0 ! last one
231 last_nod(i) = 0 ! no last
232 ELSEIF(last_nod(first) == 0)THEN
233c cell containing one node
234c add as next node
235 next_nod(first) = i ! next
236 last_nod(first) = i ! last
237 next_nod(nsn+j) = 0 ! last one
238 ELSE
239c
240c jump to the last node of the cell
241 last = last_nod(first) ! last node in this voxel
242 next_nod(last) = i ! next
243 last_nod(first) = i ! last
244 next_nod(nsn+j) = 0 ! last one
245 ENDIF
246 ENDDO
247 END IF
248C ==============================================================
249C Prepare reception of DK after reduction to remotes
250C ==============================================================
251 CALL my_barrier
252 IF(itask == 0 ) THEN
253 CALL spmd_sphgetdk(tab_dk,1,req_recv)
254 ENDIF
255 CALL my_barrier
256
257C=======================================================================
258C 3 Searching boxes concerning each facet
259C and creation of candidates
260C=======================================================================
261 DO ne = nsp2sortf,nsp2sortl
262C We do not retain the Destruit facets
263c IF(STF(NE) == ZERO)CYCLE
264
265 j=nlist(ne)
266 nn = kxsp(3,j)
267
268c a revoir !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
269 aaa = two*spbuf(1,j)* alpha_marge
270
271c index of voxels occupied by the facet
272
273 ix1=int(nbx*(x(1,nn)-aaa-xminb)/(xmaxb-xminb))
274 iy1=int(nby*(x(2,nn)-aaa-yminb)/(ymaxb-yminb))
275 iz1=int(nbz*(x(3,nn)-aaa-zminb)/(zmaxb-zminb))
276
277 ix1=max(1,2+min(nbx,ix1))
278 iy1=max(1,2+min(nby,iy1))
279 iz1=max(1,2+min(nbz,iz1))
280
281 ix2=int(nbx*(x(1,nn)+aaa-xminb)/(xmaxb-xminb))
282 iy2=int(nby*(x(2,nn)+aaa-yminb)/(ymaxb-yminb))
283 iz2=int(nbz*(x(3,nn)+aaa-zminb)/(zmaxb-zminb))
284
285 ix2=max(1,2+min(nbx,ix2))
286 iy2=max(1,2+min(nby,iy2))
287 iz2=max(1,2+min(nbz,iz2))
288
289cc nbpelem = 0
290cc'nnpelem = 0
291cc'nnr0pelem = 0
292cc'nnrpelem = 0
293
294 DO iz = iz1,iz2
295 DO iy = iy1,iy2
296 DO ix = ix1,ix2
297
298cc nbpelem = nbpelem + 1
299
300 jj = voxel(ix,iy,iz)
301
302 DO WHILE(jj /= 0)
303
304cc nnpelem = nnpelem + 1
305
306 js=nlist(jj)
307 IF(jj<=nsn)THEN
308 IF(spbuf(1,js) > spbuf(1,j) .OR.
309 . (spbuf(1,js) == spbuf(1,j) .AND. kxsp(8,js)>=kxsp(8,j)))GOTO 200
310
311 ns=kxsp(3,js)
312 xs = x(1,ns)
313 ys = x(2,ns)
314 zs = x(3,ns)
315
316 aaa = spbuf(1,j)+spbuf(1,js)
317 ELSE
318 n = nlist(jj)-numsph
319 IF(xsphr(2,n) > spbuf(1,j).OR.
320 . (xsphr(2,n) == spbuf(1,j) .AND.(nint(xsphr(6,n))>=kxsp(8,j) ) ) ) GOTO 200
321
322 xs = xsphr(3,n)
323 ys = xsphr(4,n)
324 zs = xsphr(5,n)
325 aaa = spbuf(1,j)+xsphr(2,n)
326 ENDIF
327
328 bbb = aaa * alpha_marge
329
330 IF(xs<=x(1,nn)-bbb)GOTO 200
331 IF(xs>=x(1,nn)+bbb)GOTO 200
332 IF(ys<=x(2,nn)-bbb)GOTO 200
333 IF(ys>=x(2,nn)+bbb)GOTO 200
334 IF(zs<=x(3,nn)-bbb)GOTO 200
335 IF(zs>=x(3,nn)+bbb)GOTO 200
336
337cc'nnr0pelem = nnr0pelem + 1
338
339C Perfect symmetry <=> XJ-XI
340 d1x = xs - x(1,nn)
341 d1y = ys - x(2,nn)
342 d1z = zs - x(3,nn)
343 d2 = d1x*d1x+d1y*d1y+d1z*d1z
344 a2 = bbb*bbb
345 IF(d2 > a2)GOTO 200
346
347cc nnrpelem = nnrpelem + 1
348 aaa2 = aaa*aaa
349 nvois=kxsp(5,j)+1
350 jvois(nvois)=js
351 dvois(nvois)=d2/aaa2
352
353 kxsp(5,j) =nvois
354
355 200 CONTINUE
356
357 jj = next_nod(jj)
358
359 ENDDO ! WHILE(JJ /= 0)
360
361 ENDDO
362 ENDDO
363 ENDDO
364
365cc nbpelg = nbpelg + nbpelem
366cc nnpelg = nnpelg + nnpelem
367cc nnrpelg = nnrpelg + nnrpelem
368cc nnr0pelg = nnr0pelg + nnr0pelem
369 CALL sppro3(j ,kxsp ,ixsp ,nod2sp,jvois,
370 . jstor,jperm ,dvois,ireduce,kreduce,
371 . kxspr,ixspr,tab_dk)
372
373 ENDDO
374
375C ==============================================================
376C Communicate DK after reduction to remotes
377C ==============================================================
378 CALL my_barrier
379 IF(itask == 0 ) THEN
380 CALL spmd_sphgetdk(tab_dk,2,req_recv)
381 ENDIF
382 CALL my_barrier
383
384C=======================================================================
385C 3 Searching boxes concerning each facet
386C and creation of candidates with respect to remote particles (symmetry)
387C=======================================================================
388 DO j = itask+1, nsnr, nthread
389
390 i = j+nsn
391 n = nlist(i)-numsph
392
393 aaa = two * xsphr(2,n) * alpha_marge
394
395c index of voxels occupied by the facet
396
397 ix1=int(nbx*(xsphr(3,n)-aaa-xminb)/(xmaxb-xminb))
398 iy1=int(nby*(xsphr(4,n)-aaa-yminb)/(ymaxb-yminb))
399 iz1=int(nbz*(xsphr(5,n)-aaa-zminb)/(zmaxb-zminb))
400
401 ix1=max(1,2+min(nbx,ix1))
402 iy1=max(1,2+min(nby,iy1))
403 iz1=max(1,2+min(nbz,iz1))
404
405 ix2=int(nbx*(xsphr(3,n)+aaa-xminb)/(xmaxb-xminb))
406 iy2=int(nby*(xsphr(4,n)+aaa-yminb)/(ymaxb-yminb))
407 iz2=int(nbz*(xsphr(5,n)+aaa-zminb)/(zmaxb-zminb))
408
409 ix2=max(1,2+min(nbx,ix2))
410 iy2=max(1,2+min(nby,iy2))
411 iz2=max(1,2+min(nbz,iz2))
412
413cc nbpelem = 0
414cc'nnpelem = 0
415cc'nnr0pelem = 0
416cc'nnrpelem = 0
417
418 DO iz = iz1,iz2
419 DO iy = iy1,iy2
420 DO ix = ix1,ix2
421
422cc nbpelem = nbpelem + 1
423
424 jj = voxel_local(ix,iy,iz)
425
426 DO WHILE(jj /= 0)
427
428cc nnpelem = nnpelem + 1
429
430 js=nlist(jj)
431 IF(jj<=nsn)THEN
432 IF(xsphr(2,n) < spbuf(1,js).OR.
433 . (xsphr(2,n)==spbuf(1,js).AND.nint(xsphr(6,n))<kxsp(8,js)) )GOTO 250
434
435 ns=kxsp(3,js)
436 xs = x(1,ns)
437 ys = x(2,ns)
438 zs = x(3,ns)
439
440 aaa = xsphr(2,n)+spbuf(1,js)
441
442
443 bbb = aaa * alpha_marge
444
445 IF(xs<=xsphr(3,n)-bbb)GOTO 250
446 IF(xs>=xsphr(3,n)+bbb)GOTO 250
447 IF(ys<=xsphr(4,n)-bbb)GOTO 250
448 IF(ys>=xsphr(4,n)+bbb)GOTO 250
449 IF(zs<=xsphr(5,n)-bbb)GOTO 250
450 IF(zs>=xsphr(5,n)+bbb)GOTO 250
451
452cc'nnr0pelem = nnr0pelem + 1
453
454C Perfect symmetry <=> XI-XJ
455 d1x = xsphr(3,n) - xs
456 d1y = xsphr(4,n) - ys
457 d1z = xsphr(5,n) - zs
458 d2 = d1x*d1x+d1y*d1y+d1z*d1z
459 a2 = bbb*bbb
460 IF(d2 > a2)GOTO 250
461
462cc nnrpelem = nnrpelem + 1
463 aaa2 = aaa*aaa
464 nvois=kxspr(j)+1
465 jvois(nvois)=js
466 dvois(nvois)=d2/aaa2
467
468 kxspr(j) =nvois
469
470 250 CONTINUE
471 END IF
472
473 jj = next_nod_local(jj)
474
475 ENDDO ! WHILE(JJ /= 0)
476
477 ENDDO
478 ENDDO
479 ENDDO
480
481cc nbpelg = nbpelg + nbpelem
482cc nnpelg = nnpelg + nnpelem
483cc nnrpelg = nnrpelg + nnrpelem
484cc nnr0pelg = nnr0pelg + nnr0pelem
485 CALL sppro3(j+numsph,kxsp ,ixsp ,nod2sp,jvois,
486 . jstor,jperm ,dvois,ireduce,kreduce,
487 . kxspr,ixspr,tab_dk)
488
489 ENDDO
490C-------------------------------------------------------------------------
491C GAUGES
492C-------------------------------------------------------------------------
493
494!$OMP DO SCHEDULE(DYNAMIC,1)
495 DO ig = 1,nbgauge
496
497 IF(lgauge(1,ig) > -(numels+1))cycle
498
499 j = numsph+ig
500 xn=gauge(2,ig)
501 yn=gauge(3,ig)
502 zn=gauge(4,ig)
503c a revoir !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
504 aaa = (two*distmax)* alpha_marge
505
506c index of voxels occupied by the facet
507
508 ix1=int(nbx*(xn-aaa-xminb)/(xmaxb-xminb))
509 iy1=int(nby*(yn-aaa-yminb)/(ymaxb-yminb))
510 iz1=int(nbz*(zn-aaa-zminb)/(zmaxb-zminb))
511
512 ix1=max(1,2+min(nbx,ix1))
513 iy1=max(1,2+min(nby,iy1))
514 iz1=max(1,2+min(nbz,iz1))
515
516 ix2=int(nbx*(xn+aaa-xminb)/(xmaxb-xminb))
517 iy2=int(nby*(yn+aaa-yminb)/(ymaxb-yminb))
518 iz2=int(nbz*(zn+aaa-zminb)/(zmaxb-zminb))
519
520 ix2=max(1,2+min(nbx,ix2))
521 iy2=max(1,2+min(nby,iy2))
522 iz2=max(1,2+min(nbz,iz2))
523
524cc nbpelem = 0
525cc'nnpelem = 0
526cc'nnr0pelem = 0
527cc'nnrpelem = 0
528
529 DO iz = iz1,iz2
530 DO iy = iy1,iy2
531 DO ix = ix1,ix2
532
533cc nbpelem = nbpelem + 1
534
535 jj = voxel_local(ix,iy,iz)
536
537 DO WHILE(jj /= 0)
538
539cc nnpelem = nnpelem + 1
540
541 js=nlist(jj)
542 IF(jj<=nsn)THEN
543 ns=kxsp(3,js)
544 xs = x(1,ns)
545 ys = x(2,ns)
546 zs = x(3,ns)
547
548 aaa = two*spbuf(1,js)
549 ELSE
550 GOTO 300
551 ENDIF
552
553 bbb = aaa * alpha_marge
554
555 IF(xs<=xn-bbb)GOTO 300
556 IF(xs>=xn+bbb)GOTO 300
557 IF(ys<=yn-bbb)GOTO 300
558 IF(ys>=yn+bbb)GOTO 300
559 IF(zs<=zn-bbb)GOTO 300
560 IF(zs>=zn+bbb)GOTO 300
561
562cc'nnr0pelem = nnr0pelem + 1
563
564 d1x = xs - xn
565 d1y = ys - yn
566 d1z = zs - zn
567 d2 = d1x*d1x+d1y*d1y+d1z*d1z
568 a2 = bbb*bbb
569 IF(d2 > a2)GOTO 300
570
571cc nnrpelem = nnrpelem + 1
572 aaa2 = aaa*aaa
573 nvois=kxsp(5,j)+1
574 jvois(nvois)=js
575 dvois(nvois)=d2/aaa2
576
577 kxsp(5,j) =nvois
578
579 300 CONTINUE
580
581 jj = next_nod_local(jj)
582
583 ENDDO ! WHILE(JJ /= 0)
584
585 ENDDO
586 ENDDO
587 ENDDO
588
589cc nbpelg = nbpelg + nbpelem
590cc nnpelg = nnpelg + nnpelem
591cc nnrpelg = nnrpelg + nnrpelem
592cc nnr0pelg = nnr0pelg + nnr0pelem
593 il=-j
594 CALL sppro3(il ,kxsp ,ixsp ,nod2sp,jvois,
595 . jstor,jperm ,dvois,ireduce,kreduce,
596 . kxspr,ixspr, tab_dk)
597
598 ENDDO
599!$OMP END DO
600
601C-------------------------------------------------------------------------
602C END OF SORTING
603C-------------------------------------------------------------------------
604C=======================================================================
605C 4 reset nodes in boxes to zero
606C=======================================================================
607
608C Barrier to avoid reinitialization before end of sorting
609 CALL my_barrier
610
611 DO i=nsp2sortf,nsp2sortl
612 IF(iix(i)/=0)THEN
613 voxel(iix(i),iiy(i),iiz(i))=0
614 ENDIF
615 ENDDO
616C=======================================================================
617C 5 reset nodes in boxes to zero
618C non -local candidates in SPMD
619C================================================================
620 nsnf = 1 + itask*nsnr / nthread
621 nsnl = (itask+1)*nsnr / nthread
622 DO j = nsnf, nsnl
623 voxel(iix(nsn+j),iiy(nsn+j),iiz(nsn+j))=0
624 ENDDO
625
626C
627 CALL my_barrier()
628 IF(itask == 0)THEN
629 DEALLOCATE(next_nod)
630 DEALLOCATE(iix)
631 DEALLOCATE(iiy)
632 DEALLOCATE(iiz)
633 DEALLOCATE(tab_dk)
634 DEALLOCATE( next_nod_local )
635 DEALLOCATE( voxel_local )
636 ENDIF
637
638 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
Definition law100_upd.F:274
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer, dimension(:), allocatable next_nod
Definition tri7box.F:48
subroutine spmd_sphgetdk(tab_dk, act, req_recv)
Definition spmd_sph.F:205
subroutine sppro3(il, kxsp, ixsp, nod2sp, jvois, jstor, jperm, dvois, ireduce, kreduce, kxspr, ixspr, tab_dk)
Definition sppro3.F:35
subroutine my_barrier
Definition machine.F:31