38
39
40
41#include "implicit_f.inc"
42#include "comlock.inc"
43
44
45
46#include "mvsiz_p.inc"
47
48
49
50 INTEGER I_MEM, NSN,NSNROLD,IGAP
51 INTEGER J_STOK,MULNSN,NOINT,INACTI,ESHIFT
52 INTEGER IRECT(4,*),CAND_N(*),CAND_E(*),CAND_A(*),NSV(*),MSR(*)
53 INTEGER PROV_N(MVSIZ),PROV_E(MVSIZ),IFPEN(*), OLDNUM(*),II_STOK
54
56 . x(3,*), gap_s(*), gap_m(*),
57 . marge, gap, gapmin, gapmax, curv_max(*),
58 . cand_p(*)
59
60
61
62 INTEGER I,K_STOK,I_STOK,N,NE,J
63 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
64
66 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
67 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
68 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
69 . xi(mvsiz), yi(mvsiz), zi(mvsiz),
70 . pene(mvsiz), gapv(mvsiz)
71
72 CALL i23cor3t(j_stok ,x ,irect ,prov_e ,
73 1 prov_n ,igap ,gap ,x1 ,x2 ,
74 2 x3 ,x4 ,y1 ,y2 ,y3 ,
75 3 y4 ,z1 ,z2 ,z3 ,z4 ,
76 4 xi ,yi ,zi ,ix1 ,ix2 ,
77 5 ix3 ,ix4 ,nsn ,gap_s ,gapv ,
78 6 gapmax ,gapmin,curv_max,nsv,msr ,
79 7 gap_m )
80
81 CALL i7pen3(j_stok ,marge ,x1 ,x2 ,x3 ,
82 . x4 ,y1 ,y2 ,y3 ,y4 ,
83 . z1 ,z2 ,z3 ,z4 ,xi ,
84 . yi ,zi ,pene ,ix1 ,ix2 ,
85 . ix3 ,ix4 ,igap ,gap ,gapv )
86
87
88
89 DO i=1,j_stok
90 IF(pene(i)/=zero)THEN
91 n = prov_n(i)
92 ne = prov_e(i)+eshift
93 IF(n>nsn) THEN
94
95 n = oldnum(n-nsn)+nsn
96 IF(n==nsn) n = nsn+nsnrold+1
97 END IF
98 j = cand_a(n)
99 DO WHILE(j<=cand_a(n+1)-1)
100 IF(cand_e(j)==ne)THEN
101 pene(i)=zero
102 j=cand_a(n+1)
103 ELSE
104 j=j+1
105 ENDIF
106 ENDDO
107 ENDIF
108 ENDDO
109
110 k_stok = 0
111 DO i=1,j_stok
112 IF(pene(i)/=zero) k_stok = k_stok + 1
113 ENDDO
114 IF(k_stok==0)RETURN
115
116#include "lockon.inc"
117 i_stok = ii_stok
118 IF(i_stok+k_stok>mulnsn) 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 i_stok = i_stok + 1
129 cand_n(i_stok) = prov_n(i)
130 cand_e(i_stok) = prov_e(i)+eshift
131 ifpen(i_stok) = 0
132 cand_p(i_stok) = zero
133 ENDIF
134 ENDDO
135 RETURN
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194 RETURN
subroutine i23cor3t(x, irect, nsv, cand_e, cand_n, gapv, igap, gap, gap_s, gapmin, gapmax, msr, gap_m, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi)
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)