52
53
54
57 USE intbufdef_mod
59 use element_mod , only :nixs,nixc,nixtg
60
61
62
63#include "implicit_f.inc"
64
65
66
67#include "mvsiz_p.inc"
68
69
70
71#include "com04_c.inc"
72#include "param_c.inc"
73#include "scr03_c.inc"
74#include "units_c.inc"
75#include "vect07_c.inc"
76#include "scr17_c.inc"
77
78
79
80 INTEGER NUMINT, IWRN, I_MEM, RESORT
81 INTEGER INSCR(*), IXS(NIXS,*), IXC(NIXC,*),
82 . IXTG(NIXTG,*), IPARI(*), ITAB(*), MWA(*), IKINE(*),
83 . KNOD2ELS(*), (*), KNOD2ELTG(*),
84 . NOD2ELS(*), NOD2ELC(*), NOD2ELTG(*),
85 . NPBY(NNPBY,*), LPBY(*), IPARTS(*), IPARTC(*), IPARTG(*)
86 TYPE(INTSTAMP_DATA) INTSTAMP
87 INTEGER NOM_OPT(LNOPT1,*)
89 . x(3,*), pm(*), geo(*),rwa(6,*),
90 . thksh4_var(*), thksh3_var(*), thknod(*),
91 . skew(lskew,*), ms(*), in(*), v(3,*), vr(3,*), rby(nrby,*),
92 . thk_part(*)
93 INTEGER ID
94 CHARACTER(LEN=NCHARTITLE) :: TITR
95 TYPE(INTBUF_STRUCT_) :: INTBUF_TAB
96
97
98
99 INTEGER NRTS, NRTM, NSN, NMN, NTY, NST, MST, NOINT,
100 . I, I_STOK,IRS,IRM,
101 . NSEG, NGROUS, NG, INACTI,IWPENE,
102 . JLT_NEW,IGAP,MULTIMP,IADM,INTTH,
103 . ISU1, ISU2,
104 . ISK, IROT, J, MSR, IRB, K, NSL, N
105 INTEGER, DIMENSION(MVSIZ) ::PROV_N,PROV_E
106 INTEGER, DIMENSION(MVSIZ) :: IX1,IX2,IX3,IX4,NSVG
107 my_real,
DIMENSION(MVSIZ) :: x1,x2,x3,x4
108 my_real,
DIMENSION(MVSIZ) :: y1,y2,y3,y4
109 my_real,
DIMENSION(MVSIZ) :: z1,z2,z3,z4
110 my_real,
DIMENSION(MVSIZ) :: xi,yi,zi
111 my_real,
DIMENSION(MVSIZ) :: x0,y0,z0,stif
112 my_real,
DIMENSION(MVSIZ) :: n11,n21,n31,pene1
113 my_real,
DIMENSION(MVSIZ) :: nx1,ny1,nz1
114 my_real,
DIMENSION(MVSIZ) :: nx2,ny2,nz2
115 my_real,
DIMENSION(MVSIZ) :: nx3,ny3,nz3
116 my_real,
DIMENSION(MVSIZ) :: nx4,ny4,nz4
117 my_real,
DIMENSION(MVSIZ) :: p1,p2,p3,p4
118 my_real,
DIMENSION(MVSIZ) :: lb1,lb2,lb3,lb4
119 my_real,
DIMENSION(MVSIZ) :: lc1,lc2,lc3,lc4
120 INTEGER, DIMENSION(:),ALLOCATABLE :: TAGNOD
121 my_real,
DIMENSION(:) ,
POINTER :: gap_s0
122 my_real,
TARGET,
DIMENSION(1):: gaps0_bid
123
125 . maxbox,minbox
127 . gapv(mvsiz), pene(mvsiz),gap0
128 CHARACTER MESS*40
129 DATA mess/'/INTER/TYPE21 INITIALIZATIONS '/
130
131
133 iwpene = 0
134 nrts =ipari(3)
135 nrtm =ipari(4)
136 nsn =ipari(5)
137 nmn =ipari(6)
138 nty =ipari(7)
139 nst =ipari(8)
140 mst =ipari(9
141 noint =ipari(15)
142 igap =ipari(21)
143 inacti= ipari(22)
144 multimp= ipari(23)
145 irm= ipari(24)
146 irs= ipari(25)
147 isu1=ipari
148 isu2=ipari(46)
149 iadm=ipari(44)
150 intth=ipari(47)
151
152
153 IF (resort == 0)THEN
154 WRITE(iout,2001)noint,nty
155 END IF
156
157
158 IF(nty==21) THEN
159
160
161
162
163 IF(igap == 2) THEN
164 gap0 = intbuf_tab%VARIABLES(2)
166 1 x ,intbuf_tab%IRECTS,intbuf_tab%IRECTM,nrts,nrtm,
167 2 geo ,pm ,ixs ,ixc ,ixtg ,
168 3 -numint ,nty ,noint ,nsn ,intbuf_tab%NSV,
169 4 gap0,igap ,intbuf_tab%GAP_S,intbuf_tab%VARIABLES(13),
170 . intbuf_tab%VARIABLES(6),
171 5 intbuf_tab%VARIABLES(16),intbuf_tab%IELES,intbuf_tab%STF,
172 . nmn ,intbuf_tab%MSR ,
173 6 knod2els ,knod2elc ,knod2eltg ,nod2els ,nod2elc ,
174 7 nod2eltg ,thknod ,
175 8 ikine ,itab ,inacti ,intbuf_tab%VARIABLES(19),
176 . intbuf_tab%STFNS,
177 9 intbuf_tab%VARIABLES(23),intbuf_tab%GAP_S(1+nsn:2*nsn),intbuf_tab%AREAS,
178 . intbuf_tab%XM0,intbuf_tab%VARIABLES(27),
179 a intbuf_tab%VARIABLES(28),intbuf_tab%VARIABLES(29),intth ,intbuf_tab%VARIABLES(32),
180 . iparts ,
181 b ipartc, ipartg, thk_part,intbuf_tab%THKNOD0 ,
id,titr ,
182 c intbuf_tab%VARIABLES(46),resort )
183
184 ELSE
185 gap_s0 => gaps0_bid
186 gap0 = intbuf_tab%VARIABLES(2)
188 1 x ,intbuf_tab%IRECTS,intbuf_tab%IRECTM,nrts,nrtm,
189 2 geo ,pm ,ixs ,ixc ,ixtg ,
190 3 -numint ,nty ,noint ,nsn ,intbuf_tab%NSV,
191 4 gap0,igap ,intbuf_tab%GAP_S,intbuf_tab%VARIABLES(13),
192 . intbuf_tab%VARIABLES
193 5 intbuf_tab%VARIABLES(16),intbuf_tab%IELES,intbuf_tab%STF,
194 . nmn ,intbuf_tab%MSR ,
195 6 knod2els ,knod2elc ,knod2eltg ,nod2els ,nod2elc
196 7 nod2eltg ,thknod ,
197 8 ikine ,itab ,inacti ,intbuf_tab%VARIABLES(19),
198 . intbuf_tab%STFNS,
199 9 intbuf_tab%VARIABLES(23),gap_s0,intbuf_tab%AREAS,
200 . intbuf_tab%XM0,intbuf_tab%VARIABLES(27),
201 a intbuf_tab%VARIABLES(28),intbuf_tab%VARIABLES(29),intth ,intbuf_tab%VARIABLES(32),
202 . iparts ,
203 b ipartc, ipartg, thk_part,intbuf_tab%THKNOD0 ,
id,titr
204 c intbuf_tab%VARIABLES(46),resort )
205
206 ENDIF
207
208
209
211 1 x ,intbuf_tab%IRECTM,nrtm ,nmn ,intbuf_tab%MSR ,
212 2 -numint ,nty ,noint ,intbuf_tab%NOD_NORMAL,intbuf_tab%XM0)
213
214 IF(iadm/=0)THEN
216 1 nrtm ,intbuf_tab%XM0,intbuf_tab%NOD_NORMAL,intbuf_tab%IRECTM,intbuf_tab%RCURV,
217 2 intbuf_tab%ANGLM)
218 END IF
219
220 CALL i21reset(nsn, intbuf_tab%IRTLM, intbuf_tab%CSTS)
221
222
223
224 maxbox = intbuf_tab%VARIABLES(9)
225 minbox = intbuf_tab%VARIABLES(12)
227 1 x ,intbuf_tab%IRECTM ,intbuf_tab%NSV,intbuf_tab%VARIABLES(4),nseg
228 2 nmn ,nrtm ,mwa ,nsn ,intbuf_tab%CAND_E ,
229 3 intbuf_tab%CAND_N ,gap0,rwa ,noint,i_stok ,
230 4 intbuf_tab%VARIABLES(5),intbuf_tab%VARIABLES(8),maxbox ,minbox ,intbuf_tab%MSR,
231 5 intbuf_tab%STF ,multimp ,itab ,intbuf_tab%GAP_S ,igap ,
232 6 intbuf_tab%VARIABLES(13),intbuf_tab%VARIABLES(16) ,inacti ,nrts ,intbuf_tab%IRECTS,
233 7 intbuf_tab%XM0 ,intbuf_tab%VARIABLES(23),intbuf_tab%VARIABLES(22),
234 8 intbuf_tab%VARIABLES(32),
id,titr,i_mem,
235 9 ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
236 1 x1 ,x2 ,x3 ,x4 ,y1 ,
237 2 y2 ,y3 ,y4 ,z1 ,z2 ,
238 3 z3 ,z4 ,xi ,yi ,zi ,
239 4 x0 ,y0 ,z0 ,stif ,nx1 ,
240 5 ny1 ,nz1 ,nx2 ,ny2 ,nz2 ,
241 6 nx3 ,ny3 ,nz3 ,nx4 ,ny4 ,
242 7 nz4 ,p1 ,p2 ,p3 ,p4 ,
243 8 lb1 ,lb2 ,lb3 ,lb4 ,lc1 ,
244 9 lc2 ,lc3 ,lc4 ,pene1 ,prov_n ,
245 1 prov_e,n11 ,n21 ,n31 ,intbuf_tab%VARIABLES(46))
246 IF (i_mem == 2 ) resort = resort + 1
247 IF (i_mem == 2 ) RETURN
248 intbuf_tab%VARIABLES(9) = maxbox
249 intbuf_tab%VARIABLES(12) = minbox
250 intbuf_tab%VARIABLES(2) = gap0
251
252
253
254 ngrous=1+(i_stok-1)/nvsiz
255
256 DO 700 ng=1,ngrous
257
258 IF(ipri>=1) WRITE(iout,2007)
259 nft = (ng-1) * nvsiz
260 lft = 1
261 llt = min0( nvsiz, i_stok - nft )
263 1 llt ,intbuf_tab%CAND_N(1+nft),intbuf_tab%CAND_E(1+nft),intbuf_tab%IRECTM,intbuf_tab%NSV,
264 2 intbuf_tab%GAP_S,x ,intbuf_tab%IRTLM,intbuf_tab%CSTS,
265 . intbuf_tab%VARIABLES(23),
266 3 intbuf_tab%NOD_NORMAL,intbuf_tab%XM0,pene,intbuf_tab%PENIS,intbuf_tab%IFPEN,
267 4 igap ,intbuf_tab%VARIABLES(2), intbuf_tab%VARIABLES(16), intbuf_tab%VARIABLES(13) ,
268 . intbuf_tab%VARIABLES(32),
269 5 intbuf_tab%VARIABLES(46))
270 700 CONTINUE
271
273 . itab ,inacti,intbuf_tab%CAND_E,intbuf_tab%CAND_N,intbuf_tab%STFNS,
274 1 x ,i_stok,intbuf_tab%NSV,iwpene ,intbuf_tab%PENIS,
275 2 noint ,nty ,intbuf_tab%GAP_S,intbuf_tab%MSR,intbuf_tab%IRTLM,
276 3 intbuf_tab%IRECTM ,intbuf_tab%XM0,intbuf_tab%VARIABLES(13),intbuf_tab%VARIABLES(16),
277 .
278 4 nsn ,mwa ,intbuf_tab%VARIABLES(32),
id,titr)
279
280 IF(iwpene==0.AND.(inacti==5.OR.inacti==6))
281 . ipari(22) = -inacti
282 intbuf_tab%I_STOK(1)=iwpene
283
284
285
286
287
288
289
290 irb=intstamp%IRB
291 msr=intstamp%MSR
292 intstamp%XG(1)=x(1,msr)
293 intstamp%XG(2)=x(2,msr)
294 intstamp%XG(3)=x(3,msr)
295 intstamp%V(1) =v(1,msr)
296 intstamp%V(2) =v(2,msr)
297 intstamp%V(3) =v(3,msr)
298 intstamp%MASS =ms(msr)
299 DO j=1,9
300 intstamp%ROT(j)=rby(j,irb)
301 END DO
302 intstamp%IN(1)=rby(10,irb)
303 intstamp%IN(2)=rby(11,irb)
304 intstamp%IN(3)=rby(12,irb)
305 intstamp%VR(1)=vr(1,msr)
306 intstamp%VR(2)=vr(2,msr)
307 intstamp%VR(3)=vr(3,msr)
308
309
310
311 k=0
312 DO n=1,irb-1
313 k=k+npby(2,n)
314 END DO
315
317
318 nsl=npby(2,irb)
319 DO i=1,nsl
320 n=lpby(k+i)
322 END DO
323
324 DO i=1,nmn
325 n=intbuf_tab%MSR(i)
328 . msgtype=msgerror,
329 . anmode=aninfo,
331 . c1=titr,
332 . i2=itab(n),
333 . i3=nom_opt(1,irb))
334 END IF
335 END DO
336
337
338
339
340 irot=intstamp%IROT
342 1 irot ,intstamp%XG,intstamp%ROT,nmn ,intbuf_tab%NOD_NORMAL,
343 2 intbuf_tab%XM0,intstamp%BRACKET,nrtm,intbuf_tab%IRECTM,
344 . intbuf_tab%VARIABLES(27),
345 3 intbuf_tab%VARIABLES(28),intbuf_tab%VARIABLES(29),nsn,intbuf_tab%XSAV)
346
347 ENDIF
349
350 RETURN
351
352 2001 FORMAT(//,1x,'INTERFACE NUMBER. . . . . . . . . . . . . .',i10/
353 + ,1x,'INTERFACE TYPE. . . . . . . . . . . . . . .',i6/)
354 2002 FORMAT(//
355 +' SECONDARY NEAREST NEAREST MAIN NODES SECONDARY '/
356 +' NODE MAIN SEGMENT S T')
357 2022 FORMAT(//
358 +' SECONDARY NEAREST MAIN NODES SECONDARY '/
359 +' NODE SEGMENT ',
360 +' S T DIST')
361 2003 FORMAT(//
362 +' MAIN NEAREST NEAREST SECONDARY NODES MAIN'/
363 +' NODE SECONDARY SEGMENT S T')
364 2007 FORMAT(//' IMPACT CANDIDATES',/,
365 +' MAIN SECONDARY NODES '/
366 +' NODE ')
367 2011 FORMAT(//' IMPACT CANDIDATES',/,
368 +' MAIN NODES SECONDARY NODES ')
369
subroutine i21buc1(x, irect, nsv, bumult, nseg, nmn, nrtm, mwa, nsn, cand_e, cand_n, gap, xyzm, noint, i_stok, dist, tzinf, maxbox, minbox, msr, stf, multimp, itab, gap_s, igap, gapmin, gapmax, inacti, nrts, irects, xm0, depth, margeref, drad, id, titr, i_mem, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, stif, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, pene, prov_n, prov_e, n11, n21, n31, dgapload)
subroutine i21norm3(x, irectm, nrtm, nmn, msr, nint, nty, noint, nod_normal, xm0)
subroutine i21rcurv(nrtm, xm0, nod_normal, irect, rcurv, anglm)
subroutine i21pwr3(itab, inacti, cand_e, cand_n, stfn, x, i_stok, nsv, iwpene, peni, noint, nty, gap_s, msr, irtlm, irect, xm0, gapmin, gapmax, depth, nsn, itag, drad, id, titr)
subroutine i21rot(irot, xg, rot, nmn, nod_normal, xm0, bracket, nrtm, irectm, lxm, lym, lzm, nsn, xsav)
integer, parameter nchartitle
subroutine i21dst3(jlt, cand_n, cand_e, irect, nsv, gap_s, x, irtlm, csts, depth, nod_normal, xm0, pene, peni, ifpen, igap, gap, gapmax, gapmin, drad, dgapload)
subroutine i21gap3(x, irects, irectm, nrts, nrtm, geo, pm, ixs, ixc, ixtg, nint, nty, noint, nsn, nsv, gap, igap, gap_s, gapmin, criter, gapmax, ieles, stf, nmn, msr, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, thknod, ikine, itab, inacti, gapscale, stfn, depth, gap_s0, area_s0, xm0, lxm, lym, lzm, intth, drad, iparts, ipartc, ipartg, thk_part, thknod0, id, titr, dgapload, resort)
subroutine i21reset(nsn, irtlm, csts)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
subroutine tagnod(ix, nix, nix1, nix2, numel, iparte, tagbuf, npart)