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)
72 use element_mod ,
only :nixs,nixc,nixtg,nixt,nixp,nixr
76#include
"implicit_f.inc"
89#include "vect07_c.inc"
93 INTEGER INTERFACE_ID, , NSNT, NMNT,SIXINT,
94 . NSNET ,NMNET, INPENE,IWPENTOT
95 INTEGER IXS(NIXS,*), IXC(NIXC,*),
96 . (*), IXT(NIXT,*) ,IXP(NIXP,*) ,IXR(NIXR,*),
97 . ITAB(*), MWA(*), IXTG(NIXTG,*), IKINE(*),
98 . NELEMINT, IDDLEVEL,,
100 . KNOD2ELS(*), KNOD2ELC(*), KNOD2ELTG(*),
101 . NOD2ELS(*), NOD2ELC(*), NOD2ELTG(*),
102 . IPART(*),IPARTC(*), IPARTTG(*),IXS10(*),I_MEM,
103 . IXS16(*), IXS20(*),KXX(*),IXX(*), IGEO(NPROPGI,*),
104 . NOD2EL1D(*), KNOD2EL1D(*),IWORKSH(3,*)
106 INTEGER,
INTENT(in) :: NSPMD
109 . x(*), pm(*), geo(*), ms(*),rwa(6,*),
110 . thk(*),thk_part(*),lelx(*),pm_stack(3,*)
111 TYPE(intbuf_struct_) INTBUF_TAB
114 CHARACTER(LEN=NCHARTITLE) :: TITR
115 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
116 TYPE(INTER_CAND_),
INTENT(inout) :: INTER_CAND
120 INTEGER NRTS, NRTM, NSN, , NMN0, NTY, NST, MST, IBUC, NOINT,
121 . NSNE, NMNE,NLINS,NLINM,NLN,IWPENE,IWPENEDGE,
122 . I, I_STOK,I_STOK_E,IRS,IRM,ILEV,IDEL2,
123 . nseg, ngrous, ng, inacti,
124 . jlt_new,igap,multimp,isearch,itied,
125 . ign,ige,nme,nmes,nad,ead,isu1,isu2,
126 . intth,nlinsa,nlinma,iss2,ifs2,isym
128 . n1(mvsiz),n2(mvsiz),m1(mvsiz),m2(mvsiz)
129 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAG
132 . maxbox,minbox,gap0,bid,tzinf,gapinf,gap_tri,gapshmax,gapmax0,
133 . gapinfs,gapinfm,gape,gapinput,fpenmax,drad
134 my_real :: gap,gapmin,gapmax,dgapload
136 . nx(mvsiz),ny(mvsiz),nz(mvsiz),gapv(mvsiz),xanew(3,numnod)
138 . ,
DIMENSION(:,:),
ALLOCATABLE :: solidn_normal
140 INTEGER,
DIMENSION(MVSIZ) :: IX1,IX2,IX3,IX4
141 INTEGER,
DIMENSION(MVSIZ) :: PROV_N,PROV_E,NSVG
142 my_real,
DIMENSION(MVSIZ) :: X1,X2,X3,X4
143 my_real,
DIMENSION(MVSIZ) :: y1,y2,y3,y4
144 my_real,
DIMENSION(MVSIZ) :: z1,z2,z3,z4
145 my_real,
DIMENSION(MVSIZ) :: n11,n21,n31
146 my_real,
DIMENSION(MVSIZ) :: xi,yi,zi
147 my_real,
DIMENSION(MVSIZ) :: x0,y0,z0
148 my_real,
DIMENSION(MVSIZ) :: xx1,yy1,zz1
149 my_real,
DIMENSION(MVSIZ) :: xx2,yy2,zz2
150 my_real,
DIMENSION(MVSIZ) :: xx3,yy3,zz3
151 my_real,
DIMENSION(MVSIZ) :: xx4,yy4,zz4
152 my_real,
DIMENSION(MVSIZ) :: xn1,yn1,zn1
153 my_real,
DIMENSION(MVSIZ) :: xn2,yn2,zn2
154 my_real,
DIMENSION(MVSIZ) :: xn3,yn3,zn3
155 my_real,
DIMENSION(MVSIZ) :: xn4,yn4,zn4
156 my_real,
DIMENSION(MVSIZ) :: pene
157 my_real,
DIMENSION(MVSIZ) :: p1,p2,p3,p4
158 my_real,
DIMENSION(MVSIZ) :: lb1,lb2,lb3,lb4
159 my_real,
DIMENSION(MVSIZ) :: lc1,lc2,lc3,lc4,stif
191 ALLOCATE(tag(numnod))
195 1 x ,nrtm ,intbuf_tab%IRECTM ,noint ,itab,id,titr,
196 2 ix1 ,ix2 ,ix3 ,ix4 ,x1 ,
197 3 x2 ,x3 ,x4 ,y1 ,y2 ,
198 4 y3 ,y4 ,z1 ,z2 ,z3 ,
199 5 z4 ,n11 ,n21 ,n31 ,x0 ,
200 6 y0 ,z0 ,xn1 ,yn1 ,zn1 ,
201 7 xn2 ,yn2 ,zn2 ,xn3 ,yn3 ,
202 8 zn3 ,xn4 ,yn4 ,zn4 )
206 IF(isu2 /= 0 .and. isym == 1)
THEN
213 gapinput = intbuf_tab%VARIABLES(2)
216 2 ixs ,ixc ,ixtg ,ixt ,
217 3 ixp ,rwa ,interface_id ,nty ,
218 4 noint ,nrtm ,nsn ,intbuf_tab%IRECTM ,
219 5 intbuf_tab%NSV ,inacti ,intbuf_tab%VARIABLES(2),igap ,
220 6 intbuf_tab%GAP_S ,intbuf_tab%GAP_M ,intbuf_tab%VARIABLES(13),intbuf_tab%VARIABLES(6),
221 7 intbuf_tab%VARIABLES(16),intbuf_tab%STFAC(1) ,intbuf_tab%STFM ,intbuf_tab%STFA ,
222 8 knod2els ,knod2elc ,knod2eltg ,nod2els ,
223 9 nod2elc ,nod2eltg ,igrsurf(isu1) ,ifs2 ,
224 a igrsurf(iss2) ,ipari(47) ,intbuf_tab%IELES ,
225 b intbuf_tab%IELEC ,intbuf_tab%AREAS ,ipartc ,iparttg ,
227 d gapshmax ,intbuf_tab%NBINFLG ,intbuf_tab%MBINFLG ,nln ,
228 e intbuf_tab%NLG ,intbuf_tab%VARIABLES(29),ixs10 ,ixs16 ,
229 f ixs20 ,id,titr,igeo, pm_stack , iworksh )
234 maxbox = intbuf_tab%VARIABLES(9)
235 minbox = intbuf_tab%VARIABLES(12)
236 gapmax0 = intbuf_tab%VARIABLES(16) + gapshmax
238 1 x ,intbuf_tab%IRECTM,intbuf_tab%NSV,intbuf_tab%VARIABLES(4),nseg ,
239 2 nmn ,nrtm ,mwa ,nsn ,intbuf_tab%CAND_E,
240 3 intbuf_tab%CAND_N,intbuf_tab%VARIABLES(2),rwa ,noint ,i_stok ,
241 4 intbuf_tab%VARIABLES(5),intbuf_tab%VARIABLES(8),maxbox,minbox ,intbuf_tab%MSR,
242 5 intbuf_tab%STFM,intbuf_tab%STFA ,multimp ,1 ,iddlevel ,
243 6 itab ,intbuf_tab%GAP_S,intbuf_tab%GAP_M,igap,intbuf_tab%VARIABLES(13),
244 7 gapmax0 ,inacti ,bid ,bid,i_mem,id,titr, 0,prov_n,prov_e,
245 9 nsvg,ix1 ,ix2 ,ix3 ,ix4 ,
246 1 n11 ,n21 ,n31 ,pene ,x1 ,
247 2 x2 ,x3 ,x4 ,y1 ,y2 ,
248 3 y3 ,y4 ,z1 ,z2 ,z3 ,
249 4 z4 ,xi ,yi ,zi ,x0 ,
250 5 y0 ,z0 ,xn1 ,yn1 ,zn1 ,
251 6 xn2 ,yn2 ,zn2 ,xn3 ,yn3 ,
252 7 zn3 ,xn4 ,yn4 ,zn4 ,p1 ,
253 8 p2 ,p3 ,p4 ,lb1 ,lb2 ,
254 9 lb3 ,lb4 ,lc1 ,lc2 ,lc3 ,
256 if (i_mem == 2)
RETURN
258 intbuf_tab%VARIABLES(9) = maxbox
259 intbuf_tab%VARIABLES(12) = minbox
262 IF (iddlevel==0.AND.nspmd>1)
THEN
263 IF ( ((nelemint+i_stok)) > inter_cand%S_IXINT_2)
CALL upgrade_ixint(inter_cand,nelemint,i_stok)
264 gap = intbuf_tab%VARIABLES(2)
265 gapmin = intbuf_tab%VARIABLES(13)
266 gapmax = intbuf_tab%VARIABLES(16)
267 dgapload = intbuf_tab%VARIABLES(46)
269 . intbuf_tab%IRECTM,intbuf_tab%NSV,i_stok,intbuf_tab%CAND_E,intbuf_tab%CAND_N,
270 . igap,gap,gapmax,gapmin,dgapload,
271 . drad,intbuf_tab%GAP_S,intbuf_tab%GAP_SL,intbuf_tab%GAP_M,intbuf_tab%GAP_ML,
272 . numnod,x,inter_cand)
276 IF((iddlevel==0).AND. (dectyp>=3.AND.dectyp<=6))
THEN
278 CALL i20wcontdd(intbuf_tab%NSV,intbuf_tab%MSR,nsn,nmn,iwcont,nsnt,nmnt)
287 ALLOCATE(solidn_normal(3,numnod))
288 CALL i20norm(ipari(4),intbuf_tab%IRECTM,numnod,x,solidn_normal,
289 . ipari(6),intbuf_tab%MSR,nln,intbuf_tab%NLG,intbuf_tab%GAP_SH)
300 IF(nlins + nlinm /= 0)
THEN
308 1x ,intbuf_tab%IXLINM ,intbuf_tab%STF,ixs ,pm ,
309 2geo ,nlinm ,ixc ,interface_id ,intbuf_tab%STFAC(1),
310 3nty ,gape ,noint ,intbuf_tab%GAP_ME,
311 4ms ,ixtg ,ixt ,ixp ,ixr ,
312 5igap ,intbuf_tab%VARIABLES(13),gap0 ,gapinfs ,nsne ,
313 6ipartc ,iparttg ,thk ,thk_part ,ixs10 ,
314 7id ,titr ,kxx ,ixx ,igeo ,
315 8 nod2el1d ,knod2el1d ,knod2els ,knod2elc ,knod2eltg ,
316 9 nod2els ,nod2elc ,nod2eltg ,lelx , pm_stack , iworksh )
319 1x ,intbuf_tab%IXLINS,intbuf_tab%STFS,ixs ,pm ,
320 2geo ,nlins ,ixc ,-interface_id ,intbuf_tab%STFAC(1),
321 3nty ,gape ,noint ,intbuf_tab%GAP_SE,
322 4ms ,ixtg ,ixt ,ixp ,ixr ,
323 5igap ,intbuf_tab%VARIABLES(13),gap0 ,gapinfm ,nsne ,
324 6ipartc ,iparttg ,thk ,thk_part ,ixs10 ,
325 7id ,titr ,kxx ,ixx ,igeo ,
326 7 nod2el1d ,knod2el1d ,knod2els ,knod2elc ,knod2eltg ,
327 8 nod2els ,nod2elc ,nod2eltg ,lelx , pm_stack , iworksh)
329 intbuf_tab%VARIABLES(2) =
max(intbuf_tab%VARIABLES(2),gape)
330 gapinf=gapinfs+gapinfm
331 gapinf=
min(gapinf,intbuf_tab%VARIABLES(6))
332 intbuf_tab%VARIABLES(6)=
max(gapinf,intbuf_tab%VARIABLES(13))
336 maxbox = intbuf_tab%VARIABLES(9)
337 minbox = intbuf_tab%VARIABLES(12)
338 gap_tri = intbuf_tab%VARIABLES(2)
340 IF(igap/=0)gap_tri=two*gap_tri
342 1x ,intbuf_tab%IXLINM,intbuf_tab%IXLINS,intbuf_tab%VARIABLES(4),nlinsa,
343 2nmne ,nlinma ,mwa ,nsne
344 3intbuf_tab%LCAND_S,gap_tri ,rwa ,noint ,i_stok_e ,
345 4intbuf_tab%VARIABLES(5),intbuf_tab%VARIABLES(8),maxbox ,minbox ,intbuf_tab%MSRL,
346 5intbuf_tab%NSVL,multimp ,intbuf_tab%ADCCM20,intbuf_tab%CHAIN20,i_mem,
347 6id,titr,iddlevel,drad, 0)
349 if (i_mem == 2)
RETURN
350 intbuf_tab%VARIABLES(9) = maxbox
351 intbuf_tab%VARIABLES(12) = minbox
358 ngrous=1+(i_stok_e-1)/nvsiz
360 IF(ipri>=1)
WRITE(iout,2011)
365 llt = min0( nvsiz, i_stok_e - nft )
368 1 llt ,intbuf_tab%VARIABLES(13),intbuf_tab%LCAND_S(1+nft) ,intbuf_tab%LCAND_N(1+nft),
370 2 intbuf_tab%IXLINM,nx ,ny ,nz
371 4 n1 ,n2 ,m1 ,m2 ,jlt_new ,
372 5 x ,igap ,intbuf_tab%GAP_SE ,intbuf_tab%GAP_ME,gapv,
373 6 nln ,intbuf_tab%NLG,solidn_normal)
375 fpenmax = intbuf_tab%VARIABLES(27)
377 CALL i20pwr3ae(itab ,inacti,intbuf_tab%LCAND_N(1+nft),intbuf_tab%LCAND_S(1+nft),
378 2 intbuf_tab%STFS,intbuf_tab%STF,xanew ,intbuf_tab%NSVL,iwpenedge,
379 3 n1 ,n2 ,m1 ,m2 ,nx ,
380 4 ny ,nz ,gapv ,intbuf_tab%GAP_SE,intbuf_tab%GAP_ME,
382 IF(iwpenedge/=0.AND.inacti==3.OR.inacti==4) iwrn = 1
384 IF(((iddlevel==0)).AND.(dectyp>=3.AND.dectyp<=6))
THEN
386 CALL i20wcontdd(intbuf_tab%NSVL,intbuf_tab%MSRL,nsne,nmne,iwcont,
394 1 nrtm ,nsn ,nln, intbuf_tab%GAP_M,intbuf_tab%GAP_SH,
395 2 intbuf_tab%GAP_S,intbuf_tab%NBINFLG,intbuf_tab%NSV,intbuf_tab%NLG,tag)
397 ngrous=1+(i_stok-1)/nvsiz
400 IF(ipri>=1)
WRITE(iout,2007)
403 llt = min0( nvsiz, i_stok - nft )
405 1 x,intbuf_tab%IRECTM,intbuf_tab%NSV,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),
406 2 intbuf_tab%STFM,intbuf_tab%STFA,gapv ,igap ,intbuf_tab%VARIABLES(2) ,
407 3 intbuf_tab%GAP_S,intbuf_tab%GAP_M,1,intbuf_tab%VARIABLES(13),intbuf_tab%VARIABLES(16),
408 4 bid ,bid ,drad,ix1 ,ix2 ,
409 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
410 6 x3 ,x4 ,y1 ,y2 ,y3 ,
411 7 y4 ,z1 ,z2 ,z3 ,z4 ,
412 8 xi ,yi ,zi ,stif ,bid ,
415 CALL i20dst3(igap,intbuf_tab%GAP_SH,intbuf_tab%CAND_E(
416 2 intbuf_tab%VARIABLES(2),intbuf_tab%GAP_S,intbuf_tab%GAP_M,intbuf_tab%VARIABLES(16),
418 3 intbuf_tab%IRECTM,nln ,intbuf_tab%NLG,solidn_normal,intbuf_tab%NSV,
419 4 intbuf_tab%NBINFLG,tag,ix3 ,ix4 ,x1 ,
420 5 x2, x3, x4 ,y1 ,y2 ,
421 6 y3, y4, z1 ,z2 ,z3 ,
422 7 z4, xi, yi ,zi ,x0 ,
423 8 y0, z0, xn1,yn1,zn1,
424 9 xn2,yn2, zn2,xn3,yn3,
425 1 zn3,xn4, yn4,zn4,p1 ,
426 2 p2 ,p3 ,p4 ,lb1,lb2,
427 3 lb3,lb4,lc1 ,lc2,lc3,
429 CALL i7pen3(zero,gapv,n11 ,n21 ,n31 ,
431 2 yn2 ,zn2 ,xn3,yn3,zn3,
432 3 xn4 ,yn4 ,zn4,p1 ,p2 ,
435 fpenmax = intbuf_tab%VARIABLES(27)
436 CALL i20pwr3a(itab ,inacti,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),
438 1 intbuf_tab%STFM,xanew,intbuf_tab%NSV,iwpene ,iwrn ,
439 2 intbuf_tab%CAND_E,intbuf_tab%CAND_N,mwa ,noint ,gapv ,
440 3 nty ,itied , fpenmax ,id,titr ,
441 4 ix1,ix2,ix3,ix4,x1,
442 5 x2 ,x3 ,x4 ,y1 ,y2,
443 6 y3 ,y4 ,z1 ,z2 ,z3,
444 7 z4 ,xi ,yi ,zi ,n11,
454 ngrous=1+(i_stok-1)/nvsiz
459 IF(ipri>=1)
WRITE(iout,2007)
462 llt = min0( nvsiz, i_stok - nft )
464 1 xanew ,intbuf_tab%IRECTM,intbuf_tab%NSV,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),
465 2 intbuf_tab%STFM,intbuf_tab%STFA,gapv ,igap ,intbuf_tab%VARIABLES(2) ,
466 3 intbuf_tab%GAP_S,intbuf_tab%GAP_M,1,intbuf_tab%VARIABLES(13),intbuf_tab%VARIABLES(16),
467 4 bid ,bid ,drad,ix1 ,ix2 ,
468 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
469 6 x3 ,x4 ,y1 ,y2 ,y3 ,
470 7 y4 ,z1 ,z2 ,z3 ,z4 ,
471 8 xi ,yi ,zi ,stif ,bid ,
474 CALL i20dst3(igap,intbuf_tab%GAP_SH,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),gapv ,
475 2 intbuf_tab%VARIABLES(2),intbuf_tab%GAP_S,intbuf_tab%GAP_M,intbuf_tab%VARIABLES(16),
476 . intbuf_tab%VARIABLES(13),
477 3 intbuf_tab%IRECTM,nln ,intbuf_tab%NLG,solidn_normal,intbuf_tab%NSV,
478 4 intbuf_tab%NBINFLG,tag,ix3 ,ix4 ,x1 ,
479 5 x2, x3, x4 ,y1 ,y2 ,
480 6 y3, y4, z1 ,z2 ,z3 ,
481 7 z4, xi, yi ,zi ,x0 ,
482 8 y0, z0, xn1,yn1,zn1,
483 9 xn2,yn2, zn2,xn3,yn3,
484 1 zn3,xn4, yn4,zn4,p1 ,
485 2 p2 ,p3 ,p4 ,lb1,lb2,
486 3 lb3,lb4,lc1 ,lc2,lc3,
489 CALL i7pen3(zero,gapv,n11 ,n21 ,n31 ,
490 1 pene,xn1 ,yn1 ,zn1 ,xn2,
491 2 yn2 ,zn2 ,xn3 ,yn3 ,zn3,
492 3 xn4 ,yn4 ,zn4 ,p1 ,p2 ,
495 CALL i20pwr3(itab ,inacti,intbuf_tab%CAND_E(1+nft),intbuf_tab%CAND_N(1+nft),intbuf_tab%STFA,
496 1 intbuf_tab%STFM,xanew,intbuf_tab%NSV,iwpene ,iwrn ,
497 2 intbuf_tab%CAND_E,intbuf_tab%CAND_N,mwa ,noint ,gapv ,
498 3 nty ,itied ,intbuf_tab%PENIS,intbuf_tab%PENIM,intbuf_tab%GAP_S,
499 4 igap ,id ,titr,ix1,ix2,
500 5 ix3 ,ix4,n11 ,n21,n31,
503 intbuf_tab%I_STOK(1)=iwpene
510 ngrous=1+(i_stok_e-1)/nvsiz
512 IF(ipri>=1)
WRITE(iout,2011)
517 llt = min0( nvsiz, i_stok_e - nft )
520 1 llt ,intbuf_tab%VARIABLES(13),intbuf_tab%LCAND_S(1+nft) ,intbuf_tab%LCAND_N(1+nft),
522 2 intbuf_tab%IXLINM,nx ,ny ,nz ,
523 4 n1 ,n2 ,m1 ,m2 ,jlt_new ,
524 5 xanew ,igap ,intbuf_tab%GAP_SE ,intbuf_tab%GAP_ME,gapv,
525 6 nln ,intbuf_tab%NLG,solidn_normal)
527 CALL i20pwr3e(itab ,inacti,intbuf_tab%LCAND_S(1+nft),intbuf_tab%LCAND_N(1+nft),
528 2 intbuf_tab%STFS,intbuf_tab%STF,xanew ,intbuf_tab%NSVL,iwpenedge,
530 4 ny ,nz ,gapv ,intbuf_tab%GAP_SE,intbuf_tab%GAP_ME,
531 5 intbuf_tab%PENISE,intbuf_tab%PENIME,igap )
532 IF(iwpenedge/=0.AND.inacti==3.OR.inacti==4) iwrn = 1
534 IF(((iddlevel==0)).AND.(dectyp>=3.AND.dectyp<=6))
THEN
536 CALL i20wcontdd(intbuf_tab%NSVL,intbuf_tab%MSRL,nsne,nmne,iwcont,
542 CALL i20nlg(nln,nrtm,nsn ,nlins ,nlinm ,
543 2 intbuf_tab%NLG,intbuf_tab%IRECTM,intbuf_tab%NSV,intbuf_tab%IXLINS,
545 3 nmn ,nsne ,nmne ,intbuf_tab%MSR,intbuf_tab%NSVL,
546 4 intbuf_tab%MSRL,intbuf_tab%STFA,intbuf_tab%AVX_ANCR,xanew
547 5 intbuf_tab%PENIA,intbuf_tab%ALPHAK)
551 DEALLOCATE(solidn_normal)
554 iwpentot = iwpene + iwpenedge
559 2007
FORMAT(//
' IMPACT CANDIDATES',/,
560 +
' MAIN SECONDARY NODES '/
562 2011
FORMAT(//
' IMPACT CANDIDATES',/,
563 +
' MAIN NODES SECONDARY NODES ')