37
38
39
40
41
42
43
44
45
46
47
48#include "implicit_f.inc"
49#include "comlock.inc"
50
51
52
53#include "mvsiz_p.inc"
54
55
56
57 INTEGER I_MEM,J_STOK,NSN4,NOINT,ESHIFT,NSN,NSNROLD,IGAP,NIN
58 INTEGER IRECT(4,*),NSV(*),CAND_N(*),CAND_E(*),CAND_A(*)
59 INTEGER PROV_N(MVSIZ),PROV_E(MVSIZ), OLDNUM(*),II_STOK
60
62 . x(3,*), gap_s(*), gap_m(*),
63 . marge, gap, gapmin, gapmax, bid
64
65
66
67 INTEGER I,J,K_STOK,I_STOK,N,NE,NN,IBID
68 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
69
71 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
72 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
73 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
74 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
75 . pene(mvsiz), gapv(mvsiz), rbid
76
77 ibid = 0
78 rbid = zero
79 CALL i7cor3t(j_stok ,x ,irect ,nsv ,prov_e ,
80 1 prov_n ,igap ,gap ,x1 ,x2
81 2 x3 ,x4 ,y1 ,y2 ,y3 ,
82 3 y4 ,z1 ,z2 ,z3 ,z4 ,
83 4 xi ,yi ,zi ,stif ,ix1 ,
84 5 ix2 ,ix3 ,ix4 ,nsn ,gap_s ,
85 6 gap_m ,gapv ,gapmax,gapmin,bid ,
86 7 10 ,nin ,rbid ,rbid ,ibid ,
87 8 rbid ,rbid )
88
89 CALL i7pen3(j_stok ,marge ,x1 ,x2 ,x3 ,
90 . x4 ,y1 ,y2 ,y3 ,y4 ,
91 . z1 ,z2 ,z3 ,z4 ,xi ,
92 . yi ,zi ,pene ,ix1 ,ix2 ,
93 . ix3 ,ix4 ,igap ,gap ,gapv )
94
95 k_stok = 0
96 DO i=1,j_stok
97 IF (pene(i)/=zero) THEN
98 n = prov_n(i)
99 IF(n>nsn) THEN
100
101 n = oldnum(n-nsn)+nsn
102 IF(n==nsn) n = nsn+nsnrold+1
103 END IF
104
105 ne = prov_e(i)+eshift
106 DO j = cand_a(n),cand_a(n+1)-1
107 IF (cand_e(j)==ne) GOTO 100
108 ENDDO
109 k_stok = k_stok + 1
110 100 CONTINUE
111 ENDIF
112 ENDDO
113
114 IF(k_stok==0)RETURN
115
116#include "lockon.inc"
117 i_stok = ii_stok
118 IF(i_stok+k_stok>nsn4) THEN
119 i_mem = 2
120#include "lockoff.inc"
121 RETURN
122 ENDIF
123 ii_stok = i_stok + k_stok
124#include "lockoff.inc"
125
126 DO i=1,j_stok
127 IF (pene(i)/=zero) THEN
128 n = prov_n(i)
129 nn = n
130 IF(n>nsn) THEN
131
132 n = oldnum(n-nsn)+nsn
133 IF(n==nsn) n = nsn+nsnrold+1
134 END IF
135
136 ne = prov_e(i)+eshift
137 DO j = cand_a(n),cand_a(n+1)-1
138 IF (cand_e(j)==ne) GOTO 200
139 ENDDO
140 i_stok = i_stok + 1
141 cand_n(i_stok) = nn
142 cand_e(i_stok) = ne
143 200 CONTINUE
144 ENDIF
145 ENDDO
146
147 RETURN
subroutine i7cor3t(jlt, x, irect, nsv, cand_e, cand_n, igap, gap, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, stif, ix1, ix2, ix3, ix4, nsn, gap_s, gap_m, gapv, gapmax, gapmin, curv_max, ityp, nin, gap_s_l, gap_m_l, intth, drad, dgapload)
subroutine i7pen3(marge, gapv, n1, n2, n3, pene, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, last)