32 SUBROUTINE ssurftag(IXS ,IPARTS ,NSEG0 ,IGRSURF ,TAGBUF,
33 . NSEG ,KNOD2ELS,NOD2ELS ,IEXT ,FLAG ,
34 . IXS10 ,IXS16 ,IXS20 ,IFRE ,KEY ,
35 . KNOD2ELC,NOD2ELC ,KNOD2ELTG,NOD2ELTG,
36 . IXC ,IXTG ,IPARTC ,IPARTTG ,NINDX,
37 . NINDX_SOL, NINDX_SOL10, INDX, INDX_SOL, INDX_SOL10,
48#include "implicit_f.inc"
53 INTEGER IXS(NIXS,*),(*),TAGBUF(*),
54 . KNOD2ELS(*),NOD2ELS(*),
55 . IXS10(6,*),IXS16(8,*),IXS20(12,*),
56 . KNOD2ELC(*),NOD2ELC(*),KNOD2ELTG(*),NOD2ELTG(*),
57 . IXC(NIXC,*),IXTG(NIXTG,*),IPARTC(*),IPARTTG(*)
58 INTEGER IEXT,NSEG,FLAG,IFRE,NSEG0
59 CHARACTER(LEN=NCHARKEY) :: KEY
60 INTEGER :: NINDX, NINDX_SOL, NINDX_SOL10
61 INTEGER,
DIMENSION(*) :: INDX,INDX_SOL, INDX_SOL10
62 TYPE(PART_TYPE),
DIMENSION(*) :: SURF_ELM
64 TYPE (SURF_) :: IGRSURF
65! *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
92 INTEGER N,J,K,JS,KS,II,JJ,K1,K2,LL,FACE(4),FC10(3),NN,KK,I1,
93 . NI(4),NS(4),MI(4),MS(4),NMIN,MMIN,NF,MF,IPERM,N1,N2,I
94 INTEGER FACES(4,6),PWR(7),
95 . FACES10(3,6),NNS,ISHEL,ISEG
96 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NODTAG,FASTAG
101 INTEGER :: NUM_PART,NUM_ELM
102 INTEGER :: ID_PART,JS_PART, JS_ELM
115 DATA pwr/1,2,4,8,16,32,64/
117 ALLOCATE(nodtag(numnod),fastag(numels))
124 DO js=1,numels8+numels10
125 IF(key(1:6)==
'GRBRIC')
THEN
126 IF (tagbuf(js)==0) cycle
128 IF (tagbuf(iparts(js))==0) cycle
132 ns(ii)=ixs(faces(ii,jj)+1,js)
138 IF(ns(k2)==ns(k1))ns(k2)=0
154 nmin=
min(nmin,ns(ii))
157 IF(nmin==ns(iperm).AND.
158 . ns(mod(iperm,nf)+1)/=ns(iperm))
THEN
160 ni(ii)=ns(mod(ii+iperm-2,nf)+1)
167 DO k=knod2els(ni(1))+1,knod2els(ni(1)+1)
169 IF(ks==js .OR. ks > numels8+numels10)cycle
170 IF (key(1:6)==
'GRBRIC'.AND.tagbuf(ks)==0.AND.ifre==0)cycle
171 IF (key
'GRBRIC'.AND.tagbuf(iparts(ks))==0)cycle
176 nodtag(ixs(ii+1,ks))=1
185 ms(ii)=ixs(faces(ii,kk)+1,ks)
191 IF(ms(k2)==ms(k1))ms(k2)=0
207 mmin=
min(mmin,ms(ii))
210 IF(mmin==ms(iperm).AND.
211 . ms(mod(iperm,mf)+1)/=ms(iperm))
THEN
213 mi(ii)=ms(mod(ii+iperm-2,mf)+1)
218 IF(mi(1)==ni(1).AND.mi(nf)==ni(2))
THEN
231 IF(key(1:6)/='grbric
') THEN
239 DO JS_PART=1,NUM_PART
241 ID_PART = INDX(JS_PART)
242 NUM_ELM = SURF_ELM(ID_PART)%NSOL
246 JS = SURF_ELM(ID_PART)%SOL_PART( JS_ELM )
248 JS = INDX_SOL( JS_ELM )
253! IF ((KEY(1:6)/='grbric.AND..OR.
'IABS(TAGBUF(IPARTS(JS))) == 1)
254! . (KEY(1:6)=='grbric.AND.
'IABS(TAGBUF(JS)) == 1) ) THEN
257 IF(MOD(LL,PWR(JJ+1))/PWR(JJ)/=0)CYCLE
282.and.
IF(FLAG == 0 NN == 3) THEN
285 DO K=KNOD2ELTG(FACE(1))+1,KNOD2ELTG(FACE(1)+1)
290 IF(FACE(I) == IXTG(J+1,KS)) ISHEL = ISHEL + 1
298 ELSEIF (IABS(TAGBUF(IPARTTG(KS))) /= 1) THEN
301.and.
ELSEIF(FLAG == 0 NN == 4) THEN
304 DO K=KNOD2ELC(FACE(1))+1,KNOD2ELC(FACE(1)+1)
309 IF(FACE(I) == IXC(J+1,KS)) ISHEL = ISHEL + 1
317 ELSEIF (IABS(TAGBUF(IPARTC(KS))) /= 1)THEN
323 DO K=KNOD2ELTG(FACE(1))+1,KNOD2ELTG(FACE(1)+1)
328 IF(FACE(I) == IXTG(J+1,KS)) ISHEL = ISHEL + 1
337 CALL SSURF10(FACE(1),FACE(2),FACE(3),FACE(3),JS,
338 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
339 ELSEIF (IABS(TAGBUF(IPARTTG(KS))) /= 1)THEN
342 CALL SSURF10(FACE(1),FACE(2),FACE(3),FACE(3),JS,
343 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
348 DO K=KNOD2ELC(FACE(1))+1,KNOD2ELC(FACE(1)+1)
353 IF(FACE(I) == IXC(J+1,KS)) ISHEL = ISHEL + 1
362 CALL SSURF10(FACE(1),FACE(2),FACE(3),FACE(4),JS,
363 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
364 ELSEIF (IABS(TAGBUF(IPARTC(KS))) /= 1 ) THEN
367 CALL SSURF10(FACE(1),FACE(2),FACE(3),FACE(4),JS,
368 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
374 ENDDO ! end of JS_ELM=1,NUM_ELM
375 ENDDO ! end JS_PART=1,NUM_PART
377 IF(KEY(1:6)/='grbric
') THEN
383 NUM_ELM = NINDX_SOL10
386 DO JS_PART=1,NUM_PART
388 ID_PART = INDX(JS_PART)
389 NUM_ELM = SURF_ELM(ID_PART)%NSOL10
394 JS = SURF_ELM(ID_PART)%SOL10_PART( JS_ELM )
396 JS = INDX_SOL10( JS_ELM )
402! IF ((KEY(1:6)/='grbric.AND..OR.
'IABS(TAGBUF(IPARTS(JS))) == 1)
403! . (KEY(1:6)=='grbric.AND.
'IABS(TAGBUF(JS)) == 1) ) THEN
406 IF(MOD(LL,PWR(JJ+1))/PWR(JJ) /= 0)CYCLE
410 FACE(K1)=IXS(FACES(K1,JJ)+1,JS)
414 IF(FACE(K2) == FACE(K1)) FACE(K2)=0
419 IF(FACE(K1) /= 0)THEN
427 FC10(1)=IXS10(FACES10(1,JJ),J)
428 FC10(2)=IXS10(FACES10(2,JJ),J)
429 FC10(3)=IXS10(FACES10(3,JJ),J)
430 IF(FC10(1) /= 0)NNS=NNS+1
431 IF(FC10(2) /= 0)NNS=NNS+1
432 IF(FC10(3) /= 0)NNS=NNS+1
435.and.
IF (FLAG == 1 NNS == 4) THEN
438 CALL SSURF10(FACE(1),FC10(1),FC10(3),FC10(3),JS,
439 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
441 CALL SSURF10(FACE(2),FC10(2),FC10(1),FC10(1),JS,
442 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
444 CALL SSURF10(FACE(3),FC10(3),FC10(2),FC10(2),JS,
445 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
447 CALL SSURF10(FC10(1),FC10(2),FC10(3),FC10(3),JS,
448 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
449.and.
ELSEIF (FLAG == 1 NNS == 3) THEN
453 CALL SSURF10(FACE(1),FACE(2),FC10(2),FC10(3),JS,
454 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
456 CALL SSURF10(FACE(3),FC10(3),FC10(2),FC10(2),JS,
457 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
458 ELSEIF(FC10(2) == 0)THEN
460 CALL SSURF10(FACE(2),FACE(3),FC10(3),FC10(1),JS,
461 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
463 CALL SSURF10(FACE(1),FC10(1),FC10(3),FC10(3),JS,
464 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
465 ELSEIF(FC10(3) == 0)THEN
467 CALL SSURF10(FACE(3),FACE(1),FC10(1),FC10(2),JS,
468 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
470 CALL SSURF10(FACE(2),FC10(2),FC10(1),FC10(1),JS,
471 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
473.and.
ELSEIF (FLAG == 1 NNS == 2) THEN
477 CALL SSURF10(FACE(3),FACE(1),FC10(1),FC10(1),JS,
478 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
480 CALL SSURF10(FACE(2),FACE(3),FC10(1),FC10(1),JS,
481 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
482 ELSEIF(FC10(2) /= 0)THEN
484 CALL SSURF10(FACE(1),FACE(2),FC10(2),FC10(2),JS,
485 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
487 CALL SSURF10(FACE(3),FACE(1),FC10(2),FC10(2),JS,
488 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
489 ELSEIF(FC10(3) /= 0)THEN
491 CALL SSURF10(FACE(2),FACE(3),FC10(3),FC10(3),JS,
492 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
494 CALL SSURF10(FACE(1),FACE(2),FC10(3),FC10(3),JS,
495 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
497.and.
ELSEIF (FLAG == 1 NNS == 1) THEN
500 CALL SSURF10(FACE(1),FACE(2),FACE(3),FACE(3),JS,
501 . NSEG0 ,ISEG ,IGRSURF%NODES,IGRSURF%ELTYP,IGRSURF%ELEM)
507 ENDDO ! end of JS_ELM=1,NUM_ELM
508 ENDDO ! end JS_PART=1,NUM_PART
510 DEALLOCATE(NODTAG,FASTAG)
subroutine ssurftag(ixs, iparts, nseg0, igrsurf, tagbuf, nseg, knod2els, nod2els, iext, flag, ixs10, ixs16, ixs20, ifre, key, knod2elc, nod2elc, knod2eltg, nod2eltg, ixc, ixtg, ipartc, iparttg, nindx, nindx_sol, nindx_sol10, indx, indx_sol, indx_sol10, surf_elm)