33 SUBROUTINE fvbric0(IBUF ,IXS ,ITYP ,NBRIC ,
34 . MONVID ,ILVOUT ,TITR ,TAGNODBR,
35 . TBRIC ,TFAC ,NB_NODE ,IGRBRIC,IBRIC,FVTYPE)
45#include "implicit_f.inc"
54 INTEGER IBUF(*),IXS(NIXS,*), TAGNODBR(NB_NODE),
55 . NBRIC, MONVID, ILVOUT,
56 . nb_node,ibric,ityp, fvtype
57 INTEGER,
DIMENSION(2, NBRIC),
INTENT(INOUT) :: TBRIC
58 INTEGER,
DIMENSION(12, NBRIC),
INTENT(INOUT) :: TFAC
59 CHARACTER(len=nchartitle) :: TITR
61 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
65 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADSKY, ADDCNEL, CNE
66 INTEGER I, J, NG, NNO, NG2, NNF, NNF2, NNOF, NNOF2,
68 . ntype, ntype2, nodeid
69 INTEGER,
TARGET :: REDIRT(4), REDIRP(6), REDIRB(8), REDIRPY(5)
70 INTEGER,
DIMENSION(:),
POINTER :: REDIR2, REDIR
72 INTEGER,
TARGET :: FAC4(3,4), FAC8(4,6), FAC6(4,5), NOD6(5)
73 INTEGER,
TARGET :: FAC5(4,5), NOD5(5), NFACE(4), NNODE(4), KFACE, KFACE2, NOD8(6), NOD3(4)
74 INTEGER :: IAD, IAD1, IAD2, NNODEF(4), N1(8), N2(8), IP1(8), IP2(8), IS, NB_COMMON_NODE
75 INTEGER,
DIMENSION(:, :),
POINTER :: FAC, FAC2
76 INTEGER,
DIMENSION(:),
POINTER :: NOD, NOD2
77 integer,
dimension(1,1),
target :: nothing
95 DATA nod8 /4,4,4,4,4,4/
102 DATA nod5 /3,3,3,3,4/
105 DATA nnodef/4, 3, 4, 4/
106 LOGICAL :: ERROR_RAISED, FACE_OK, FACE2_OK
108 error_raised = .false.
117 redir => nothing(:,1)
118 redir2 => nothing(:,1)
142 ALLOCATE(addcnel(nb_node + 1), adsky(nb_node + 1))
148 addcnel(nb_node + 1) = 0
150 IF (ilvout >=1 )
THEN
151 WRITE(istdo,
'(A,I8)')
' --> FVMBAG ID: ',monvid
152 WRITE(istdo,
'(8X,A)')
'BUILDING ELEMENT CONNECTIVITY'
158 ng = igrbric(ibric)%ENTITY(i)
159 ELSEIF (ityp == 2)
THEN
167 IF (ixs(9,ng) == ixs(6,ng).AND.ixs(8,ng) == ixs(7,ng).AND.
168 . ixs(5,ng) == ixs(4,ng).AND.ixs(3,ng) == ixs(2,ng))
THEN
172 ELSEIF (ixs(9,ng) == ixs(6,ng).AND.ixs(5,ng) == ixs(2,ng))
THEN
176 ELSEIF ( ixs(6,ng) == ixs(9,ng).AND.ixs(7,ng) == ixs(9,ng).AND.
177 . ixs(8,ng) == ixs(9,ng))
THEN
180 redir => redirpy(1:5)
181 ELSEIF( (ixs(2,ng) == ixs(6,ng).AND.ixs(5,ng) == ixs(9,ng))
182 . .OR.(ixs(2,ng) == ixs(3,ng).AND.ixs(6,ng) == ixs(7,ng))
183 . .OR.(ixs(2,ng) == ixs(6,ng).AND.ixs(3,ng) == ixs(7,ng))
184 . .OR.(ixs(3,ng) == ixs(7,ng).AND.ixs(4,ng) == ixs(8,ng))
185 . .OR.(ixs(3,ng) == ixs(4,ng).AND.ixs(7,ng) == ixs(8,ng))
186 . .OR.(ixs(4,ng) == ixs(5,ng).AND.ixs(8,ng) == ixs(9,ng))
187 . .OR.(ixs(4,ng) == ixs(8,ng).AND.ixs(5,ng) == ixs(9,ng))
188 . .OR.(ixs(6,ng) == ixs(7,ng).AND.ixs(8,ng) == ixs(9,ng))
189 . .OR.(ixs(7,ng) == ixs(8,ng).AND.ixs(6,ng) == ixs(9,ng))
190 . .OR.(ixs(2,ng) == ixs(3,ng).AND.ixs(4,ng) == ixs(5,ng))
191 . .OR.(ixs(2,ng) == ixs(5,ng).AND.ixs(3,ng) == ixs(4,ng)))
THEN
206 nodeid = ixs(1 + redir(k), ng) + 1
207 tagnodbr(nodeid - 1) = 1
208 addcnel(nodeid) = addcnel(nodeid) + 1
214 DO i = 2, nb_node + 1
215 addcnel(i) = addcnel(i) + addcnel(i - 1)
218 adsky(i) = addcnel(i)
224 ALLOCATE(cne(addcnel(nb_node + 1)))
233 nodeid = ixs(1 + redirb(k), ng)
234 cne(adsky(nodeid)) = i
235 adsky(nodeid) = adsky(nodeid) + 1
240 nodeid = ixs(1 + redirt(k), ng)
241 cne(adsky(nodeid)) = i
242 adsky(nodeid) = adsky(nodeid) + 1
247 nodeid = ixs(1 + redirp(k), ng)
248 cne(adsky(nodeid)) = i
249 adsky(nodeid) = adsky(nodeid) + 1
254 nodeid = ixs(1 + redirpy(k), ng)
255 cne(adsky(nodeid)) = i
256 adsky(nodeid) = adsky(nodeid) + 1
276 fac => fac8(1:4, 1:6)
280 fac => fac4(1:3, 1:4)
284 fac => fac6(1:4, 1:5)
287 redir => redirpy(1:5)
288 fac => fac5(1:4, 1:5)
295 n1(k) = ixs(1 + redir(k), ng)
300 iad1 = addcnel(nodeid)
301 iad2 = addcnel(nodeid+1) - 1
310 nnof2 = nnodef(ntype2)
313 redir2 => redirb(1:8)
314 fac2 => fac8(1:4, 1:6)
317 redir2 => redirt(1:4)
318 fac2 => fac4(1:3, 1:4)
321 redir2 => redirp(1:6)
322 fac2 => fac6(1:4, 1:5)
325 redir2 => redirpy(1:5)
326 fac2 => fac5(1:4, 1:5)
335 n2(k2) = ixs(1 + redir2(k2), ng2)
342 IF (n1(kk) == n2(k2))
THEN
343 nb_common_node = nb_common_node + 1
349 IF (nb_common_node >= 3)
THEN
354 DO kk = 1, nod(kface)
355 is = is + ip1(fac(kk, kface))
357 IF (is == nod(kface))
THEN
365 DO kk = 1, nod2(kface2)
366 is = is + ip2(fac2(kk, kface2))
368 IF (is == nod2(kface2))
THEN
373 error_raised = (nod(kface) == nod2(kface2)) .AND. (nb_common_node == nod(kface))
374 error_raised = .NOT. error_raised
375 IF (fvtype /= 8)
THEN
376 error_raised = .false.
378 IF (face_ok .AND. face2_ok .AND. .NOT. error_raised)
THEN
379 tfac(2 * (kface - 1) + 1, i) = 1
380 tfac(2 * (kface - 1) + 2, i) = j
381 tfac(2 * (kface2 - 1) + 1, j) = 1
382 tfac(2 * (kface2 - 1) + 2, j) = i
384 IF (error_raised)
THEN
387 . anmode=aninfo_blind,
388 . i1 = monvid, c1=titr,
389 . i2 = ixs(nixs, ng), i3 = ixs(nixs, ng2))
401 DEALLOCATE(adsky, addcnel)
408 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)