37 SUBROUTINE fvelinte(IBUF, ELEM, IXC, IXTG, PM, IPM, ILVOUT, IFV,
38 . NNT, NTG, POROSITY, NSEG,SURF_ELTYP,
39 . NTGI,ELTG,NB_NODE,SURF_ELEM)
44 use element_mod ,
only : nixc,nixtg
48#include "implicit_f.inc"
58 INTEGER IXC(NIXC,*), IXTG(NIXTG,*), IPM(NPROPMI,*), ILVOUT, IFV
59 INTEGER IBUF(*), ELEM(3,*), NNT, NTG, SURF_ELTYP(*),SURF_ELEM(*)
60 INTEGER NSEG,NTGI, ELTG(*), NB_NODE
61 my_real pm(npropm,*), porosity(*)
65 INTEGER I, II, J, JJ, ICMAX, NC, I1, I2, I3, IFOUND
66 INTEGER K, KK, ITY, N1, N2, N3, IEL, ILAW, MAT, LEAK
67 INTEGER J1, J2, J3, NNT_TMP
69 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: CNS
70 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAG,ITAGC,ITAGTG
73 ALLOCATE(itag(nb_node))
74 ALLOCATE(itagc(numelc))
75 ALLOCATE(itagtg(numeltg))
89 itag(n1) = itag(n1) + 1
90 itag(n2) = itag(n2) + 1
91 itag(n3) = itag(n3) + 1
96 icmax =
max(icmax, itag(i))
109 ALLOCATE(cns(nb_node,1+icmax*2))
115 n1 = ibuf(elem(1, i))
121 n2 = ibuf(elem(2, i))
127 n3 = ibuf(elem(3, i))
135 iel=
fvdata(ifv)%IFVTRI(4,i)
139 i1=
fvdata(ifv)%IFVTRI(1,i)
140 i2=
fvdata(ifv)%IFVTRI(2,i)
141 i3=
fvdata(ifv)%IFVTRI(3,i)
142 n1=
fvdata(ifv)%IFVNOD(1,i1)
143 n2=
fvdata(ifv)%IFVNOD(1,i2)
144 n3=
fvdata(ifv)%IFVNOD(1,i3)
145 IF(n1==2.AND.n2==2.AND.n3==2)
THEN
146 i1=
fvdata(ifv)%IFVNOD(2,i1)
147 i2=
fvdata(ifv)%IFVNOD(2,i2)
148 i3=
fvdata(ifv)%IFVNOD(2,i3)
154 n1 = ibuf(elem(1, cns(i1, 1 + j)))
155 n2 = ibuf(elem(2, cns(i1, 1 + j)))
156 n3 = ibuf(elem(3, cns(i1, 1 + j)))
157 IF (itag(n1) * itag(n2) * itag(n3) /= 0)
THEN
158 fvdata(ifv)%IFVTRI(4,i) = -cns(i1, 1 + j)
189 IF(ity==3) itagc(ii)=1
190 IF(ity==7) itagtg(ii)=1
195 icmax=
max(icmax,itag(i))
198 ALLOCATE(cns(nb_node,1+icmax*2))
203 IF(itagc(i)==0) cycle
210 cns(jj,1+2*(nc-1)+2)=i
214 IF(itagtg(i)==0) cycle
220 cns(jj,1+2*(nc-1)+1)=2
221 cns(jj,1+2*(nc-1)+2)=i
231 iel=
fvdata(ifv)%IFVTRI(4,i)
235 i1=
fvdata(ifv)%IFVTRI(1,i)
236 i2=
fvdata(ifv)%IFVTRI(2,i)
237 i3=
fvdata(ifv)%IFVTRI(3,i)
238 n1=
fvdata(ifv)%IFVNOD(1,i1)
239 n2=
fvdata(ifv)%IFVNOD(1,i2)
240 n3=
fvdata(ifv)%IFVNOD(1,i3)
241 IF(n1==2.AND.n2==2.AND.n3==2)
THEN
242 i1=
fvdata(ifv)%IFVNOD(2,i1)
243 i2=
fvdata(ifv)%IFVNOD(2,i2)
244 i3=
fvdata(ifv)%IFVNOD(2,i3)
246 ity=cns(i1,1+2*(j-1)+1)
247 jj=cns(i1,1+2*(j-1)+2)
253 IF (itag(i1)==1.AND.itag(i2)==1.AND.itag(i3)==1)
THEN
265 IF (itag(i1)==1.AND.itag(i2)==1.AND.itag(i3)==1)
THEN
273 IF (ifound /= 0)
THEN
278 fvdata(ifv)%IFVTRI(4,i)=-ifound
279 nnt_tmp = nnt_tmp + 1
293 ifound=
fvdata(ifv)%IFVTRI(4,i)
295 i1=
fvdata(ifv)%IFVTRI(1,i)
296 i2=
fvdata(ifv)%IFVTRI(2,i)
297 i3=
fvdata(ifv)%IFVTRI(3,i)
298 j1=
fvdata(ifv)%IFVNOD(1,i1)
299 j2=
fvdata(ifv)%IFVNOD(1,i2)
300 j3=
fvdata(ifv)%IFVNOD(1,i3)
301 IF(j1 == 2 .AND. j2==2 .AND. j3==2)
THEN
302 n1=
fvdata(ifv)%IFVNOD(2,i1)
303 n2=
fvdata(ifv)%IFVNOD(2,i2)
304 n3=
fvdata(ifv)%IFVNOD(2,i3)
309 fvdata(ifv)%IFVTRI(4,i)=-ntg-ii
317 IF(ilvout >= 1)
WRITE(iout,1000)
320 IF (iel<=numelc)
THEN
324 ELSEIF (iel>numelc)
THEN
335 ELSEIF(ilaw == 19 .AND. leak == 0)
THEN
336 porosity(i)=pm(56,mat)
341 IF(ilaw == 58 .OR. (ilaw == 19 .AND. leak > 0))
THEN
342 WRITE(iout,1100) i,titl,kk,leak
344 WRITE(iout,1150) i,titl,kk,porosity(i)
352 i1=
fvdata(ifv)%IFVTRI(1,i)
353 i2=
fvdata(ifv)%IFVTRI(2,i)
354 i3=
fvdata(ifv)%IFVTRI(3,i)
355 n1=
fvdata(ifv)%IFVTRI(4,i)
356 n2=
fvdata(ifv)%IFVTRI(5,i)
357 n3=
fvdata(ifv)%IFVTRI(6,i)
358 WRITE(iout,
'(5X,7I8)') i,i1,i2,i3,n1,n2,n3
363 n1=
fvdata(ifv)%IFVNOD(1,i)
364 n2=
fvdata(ifv)%IFVNOD(2,i)
365 n3=
fvdata(ifv)%IFVNOD(3,i)
366 WRITE(iout,
'(5X,4I8)') i,n1,n2,n3
370 1000
FORMAT(/5x,
'FVMBAG INTERNAL ELEMENTS <-> SHELL or SH3N ',
371 . 3x,
'POROSITY/ILEAKAGE'
372 . /5x,
'----------------------------------------------------',
374 1100
FORMAT( 5x,
'TRIANGLE:',i8,
' <-> ',a,i10,10x,i6)
375 1150
FORMAT( 5x,
'TRIANGLE:',i8,
' <-> ',a,i10,10x,f6.3)
376 1200
FORMAT(/5x,
'TRIANGLE',9x,
'NODES',10x,
'ELEMENT',4x,
'FINITE VOLUME')
377 1300
FORMAT(/5x,
'FV POINT',4x,
'FLAG',1x,
'ELEM/NODE',2x,
'NODE')
subroutine fvelinte(ibuf, elem, ixc, ixtg, pm, ipm, ilvout, ifv, nnt, ntg, porosity, nseg, surf_eltyp, ntgi, eltg, nb_node, surf_elem)