33 SUBROUTINE fvbric0(IBUF ,IXS ,ITYP ,NBRIC ,
34 . MONVID ,ILVOUT ,TITR ,TAGNODBR,
35 . TBRIC ,TFAC ,NB_NODE ,IGRBRIC,IBRIC,FVTYPE)
42 use element_mod ,
only : nixs
46#include "implicit_f.inc"
55 INTEGER IBUF(*),IXS(NIXS,*), TAGNODBR(NB_NODE),
56 . NBRIC, MONVID, ILVOUT,
57 . nb_node,ibric,ityp, fvtype
58 INTEGER,
DIMENSION(2, NBRIC),
INTENT(INOUT) :: TBRIC
59 INTEGER,
DIMENSION(12, NBRIC),
INTENT(INOUT) :: TFAC
60 CHARACTER(len=nchartitle) :: TITR
62 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
66 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADSKY, ADDCNEL,
67 INTEGER I, J, NG, NNO, NG2, NNF, NNF2, NNOF, NNOF2,
69 . ntype, ntype2, nodeid
70 INTEGER,
TARGET :: REDIRT(4), REDIRP(6), REDIRB(8), REDIRPY(5)
71 INTEGER,
DIMENSION(:),
POINTER :: REDIR2, REDIR
73 INTEGER,
TARGET :: FAC4(3,4), FAC8(4,6), FAC6(4,5), NOD6(5)
74 INTEGER,
TARGET :: FAC5(4,5), NOD5(5), NFACE(4), NNODE(4), KFACE, KFACE2, NOD8(6), NOD3(4)
75 INTEGER :: IAD, IAD1, IAD2, NNODEF(4), N1(8), N2(8), IP1(8), IP2(8), IS, NB_COMMON_NODE
76 INTEGER,
DIMENSION(:, :),
POINTER :: FAC, FAC2
77 INTEGER,
DIMENSION(:),
POINTER :: NOD, NOD2
78 integer,
dimension(1,1),
target :: nothing
96 DATA nod8 /4,4,4,4,4,4/
103 DATA nod5 /3,3,3,3,4/
106 DATA nnodef/4, 3, 4, 4/
107 LOGICAL :: ERROR_RAISED, FACE_OK, FACE2_OK
109 error_raised = .false.
118 redir => nothing(:,1)
119 redir2 => nothing(:,1)
143 ALLOCATE(addcnel(nb_node + 1), adsky(nb_node + 1))
149 addcnel(nb_node + 1) = 0
151 IF (ilvout >=1 )
THEN
152 WRITE(istdo,
'(A,I8)')
' --> FVMBAG ID: ',monvid
153 WRITE(istdo,
'(8X,A)')
'BUILDING ELEMENT CONNECTIVITY'
159 ng = igrbric(ibric)%ENTITY(i)
160 ELSEIF (ityp == 2)
THEN
168 IF (ixs(9,ng) == ixs(6,ng).AND.ixs(8,ng) == ixs(7,ng).AND.
169 . ixs(5,ng) == ixs(4,ng).AND.ixs(3,ng) == ixs(2,ng))
THEN
173 ELSEIF (ixs(9,ng) == ixs(6,ng).AND.ixs(5,ng) == ixs(2,ng))
THEN
177 ELSEIF ( ixs(6,ng) == ixs(9,ng).AND.ixs(7,ng) == ixs(9,ng).AND.
178 . ixs(8,ng) == ixs(9,ng))
THEN
181 redir => redirpy(1:5)
182 ELSEIF( (ixs(2,ng) == ixs(6,ng).AND.ixs(5,ng) == ixs(9,ng))
183 . .OR.(ixs(2,ng) == ixs(3,ng).AND.ixs(6,ng) == ixs(7,ng))
184 . .OR.(ixs(2,ng) == ixs(6,ng).AND.ixs(3,ng) == ixs(7,ng))
185 . .OR.(ixs(3,ng) == ixs(7,ng).AND.ixs(4,ng) == ixs(8,ng))
186 . .OR.(ixs(3,ng) == ixs(4,ng).AND.ixs(7,ng) == ixs(8,ng))
187 . .OR.(ixs(4,ng) == ixs(5,ng).AND.ixs(8,ng) == ixs(9,ng))
188 . .OR.(ixs(4,ng) == ixs(8,ng).AND.ixs(5,ng) == ixs(9,ng))
189 . .OR.(ixs(6,ng) == ixs(7,ng).AND.ixs(8,ng) == ixs(9,ng))
190 . .OR.(ixs(7,ng) == ixs(8,ng).AND.ixs(6,ng) == ixs(9,ng))
191 . .OR.(ixs(2,ng) == ixs(3,ng).AND.ixs(4,ng) == ixs(5,ng))
192 . .OR.(ixs(2,ng) == ixs(5,ng).AND.ixs(3,ng) == ixs(4,ng)))
THEN
207 nodeid = ixs(1 + redir(k), ng) + 1
208 tagnodbr(nodeid - 1) = 1
209 addcnel(nodeid) = addcnel(nodeid) + 1
215 DO i = 2, nb_node + 1
216 addcnel(i) = addcnel(i) + addcnel(i - 1)
219 adsky(i) = addcnel(i)
225 ALLOCATE(cne(addcnel(nb_node + 1)))
234 nodeid = ixs(1 + redirb(k), ng)
235 cne(adsky(nodeid)) = i
236 adsky(nodeid) = adsky(nodeid) + 1
241 nodeid = ixs(1 + redirt(k), ng)
242 cne(adsky(nodeid)) = i
243 adsky(nodeid) = adsky(nodeid) + 1
248 nodeid = ixs(1 + redirp(k), ng)
249 cne(adsky(nodeid)) = i
250 adsky(nodeid) = adsky(nodeid) + 1
255 nodeid = ixs(1 + redirpy(k), ng)
256 cne(adsky(nodeid)) = i
257 adsky(nodeid) = adsky(nodeid) + 1
277 fac => fac8(1:4, 1:6)
281 fac => fac4(1:3, 1:4)
285 fac => fac6(1:4, 1:5)
288 redir => redirpy(1:5)
289 fac => fac5(1:4, 1:5)
296 n1(k) = ixs(1 + redir(k), ng)
301 iad1 = addcnel(nodeid)
302 iad2 = addcnel(nodeid+1) - 1
311 nnof2 = nnodef(ntype2)
314 redir2 => redirb(1:8)
315 fac2 => fac8(1:4, 1:6)
318 redir2 => redirt(1:4)
319 fac2 => fac4(1:3, 1:4)
322 redir2 => redirp(1:6)
323 fac2 => fac6(1:4, 1:5)
326 redir2 => redirpy(1:5)
327 fac2 => fac5(1:4, 1:5)
336 n2(k2) = ixs(1 + redir2(k2), ng2)
343 IF (n1(kk) == n2(k2))
THEN
344 nb_common_node = nb_common_node + 1
350 IF (nb_common_node >= 3)
THEN
355 DO kk = 1, nod(kface)
356 is = is + ip1(fac(kk, kface))
358 IF (is == nod(kface))
THEN
366 DO kk = 1, nod2(kface2)
367 is = is + ip2(fac2(kk, kface2))
369 IF (is == nod2(kface2))
THEN
374 error_raised = (nod(kface) == nod2(kface2)) .AND. (nb_common_node == nod(kface))
375 error_raised = .NOT. error_raised
376 IF (fvtype /= 8)
THEN
377 error_raised = .false.
379 IF (face_ok .AND. face2_ok .AND. .NOT. error_raised)
THEN
380 tfac(2 * (kface - 1) + 1, i) = 1
381 tfac(2 * (kface - 1) + 2, i) = j
382 tfac(2 * (kface2 - 1) + 1, j) = 1
383 tfac(2 * (kface2 - 1) + 2, j) = i
385 IF (error_raised)
THEN
388 . anmode=aninfo_blind,
389 . i1 = monvid, c1=titr,
390 . i2 = ixs(nixs, ng), i3 = ixs(nixs, ng2))
402 DEALLOCATE(adsky, addcnel)
409 IF (error_raised)
THEN
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)