36 use element_mod , only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "com01_c.inc"
45#include "com04_c.inc"
46#include "param_c.inc"
47#include "sphcom.inc"
48
49
50
51
53 . x(*),d(*),xnorm(3,*),cdg(*),bufel(*)
54 INTEGER IADD(*),IPARG(NPARG,*),
55 . IXS(NIXS,*),IXQ(NIXQ,*),IXC(NIXC,*),IXTG(NIXTG,*),
56 . IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),
57 . INVERT(*),KXSP(NISP,*), IXSP(KVOISPH,*)
58
59
61 . off
62 INTEGER II(4),IE,NG, ITY, LFT, LLT, KPT, N, I, J, N1, N2,
63 . IPID, NEL, IAD, NPAR, NFT, IMID,IALEL, MTN
64 INTEGER PROC, P, jj
65
66
67
68 DO 5 i=1,numnod
69 DO 5 j=1,3
70 xnorm(j,i) = zero
71 5 CONTINUE
72 ie = 0
73
74
75
76 npar = 0
77
78
79
80
81
82 DO proc = 1, nspmd
83 npar = npar + 1
84 DO 800 ng=1,ngroup
85 mtn =iparg(1,ng)
86 nel =iparg(2,ng)
87 nft =iparg(3,ng)
88 iad =iparg(4,ng)
89 ity =iparg(5,ng)
90 p =iparg(32,ng)+1
91 lft=1
92 llt=nel
93
94 IF (p/=proc) GOTO 790
95
96
97
98 IF(ity==1)THEN
99 ialel=iparg(7,ng)+iparg(11,ng)
100 IF(ialel==0)THEN
101 DO 610 i=lft,llt
102 n = i + nft
103
104
105 ii(1) = ixs(3,n)
106 ii(2) = ixs(2,n)
107 ii(3) = ixs(5,n)
108 ii(4) = ixs(4,n)
110 ii(1) = ii(1)-1
111 ii(2) = ii(2)-1
112 ii(3) = ii(3)-1
113 ii(4) = ii(4)-1
115 ii(1) = ixs(6,n)
116 ii(2) = ixs(7,n)
117 ii(3) = ixs(8,n)
118 ii(4) = ixs(9,n)
120 ii(1) = ii(1)-1
121 ii(2) = ii(2)-1
122 ii(3) = ii(3)-1
123 ii(4) = ii(4)-1
125 ii(1) = ixs(2,n)
126 ii(2) = ixs(3,n)
127 ii(3) = ixs(7,n)
128 ii(4) = ixs(6,n)
130 ii(1) = ii(1)-1
131 ii(2) = ii(2)-1
132 ii(3) = ii(3)-1
133 ii(4) = ii(4)-1
135 ii(1) = ixs(4,n)
136 ii(2) = ixs(5,n)
137 ii(3) = ixs(9,n)
138 ii(4) = ixs(8,n)
140 ii(1) = ii(1)-1
141 ii(2) = ii(2)-1
142 ii(3) = ii(3)-1
143 ii(4) = ii(4)-1
145 ii(1) = ixs(3,n)
146 ii(2) = ixs(4,n)
147 ii(3) = ixs(8,n)
148 ii(4) = ixs(7,n)
150 ii(1) = ii(1)-1
151 ii(2) = ii(2)-1
152 ii(3) = ii(3)-1
153 ii(4) = ii(4)-1
155 ii(1) = ixs(6,n)
156 ii(2) = ixs(9,n)
157 ii(3) = ixs(5,n)
158 ii(4) = ixs(2,n)
160 ii(1) = ii(1)-1
161 ii(2) = ii(2)-1
162 ii(3) = ii(3)-1
163 ii(4) = ii(4)-1
165 ie = ie + 6
166 610 CONTINUE
167 ENDIF
168
169
170
171 ELSEIF(ity==2)THEN
172 DO 620 i=lft,llt
173 n = i + nft
174
175
176 ii(1) = ixq(2,n)
177 ii(2) = ixq(3,n)
178 ii(3) = ixq(4,n)
179 ii(4) = ixq(5,n)
180 xnorm(1,ii(1)) = one
181 xnorm(2,ii(1)) = zero
182 xnorm(3,ii(1)) = zero
183 ii(1) = ii(1)-1
184 ii(2) = ii(2)-1
185 ii(3) = ii(3)-1
186 ii(4) = ii(4)-1
189 ie = ie + 1
190 620 CONTINUE
191
192
193
194 ELSEIF(ity==3)THEN
195 kpt =iparg(6,ng)
196 DO 630 i=lft,llt
197 n = i + nft
198
199
200 ii(1) = ixc(2,n)
201 ii(2) = ixc(3,n)
202 ii(3) = ixc(4,n)
203 ii(4) = ixc(5,n)
205 ii(1) = ii(1)-1
206 ii(2) = ii(2)-1
207 ii(3) = ii(3)-1
208 ii(4) = ii(4)-1
210 ie = ie + 1
211 630 CONTINUE
212
213
214
215 ELSEIF(ity==4)THEN
216 DO 640 i=lft,llt
217 n = i + nft
218
219
220 ii(1) = ixt(2,n)-1
221 ii(2) = ixt(3,n)-1
222 ii(3) = ixt(3,n)-1
223 ii(4) = ixt(2,n)-1
226 ie = ie + 1
227 640 CONTINUE
228
229
230
231 ELSEIF(ity==5)THEN
232 DO 650 i=lft,llt
233 n = i + nft
234
235
236 ii(1) = ixp(2,n)-1
237 ii(2) = ixp(3,n)-1
238 ii(3) = ixp(3,n)-1
239 ii(4) = ixp(2,n)-1
242 ie = ie + 1
243 650 CONTINUE
244
245
246
247 ELSEIF(ity==6)THEN
248 DO 660 i=lft,llt
249 n = i + nft
250
251
252 ii(1) = ixr(2,n)-1
253 ii(2) = ixr(3,n)-1
254 IF(mtn==3)THEN
255 ii(3) = ixr(4,n)-1
256 ii(4) = ixr(3,n)-1
257 ELSE
258 ii(3) = ixr(3,n)-1
259 ii(4) = ixr(2,n)-1
260 ENDIF
263 ie = ie + 1
264 660 CONTINUE
265
266
267
268 ELSEIF(ity==7)THEN
269 kpt =iparg(6,ng)
270 DO 670 i=lft,llt
271 n = i + nft
272
273
274 ii(1) = ixtg(2,n)
275 ii(2) = ixtg(3,n)
276 ii(3) = ixtg(4,n)
277 ii(4) = ii(3)
279 ii(1) = ii(1)-1
280 ii(2) = ii(2)-1
281 ii(3) = ii(3)-1
282 ii(4) = ii(4)-1
284 ie = ie + 1
285 670 CONTINUE
286
287
288
289 ELSEIF(ity==51)THEN
290
291 DO i=lft,llt
292 n = i + nft
293 n1 = kxsp(3,n)
294
296 n2 = ixsp(jj,n)
297 IF(n1<n2)THEN
298 ii(1) = n1-1
299 ii(2) = n2-1
300 ii(3) = n2-1
301 ii(4) = n1-1
304 ie = ie + 1
305 ENDIF
306 ENDDO
307 END DO
308 ELSE
309 ENDIF
310 790 CONTINUE
311 800 CONTINUE
312
313
314
315 iadd(npar) = ie
316 END DO
317
318 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)