38
39
40
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "com08_c.inc"
50
51
52
53
54
55
56
57
58 INTEGER I_STOK,NSN,INACTI,IFQ,NUM_IMP,IND_IMP(*),
59 . NIN, NSNL, ITIED
60 INTEGER CAND_N(*),CAND_E(*),CAND_A(*), IFPEN(*),
61 . CAND_T
62
64 . cand_fx(*),cand_fy(*),cand_fz(*),cand_p(*),cand_tf,
65 . stfns(*),cand_f(8,*)
66
67
68
69 INTEGER I,N,NN,K,NI,
70 . IGET(I_STOK),IPUT(I_STOK)
71
72
73 DO 100 n=1,nsn+3
74 100 cand_a(n) = 0
75
76
77
78
79 IF(num_imp>0)THEN
80 DO i=1,i_stok
81 iput(i)=0
82 END DO
83 DO n=1,num_imp
84 i= ind_imp(n)
85 iput(i)=1
86 END DO
87 IF(ifq>0)THEN
88
89 IF((inacti==5.OR.inacti==6.OR.inacti==7)
90 . .AND.tt==zero)THEN
91 DO i=1,i_stok
92 ifpen(i)=1
93 END DO
94 END IF
95
96 DO i=1,i_stok
97 IF(ifpen(i) == 0.AND.iput(i)==0) THEN
98 cand_n(i) = nsn+1
99 ELSEIF(tt>zero)THEN
100
101
102 ni = cand_n(i)
103 IF(ni>nsnl) THEN
104
105 ni = ni-nsnl
106 IF((
stifi(nin)%P(ni) == 0.0).AND.iput(i)==0)
THEN
107 ifpen(i) = 0
108 cand_n(i) = nsn+1
109 ENDIF
110 ELSE
111
112 IF((stfns(ni) == 0.0).AND.iput(i)==0)THEN
113 ifpen(i) = 0
114 cand_n(i) = nsn+1
115 ENDIF
116 ENDIF
117 ENDIF
118 ENDDO
119 ELSEIF(inacti==5.OR.inacti==6.OR.inacti==7)THEN
120 DO i=1,i_stok
121 IF(cand_p(i)==zero.AND.iput(i)==0)THEN
122 cand_n(i) = nsn+1
123 ENDIF
124 ENDDO
125 ELSE
126 DO i=1,i_stok
127 IF(iput(i) == 0) THEN
128 cand_n(i) = nsn+1
129 ENDIF
130 ENDDO
131 ENDIF
132 ELSEIF(ifq>0)THEN
133
134 IF((inacti==5.OR.inacti==6.OR.inacti==7)
135 . .AND.tt==zero)THEN
136 DO i=1,i_stok
137 ifpen(i)=1
138 END DO
139 END IF
140
141 IF(itied==0)THEN
142 DO i=1,i_stok
143
144 IF(ifpen(i) == 0) THEN
145 cand_n(i) = nsn+1
146 ELSEIF(tt>zero)THEN
147
148
149 ni = cand_n(i)
150 IF(ni>nsnl) THEN
151
152 ni = ni-nsnl
153 IF(
stifi(nin)%P(ni) == zero)
THEN
154 ifpen(i) = 0
155 cand_n(i) = nsn+1
156 ENDIF
157 ELSE
158
159 IF(stfns(ni) == zero)THEN
160 ifpen(i) = 0
161 cand_n(i) = nsn+1
162 ENDIF
163 ENDIF
164 ENDIF
165 ENDDO
166 ELSE
167 DO i=1,i_stok
168
169 IF(ifpen(i) == 0 .AND. cand_f(1,i) == zero) THEN
170 cand_n(i) = nsn+1
171 ELSEIF(tt>zero)THEN
172
173
174 ni = cand_n(i)
175 IF(ni>nsnl) THEN
176
177 ni = ni-nsnl
178 IF(
stifi(nin)%P(ni) == zero)
THEN
179 ifpen(i) = 0
180 cand_f(1,i) = zero
181 cand_n(i) = nsn+1
182 ENDIF
183 ELSE
184
185 IF(stfns(ni) == zero)THEN
186 ifpen(i) = 0
187 cand_f(1,i) = zero
188 cand_n(i) = nsn+1
189 ENDIF
190 ENDIF
191 ENDIF
192 ENDDO
193 END IF
194
195 ELSEIF(inacti==5.OR.inacti==6.OR.inacti==7)THEN
196 IF(itied == 0)THEN
197 DO i=1,i_stok
198 IF(cand_p(i)==zero)THEN
199 cand_n(i) = nsn+1
200 ENDIF
201 ENDDO
202 ELSE
203 DO i=1,i_stok
204 IF(cand_p(i)==zero .AND. cand_f(1,i) == zero)THEN
205 cand_n(i) = nsn+1
206 ELSEIF(tt>zero)THEN
207
208
209 ni = cand_n(i)
210 IF(ni>nsnl) THEN
211
212 ni = ni-nsnl
213 IF(
stifi(nin)%P(ni) == zero)
THEN
214 cand_f(1,i) = zero
215 cand_n(i) = nsn+1
216 ENDIF
217 ELSE
218
219 IF(stfns(ni) == zero)THEN
220 cand_f(1,i) = zero
221 cand_n(i) = nsn+1
222 ENDIF
223 ENDIF
224 ENDIF
225 ENDDO
226 END IF
227 ELSEIF(itied/=0)THEN
228 DO i=1,i_stok
229 IF(cand_f(1,i)==zero)THEN
230 cand_n(i) = nsn+1
231 ELSEIF(tt>zero)THEN
232
233
234 ni = cand_n(i)
235 IF(ni>nsnl) THEN
236
237 ni = ni-nsnl
238 IF(
stifi(nin)%P(ni) == zero)
THEN
239 cand_f(1,i) = zero
240 cand_n(i) = nsn+1
241 ENDIF
242 ELSE
243
244 IF(stfns(ni) == zero)THEN
245 cand_f(1,i) = zero
246 cand_n(i) = nsn+1
247 ENDIF
248 ENDIF
249 ENDIF
250 ENDDO
251 ELSE
252 DO i=1,i_stok
253
254 cand_n(i) = nsn+1
255 ENDDO
256 ENDIF
257
258
259
260 DO 300 i=1,i_stok
261 nn = cand_n(i) + 2
262 cand_a(nn) = cand_a(nn) + 1
263 300 CONTINUE
264
265
266
267 cand_a(1) = 1
268 cand_a(2) = 1
269 DO 400 n=3,nsn+2
270 400 cand_a(n) = cand_a(n) + cand_a(n-1)
271
272
273
274
275
276 DO 500 i=1,i_stok
277 nn = cand_n(i) + 1
278 k = cand_a(nn)
279 iput(i) = k
280 iget(k) = i
281 cand_a(nn) = cand_a(nn) + 1
282 500 CONTINUE
283
284
285
286
287
288 DO n=1,num_imp
289 k=ind_imp(n)
290 i = iput(k)
291 ind_imp(n)=i
292 END DO
293
294 IF(ifq>0.AND.(inacti==5.OR.inacti==6.OR.inacti==7).AND.itied/=0)THEN
295 DO k=1,i_stok
296 i = iget(k)
297
298 cand_t = cand_n(k)
299 cand_n(k) = cand_n(i)
300 cand_n(i) = cand_t
301
302 cand_t = cand_e(k)
303 cand_e(k) = cand_e(i)
304 cand_e(i) = cand_t
305
306 cand_tf = cand_f(1,k)
307 cand_f(1,k) = cand_f(1,i)
308 cand_f(1,i) = cand_tf
309
310 cand_tf = cand_f(2,k)
311 cand_f(2,k) = cand_f(2,i)
312 cand_f(2,i) = cand_tf
313
314 cand_tf = cand_f(3,k)
315 cand_f(3,k) = cand_f(3,i)
316 cand_f(3,i) = cand_tf
317
318 cand_tf = cand_f(4,k)
319 cand_f(4,k) = cand_f(4,i)
320 cand_f(4,i) = cand_tf
321
322 cand_tf = cand_f(5,k)
323 cand_f(5,k) = cand_f(5,i)
324 cand_f(5,i) = cand_tf
325
326 cand_tf = cand_f(6,k)
327 cand_f(6,k) = cand_f(6,i)
328 cand_f(6,i) = cand_tf
329
330 cand_tf = cand_f(7,k)
331 cand_f(7,k) = cand_f(7,i)
332 cand_f(7,i) = cand_tf
333
334 cand_tf = cand_f(8,k)
335 cand_f(8,k) = cand_f(8,i)
336 cand_f(8,i) = cand_tf
337
338 cand_tf = cand_fx(k)
339 cand_fx(k) = cand_fx(i)
340 cand_fx(i) = cand_tf
341
342 cand_tf = cand_fy(k)
343 cand_fy(k) = cand_fy(i)
344 cand_fy(i) = cand_tf
345
346 cand_tf = cand_fz(k)
347 cand_fz(k) = cand_fz(i)
348 cand_fz(i) = cand_tf
349
350 cand_tf = cand_p(k)
351 cand_p(k) = cand_p(i)
352 cand_p(i) = cand_tf
353
354 cand_t = ifpen(k)
355 ifpen(k) = ifpen(i)
356 ifpen(i) = cand_t
357
358 iput(i) = iput(k)
359 iget(iput(i)) = i
360 ENDDO
361 ELSEIF(ifq>0.AND.(inacti==5.OR.inacti==6.OR.inacti==7))THEN
362 DO k=1,i_stok
363 i = iget(k)
364
365 cand_t = cand_n(k)
366 cand_n(k) = cand_n(i)
367 cand_n(i) = cand_t
368
369 cand_t = cand_e(k)
370 cand_e(k) = cand_e(i)
371 cand_e(i) = cand_t
372
373 cand_tf = cand_fx(k)
374 cand_fx(k) = cand_fx(i)
375 cand_fx(i) = cand_tf
376
377 cand_tf = cand_fy(k)
378 cand_fy(k) = cand_fy(i)
379 cand_fy(i) = cand_tf
380
381 cand_tf = cand_fz(k)
382 cand_fz(k) = cand_fz(i)
383 cand_fz(i) = cand_tf
384
385 cand_tf = cand_p(k)
386 cand_p(k) = cand_p(i)
387 cand_p(i) = cand_tf
388
389 cand_t = ifpen(k)
390 ifpen(k) = ifpen(i)
391 ifpen(i) = cand_t
392
393 iput(i) = iput(k)
394 iget(iput(i)) = i
395 ENDDO
396 ELSEIF(ifq>0.AND.itied/=0)THEN
397 DO k=1,i_stok
398 i = iget(k)
399
400 cand_t = cand_n(k)
401 cand_n(k) = cand_n(i)
402 cand_n(i) = cand_t
403
404 cand_t = cand_e(k)
405 cand_e(k) = cand_e(i)
406 cand_e(i) = cand_t
407
408 cand_tf = cand_f(1,k)
409 cand_f(1,k) = cand_f(1,i)
410 cand_f(1,i) = cand_tf
411
412 cand_tf = cand_f(2,k)
413 cand_f(2,k) = cand_f(2,i)
414 cand_f(2,i) = cand_tf
415
416 cand_tf = cand_f(3,k)
417 cand_f(3,k) = cand_f(3,i)
418 cand_f(3,i) = cand_tf
419
420 cand_tf = cand_f(4,k)
421 cand_f(4,k) = cand_f(4,i)
422 cand_f(4,i) = cand_tf
423
424 cand_tf = cand_f(5,k)
425 cand_f(5,k) = cand_f(5,i)
426 cand_f(5,i) = cand_tf
427
428 cand_tf = cand_f(6,k)
429 cand_f(6,k) = cand_f(6,i)
430 cand_f(6,i) = cand_tf
431
432 cand_tf = cand_f(7,k)
433 cand_f(7,k) = cand_f(7,i)
434 cand_f(7,i) = cand_tf
435
436 cand_tf = cand_f(8,k)
437 cand_f(8,k) = cand_f(8,i)
438 cand_f(8,i) = cand_tf
439
440 cand_tf = cand_fx(k)
441 cand_fx(k) = cand_fx(i)
442 cand_fx(i) = cand_tf
443
444 cand_tf = cand_fy(k)
445 cand_fy(k) = cand_fy(i)
446 cand_fy(i) = cand_tf
447
448 cand_tf = cand_fz(k)
449 cand_fz(k) = cand_fz(i)
450 cand_fz(i) = cand_tf
451
452 cand_t = ifpen(k)
453 ifpen(k) = ifpen(i)
454 ifpen(i) = cand_t
455
456 iput(i) = iput(k)
457 iget(iput(i)) = i
458 ENDDO
459 ELSEIF(ifq>0)THEN
460 DO k=1,i_stok
461 i = iget(k)
462
463 cand_t = cand_n(k)
464 cand_n(k) = cand_n(i)
465 cand_n(i) = cand_t
466
467 cand_t = cand_e(k)
468 cand_e(k) = cand_e(i)
469 cand_e(i) = cand_t
470
471 cand_tf = cand_fx(k)
472 cand_fx(k) = cand_fx(i)
473 cand_fx(i) = cand_tf
474
475 cand_tf = cand_fy(k)
476 cand_fy(k) = cand_fy(i)
477 cand_fy(i) = cand_tf
478
479 cand_tf = cand_fz(k)
480 cand_fz(k) = cand_fz(i)
481 cand_fz(i) = cand_tf
482 cand_t = ifpen(k)
483 ifpen(k) = ifpen(i)
484 ifpen(i) = cand_t
485
486 iput(i) = iput(k)
487 iget(iput(i)) = i
488 ENDDO
489 ELSEIF((inacti==5.OR.inacti==6.OR.inacti==7).AND.itied/=0)THEN
490 DO k=1,i_stok
491 i = iget(k)
492
493 cand_t = cand_n(k)
494 cand_n(k) = cand_n(i)
495 cand_n(i) = cand_t
496
497 cand_t = cand_e(k)
498 cand_e(k) = cand_e(i)
499 cand_e(i) = cand_t
500
501 cand_tf = cand_f(1,k)
502 cand_f(1,k) = cand_f(1,i)
503 cand_f(1,i) = cand_tf
504
505 cand_tf = cand_f(2,k)
506 cand_f(2,k) = cand_f(2,i)
507 cand_f(2,i) = cand_tf
508
509 cand_tf = cand_f(3,k)
510 cand_f(3,k) = cand_f(3,i)
511 cand_f(3,i) = cand_tf
512
513 cand_tf = cand_f(4,k)
514 cand_f(4,k) = cand_f(4,i)
515 cand_f(4,i) = cand_tf
516
517 cand_tf = cand_f(5,k)
518 cand_f(5,k) = cand_f(5,i)
519 cand_f(5,i) = cand_tf
520
521 cand_tf = cand_f(6,k)
522 cand_f(6,k) = cand_f(6,i)
523 cand_f(6,i) = cand_tf
524
525 cand_tf = cand_f(7,k)
526 cand_f(7,k) = cand_f(7,i)
527 cand_f(7,i) = cand_tf
528
529 cand_tf = cand_f(8,k)
530 cand_f(8,k) = cand_f(8,i)
531 cand_f(8,i) = cand_tf
532
533 cand_tf = cand_p(k)
534 cand_p(k) = cand_p(i)
535 cand_p(i) = cand_tf
536
537 iput(i) = iput(k)
538 iget(iput(i)) = i
539 ENDDO
540 ELSEIF(inacti==5.OR.inacti==6.OR.inacti==7)THEN
541 DO k=1,i_stok
542 i = iget(k)
543
544 cand_t = cand_n(k)
545 cand_n(k) = cand_n(i)
546 cand_n(i) = cand_t
547
548 cand_t = cand_e(k)
549 cand_e(k) = cand_e(i)
550 cand_e(i) = cand_t
551
552 cand_tf = cand_p(k)
553 cand_p(k) = cand_p(i)
554 cand_p(i) = cand_tf
555
556 iput(i) = iput(k)
557 iget(iput(i)) = i
558 ENDDO
559 ELSEIF(itied/=0)THEN
560 DO k=1,i_stok
561 i = iget(k)
562
563 cand_t = cand_n(k)
564 cand_n(k) = cand_n(i)
565 cand_n(i) = cand_t
566
567 cand_t = cand_e(k)
568 cand_e(k) = cand_e(i)
569 cand_e(i) = cand_t
570
571 cand_tf = cand_f(1,k)
572 cand_f(1,k) = cand_f(1,i)
573 cand_f(1,i) = cand_tf
574
575 cand_tf = cand_f(2,k)
576 cand_f(2,k) = cand_f(2,i)
577 cand_f(2,i) = cand_tf
578
579 cand_tf = cand_f(3,k)
580 cand_f(3,k) = cand_f(3,i)
581 cand_f(3,i) = cand_tf
582
583 cand_tf = cand_f(4,k)
584 cand_f(4,k) = cand_f(4,i)
585 cand_f(4,i) = cand_tf
586
587 cand_tf = cand_f(5,k)
588 cand_f(5,k) = cand_f(5,i)
589 cand_f(5,i) = cand_tf
590
591 cand_tf = cand_f(6,k)
592 cand_f(6,k) = cand_f(6,i)
593 cand_f(6,i) = cand_tf
594
595 cand_tf = cand_f(7,k)
596 cand_f(7,k) = cand_f(7,i)
597 cand_f(7,i) = cand_tf
598
599 cand_tf = cand_f(8,k)
600 cand_f(8,k) = cand_f(8,i)
601 cand_f(8,i) = cand_tf
602
603 iput(i) = iput(k)
604 iget(iput(i)) = i
605 ENDDO
606 ELSEIF(num_imp>0)THEN
607 DO k=1,i_stok
608 i = iget(k)
609
610 cand_t = cand_n(k)
611 cand_n(k) = cand_n(i)
612 cand_n(i) = cand_t
613
614 cand_t = cand_e(k)
615 cand_e(k) = cand_e(i)
616 cand_e(i) = cand_t
617
618 cand_tf = cand_p(k)
619 cand_p(k) = cand_p(i)
620 cand_p(i) = cand_tf
621
622 iput(i) = iput(k)
623 iget(iput(i)) = i
624 ENDDO
625 ELSE
626 DO k=1,i_stok
627 i = iget(k)
628
629 cand_t = cand_n(k)
630 cand_n(k) = cand_n(i)
631 cand_n(i) = cand_t
632
633 cand_t = cand_e(k)
634 cand_e(k) = cand_e(i)
635 cand_e(i) = cand_t
636
637 iput(i) = iput(k)
638 iget(iput(i)) = i
639 ENDDO
640
641 ENDIF
642
643
644
645 i_stok = cand_a(nsn+1) - 1
646 cand_a(nsn+2) = cand_a(nsn+1)
647
648 RETURN
type(real_pointer), dimension(:), allocatable stifi