41 SUBROUTINE fvbric1(T_MONVOLN, IBUF , ELEM , IXS ,
42 . TBRIC, NEL , NELA , NBRIC,
43 . TFAC , TAGELS, MONVID , NELI,
45 . ELTG , X , TITR, NB_NODE)
52#include "implicit_f.inc"
63 . MONVID, NNA, ILVOUT,
65 INTEGER,
DIMENSION(T_MONVOLN%NNS + T_MONVOLN%NNI),
INTENT(IN) :: IBUF
66 INTEGER,
DIMENSION(3, NEL + NELI),
INTENT(INOUT) :: ELEM
67 INTEGER,
DIMENSION(NEL + 2 * NELI),
INTENT(INOUT) :: TAGELS
68 INTEGER,
DIMENSION(2, NBRIC),
INTENT(IN) :: TBRIC
69 INTEGER,
DIMENSION(12, NBRIC),
INTENT(INOUT) :: TFAC
70 INTEGER,
DIMENSION(NEL + NELI),
INTENT(IN) :: ELTG
72 CHARACTER(len=nchartitle) :: TITR
76 INTEGER I, ITAG(NB_NODE), IAD, J, NFAC, NV, NALL,
78 . ITAG2(NB_NODE), NALL2, LL, N1, N2, N3, N4,
79 . INFO, NFAC2, NN1, NN2, NN3, NN4,
80 . ierror, isplit, ifound, ntype, ntype2, nelt
82 . nsx, nsy, nsz, nex, ney, nez, ss, nsx2, nsy2, nsz2
84 INTEGER,
TARGET :: FAC4(3,4), FAC8(4,6), FAC6(4,5), NOD6(5)
85 INTEGER,
TARGET :: FAC5(4,5), NOD5(5), NFACE(4), NOD8(6), NOD3(4)
101 DATA nod6 /3,3,4,4,4/
102 DATA nod8 /4,4,4,4,4,4/
109 DATA nod5 /3,3,3,3,4/
111 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADSKY, ADDCNET, CNT
112 INTEGER :: IAD1, IAD2, NODEID, TRIID
113 INTEGER :: NID(4), NID2(3)
114 INTEGER,
DIMENSION(:, :),
POINTER :: FAC
115 INTEGER,
DIMENSION(:),
POINTER :: NOD
122 ALLOCATE(addcnet(nb_node + 1), adsky(nb_node + 1))
128 addcnet(nb_node + 1) = 0
134 addcnet(jj + 1) = addcnet(jj + 1) + 1
139 DO i = 2, nb_node + 1
140 addcnet(i) = addcnet(i) + addcnet(i - 1)
143 adsky(i) = addcnet(i)
148 ALLOCATE(cnt(addcnet(nb_node + 1)))
153 adsky(jj) = adsky(jj) + 1
168 fac => fac8(1:4, 1:6)
171 fac => fac4(1:3, 1:4)
174 fac => fac6(1:4, 1:5)
180 fac => fac5(1:4, 1:5)
191 nall = nall * itag(ixs(1+kk,ii))
192 nid(k) = ixs(1+kk,ii)
195 IF (tfac(2*(j-1)+1,i)==0)
THEN
200 itag2(ixs(1+kk,ii))=1
202 CALL fvnormal(x, nid(1), nid(2), nid(3), nid(4), nsx, nsy, nsz)
209 iad1 = addcnet(nodeid)
210 iad2 = addcnet(nodeid + 1) - 1
215 nid2(kk) = ibuf(elem(kk, triid))
216 nall2 = nall2 * itag2(nid2(kk))
221 CALL fvnormal(x,nid2(1),nid2(2),nid2(3),0,nex,ney,nez)
222 ss=nsx*nex+nsy*ney+nsz*nez
226 . anmode=aninfo_blind_1,
238 IF(ilvout >= 2)
WRITE(iout,
'(A,I10)')
239 .
'WARNING : CANNOT FIND AIRBAG TRIANGLE FOR BRICK',
245 itag2(ixs(1+kk,ii))=0
252 ELSEIF (ntype==3)
THEN
258 ELSEIF (ntype==4)
THEN
264 ELSEIF (ntype==1)
THEN
269 ELSEIF (tfac(2*(j-1)+1,i)==-2)
THEN
273 itag2(ixs(1+kk,ii))=1
280 nall2=nall2*itag2(ll)
283 IF (tagels(2*k-nel-1) == 0)
THEN
300 IF(ierror==1.AND.isplit==0)
THEN
303 IF(tagels(k) /= 0) cycle
304 IF(eltg(k+1) /= eltg(k)) cycle
313 nfac=nface(tbric(2,i))
315 IF (tfac(2*(j-1)+1,i)==2) tfac(2*(j-1)+1,i)=0
322 ELSEIF(ierror==1.AND.isplit==1)
THEN
325 . anmode=aninfo_blind_1,
333 WRITE(iout,
'(A)')
'SOLID ELEMENT'
334 WRITE(iout,
'(A,A)')
' LOC GLOB TYPE 6*(FLAG FACE,',
335 .
'NEIGHBOUR SOLID ELEMENT)'
337 WRITE(iout,
'(2I8,I5,6(I5,I8))')i,tbric(1,i),tbric(2,i),
338 . (tfac(2*(j-1)+1,i),tfac(2*(j-1)+2,i),j=1,6)
355 IF (tfac(2*(j-1)+1,i)/=1) cycle
364 n1=ixs(1+fac4(1,j),ii)
365 n2=ixs(1+fac4(2,j),ii)
366 n3=ixs(1+fac4(3,j),ii)
368 CALL fvnormal(x,n1,n2,n3,n4,nsx,nsy,nsz)
369 ELSEIF (ntype==3)
THEN
375 n1=ixs(1+fac6(1,j),ii)
376 n2=ixs(1+fac6(2,j),ii)
377 n3=ixs(1+fac6(3,j),ii)
383 CALL fvnormal(x,n1,n2,n3,n4,nsx,nsy,nsz)
384 ELSEIF (ntype==4)
THEN
390 n1=ixs(1+fac5(1,j),ii)
391 n2=ixs(1+fac5(2,j),ii)
392 n3=ixs(1+fac5(3,j),ii)
394 n4=ixs(1+fac5(4,j),ii)
398 CALL fvnormal(x,n1,n2,n3,n4,nsx,nsy,nsz)
399 ELSEIF (ntype==1)
THEN
405 n1=ixs(1+fac8(1,j),ii)
406 n2=ixs(1+fac8(2,j),ii)
407 n3=ixs(1+fac8(3,j),ii)
408 n4=ixs(1+fac8(4,j),ii)
409 CALL fvnormal(x,n1,n2,n3,n4,nsx,nsy,nsz)
419 nall=nall*itag(ixs(1+ll,tbric(1,nv)))
421 ELSEIF (ntype2==3)
THEN
425 nall=nall*itag(ixs(1+ll,tbric(1,nv)))
427 ELSEIF (ntype2==4)
THEN
431 nall=nall*itag(ixs(1+ll,tbric(1,nv)))
433 ELSEIF (ntype2==1)
THEN
437 nall=nall*itag(ixs(1+ll,tbric(1,nv)))
443 nn1=ixs(1+fac4(1,k),tbric(1,nv))
444 nn2=ixs(1+fac4(2,k),tbric(1,nv))
445 nn3=ixs(1+fac4(3,k),tbric(1,nv))
447 CALL fvnormal(x,nn1,nn2,nn3,nn4,nsx2,nsy2,nsz2)
448 ELSEIF (ntype2==3)
THEN
449 nn1=ixs(1+fac6(1,k),tbric(1,nv))
450 nn2=ixs(1+fac6(2,k),tbric(1,nv))
451 nn3=ixs(1+fac6(3,k),tbric(1,nv))
453 nn4=ixs(1+fac6(4,k),tbric(1,nv))
457 CALL fvnormal(x,nn1,nn2,nn3,nn4,nsx2,nsy2,nsz2)
458 ELSEIF (ntype2==4)
THEN
459 nn1=ixs(1+fac5(1,k),tbric(1,nv))
460 nn2=ixs(1+fac5(2,k),tbric(1,nv))
461 nn3=ixs(1+fac5(3,k),tbric(1,nv))
463 nn4=ixs(1+fac5(4,k),tbric(1,nv))
467 CALL fvnormal(x,nn1,nn2,nn3,nn4,nsx2,nsy2,nsz2)
468 ELSEIF (ntype2==1)
THEN
469 nn1=ixs(1+fac8(1,k),tbric(1,nv))
470 nn2=ixs(1+fac8(2,k),tbric(1,nv))
471 nn3=ixs(1+fac8(3,k),tbric(1,nv))
472 nn4=ixs(1+fac8(4,k),tbric(1,nv))
473 CALL fvnormal(x,nn1,nn2,nn3,nn4,nsx2,nsy2,nsz2)
476 ss=nsx*nsx2+nsy*nsy2+nsz*nsz2
480 . anmode=aninfo_blind_1,
494 ELSEIF (ntype==3)
THEN
499 ELSEIF (ntype==4)
THEN
504 ELSEIF (ntype==1)
THEN
517 IF (tagels(i)==0) nela=nela+1
521 WRITE(iout,
'(/5X,A,I10/)')
'NUMBER OF AIRBAG TRIANGLES NOT CONNECTED TO A SOLID ELEMENT . .=',nela
537 ELSEIF (ntype==3)
THEN
544 ELSEIF (ntype==4)
THEN
550 ELSEIF (ntype==1)
THEN
563 t_monvoln%NTGA = nela
564 ALLOCATE(t_monvoln%IBUFA(nna))
566 ALLOCATE(t_monvoln%ELEMA(3, nela))
567 t_monvoln%ELEMA(:, :) = 0
568 ALLOCATE(t_monvoln%TAGELA(nela))
569 t_monvoln%TAGELA(:) = 0
571 ALLOCATE(t_monvoln%BRNA(8, t_monvoln%NBRIC))
572 t_monvoln%BRNA(:, :) = 0
574 ALLOCATE(t_monvoln%NCONA(16, nna))
575 t_monvoln%NCONA(:, :) = 0
582 t_monvoln%IBUFA(nna)=i
586 IF (
ALLOCATED(addcnet))
DEALLOCATE(addcnet)
587 IF (
ALLOCATED(adsky))
DEALLOCATE(adsky)
588 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)