43
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, NSN, NIN,NBINFLG(*),MBINFLG(*),ILEV
58 INTEGER J_STOK,MULNSN,NOINT,ESHIFT,IEDGE,NSNROLD
59 INTEGER IRECT(4,*),NSV(*),CAND_N(*),CAND_E(*),CAND_T(*)
60 INTEGER PROV_N(MVSIZ),PROV_E(MVSIZ),II_STOK,MSEGTYP(*),ISEADD(*),
61 . ISEDGE(*) ,itab(*), CAND_A(*),OLDNUM(*)
62
63 my_real ,
INTENT(IN) :: dgapload
65 . x(3,*), v(3,*), gap_s(*), gap_m(*),
66 . marge, curv_max(*),pene_old(5,nsn),edge_l2(*)
67
68
69
70 INTEGER I,K_STOK,I_STOK,N,NE,J,ITYPE,ISH
71 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
72
74 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
75 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
76 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
77 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
78 . pene(mvsiz), gapv(mvsiz), gapve(mvsiz), pene_e(mvsiz)
79 DATA itype/24/
80
81 CALL i24cor3t( j_stok ,x ,irect ,nsv ,prov_e ,
82 1 prov_n ,x1 ,x2 ,
83 2 x3 ,x4 ,y1 ,y2 ,y3 ,
84 3 y4 ,z1 ,z2 ,z3 ,z4 ,
85 4 xi ,yi ,zi ,stif ,ix1 ,
86 5 ix2 ,ix3 ,ix4 ,nsn ,gap_s ,
87 6 gap_m ,gapv ,curv_max,itype ,nin ,
88 7 v ,pene_old,gapve ,edge_l2,iedge ,
89 8 dgapload)
90
91 CALL i24pen3( j_stok ,marge ,x1 ,x2 ,x3 ,
92 . x4 ,y1 ,y2 ,y3 ,y4 ,
93 . z1 ,z2 ,z3 ,z4 ,xi ,
94 . yi ,zi ,pene ,ix1 ,ix2 ,
95 . ix3 ,ix4 ,gapv ,gapve ,pene_e)
96
97 IF (ilev==2)
98 .
CALL i24s1s2(j_stok,nsn,eshift,prov_n,prov_e,
99 . nbinflg,mbinflg,pene)
100 CALL i24edgt(j_stok ,nsn ,eshift ,prov_n,prov_e,
101 . mbinflg,iseadd ,isedge ,pene_e,iedge )
102
103
104
105
106 DO i=1,j_stok
107 IF(pene(i)/=zero)THEN
108 n = prov_n(i)
109 ne = prov_e(i)+eshift
110 IF(n>nsn)THEN
111
112 n = oldnum(n-nsn)+nsn
113 IF(n==nsn) n = nsn+nsnrold+1
114 END IF
115 j = cand_a(n)
116 DO WHILE(j<=cand_a(n+1)-1)
117 IF(cand_e(j)==ne)THEN
118 pene(i)=zero
119 j=cand_a(n+1)
120 ELSE
121 j=j+1
122 ENDIF
123 ENDDO
124 ENDIF
125 ENDDO
126
127 k_stok = 0
128 DO i=1,j_stok
129 IF(pene(i)+pene_e(i)/=zero) THEN
130 k_stok = k_stok + 1
131 IF( msegtyp(prov_e(i)+eshift)>0) k_stok = k_stok + 1
132 END IF
133 ENDDO
134 IF(k_stok==0)RETURN
135
136#include "lockon.inc"
137 i_stok = ii_stok
138 IF(i_stok+k_stok>mulnsn) THEN
139 i_mem = 2
140#include "lockoff.inc"
141 RETURN
142 ENDIF
143 ii_stok = i_stok + k_stok
144#include "lockoff.inc"
145 IF(iedge==0)THEN
146 DO i=1,j_stok
147 IF(pene(i)/=zero)THEN
148 i_stok = i_stok + 1
149 cand_n(i_stok) = prov_n(i)
150 cand_e(i_stok) = prov_e(i)+eshift
151 ish=msegtyp(cand_e(i_stok))
152 IF( ish > 0 ) THEN
153 i_stok = i_stok + 1
154 cand_n(i_stok) = prov_n(i)
155 cand_e(i_stok) = ish
156 END IF
157 ENDIF
158 ENDDO
159 ELSE
160 DO i=1,j_stok
161 IF(pene(i)+pene_e(i) /= zero )THEN
162 i_stok = i_stok + 1
163 cand_n(i_stok) = prov_n(i)
164 cand_e(i_stok) = prov_e(i)+eshift
165 ish=msegtyp(cand_e(i_stok))
166 IF(pene_e(i) == zero)THEN
167 cand_t(i_stok) = 0
168 ELSEIF(pene(i) == zero)THEN
169 cand_t(i_stok) = 2
170 ELSE
171 cand_t(i_stok) = 1
172 ENDIF
173 IF( ish > 0 ) THEN
174 i_stok = i_stok + 1
175 cand_n(i_stok) = prov_n(i)
176 cand_e(i_stok) = ish
177 IF(pene_e(i) == zero)THEN
178 cand_t(i_stok) = 0
179 ELSEIF(pene(i) == zero)THEN
180 cand_t(i_stok) = 2
181 ELSE
182 cand_t(i_stok) = 1
183 ENDIF
184 END IF
185 ENDIF
186 ENDDO
187 ENDIF
188
189 RETURN
subroutine i24cor3t(jlt, x, irect, nsv, cand_e, cand_n, 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, curv_max, ityp, nin, v, pene_old, gapve, edge_l2, iedge, dgapload)
subroutine i24edgt(llt, nsn, eshift, prov_n, prov_e, mbinflg, iseadd, isedge, pene_e, iedge)
subroutine i24s1s2(llt, nsn, eshift, prov_n, prov_e, nbinflg, mbinflg, pene)
subroutine i24pen3(x, irect, gapv, cand_e, cand_n, nsv, inacti, itab, tag, iwpene, nsn, irtlm, msegtyp, iwpene0, pmin, gap_n, mvoisn, ixs, ixs10, ixs16, ixs20, penmax, penmin, id, titr, ilev, pen_old, knod2els, nod2els, ipartns, ipen0, icont_i, xfic, nrtm, irtse, is2se)