34
35
36
37#include "implicit_f.inc"
38
39
40
41#include "com01_c.inc"
42#include "com04_c.inc"
43#include "param_c.inc"
44#include "task_c.inc"
45
46
47
48
50 . geo(npropg,*), skew(lskew,*)
51 INTEGER IXR(NIXR,*),IPARG(NPARG,*),LRBUF,
52 . DD_IAD(NSPMD+1,*)
53
54
55
56 INTEGER I, J,ISK,NB1,NB2,,NB4,NB5,NB6,NB7,NB8,NB9,
57 . NB10,NB11,NB12,NB13,NB14,NEL,LFT,LLT,NG,
58 . ITY,IAD,MLW,NFT,N,II,ISKK,MSGTAG,LEN,
59 INTEGER SRBUF(LRBUF)
60 INTEGER, PARAMETER :: INTSIZE = 4
61c
62
63
64
65 isk=numskw-1
66
67 ii = 0
68
69 msgtag = 1000
70 IF (nspmd > 1 .AND. ispmd/=0) THEN
71
73 . it_spmd,msgtag+ispmd,intsize)
74
75 ENDIF
76
77
78
79
80 DO ng=1,ngroup
81 mlw =iparg(1,ng)
82 nel =iparg(2,ng)
83 ity =iparg(5,ng)
84 nft =iparg(3,ng)
85 iad =iparg(4,ng)
86 igtyp =iparg(38,ng)
87 lft = 1
88 llt = nel
89
90
91
92 IF(ity==4)THEN
93 DO i=lft,llt
94 isk=isk+1
95 ii = ii + 1
96 srbuf(ii) = isk
97 ENDDO
98
99
100
101 ELSEIF(ity==5)THEN
102 DO i=lft,llt
103 isk=isk+1
104 ii = ii + 1
105 srbuf(ii) = isk
106 ENDDO
107
108
109
110 ELSEIF(ity==6)THEN
111 IF(mlw==1.OR.mlw==7)THEN
112 DO i=lft,llt
113 isk=isk+1
114 ii = ii + 1
115 srbuf(ii) = isk
116 ENDDO
117 ELSEIF(mlw==2)THEN
118 DO i=lft,llt
119 n=i+nft
120 iskk=nint(geo(2,ixr(1,n)))-1
121 ii = ii + 1
122 srbuf(ii) = iskk
123 ENDDO
124 ELSEIF(mlw==3)THEN
125 DO i=lft,llt
126 isk=isk+1
127 ii = ii + 1
128 srbuf(ii) = isk
129 isk=isk+1
130 ii = ii + 1
131 srbuf(ii) = isk
132 ENDDO
133 ELSEIF((mlw >= 4 .AND. mlw <= 6 ) .OR. igtyp == 23)THEN
134 DO i=lft,llt
135 isk=isk+1
136 ii = ii + 1
137 srbuf(ii) = isk
138 ENDDO
139 ENDIF
140 ELSE
141 ENDIF
142 ENDDO
143
144 IF (nspmd > 1) THEN
145 IF (ispmd/=nspmd-1) THEN
147 . it_spmd,msgtag+ispmd+1,intsize)
148 ENDIF
149
151 ELSE
152 len = ii
153 END IF
154 IF (ispmd==0) THEN
156 ENDIF
157
158
159
160 RETURN
subroutine rad_spmd_recv(a, siz, ispmd, it_spmd, msgtag, intsize)
subroutine rad_spmd_send(a, siz, ispmd, it_spmd, msgtag, intsize)
subroutine spmd_igath(srbuf, len, lrecv)
void write_i_c(int *w, int *len)