41 SUBROUTINE fvbric1(T_MONVOLN, IBUF , ELEM , IXS ,
42 . TBRIC, NEL , NELA , NBRIC,
43 . TFAC , TAGELS, MONVID , NELI,
45 . ELTG , X , TITR, NB_NODE)
49 use element_mod ,
only : nixs
53#include "implicit_f.inc"
64 . MONVID, NNA, ILVOUT,
66 INTEGER,
DIMENSION(T_MONVOLN%NNS + T_MONVOLN%NNI),
INTENT(IN) :: IBUF
67 INTEGER,
DIMENSION(3, NEL + NELI),
INTENT(INOUT) :: ELEM
68 INTEGER,
DIMENSION(NEL + 2 * NELI),
INTENT(INOUT) :: TAGELS
69 INTEGER,
DIMENSION(2, NBRIC),
INTENT(IN) ::
70 INTEGER,
DIMENSION(12, NBRIC),
INTENT(INOUT) :: TFAC
71 INTEGER,
DIMENSION(NEL + NELI),
INTENT(IN) :: ELTG
73 CHARACTER(len=nchartitle) :: TITR
77 INTEGER I, ITAG(NB_NODE), IAD, J, NFAC, NV, NALL,
79 . ITAG2(NB_NODE), NALL2, LL, N1, N2, N3, N4,
80 . INFO, NFAC2, NN1, NN2, NN3, NN4,
81 . ierror, isplit, ifound, ntype, ntype2, nelt
83 . nsx, nsy, nsz, nex, ney, nez, ss, nsx2, nsy2, nsz2
85 INTEGER,
TARGET :: FAC4(3,4), FAC8(4,6), FAC6(4,5), NOD6(5)
86 INTEGER,
TARGET :: FAC5(4,5), NOD5(5), NFACE(4), NOD8(6), NOD3(4)
102 DATA nod6 /3,3,4,4,4/
103 DATA nod8 /4,4,4,4,4,4/
110 DATA nod5 /3,3,3,3,4/
112 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADSKY, ADDCNET,
113 INTEGER :: IAD1, IAD2, NODEID, TRIID
114 INTEGER :: NID(4), NID2(3)
115 INTEGER,
DIMENSION(:, :),
POINTER :: FAC
116 INTEGER,
DIMENSION(:),
POINTER :: NOD
123 ALLOCATE(addcnet(nb_node + 1), adsky(nb_node + 1))
129 addcnet(nb_node + 1) = 0
135 addcnet(jj + 1) = addcnet(jj + 1) + 1
140 DO i = 2, nb_node + 1
141 addcnet(i) = addcnet(i) + addcnet(i - 1)
144 adsky(i) = addcnet(i)
149 ALLOCATE(cnt(addcnet(nb_node + 1)))
154 adsky(jj) = adsky(jj) + 1
169 fac => fac8(1:4, 1:6)
172 fac => fac4(1:3, 1:4)
175 fac => fac6(1:4, 1:5)
178 fac => fac5(1:4, 1:5)
181 fac => fac5(1:4, 1:5)
192 nall = nall * itag(ixs(1+kk,ii))
193 nid(k) = ixs(1+kk,ii)
196 IF (tfac(2*(j-1)+1,i)==0)
THEN
201 itag2(ixs(1+kk,ii))=1
203 CALL fvnormal(x, nid(1), nid(2), nid(3), nid(4), nsx, nsy, nsz)
210 iad1 = addcnet(nodeid)
211 iad2 = addcnet(nodeid + 1) - 1
216 nid2(kk) = ibuf(elem(kk, triid))
217 nall2 = nall2 * itag2(nid2(kk))
222 CALL fvnormal(x,nid2(1),nid2(2),nid2(3),0,nex,ney,nez)
223 ss=nsx*nex+nsy*ney+nsz*nez
227 . anmode=aninfo_blind_1,
239 IF(ilvout >= 2)
WRITE(iout,
'(A,I10)')
240 .
'WARNING : CANNOT FIND AIRBAG TRIANGLE FOR BRICK',
246 itag2(ixs(1+kk,ii))=0
253 ELSEIF (ntype==3)
THEN
259 ELSEIF (ntype==4)
THEN
265 ELSEIF (ntype==1)
THEN
270 ELSEIF (tfac(2*(j-1)+1,i)==-2)
THEN
274 itag2(ixs(1+kk,ii))=1
281 nall2=nall2*itag2(ll)
284 IF (tagels(2*k-nel-1) == 0)
THEN
294 itag2(ixs(1+kk,ii))=0
301 IF(ierror==1.AND.isplit==0)
THEN
304 IF(tagels(k) /= 0) cycle
305 IF(eltg(k+1) /= eltg(k)) cycle
314 nfac=nface(tbric(2,i))
316 IF (tfac(2*(j-1)+1,i)==2) tfac(2*(j-1)+1,i)=0
323 ELSEIF(ierror==1.AND.isplit==1)
THEN
326 . anmode=aninfo_blind_1,
334 WRITE(iout,
'(A)')
'SOLID ELEMENT'
335 WRITE(iout,
'(A,A)')
' LOC GLOB TYPE 6*(FLAG FACE,',
336 .
'NEIGHBOUR SOLID ELEMENT)'
338 WRITE(iout,
'(2I8,I5,6(I5,I8))')i,tbric(1,i),tbric(2,i),
339 . (tfac(2*(j-1)+1,i),tfac(2*(j-1)+2,i),j=1,6)
356 IF (tfac(2*(j-1)+1,i)/=1) cycle
365 n1=ixs(1+fac4(1,j),ii)
366 n2=ixs(1+fac4(2,j),ii)
367 n3=ixs(1+fac4(3,j),ii)
369 CALL fvnormal(x,n1,n2,n3,n4,nsx,nsy,nsz)
370 ELSEIF (ntype==3)
THEN
376 n1=ixs(1+fac6(1,j),ii)
377 n2=ixs(1+fac6(2,j),ii)
378 n3=ixs(1+fac6(3,j),ii)
380 n4=ixs(1+fac6(4,j),ii)
384 CALL fvnormal(x,n1,n2,n3,n4,nsx,nsy,nsz)
385 ELSEIF (ntype==4)
THEN
391 n1=ixs(1+fac5(1,j),ii)
392 n2=ixs(1+fac5(2,j),ii)
393 n3=ixs(1+fac5(3,j),ii)
395 n4=ixs(1+fac5(4,j),ii)
399 CALL fvnormal(x,n1,n2,n3,n4,nsx,nsy,nsz)
400 ELSEIF (ntype==1)
THEN
406 n1=ixs(1+fac8(1,j),ii)
407 n2=ixs(1+fac8(2,j),ii)
408 n3=ixs(1+fac8(3,j),ii)
409 n4=ixs(1+fac8(4,j),ii)
410 CALL fvnormal(x,n1,n2,n3,n4,nsx,nsy,nsz)
420 nall=nall*itag(ixs(1+ll,tbric(1,nv)))
422 ELSEIF (ntype2==3)
THEN
426 nall=nall*itag(ixs(1+ll,tbric(1,nv)))
428 ELSEIF (ntype2==4)
THEN
432 nall=nall*itag(ixs(1+ll,tbric(1,nv)))
434 ELSEIF (ntype2==1)
THEN
438 nall=nall*itag(ixs(1+ll,tbric(1,nv)))
444 nn1=ixs(1+fac4(1,k),tbric(1,nv))
445 nn2=ixs(1+fac4(2,k),tbric(1,nv))
446 nn3=ixs(1+fac4(3,k),tbric(1,nv))
448 CALL fvnormal(x,nn1,nn2,nn3,nn4,nsx2,nsy2,nsz2)
449 ELSEIF (ntype2==3)
THEN
450 nn1=ixs(1+fac6(1,k),tbric(1,nv))
451 nn2=ixs(1+fac6(2,k),tbric(1,nv))
452 nn3=ixs(1+fac6(3,k),tbric(1,nv))
454 nn4=ixs(1+fac6(4,k),tbric(1,nv))
458 CALL fvnormal(x,nn1,nn2,nn3,nn4,nsx2,nsy2,nsz2)
459 ELSEIF (ntype2==4)
THEN
460 nn1=ixs(1+fac5(1,k),tbric(1,nv))
461 nn2=ixs(1+fac5(2,k),tbric(1,nv))
462 nn3=ixs(1+fac5(3,k),tbric(1,nv))
464 nn4=ixs(1+fac5(4,k),tbric(1,nv))
468 CALL fvnormal(x,nn1,nn2,nn3,nn4,nsx2,nsy2,nsz2)
469 ELSEIF (ntype2==1)
THEN
470 nn1=ixs(1+fac8(1,k),tbric(1,nv))
471 nn2=ixs(1+fac8(2,k),tbric(1,nv))
472 nn3=ixs(1+fac8(3,k),tbric(1,nv))
473 nn4=ixs(1+fac8(4,k),tbric(1,nv))
474 CALL fvnormal(x,nn1,nn2,nn3,nn4,nsx2,nsy2,nsz2)
477 ss=nsx*nsx2+nsy*nsy2+nsz*nsz2
481 . anmode=aninfo_blind_1,
495 ELSEIF (ntype==3)
THEN
500 ELSEIF (ntype==4)
THEN
505 ELSEIF (ntype==1)
THEN
518 IF (tagels(i)==0) nela=nela+1
522 WRITE(iout,
'(/5X,A,I10/)')
'NUMBER OF AIRBAG TRIANGLES NOT CONNECTED TO A SOLID ELEMENT . .=',nela
538 ELSEIF (ntype==3)
THEN
545 ELSEIF (ntype==4)
THEN
551 ELSEIF (ntype==1)
THEN
564 t_monvoln%NTGA = nela
565 ALLOCATE(t_monvoln%IBUFA(nna))
567 ALLOCATE(t_monvoln%ELEMA(3, nela))
568 t_monvoln%ELEMA(:, :) = 0
569 ALLOCATE(t_monvoln%TAGELA(nela))
570 t_monvoln%TAGELA(:) = 0
572 ALLOCATE(t_monvoln%BRNA(8, t_monvoln%NBRIC))
573 t_monvoln%BRNA(:, :) = 0
575 ALLOCATE(t_monvoln%NCONA(16, nna))
576 t_monvoln%NCONA(:, :) = 0
583 t_monvoln%IBUFA(nna)=i
587 IF (
ALLOCATED(addcnet))
DEALLOCATE(addcnet)
588 IF (
ALLOCATED(adsky))
DEALLOCATE(adsky)
589 IF (
ALLOCATED(cnt))
DEALLOCATE(cnt)
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)