37 2 NIN ,V ,GAP_M,IGAP ,ITASK ,
38 3 STF ,GAP_M_L,COUNT_REMSLVE,DRAD ,
39 4 IEDGE ,NEDGE ,LEDGE ,MVOISIN,NSV,
40 5 NRTM ,GAPE ,GAP_E_L,IGAP0,
41 6 STFE, S_STFE ,IFQ ,IFPEN,
42 7 CAND_FX,CAND_FY,CAND_FZ,DGAPLOAD)
54#include "implicit_f.inc"
61#include "i25edge_c.inc"
65 INTEGER,
INTENT(IN) :: S_STFE
66 INTEGER IRECT(4,*),CAND_M(*), CAND_S(*), IFPEN(*),
67 . I_STOK, NIN,IGAP ,ITASK, COUNT_REMSLVE(*),
68 . IEDGE, , LEDGE(NLEDGE,*), MVOISIN(4,*), NSV(*), NRTM, ,IFQ
69 my_real ,
INTENT(IN) :: DGAPLOAD ,DRAD
71 . x(3,*),gap_m(*),v(3,*),stf(*),gap_m_l(*), gape(*), gap_e_l(*),
72 . stfe(s_stfe), cand_fx(4,*),cand_fy(4,*),cand_fz(4,*)
84 INTEGER I , L, M, E, , JE, NN1, NN2, IL, JL, I1, I2, SOL_EDGE, SH_EDGE,
87 . XI,YI,ZI,X1S,X2S,Y1S,Y2S,Z1S,Z2S,
94 . xmins,xmaxs,ymins,ymaxs,zmins,zmaxs,
95 . xminm,xmaxm,yminm,ymaxm,zminm,zmaxm,
96 . xminm_1,xmaxm_1,yminm_1,ymaxm_1,zminm_1,zmaxm_1,
97 . xminm_2,xmaxm_2,yminm_2,ymaxm_2,zminm_2,zmaxm_2,dxm,dym,dzm,
98 . v12,v22,v32,v42,vv,gapvd,s
101 . GAPV(MVSIZ),DTTI(MVSIZ)
102 INTEGER LIST(MVSIZ), LISTI(MVSIZ)
103 INTEGER IS,JS,,NLS,NLT,NSEG,NLF,II,NLS2,NLSAV
104 INTEGER N1(MVSIZ),N2(MVSIZ),M1(MVSIZ),M2(MVSIZ)
105 INTEGER , FIRST, LAST,COUNT_CAND
106 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGM
108 .
DIMENSION(:,:),
ALLOCATABLE :: boxm
113 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
117 sh_edge =iedge-10*sol_edge
122 first = 1 + i_stok*itask / nthread
123 last = i_stok*(itask+1) / nthread
124 my_size = last - first + 1
125 ALLOCATE( list_real_candidate(my_size) )
130 ALLOCATE(tagm(nrtm),boxm(6,nrtm))
138 IF(stf(l)/=zero)tagm(l)=1
143 nrtmft=1 + nrtm*itask / nthread
144 nrtmlt=nrtm*(itask+1) / nthread
170 xminm =
min(x1,x2,x3,x4)
171 xmaxm =
max(x1,x2,x3,x4)
172 dxm = em02*(xmaxm-xminm)
176 yminm =
min(y1,y2,y3,y4)
177 ymaxm =
max(y1,y2,y3,y4)
178 dym = em02*(ymaxm-yminm)
182 zminm =
min(z1,z2,z3,z4)
183 zmaxm =
max(z1,z2,z3,z4)
184 dzm = em02*(zmaxm-zminm)
203 DO sg = first,last,mseg
204 nseg =
min(mseg,last-js)
216 IF(cand_s(i)<=nedge)
THEN
219 . ledge(7,cand_s(i))/=1.AND.
220 . ledge(3,cand_s(i))/=0) cycle
230 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,i)
235 .
ledge_fie(nin)%P(e_type,cand_s(i)-nedge)/=1.AND.
236 .
ledge_fie(nin)%P(e_right_seg,cand_s(i)-nedge)/=0) cycle
274 . ledge(7,cand_s(i))/=1.AND.
283 debug_e2e(
int_checksum(ids,4,1)==d_em.AND.ledge(8,cand_s(i)) == d_es,i)
293#include "vectorize.inc"
300 IF(sh_edge /= 0 .AND. igap0 /= 0) gapv(is)=two*gapv(is)
302 . gapv(is)=
min(gapv(is),gap_m_l(ie)+gap_e_l(je))
303 gapv(is)=
max(gapv(is)+dgapload,drad)
317 l = ledge(1,cand_s(i))
324 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,l)
325 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,ledge(ledge_weight,cand_s(i)))
339 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,s)
343 n1(is)= ledge(5,cand_s(i))
344 n2(is)= ledge(6,cand_s(i))
348 zmins =
min(z1s,z2s)-gapvd
349 zmaxs =
max(z1s,z2s)+gapvd
350 zminm = boxm(5,cand_m(i))
351 zmaxm = boxm(6,cand_m(i))
359 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,zmaxs)
360 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,zmins)
361 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,zmaxm)
362 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,zminm)
365 IF (zmaxs>=zminm.AND.zmaxm>=zmins)
THEN
381 ymins =
min(y1s,y2s)-gapvd
382 ymaxs =
max(y1s,y2s)+gapvd
383 yminm = boxm(3,cand_m(i))
384 ymaxm = boxm(4,cand_m(i))
393 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,ymins)
394 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,ymaxm)
395 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,yminm)
398 IF (ymaxs>=yminm.AND.ymaxm>=ymins)
THEN
413 xmins =
min(x1s,x2s)-gapvd
414 xmaxs =
max(x1s,x2s)+gapvd
415 xminm = boxm(1,cand_m(i))
416 xmaxm = boxm(2,cand_m(i))
424 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,xmaxs)
425 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,xmins)
426 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,xmaxm)
427 debug_e2e(
int_checksum(ids,4,1)==d_em .AND. ledge(8,cand_s(i)) == d_es,xminm)
430 IF (xmaxs>=xminm.AND.xmaxm>=xmins)
THEN
431 cand_s(i) = -cand_s(i)
432 count_cand = count_cand+1
433 list_real_candidate(count_cand) = i
446 IF(sh_edge /= 0 .AND. igap0 /= 0) gapv(is)=two*gapv(is)
449 . gapv(is)=
min(gapv(is),
gape_l_fie(nin)%P(cand_s(i)-nedge)+gap_m_l
450 gapv(is)=
max(gapv(is)+dgapload,drad)
468 IF (
stifie(nin)%P(ii)/=zero)
THEN
471 z1s=
xfie(nin)%P(3,nn1)
472 z2s=
xfie(nin)%P(3,nn2)
476 zmins =
min(z1s,z2s)-gapvd
477 zmaxs =
max(z1s,z2s)+gapvd
478 zminm = boxm(5,cand_m(i))
479 zmaxm = boxm(6,cand_m(i))
487 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,zmaxs)
488 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,zmins)
489 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,zmaxm)
490 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,zminm)
493 IF (zmaxs>=zminm.AND.zmaxm>=zmins)
THEN
511 y1s=
xfie(nin)%P(2,nn1)
512 y2s=
xfie(nin)%P(2,nn2)
516 ymins =
min(y1s,y2s)-gapvd
517 ymaxs =
max(y1s,y2s)+gapvd
518 yminm = boxm(3,cand_m(i))
519 ymaxm = boxm(4,cand_m(i))
528 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,ymaxs)
529 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,ymins)
530 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,ymaxm)
531 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,yminm)
534 IF (ymaxs>=yminm.AND.ymaxm>=ymins)
THEN
546 x1s=
xfie(nin)%P(1,nn1)
547 x2s=
xfie(nin)%P(1,nn2)
549 xmins =
min(x1s,x2s)-gapvd
550 xmaxs =
max(x1s,x2s)+gapvd
551 xminm = boxm(1,cand_m(i))
552 xmaxm = boxm(2,cand_m(i))
560 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,xmaxs)
561 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,xmins)
562 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,xmaxm)
563 debug_e2e(
int_checksum(ids,4,1)==d_em .AND.
ledge_fie(nin)%P(e_global_id,cand_s(i)-nedge) == d_es,xminm)
566 IF (xmaxs>=xminm.AND.xmaxm>=xmins)
THEN
568 cand_s(i) = -cand_s(i)
569 count_cand = count_cand+1
571 list_real_candidate(count_cand) = i
580#include "vectorize.inc"
582 i = list_real_candidate(j)
583 IF(ifpen(i) == 0 )
THEN
584 cand_fx(1:4,i) = zero
585 cand_fy(1:4,i) = zero
586 cand_fz(1:4,i) = zero
595 lskyi_count=lskyi_count+count_cand*5
596 count_remslve(nin)=count_remslve(nin)+ct
597#include "lockoff.inc"
605 IF(itask==0)
DEALLOCATE(tagm,boxm)
609 DEALLOCATE( list_real_candidate )