29
30
31
32
33#include "implicit_f.inc"
34
35
36
37#include "com01_c.inc"
38#include "assert.inc"
39
40
41
42 INTEGER N, LEN,
43 . NSNFI(*), ISKY(*), ISIZENV(2,*), NSNFITOT(*)
44
45
46
47 INTEGER IG, , I, LASTIG
48 INTEGER LOCAL_ID
49 INTEGER NSNFI_TOT
50
51
52
53 nsnfi_tot = 0
54 DO p = 1,nspmd
55 nsnfi_tot = nsnfi(p) + nsnfi_tot
56 ENDDO
57 IF(n > 0) THEN
58 assert(nsnfi_tot > 0)
59 DO i = 1, n
60 p = 1
61 local_id = isky(i)
62 assert(isky(i) > 0)
63 assert(isky(i) <= nsnfi_tot)
64 DO WHILE( nsnfi(p) < local_id .AND. local_id > 0)
65 local_id = local_id - nsnfi(p)
66 p = p + 1
67 ENDDO
68 assert(p <= nspmd)
69 assert(local_id >= 0)
70 IF(p <= nspmd) THEN
71 isizenv(1,p) = isizenv(1,p) + len
72 isizenv(2,p) = isizenv(2,p) + 1
73 ELSE
74 assert(.false.)
75 ENDIF
76 ENDDO
77 ENDIF
78
79 DO p = 1, nspmd
80 nsnfitot(p) = nsnfitot(p) + nsnfi(p)
81 END DO
82
83 RETURN