35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "com01_c.inc"
43#include "com04_c.inc"
44#include "param_c.inc"
45#include "sphcom.inc"
46
47
48
49
51 . x(*),d(*),xnorm(3,*),cdg(*),bufel(*)
52 INTEGER IADD(*),IPARG(NPARG,*),
53 . IXS(NIXS,*),IXQ(NIXQ,*),IXC(NIXC,*),IXTG(NIXTG,*),
54 . IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),
55 . INVERT(*),KXSP(NISP,*), IXSP(KVOISPH,*)
56
57
59 . off
60 INTEGER (4),IE,NG, ITY, LFT, LLT, KPT, N, I, J, N1, N2,
61 . IPID, NEL, IAD, NPAR, NFT, IMID,IALEL, MTN
62 INTEGER ANIM_K, PROC, P, jj
63
64
65
66 DO 5 i=1,numnod
67 DO 5 j=1,3
68 xnorm(j,i) = zero
69 5 CONTINUE
70 ie = 0
71
72
73
74 npar = 0
75
76
77
78
79
80 DO proc = 1, nspmd
81 npar = npar + 1
82 DO 800 ng=1,ngroup
83 mtn =iparg(1,ng)
84 nel =iparg(2,ng)
85 nft =iparg(3,ng)
86 iad =iparg(4,ng)
87 ity =iparg(5,ng)
88 p =iparg(32,ng)+1
89 lft=1
90 llt=nel
91
92 IF (p/=proc) GOTO 790
93
94
95
96 IF(ity==1)THEN
97 ialel=iparg(7,ng)+iparg(11,ng)
98 IF(ialel==0)THEN
99 DO 610 i=lft,llt
100 n = i + nft
101
102
103 ii(1) = ixs(3,n)
104 ii(2) = ixs(2,n)
105 ii(3) = ixs(5,n)
106 ii(4) = ixs(4,n)
108 ii(1) = ii(1)-1
109 ii(2) = ii(2)-1
110 ii(3) = ii(3)-1
111 ii(4) = ii(4)-1
113 ii(1) = ixs(6,n)
114 ii(2) = ixs(7,n)
115 ii(3) = ixs(8,n)
116 ii(4) = ixs(9,n)
118 ii(1) = ii(1)-1
119 ii(2) = ii(2)-1
120 ii(3) = ii(3)-1
121 ii(4) = ii(4)-1
123 ii(1) = ixs(2,n)
124 ii(2) = ixs(3,n)
125 ii(3) = ixs(7,n)
126 ii(4) = ixs(6,n)
128 ii(1) = ii(1)-1
129 ii(2) = ii(2)-1
130 ii(3) = ii(3)-1
131 ii(4) = ii(4)-1
133 ii(1) = ixs(4,n)
134 ii(2) = ixs(5,n)
135 ii(3) = ixs(9,n)
136 ii(4) = ixs(8,n)
138 ii(1) = ii(1)-1
139 ii(2) = ii(2)-1
140 ii(3) = ii(3)-1
141 ii(4) = ii(4)-1
143 ii(1) = ixs(3,n)
144 ii(2) = ixs(4,n)
145 ii(3) = ixs(8,n)
146 ii(4) = ixs(7,n)
148 ii(1) = ii(1)-1
149 ii(2) = ii(2)-1
150 ii(3) = ii(3)-1
151 ii(4) = ii(4)-1
153 ii(1) = ixs(6,n)
154 ii(2) = ixs(9,n)
155 ii(3) = ixs(5,n)
156 ii(4) = ixs(2,n)
158 ii(1) = ii(1)-1
159 ii(2) = ii(2)-1
160 ii(3) = ii(3)-1
161 ii(4) = ii(4)-1
163 ie = ie + 6
164 610 CONTINUE
165 ENDIF
166
167
168
169 ELSEIF(ity==2)THEN
170 DO 620 i=lft,llt
171 n = i + nft
172
173
174 ii(1) = ixq(2,n)
175 ii(2) = ixq(3,n)
176 ii(3) = ixq(4,n)
177 ii(4) = ixq(5,n)
178 xnorm(1,ii(1)) = one
179 xnorm(2,ii(1)) = zero
180 xnorm(3,ii(1)) = zero
181 ii(1) = ii(1)-1
182 ii(2) = ii(2)-1
183 ii(3) = ii(3)-1
184 ii(4) = ii(4)-1
187 ie = ie + 1
188 620 CONTINUE
189
190
191
192 ELSEIF(ity==3)THEN
193 kpt =iparg(6,ng)
194 DO 630 i=lft,llt
195 n = i + nft
196
197
198 ii(1) = ixc(2,n)
199 ii(2) = ixc(3,n)
200 ii(3) = ixc(4,n)
201 ii(4) = ixc(5,n)
203 ii(1) = ii(1)-1
204 ii(2) = ii(2)-1
205 ii(3) = ii(3)-1
206 ii(4) = ii(4)-1
208 ie = ie + 1
209 630 CONTINUE
210
211
212
213 ELSEIF(ity==4)THEN
214 DO 640 i=lft,llt
215 n = i + nft
216
217
218 ii(1) = ixt(2,n)-1
219 ii(2) = ixt(3,n)-1
220 ii(3) = ixt(3,n)-1
221 ii(4) = ixt(2,n)-1
224 ie = ie + 1
225 640 CONTINUE
226
227
228
229 ELSEIF(ity==5)THEN
230 DO 650 i=lft,llt
231 n = i + nft
232
233
234 ii(1) = ixp(2,n)-1
235 ii(2) = ixp(3,n)-1
236 ii(3) = ixp(3,n)-1
237 ii(4) = ixp(2,n)-1
240 ie = ie + 1
241 650 CONTINUE
242
243
244
245 ELSEIF(ity==6)THEN
246 DO 660 i=lft,llt
247 n = i + nft
248
249
250 ii(1) = ixr(2,n)-1
251 ii(2) = ixr(3,n)-1
252 IF(mtn==3)THEN
253 ii(3) = ixr(4,n)-1
254 ii(4) = ixr(3,n)-1
255 ELSE
256 ii(3) = ixr(3,n)-1
257 ii(4) = ixr(2,n)-1
258 ENDIF
261 ie = ie + 1
262 660 CONTINUE
263
264
265
266 ELSEIF(ity==7)THEN
267 kpt =iparg(6,ng)
268 DO 670 i=lft,llt
269 n = i + nft
270
271
272 ii(1) = ixtg(2,n)
273 ii(2) = ixtg(3,n)
274 ii(3) = ixtg(4,n)
275 ii(4) = ii(3)
277 ii(1) = ii(1)-1
278 ii(2) = ii(2)-1
279 ii(3) = ii(3)-1
280 ii(4) = ii(4)-1
282 ie = ie + 1
283 670 CONTINUE
284
285
286
287 ELSEIF(ity==51)THEN
288
289 DO i=lft,llt
290 n = i + nft
291 n1 = kxsp(3,n)
292
293 DO jj = 1,
min(12,kxsp(4,n))
294 n2 = ixsp(jj,n)
295 IF(n1<n2)THEN
296 ii(1) = n1-1
297 ii(2) = n2-1
298 ii(3) = n2-1
299 ii(4) = n1-1
302 ie = ie + 1
303 ENDIF
304 ENDDO
305 END DO
306 ELSE
307 ENDIF
308 790 CONTINUE
309 800 CONTINUE
310
311
312
313 iadd(npar) = ie
314 END DO
315
316 RETURN
subroutine invert(matrix, inverse, n, errorflag)
subroutine facnor2(x, ii, xnorm, invert)
subroutine facnor(x, d, ii, xnorm, cdg, invert)
void write_i_c(int *w, int *len)