52 2 PM ,GEO ,IPARI ,INTERFACE_ID ,ITAB ,
53 3 MS ,MWA ,RWA ,IXTG ,IWRN ,
54 4 IKINE ,IXT ,IXP ,IXR ,NELEMINT,
55 5 IDDLEVEL,IFIEND ,NSNET ,
56 6 NMNET ,IWCONT ,NSNT ,
57 7 NMNT ,KNOD2ELS,KNOD2ELC,KNOD2ELTG,NOD2ELS,
58 8 NOD2ELC ,NOD2ELTG,IGRSURF ,IKINE1 ,IPART ,
59 9 IPARTC ,IPARTTG ,THK ,THK_PART,INPENE ,
60 A IWPENTOT,IXS10 ,I_MEM ,
61 B INTER_CAND,IXS16,IXS20 ,ID ,TITR ,
62 C KXX ,IXX ,IGEO ,NOD2EL1D,KNOD2EL1D,
63 D LELX ,INTBUF_TAB ,PM_STACK, IWORKSH,NSPMD)
75#include "implicit_f.inc"
88#include "vect07_c.inc"
92 INTEGER INTERFACE_ID, IWRN, NSNT, NMNT,SIXINT,
93 . NSNET ,NMNET, INPENE,IWPENTOT
94 INTEGER IXS(NIXS,*), IXC(NIXC,*),
95 . IPARI(*), IXT(NIXT,*) ,IXP(NIXP,*) ,IXR(NIXR,*),
96 . ITAB(*), MWA(*), IXTG(NIXTG,*), IKINE(*),
97 . NELEMINT, IDDLEVEL,IFIEND,
99 . KNOD2ELS(*), KNOD2ELC(*), KNOD2ELTG(*),
100 . NOD2ELS(*), NOD2ELC(*), NOD2ELTG(*),
101 . IPART(*),IPARTC(*), IPARTTG(*),IXS10(*),I_MEM,
102 . IXS16(*), IXS20(*),KXX(*),IXX(*), IGEO(NPROPGI,*),
103 . NOD2EL1D(*), KNOD2EL1D(*),IWORKSH(3,*)
105 INTEGER,
INTENT(in) :: NSPMD
108 . x(*), pm(*), geo(*), ms(*),rwa(6,*),
109 . thk(*),thk_part(*),lelx(*),pm_stack(3,*)
110 TYPE(intbuf_struct_) INTBUF_TAB
113 CHARACTER(LEN=NCHARTITLE) :: TITR
114 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
115 TYPE(INTER_CAND_),
INTENT(inout) :: INTER_CAND
119 INTEGER NRTS, NRTM, NSN, NMN, NMN0, NTY, NST, MST, IBUC, NOINT,
120 . NSNE, NMNE,NLINS,NLINM,NLN,IWPENE,,
121 . I, I_STOK,I_STOK_E,IRS,IRM,ILEV,IDEL2,
122 . nseg, ngrous, ng, inacti,
123 . jlt_new,igap,multimp,isearch,itied,
124 . ign,ige,nme,nmes,nad,ead,isu1,isu2,
125 . intth,nlinsa,nlinma,iss2,ifs2,isym
127 . n1(mvsiz),n2(mvsiz),m1(mvsiz),m2(mvsiz)
128 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAG
131 . maxbox,minbox,gap0,bid,tzinf,gapinf,gap_tri,gapshmax,gapmax0,
132 . gapinfs,gapinfm,gape,gapinput,fpenmax,drad
133 my_real :: gap,gapmin,gapmax,dgapload
135 . nx(mvsiz),ny(mvsiz),nz(mvsiz),gapv(mvsiz),xanew(3,numnod)
137 . ,
DIMENSION(:,:),
ALLOCATABLE :: solidn_normal
139 INTEGER,
DIMENSION(MVSIZ) :: IX1,IX2,IX3,IX4
140 INTEGER,
DIMENSION(MVSIZ) :: PROV_N,PROV_E,NSVG
141 my_real,
DIMENSION(MVSIZ) :: X1,X2,X3,X4
142 my_real,
DIMENSION(MVSIZ) :: y1,y2,y3,y4
143 my_real,
DIMENSION(MVSIZ) :: z1,z2,z3,z4
144 my_real,
DIMENSION(MVSIZ) :: n11,n21,n31
145 my_real,
DIMENSION(MVSIZ) :: xi,yi,zi
146 my_real,
DIMENSION(MVSIZ) :: x0,y0,z0
147 my_real,
DIMENSION(MVSIZ) :: xx1,yy1,zz1
148 my_real,
DIMENSION(MVSIZ) :: xx2,yy2,zz2
149 my_real,
DIMENSION(MVSIZ) :: xx3,yy3,zz3
150 my_real,
DIMENSION(MVSIZ) :: xx4,yy4,zz4
151 my_real,
DIMENSION(MVSIZ) :: xn1,yn1,zn1
152 my_real,
DIMENSION(MVSIZ) :: xn2,yn2,zn2
153 my_real,
DIMENSION(MVSIZ) :: xn3,yn3,zn3
154 my_real,
DIMENSION(MVSIZ) :: xn4,yn4,zn4
155 my_real,
DIMENSION(MVSIZ) :: pene
156 my_real,
DIMENSION(MVSIZ) :: p1,p2,p3,p4
157 my_real,
DIMENSION(MVSIZ) :: lb1,lb2,lb3,lb4
158 my_real,
DIMENSION(MVSIZ) :: lc1,lc2,lc3,lc4,stif
190 ALLOCATE(tag(numnod))
194 1 x ,nrtm ,intbuf_tab%IRECTM ,noint ,itab,id,titr,
195 2 ix1 ,ix2 ,ix3 ,ix4 ,x1 ,
196 3 x2 ,x3 ,x4 ,y1 ,y2 ,
197 4 y3 ,y4 ,z1 ,z2 ,z3 ,
198 5 z4 ,n11 ,n21 ,n31 ,x0 ,
199 6 y0 ,z0 ,xn1 ,yn1 ,zn1 ,
200 7 xn2 ,yn2 ,zn2 ,xn3 ,yn3 ,
201 8 zn3 ,xn4 ,yn4 ,zn4 )
205 IF(isu2 /= 0 .and. isym == 1)
THEN
212 gapinput = intbuf_tab%VARIABLES
215 2 ixs ,ixc ,ixtg ,ixt ,
216 3 ixp ,rwa ,interface_id ,nty ,
217 4 noint ,nrtm ,nsn ,intbuf_tab%IRECTM ,
218 5 intbuf_tab%NSV ,inacti ,intbuf_tab%VARIABLES(2),igap ,
219 6 intbuf_tab%GAP_S ,intbuf_tab%GAP_M ,intbuf_tab%VARIABLES(13),intbuf_tab%VARIABLES(6),
220 7 intbuf_tab%VARIABLES(16),intbuf_tab%STFAC(1) ,intbuf_tab%STFM ,intbuf_tab%STFA ,
221 8 knod2els ,knod2elc ,knod2eltg ,nod2els ,
222 9 nod2elc ,nod2eltg ,igrsurf(isu1) ,ifs2 ,
223 a igrsurf(iss2) ,ipari(47) ,intbuf_tab%IELES ,
224 b intbuf_tab%IELEC ,intbuf_tab%AREAS ,ipartc ,iparttg
225 c thk ,thk_part ,intbuf_tab%GAP_SH ,xanew ,
226 d gapshmax ,intbuf_tab%NBINFLG ,intbuf_tab%MBINFLG ,nln ,
227 e intbuf_tab%NLG ,intbuf_tab%VARIABLES(29),ixs10 ,ixs16 ,
228 f ixs20 ,id,titr,igeo, pm_stack , iworksh )
233 maxbox = intbuf_tab%VARIABLES(9)
234 minbox = intbuf_tab%VARIABLES(12)
235 gapmax0 = intbuf_tab%VARIABLES(16) + gapshmax
237 1 x ,intbuf_tab%IRECTM,intbuf_tab%NSV,intbuf_tab%VARIABLES(4),nseg ,
238 2 nmn ,nrtm ,mwa ,nsn ,intbuf_tab%CAND_E,
239 3 intbuf_tab%CAND_N,intbuf_tab%VARIABLES(2),rwa ,noint ,i_stok ,
240 4 intbuf_tab%VARIABLES(5),intbuf_tab%VARIABLES(8),maxbox,minbox ,intbuf_tab%MSR
241 5 intbuf_tab%STFM,intbuf_tab%STFA ,multimp ,1 ,iddlevel ,
242 6 itab ,intbuf_tab%GAP_S,intbuf_tab%GAP_M,igap,intbuf_tab%VARIABLES(13),
243 7 gapmax0 ,inacti ,bid ,bid,i_mem,id,titr, 0,prov_n,prov_e,
244 9 nsvg,ix1 ,ix2 ,ix3 ,ix4 ,
245 1 n11 ,n21 ,n31 ,pene ,x1 ,
246 2 x2 ,x3 ,x4 ,y1 ,y2 ,
247 3 y3 ,y4 ,z1 ,z2 ,z3 ,
248 4 z4 ,xi ,yi ,zi ,x0 ,
249 5 y0 ,z0 ,xn1 ,yn1 ,zn1 ,
250 6 xn2 ,yn2 ,zn2 ,xn3 ,yn3 ,
251 7 zn3 ,xn4 ,yn4 ,zn4 ,p1 ,
252 8 p2 ,p3 ,p4 ,lb1 ,lb2 ,
253 9 lb3 ,lb4 ,lc1 ,lc2 ,lc3 ,
255 if (i_mem == 2)
RETURN
257 intbuf_tab%VARIABLES(9) = maxbox
258 intbuf_tab%VARIABLES(12) = minbox
261 IF (iddlevel==0.AND.nspmd>1)
THEN
262 IF ( ((nelemint+i_stok)) > inter_cand%S_IXINT_2)
CALL upgrade_ixint(inter_cand,nelemint,i_stok)
263 gap = intbuf_tab%VARIABLES(2)
264 gapmin = intbuf_tab%VARIABLES(13)
265 gapmax = intbuf_tab%VARIABLES(16)
266 dgapload = intbuf_tab%VARIABLES(46)
268 . intbuf_tab%IRECTM,intbuf_tab%NSV,i_stok,intbuf_tab%CAND_E,intbuf_tab%CAND_N,
269 . igap,gap,gapmax,gapmin,dgapload,
270 . drad,intbuf_tab%GAP_S,intbuf_tab%GAP_SL,intbuf_tab%GAP_M,intbuf_tab%GAP_ML,
275 IF((iddlevel==0).AND. (dectyp>=3.AND.dectyp<=6))
THEN
277 CALL i20wcontdd(intbuf_tab%NSV,intbuf_tab%MSR,nsn,nmn,iwcont,nsnt,nmnt)
286 ALLOCATE(solidn_normal(3,numnod))
287 CALL i20norm(ipari(4),intbuf_tab%IRECTM,numnod,x,solidn_normal,
288 . ipari(6),intbuf_tab%MSR,nln,intbuf_tab%NLG,intbuf_tab%GAP_SH)
299 IF(nlins + nlinm /= 0)
THEN
307 1x ,intbuf_tab%IXLINM ,intbuf_tab%STF,ixs ,pm ,
308 2geo ,nlinm ,ixc ,interface_id ,intbuf_tab%STFAC(1),
309 3nty ,gape ,noint ,intbuf_tab%GAP_ME,
310 4ms ,ixtg ,ixt ,ixp ,ixr ,
311 5igap ,intbuf_tab%VARIABLES(13),gap0 ,gapinfs ,nsne ,
312 6ipartc ,iparttg ,thk ,thk_part ,ixs10 ,
313 7id ,titr ,kxx ,ixx ,igeo ,
314 8 nod2el1d ,knod2el1d ,knod2els ,knod2elc ,knod2eltg ,
315 9 nod2els ,nod2elc ,nod2eltg ,lelx , pm_stack , iworksh )
318 1x ,intbuf_tab%IXLINS,intbuf_tab%STFS,ixs ,pm ,
319 2geo ,nlins ,ixc ,-interface_id ,intbuf_tab%STFAC(1),
320 3nty ,gape ,noint ,intbuf_tab%GAP_SE,
321 4ms ,ixtg ,ixt ,ixp ,ixr ,
322 5igap ,intbuf_tab%VARIABLES(13),gap0 ,gapinfm ,nsne ,
323 6ipartc ,iparttg ,thk ,thk_part ,ixs10 ,
324 7id ,titr ,kxx ,ixx ,igeo ,
325 7 nod2el1d ,knod2el1d ,knod2els ,knod2elc ,knod2eltg ,
326 8 nod2els ,nod2elc ,nod2eltg ,lelx , pm_stack , iworksh)
328 intbuf_tab%VARIABLES(2) =
max(intbuf_tab%VARIABLES(2),gape)
329 gapinf=gapinfs+gapinfm
330 gapinf=
min(gapinf,intbuf_tab%VARIABLES(6))
331 intbuf_tab%VARIABLES(6)=
max(gapinf,intbuf_tab%VARIABLES(13))
335 maxbox = intbuf_tab%VARIABLES(9)
336 minbox = intbuf_tab%VARIABLES(12)
337 gap_tri = intbuf_tab%VARIABLES(2)
339 IF(igap/=0)gap_tri=two*gap_tri
341 1x ,intbuf_tab%IXLINM,intbuf_tab%IXLINS,intbuf_tab%VARIABLES(4),nlinsa,
342 2nmne ,nlinma ,mwa ,nsne ,intbuf_tab%LCAND_N,
343 3intbuf_tab%LCAND_S,gap_tri ,rwa ,noint ,i_stok_e ,
344 4intbuf_tab%VARIABLES(5),intbuf_tab%VARIABLES(8),maxbox ,minbox ,intbuf_tab%MSRL,
345 5intbuf_tab%NSVL,multimp ,intbuf_tab%ADCCM20,intbuf_tab%CHAIN20,i_mem,
346 6id,titr,iddlevel,drad, 0)
348 if (i_mem == 2)
RETURN
349 intbuf_tab%VARIABLES(9) = maxbox
350 intbuf_tab%VARIABLES(12) = minbox
357 ngrous=1+(i_stok_e-1)/nvsiz
359 IF(ipri>=1)
WRITE(iout,2011)
364 llt = min0( nvsiz, i_stok_e - nft )
367 1 llt ,intbuf_tab%VARIABLES(13),intbuf_tab%LCAND_S(1+nft) ,intbuf_tab%LCAND_N(1+nft),
369 2 intbuf_tab%IXLINM,nx ,ny ,nz ,
370 4 n1 ,n2 ,m1 ,m2 ,jlt_new ,
371 5 x ,igap ,intbuf_tab%GAP_SE ,intbuf_tab%GAP_ME,gapv,
372 6 nln ,intbuf_tab%NLG,solidn_normal)
374 fpenmax = intbuf_tab%VARIABLES(27)
376 CALL i20pwr3ae(itab ,inacti,intbuf_tab%LCAND_N(1+nft),intbuf_tab%LCAND_S(1+nft),
377 2 intbuf_tab%STFS,intbuf_tab%STF,xanew ,intbuf_tab%NSVL,iwpenedge,
378 3 n1 ,n2 ,m1 ,m2 ,nx ,
379 4 ny ,nz ,gapv ,intbuf_tab%GAP_SE,intbuf_tab%GAP_ME,
381 IF(iwpenedge/=0.AND.inacti==3.OR.inacti==4) iwrn = 1
383 IF(((iddlevel==0)).AND.(dectyp>=3.AND.dectyp<=6))
THEN
385 CALL i20wcontdd(intbuf_tab%NSVL,intbuf_tab%MSRL,nsne,nmne,iwcont,
393 1 nrtm ,nsn ,nln, intbuf_tab%GAP_M,intbuf_tab%GAP_SH,
394 2 intbuf_tab%GAP_S,intbuf_tab%NBINFLG,intbuf_tab%NSV,intbuf_tab%NLG,tag)
396 ngrous=1+(i_stok-1)/nvsiz
399 IF(ipri>=1)
WRITE(iout,2007)
402 llt = min0( nvsiz, i_stok - nft )
404 1 x,intbuf_tab%IRECTM,intbuf_tab%NSV,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),
405 2 intbuf_tab%STFM,intbuf_tab%STFA,gapv ,igap ,intbuf_tab%VARIABLES(2) ,
406 3 intbuf_tab%GAP_S,intbuf_tab%GAP_M,1,intbuf_tab%VARIABLES(13),intbuf_tab%VARIABLES
407 4 bid ,bid ,drad,ix1 ,ix2 ,
408 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
409 6 x3 ,x4 ,y1 ,y2 ,y3 ,
410 7 y4 ,z1 ,z2 ,z3 ,z4 ,
411 8 xi ,yi ,zi ,stif ,bid ,
414 CALL i20dst3(igap,intbuf_tab%GAP_SH,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),gapv ,
415 2 intbuf_tab%VARIABLES(2),intbuf_tab%GAP_S,intbuf_tab%GAP_M,intbuf_tab%VARIABLES(16),
416 . intbuf_tab%VARIABLES(13),
417 3 intbuf_tab%IRECTM,nln ,intbuf_tab%NLG,solidn_normal,intbuf_tab%NSV,
418 4 intbuf_tab%NBINFLG,tag,ix3 ,ix4 ,x1 ,
419 5 x2, x3, x4 ,y1 ,y2 ,
420 6 y3, y4, z1 ,z2 ,z3 ,
421 7 z4, xi, yi ,zi ,x0 ,
422 8 y0, z0, xn1,yn1,zn1,
423 9 xn2,yn2, zn2,xn3,yn3,
424 1 zn3,xn4, yn4,zn4,p1 ,
425 2 p2 ,p3 ,p4 ,lb1,lb2,
426 3 lb3,lb4,lc1 ,lc2,lc3,
428 CALL i7pen3(zero,gapv,n11 ,n21 ,n31 ,
429 1 pene ,xn1 ,yn1,zn1,xn2,
430 2 yn2 ,zn2 ,xn3,yn3,zn3,
431 3 xn4 ,yn4 ,zn4,p1 ,p2 ,
434 fpenmax = intbuf_tab%VARIABLES(27)
435 CALL i20pwr3a(itab ,inacti,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),
437 1 intbuf_tab%STFM,xanew,intbuf_tab%NSV,iwpene ,iwrn ,
438 2 intbuf_tab%CAND_E,intbuf_tab%CAND_N,mwa ,noint ,gapv ,
439 3 nty ,itied , fpenmax ,id,titr ,
440 4 ix1,ix2,ix3,ix4,x1,
441 5 x2 ,x3 ,x4 ,y1 ,y2,
442 6 y3 ,y4 ,z1 ,z2 ,z3,
443 7 z4 ,xi ,yi ,zi ,n11,
453 ngrous=1+(i_stok-1)/nvsiz
458 IF(ipri>=1)
WRITE(iout,2007)
461 llt = min0( nvsiz, i_stok - nft )
463 1 xanew ,intbuf_tab%IRECTM,intbuf_tab%NSV,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft
464 2 intbuf_tab%STFM,intbuf_tab%STFA,gapv ,igap ,intbuf_tab%VARIABLES
465 3 intbuf_tab%GAP_S,intbuf_tab%GAP_M,1,intbuf_tab%VARIABLES(13),intbuf_tab%VARIABLES
466 4 bid ,bid ,drad,ix1 ,ix2 ,
467 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
468 6 x3 ,x4 ,y1 ,y2 ,y3 ,
469 7 y4 ,z1 ,z2 ,z3 ,z4 ,
470 8 xi ,yi ,zi ,stif ,bid ,
473 CALL i20dst3(igap,intbuf_tab%GAP_SH,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),gapv ,
474 2 intbuf_tab%VARIABLES(2),intbuf_tab%GAP_S,intbuf_tab%GAP_M,intbuf_tab%VARIABLES(16),
475 . intbuf_tab%VARIABLES(13),
476 3 intbuf_tab%IRECTM,nln ,intbuf_tab%NLG,solidn_normal,intbuf_tab%NSV,
477 4 intbuf_tab%NBINFLG,tag,ix3 ,ix4 ,x1
478 5 x2, x3, x4 ,y1 ,y2 ,
479 6 y3, y4, z1 ,z2 ,z3 ,
480 7 z4, xi, yi ,zi ,x0 ,
481 8 y0, z0, xn1,yn1,zn1,
482 9 xn2,yn2, zn2,xn3,yn3,
483 1 zn3,xn4, yn4,zn4,p1 ,
484 2 p2 ,p3 ,p4 ,lb1,lb2,
485 3 lb3,lb4,lc1 ,lc2,lc3,
488 CALL i7pen3(zero,gapv,n11 ,n21 ,n31 ,
489 1 pene,xn1 ,yn1 ,zn1 ,xn2,
490 2 yn2 ,zn2 ,xn3 ,yn3 ,zn3,
491 3 xn4 ,yn4 ,zn4 ,p1 ,p2 ,
494 CALL i20pwr3(itab ,inacti,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),intbuf_tab%STFA,
495 1 intbuf_tab%STFM,xanew,intbuf_tab%NSV,iwpene ,iwrn ,
496 2 intbuf_tab%CAND_E,intbuf_tab%CAND_N,mwa ,noint ,gapv ,
497 3 nty ,itied ,intbuf_tab%PENIS,intbuf_tab%PENIM,intbuf_tab%GAP_S,
498 4 igap ,id ,titr,ix1,ix2,
499 5 ix3 ,ix4,n11 ,n21,n31,
502 intbuf_tab%I_STOK(1)=iwpene
509 ngrous=1+(i_stok_e-1)/nvsiz
511 IF(ipri>=1)
WRITE(iout,2011)
516 llt = min0( nvsiz, i_stok_e - nft )
519 1 llt ,intbuf_tab%VARIABLES(13),intbuf_tab%LCAND_S(1+nft) ,intbuf_tab%LCAND_N(1+nft),
521 2 intbuf_tab%IXLINM,nx ,ny ,nz ,
522 4 n1 ,n2 ,m1 ,m2 ,jlt_new ,
523 5 xanew ,igap ,intbuf_tab%GAP_SE ,intbuf_tab%GAP_ME,gapv,
524 6 nln ,intbuf_tab%NLG,solidn_normal)
526 CALL i20pwr3e(itab ,inacti,intbuf_tab%LCAND_S(1+nft),intbuf_tab%LCAND_N(1+nft),
527 2 intbuf_tab%STFS,intbuf_tab%STF,xanew ,intbuf_tab%NSVL,iwpenedge,
528 3 n1 ,n2 ,m1 ,m2 ,nx ,
529 4 ny ,nz ,gapv ,intbuf_tab%GAP_SE,intbuf_tab%GAP_ME,
530 5 intbuf_tab%PENISE,intbuf_tab%PENIME,igap )
531 IF(iwpenedge/=0.AND.inacti==3.OR.inacti==4) iwrn = 1
533 IF(((iddlevel==0)).AND.(dectyp>=3.AND.dectyp<=6))
THEN
535 CALL i20wcontdd(intbuf_tab%NSVL,intbuf_tab%MSRL,nsne,nmne,iwcont,
541 CALL i20nlg(nln,nrtm,nsn ,nlins ,nlinm ,
542 2 intbuf_tab%NLG,intbuf_tab%IRECTM,intbuf_tab%NSV,intbuf_tab%IXLINS,
544 3 nmn ,nsne ,nmne ,intbuf_tab%MSR,intbuf_tab%NSVL,
545 4 intbuf_tab%MSRL,intbuf_tab%STFA,intbuf_tab%AVX_ANCR,xanew ,x ,
546 5 intbuf_tab%PENIA,intbuf_tab%ALPHAK)
550 DEALLOCATE(solidn_normal)
553 iwpentot = iwpene + iwpenedge
558 2007
FORMAT(//
' IMPACT CANDIDATES',/,
559 +
' MAIN SECONDARY NODES '/
561 2011
FORMAT(//
' IMPACT CANDIDATES',/,
562 +
' MAIN NODES SECONDARY NODES ')