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 . ME,N1,N2,N3,N4,M1,M2,M3,M4
64 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
65
67 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
68 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
69 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
70 . xi(mvsiz), yi(mvsiz), zi(mvsiz),
71 . nnx1(mvsiz), nnx2(mvsiz), nnx3(mvsiz), nnx4(mvsiz),
72 . nny1(mvsiz), nny2(mvsiz), nny3(mvsiz), nny4(mvsiz),
73 . nnz1(mvsiz), nnz2(mvsiz), nnz3(mvsiz), nnz4(mvsiz),
74 . pene(mvsiz), gapv(mvsiz)
75
76 CALL i23cor3t(j_stok ,x ,irect ,prov_e ,
77 1 prov_n ,igap ,gap ,x1 ,x2 ,
78 2 x3 ,x4 ,y1 ,y2 ,y3 ,
79 3 y4 ,z1 ,z2 ,z3 ,z4 ,
80 4 xi ,yi ,zi ,ix1 ,ix2 ,
81 5 ix3 ,ix4 ,nsn ,gap_s ,gapv ,
82 6 gapmax ,gapmin,curv_max,nsv,msr
83 7 gap_m )
84
85 CALL i7pen3(j_stok ,marge ,x1 ,x2 ,x3 ,
86 . x4 ,y1 ,y2 ,y3 ,y4 ,
87 . z1 ,z2 ,z3 ,z4 ,xi ,
88 . yi ,zi ,pene ,ix1 ,ix2 ,
89 . ix3 ,ix4 ,igap ,gap ,gapv )
90
91
92
93 DO i=1,j_stok
94 IF(pene(i)/=zero)THEN
95 n = prov_n(i)
96 ne = prov_e(i)+eshift
97 IF(n>nsn) THEN
98
99 n = oldnum(n-nsn)+nsn
100 IF(n==nsn) n = nsn+nsnrold+1
101 END IF
102 j = cand_a(n)
103 DO WHILE(j<=cand_a(n+1)-1)
104 IF(cand_e(j)==ne)THEN
105 pene(i)=zero
106 j=cand_a(n+1)
107 ELSE
108 j=j+1
109 ENDIF
110 ENDDO
111 ENDIF
112 ENDDO
113
114 k_stok = 0
115 DO i=1,j_stok
116 IF(pene(i)/=zero) k_stok = k_stok + 1
117 ENDDO
118 IF(k_stok==0)RETURN
119
120#include "lockon.inc"
121 i_stok = ii_stok
122 IF(i_stok+k_stok>mulnsn) THEN
123 i_mem = 2
124#include "lockoff.inc"
125 RETURN
126 ENDIF
127 ii_stok = i_stok + k_stok
128#include "lockoff.inc"
129
130 DO i=1,j_stok
131 IF(pene(i)/=zero)THEN
132 i_stok = i_stok + 1
133 cand_n(i_stok) = prov_n(i)
134 cand_e(i_stok) = prov_e(i)+eshift
135 ifpen(i_stok) = 0
136 cand_p(i_stok) = zero
137 ENDIF
138 ENDDO
139 RETURN
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
195
196
197
198 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)