42
43
44
45
48
49
50
51#include "implicit_f.inc"
52#include "comlock.inc"
53
54
55
56#include "mvsiz_p.inc"
57#include "assert.inc"
58#include "i25edge_c.inc"
59
60
61
62#include "com01_c.inc"
63#include "units_c.inc"
64#include "param_c.inc"
65
66
67
68 INTEGER, INTENT(IN) :: PROV_IDS(2,NVSIZ)
69 INTEGER I_MEM, IGAP0, NEDGE, NIN, ITAB(*), INACTI,IFQ
70 INTEGER J_STOK,MULNSN,NOINT,IFORM,IGAP
71 INTEGER IRECT(4,*),LEDGE(NLEDGE,*),ADMSR(4,*),CAND_S(*),CAND_M(*),II_STOK,
72 . CAND_A(*),IFPEN(*)
73 INTEGER PROV_S(MVSIZ),PROV_M(MVSIZ)
74
75 my_real ,
INTENT(IN) :: dgapload ,drad
77 . marge,x(3,*), gap_m(*), gap_m_l(*), gape(*), gap_e_l(*),
78 . cand_p(4,*),cand_fx(4,*) ,cand_fy(4,*),cand_fz(4,*)
79 real*4 edg_bisector(3,4,*), vtx_bisector(3,2,*)
80
81
82
83 INTEGER I,J,K_STOK,I_STOK,IAD0,IAD,IADFIN,N,NE,EJ
84 INTEGER I_STOK_FIRST,NINDX,INDEX(MVSIZ)
85
87 . pene(mvsiz)
88
89 CALL i25pen3_e2s( j_stok,prov_s ,prov_m ,drad ,igap0 ,
90 . nedge ,ledge ,marge ,gap_m ,gap_m_l
91 . gape ,gap_e_l ,igap ,x ,irect ,
92 . pene ,admsr ,edg_bisector ,vtx_bisector,itab,
94
95
96
97
98 DO i=1,j_stok
99
100
101 IF(pene(i)/=zero)THEN
102 n = prov_s(i)
103 ne = prov_m(i)
104
105
106
107
108
109
110
111
112 IF(n>nedge) THEN
113
114
116
118 END IF
119
120
121 assert(n > 0)
122 j = cand_a(n)
123 DO WHILE(j<=cand_a(n+1)-1)
124 IF(cand_m(j)==ne)THEN
125 pene(i)=zero
126 j=cand_a(n+1)
127
128 ELSE
129 j=j+1
130 ENDIF
131 ENDDO
132
133
134 ENDIF
135 ENDDO
136
137
138 k_stok = 0
139 DO i=1,j_stok
140 IF(pene(i)/=zero) THEN
141 k_stok = k_stok + 1
142 END IF
143 ENDDO
144 IF(k_stok==0)RETURN
145
146#include "lockon.inc"
147 i_stok = ii_stok
148 IF(i_stok+k_stok>mulnsn) THEN
149 i_mem = 2
150#include "lockoff.inc"
151 RETURN
152 ENDIF
153 ii_stok = i_stok + k_stok
154#include "lockoff.inc"
155
156 DO i=1,j_stok
157 debug_e2e(prov_ids(2,i)==d_es.AND.prov_ids(1,i)==d_em,pene(i))
158 IF(pene(i)/=zero)THEN
159 assert(prov_s(i) > 0)
161
162 i_stok = i_stok + 1
163 cand_s(i_stok) = prov_s(i)
164 cand_m(i_stok) = prov_m(i)
165 cand_p(1:4,i_stok) = zero
166 IF(ifq > 0) THEN
167 cand_fx(1:4,i_stok) = zero
168 cand_fy(1:4,i_stok) = zero
169 cand_fz(1:4,i_stok) = zero
170 ifpen(i_stok) = 0
171 ENDIF
172 ENDIF
173 debug_e2e(prov_ids(2,i)==d_es.AND.prov_ids(1,i)==d_em,cand_p(1,i_stok))
174 debug_e2e(prov_ids(2,i)==d_es.AND.prov_ids(1,i)==d_em,cand_p(2,i_stok))
175 debug_e2e(prov_ids(2,i)==d_es.AND.prov_ids(1,i)==d_em,cand_p(3,i_stok))
176 debug_e2e(prov_ids(2,i)==d_es.AND.prov_ids(1,i)==d_em,cand_p(4,i_stok))
177 ENDDO
178
179
180
181
182
183
184
185
186
187
188 RETURN
integer, dimension(:), allocatable oldnum_edge
subroutine i25pen3_e2s(jlt, cand_s, cand_m, drad, igap0, nedge, ledge, marge, gap_m, gap_m_l, gape, gap_e_l, igap, x, irect, pene, admsr, edg_bisector, vtx_bisector, itab, dgapload)