37 1 IXS, X, ITASK, NIN, BUFBRIC)
95#include "implicit_f.inc"
101#include "subvolumes.inc"
105 1 SECtype, Nbits, Npqts)
106 INTEGER :: Nbits, Npqts
107 CHARACTER*(*) :: SECtype
114 INTEGER :: IXS(NIXS,*), ITASK, NIN, BUFBRIC(*)
115 my_real,
intent(in) ::
120 INTEGER I, J, JJ, K, L,S, NE, POS, IAD,NBCUT, Icode, Idble, IB
121 INTEGER I_12BITS, PQTS(4), NPQTS, NBITS, SOM, I_bits(12)
122 INTEGER NBF, NBL, ID, N, id1, id2
126 INTEGER,
POINTER,
DIMENSION(:) :: pCODE, pTAG, pGnod
127 CHARACTER*14,
DIMENSION(:),
POINTER ::pSEC
129 CHARACTER*14 :: dbKEY1, dbKEY2
130 integer idb1(0:ncandb), idb2(0:ncandb)
131 INTEGER :: tagTETRA(S_TETRA),tagPENTA(S_PENTA),tagPOLY3(S_POLY3),
132 . taghexae(s_hexae),tagpoly4(s_poly4)
133 INTEGER :: MultICODE(S22_MAX), MultIDBLE(S22_MAX)
134 CHARACTER*14 :: MultiSECtype(S22_MAX)
135 INTEGER :: MultiSECid(S22_MAX)
136 LOGICAL :: bool1, bool2
137 INTEGER :: BasedOnUsedNodes
138 INTEGER :: UsedNodes, Gnod
139 INTEGER :: SecTypeList(0:106)
140 INTEGER :: LIST(106), LIST_FIX(8),LIST_VAR(106)
141 INTEGER :: SizeL , SizeLFIX ,SizeLVAR
142 INTEGER :: NINTP , TAB(12)
144 LOGICAL :: bFOUND, debug_outp
145 INTEGER :: CODE, brickID, bAND, IE, Iremoved
146 my_real :: point(3),cutcoor
161 nbf = 1+itask*
nb/nthread
162 nbl = (itask+1)*
nb/nthread
170 1 i , icode , idble, nbits, npqts,
171 2 idb1(i), idb2(i), nin )
200 if(itask==0.AND.debug_outp)
then
202 print *,
" |----------i22ident.F-----------|"
203 print *,
" | IDENTIFICATION INTERSECTION |"
204 print *,
" |-------------------------------|"
222 brick_list(nin,i)%Sectype(1:8) =
'--------------'
237 pcode => bcode(d:d+s-1)
238 psec => strcode(d:d+s-1)
240 IF( iand(icode,pcode(j))==pcode(j) )
THEN
241 sectypelist(k) = d+j-1
245 IF(nbits==3.AND.(npqts==1.OR.npqts==3))
GOTO 50
249 IF(nbits>=4.AND.npqts>=3)
THEN
254 pcode => bcode(d:d+s-1)
255 psec => strcode(d:d+s-1)
257 IF( iand(icode,pcode(j))==pcode(j) )
THEN
258 sectypelist(k) = d+j-1
270 pcode => bcode(d:d+s-1)
271 psec => strcode(d:d+s-1)
273 IF( iand(icode,pcode(j))==pcode(j) )
THEN
274 sectypelist(k) = d+j-1
287 pcode => bcode(d:d+s-1)
288 psec => strcode(d:d+s-1) !sectype
290 IF( iand(icode,pcode(j))==pcode(j) )
THEN
291 sectypelist(k) = d+j-1
305 psec => strcode(d:d+s-1)
307 IF( iand(icode,pcode(j))==pcode(j) )
THEN
308 sectypelist(k) = d+j-1
321 pcode => bcode(d:d+s-1)
322 psec => strcode(d:d+s-1)
324 IF( iand(icode,pcode(j))==pcode(j) )
THEN
325 sectypelist(k) = d+j-1
338 pcode => bcode(d:d+s-1)
339 psec => strcode(d:d+s-1)
341 IF( iand(icode,pcode(j))==pcode(j) )
THEN
342 sectypelist(k) = d+j-1
371 sectypelist(0) = k - 1
379 DO k=1,sectypelist(0)
388!
write (*,fmt=
'(A,I12,A,12L1,A,I12,A,12L1)') ,
"ICODE =",icode,
" ", (btest(icode,12-k),k=1,12),
398 IF(sectypelist(0)==0)cycle
408 nintp = nbits + popcnt(idble)
410 list_var(1:sizel) = list(1:sizel)
428 print *,
"**WARNING INTER22 : UNUSED INTERSECTION POINTS FOR THIS ELEMENT ",brickid
440 ELSEIF(sizel==2 .AND. ((list(1)>=45.AND.list(1)<=49) .OR. (list(1)>=51.AND.list(1)<=57
THEN
441 IF(list(2) == list(1)+1)
THEN
442 IF( icode==idble )
THEN
444 result(1:2) = list(1:2)
451 print *,
"**WARNING INTER22 : UNUSED INTERSECTION POINTS FOR THIS ELEMENT ",brickid
456 CALL int22listcombi(itask,list_fix,sizelfix,list_var,sizelvar,nintp,icode,idble,0,result,bfound)
457 if((.NOT.bfound).AND.sizel==1)
then
461 elseif((.NOT.bfound).AND.sizel>1)
then
465 result(1) = list( maxloc(list(1:sizel),1) )
479 IF(db_write .EQV. .true.)
THEN
488 point(1:3) = x(1:3,
edge_list(nin,iad)%NODE(1) ) + cutcoor * (
edge_list(nin,iad)%VECTOR(1:
504 brick_list(nin,i)%SECTYPE(j) = strcode(iabs(code))
549 print *,
" CELL ID -:",ixs(11,
brick_list(nin,i)%ID)
550 WRITE(*,fmt=
'(A20,I10,A4,I10)')
" edges add from ",idb1(i),
" to ",idb2(i)
551 WRITE(*,fmt=
'(A11,I4,A20,I2,A1,I1,A1)')
" icode=", icode,
" (nbits,npqts) = (", nbits,
",",npqts,
")"
552 WRITE(*,fmt=
'(A11,I4,A20,I2,A1,I1,A1)')
" idble=", idble
553 WRITE(*,fmt=
'(A,I1)')
" num planes=" ,
brick_list(nin,i)%NBCUT
556 if(dbkey1(1:1)==
'-')
then
557 WRITE(*,fmt=
'(A)')
" --> NONE"
559 WRITE(*,fmt=
'(A,A)')
" -->",dbkey1(1:14)
570 print *,
" BRIQUE ID -:",ixs(11,
brick_list(nin,i)%ID)
571 WRITE(*,fmt=
'(A20,I10,A4,I10)')
" edges add from ",idb1(i),
" to ",idb2(i)
572 WRITE(*,fmt=
'(A11,I4,A20,I2,A1,I1,A1)')
" icode=", icode,
" (nbits,npqts) = (", nbits,
",",npqts,
")"
573 WRITE(*,fmt=
'(A,I1)')
" num planes=" ,
brick_list(nin,i)%NBCUT
576 if(dbkey1(1:1)==
'-')
then
577 WRITE(*,fmt=
'(A)')
" --> NONE"
579 WRITE(*,fmt=
'(A,A)')
" -->",dbkey1(1:14)
614 1 IAD , Icode, Idble, Nbits, Npqts,
626#include "implicit_f.inc"
630 INTEGER,
intent(inout) ::
631 . Icode, Idble, Nbits, Npqts
632 INTEGER,
intent(in) ::
637 INTEGER I,J,Q, pqts(4), NBCUT, IADD, idb1, idb2
658 IF(nbcut>1)idble = ibset(idble,12-j)
659 icode = ibset(icode,12-j)