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)
47#include "implicit_f.inc"
57 INTEGER IXC(NIXC,*), IXTG(NIXTG,*), IPM(NPROPMI,*), ILVOUT, IFV
58 INTEGER IBUF(*), ELEM(3,*), NNT, NTG, SURF_ELTYP(*),SURF_ELEM(*)
59 INTEGER NSEG,NTGI, ELTG(*), NB_NODE
60 my_real pm(npropm,*), porosity(*)
64 INTEGER I, II, J, JJ, ICMAX, NC, I1, I2, I3, IFOUND
65 INTEGER K, KK, ITY, N1, N2, N3, IEL, ILAW, MAT, LEAK
66 INTEGER J1, J2, J3, NNT_TMP
68 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: CNS
69 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAG,ITAGC,ITAGTG
72 ALLOCATE(itag(nb_node))
73 ALLOCATE(itagc(numelc))
74 ALLOCATE(itagtg(numeltg))
88 itag(n1) = itag(n1) + 1
89 itag(n2) = itag(n2) + 1
90 itag(n3) = itag(n3) + 1
95 icmax =
max(icmax, itag(i))
108 ALLOCATE(cns(nb_node,1+icmax*2))
114 n1 = ibuf(elem(1, i))
120 n2 = ibuf(elem(2, i))
126 n3 = ibuf(elem(3, i))
134 iel=
fvdata(ifv)%IFVTRI(4,i)
138 i1=
fvdata(ifv)%IFVTRI(1,i)
139 i2=
fvdata(ifv)%IFVTRI(2,i)
140 i3=
fvdata(ifv)%IFVTRI(3,i)
141 n1=
fvdata(ifv)%IFVNOD(1,i1)
142 n2=
fvdata(ifv)%IFVNOD(1,i2)
143 n3=
fvdata(ifv)%IFVNOD(1,i3)
144 IF(n1==2.AND.n2==2.AND.n3==2)
THEN
145 i1=
fvdata(ifv)%IFVNOD(2,i1)
146 i2=
fvdata(ifv)%IFVNOD(2,i2)
147 i3=
fvdata(ifv)%IFVNOD(2,i3)
153 n1 = ibuf(elem(1, cns(i1, 1 + j)))
154 n2 = ibuf(elem(2, cns(i1, 1 + j)))
155 n3 = ibuf(elem(3, cns(i1, 1 + j)))
156 IF (itag(n1) * itag(n2) * itag(n3) /= 0)
THEN
157 fvdata(ifv)%IFVTRI(4,i) = -cns(i1, 1 + j)
188 IF(ity==3) itagc(ii)=1
189 IF(ity==7) itagtg(ii)=1
194 icmax=
max(icmax,itag(i))
197 ALLOCATE(cns(nb_node,1+icmax*2))
202 IF(itagc(i)==0) cycle
208 cns(jj,1+2*(nc-1)+1)=1
209 cns(jj,1+2*(nc-1)+2)=i
213 IF(itagtg(i)==0) cycle
219 cns(jj,1+2*(nc-1)+1)=2
220 cns(jj,1+2*(nc-1)+2)=i
230 iel=
fvdata(ifv)%IFVTRI(4,i)
234 i1=
fvdata(ifv)%IFVTRI(1,i)
235 i2=
fvdata(ifv)%IFVTRI(2,i)
236 i3=
fvdata(ifv)%IFVTRI(3,i)
237 n1=
fvdata(ifv)%IFVNOD(1,i1)
238 n2=
fvdata(ifv)%IFVNOD(1,i2)
239 n3=
fvdata(ifv)%IFVNOD(1,i3)
240 IF(n1==2.AND.n2==2.AND.n3==2)
THEN
241 i1=
fvdata(ifv)%IFVNOD(2,i1)
242 i2=
fvdata(ifv)%IFVNOD(2,i2)
243 i3=
fvdata(ifv)%IFVNOD(2,i3)
245 ity=cns(i1,1+2*(j-1)+1)
246 jj=cns(i1,1+2*(j-1)+2)
252 IF (itag(i1)==1.AND.itag(i2)==1.AND.itag(i3)==1)
THEN
264 IF (itag(i1)==1.AND.itag(i2)==1.AND.itag(i3)==1)
THEN
272 IF (ifound /= 0)
THEN
277 fvdata(ifv)%IFVTRI(4,i)=-ifound
278 nnt_tmp = nnt_tmp + 1
292 ifound=
fvdata(ifv)%IFVTRI(4,i)
294 i1=
fvdata(ifv)%IFVTRI(1,i)
295 i2=
fvdata(ifv)%IFVTRI(2,i)
296 i3=
fvdata(ifv)%IFVTRI(3,i)
297 j1=
fvdata(ifv)%IFVNOD(1,i1)
298 j2=
fvdata(ifv)%IFVNOD(1,i2)
299 j3=
fvdata(ifv)%IFVNOD(1,i3)
300 IF(j1 == 2 .AND. j2==2 .AND. j3==2)
THEN
301 n1=
fvdata(ifv)%IFVNOD(2,i1)
302 n2=
fvdata(ifv)%IFVNOD(2,i2)
303 n3=
fvdata(ifv)%IFVNOD(2,i3)
308 fvdata(ifv)%IFVTRI(4,i)=-ntg-ii
316 IF(ilvout >= 1)
WRITE(iout,1000)
319 IF (iel<=numelc)
THEN
323 ELSEIF (iel>numelc)
THEN
334 ELSEIF(ilaw == 19 .AND. leak == 0)
THEN
335 porosity(i)=pm(56,mat)
340 IF(ilaw == 58 .OR. (ilaw == 19 .AND. leak > 0))
THEN
341 WRITE(iout,1100) i,titl,kk,leak
343 WRITE(iout,1150) i,titl,kk,porosity(i)
351 i1=
fvdata(ifv)%IFVTRI(1,i)
352 i2=
fvdata(ifv)%IFVTRI(2,i)
353 i3=
fvdata(ifv)%IFVTRI(3,i)
354 n1=
fvdata(ifv)%IFVTRI(4,i)
355 n2=
fvdata(ifv)%IFVTRI(5,i)
356 n3=
fvdata(ifv)%IFVTRI(6,i)
357 WRITE(iout,
'(5X,7I8)') i,i1,i2,i3,n1,n2,n3
362 n1=
fvdata(ifv)%IFVNOD(1,i)
363 n2=
fvdata(ifv)%IFVNOD(2,i)
364 n3=
fvdata(ifv)%IFVNOD(3,i)
365 WRITE(iout,
'(5X,4I8)') i,n1,n2,n3
369 1000
FORMAT(/5x,
'FVMBAG INTERNAL ELEMENTS <-> SHELL or SH3N ',
370 . 3x,
'POROSITY/ILEAKAGE'
371 . /5x,
'----------------------------------------------------',
373 1100
FORMAT( 5x,
'TRIANGLE:',i8,
' <-> ',a,i10,10x,i6)
374 1150
FORMAT( 5x,
'TRIANGLE:',i8,
' <-> ',a,i10,10x,f6.3)
375 1200
FORMAT(/5x,
'TRIANGLE',9x,
'NODES',10x,
'ELEMENT',4x,
'FINITE VOLUME')
376 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)