37 . NORMAL, AF, MFLE, RHO)
45#include "implicit_f.inc"
53 INTEGER IFORM, ILVOUT, NNO, NEL, IBUF(*), ELEM(3,*)
54 my_real x(3,*), af(*), normal(3,*), mfle(nel,*), rho
58 INTEGER IN, JN, KN, N1, N2, N3, NN1, NN2, NN3, NNJ, IEL, JEL, ERR
59 my_real x1, y1, z1, x2, y2, z2, x3, y3, z3, xq, yq, zq, r2,
60 . xp, yp, zp, x12, y12, z12, x13, y13, z13,
61 . nrx, nry, nrz, d2,
area, rval, rvlh, rvlg
63 my_real,
DIMENSION(:,:),
ALLOCATABLE :: bbem, cbem, ebem
68 IF (ilvout>=1)
WRITE(istdo,
'(A)')
' .. FLUID MASS MATRIX : ASSEMBLY OF INTEGRAL OPERATORS'
70 ALLOCATE(bbem(nel,nel), stat = aerr)
72 CALL ancmsg(msgid = 1710, anmode=aninfo, msgtype = msgerror)
74 ALLOCATE(cbem(nel,nel), stat = aerr)
76 CALL ancmsg(msgid = 1710, anmode=aninfo, msgtype = msgerror)
107 d2=
min((xp-x1)**2+(yp-y1)**2+(zp-z1)**2,
108 . (xp-x2)**2+(yp-y2)**2+(zp-z2)**2,
109 . (xp-x3)**2+(yp-y3)**2+(zp-z3)**2)
116 bbem(iel,jel)=two*sqrt(pi*af(jel))
139 CALL inthtg(x1 , y1, z1, x2, y2, z2,
140 . x3, y3, z3, xp, yp, zp,
141 . nrx,nry, nrz, d2,
area,
144 CALL intgtg(x1 , y1, z1, x2, y2, z2,
145 . x3, y3, z3, xp, yp, zp,
153 ELSEIF(iform == 2)
THEN
197 . x3, y3, z3, xp, yp, zp,
199 .
area, rvlh, rvlg, iel, jel )
212 WRITE (*,
'(//,A)')
' BBEM MATRIX'
215 WRITE (*,
'(10E13.5)') (bbem(in,jn),jn=1,nel)
219 WRITE (*,
'(10E13.5)') (bbem(in,jn),jn=1,10)
221 WRITE (*,
'(//,A)')
' BBEM MATRIX B1J'
222 WRITE (*,
'(10E13.5)') (bbem(1,jn),jn=1,nel)
225 WRITE (*,
'(//,A)')
' CBEM MATRIX'
228 WRITE (*,
'(10E13.5)') (cbem(in,jn),jn=1,nel)
232 WRITE (*,
'(10E13.5)') (cbem(in,jn),jn=1,10)
234 WRITE (*,
'(//,A)')
' CBEM MATRIX C1J'
235 WRITE (*,
'(10E13.5)') (cbem(1,jn),jn=1,nel)
241 IF (ilvout>=1)
WRITE(istdo,
'(A)')
' .. FLUID MASS MATRIX'
242 ALLOCATE(ebem(nel,nel), stat = aerr)
244 CALL ancmsg(msgid = 1710, anmode=aninfo, msgtype = msgerror)
246 CALL invert(cbem,ebem,nel,err)
260 cbem(in,jn)=cbem(in,jn)+bbem(in,kn)*ebem(kn,jn)
265 WRITE (*,
'(//,A)')
' EBEM MATRIX = BBEM*CBEM-1'
268 WRITE (*,
'(10E13.5)') (cbem(in,jn),jn=1,nel)
272 WRITE (*,
'(10E13.5)') (cbem(in,jn),jn=1,10)
274 WRITE (*,
'(//,A)')
' EBEM MATRIX E1I'
275 WRITE (*,
'(10E13.5)') (cbem(1,jn),jn=1,nel)
281 mfle(in,jn)=half*rho*af(in)*(cbem(in,jn)+cbem(jn,in))
282 bbem(in,jn)=mfle(in,jn)
287 WRITE (*,
'(//,A)')
' FLUID MASS MATRIX'
290 WRITE (*,
'(10E13.5)') (mfle(in,jn),jn=1,nel)
294 WRITE (*,
'(10E13.5)') (mfle(in,jn),jn=1,10)
296 WRITE (*,
'(//,A)')
' FLUID MASS MATRIX M1I'
297 WRITE (*,
'(10E13.5)') (mfle(1,jn),jn=1,nel)
308 massx=massx+normal(1,in)*mfle(in,jn)*normal(1,jn)
309 massy=massy+normal(2,in)*mfle(in,jn)*normal(2,jn)
310 massz=massz+normal(3,in)*mfle(in,jn)*normal(3,jn)
313 WRITE (iout,
'(/7X,A,E13.5)')
'DAA : RIGID BODY FLUID MASS XX', massx
314 WRITE (iout,
'( 7X,A,E13.5)')
'DAA : RIGID BODY FLUID MASS YY', massy
315 WRITE (iout,
'( 7X,A,E13.5)')
'DAA : RIGID BODY FLUID MASS ZZ', massz
324 CALL invert(bbem,ebem,nel,err)
327 WRITE (*,
'(//,A)')
' INVERSE FLUID MASS MATRIX'
330 WRITE (*,
'(10E13.5)') (ebem(in,jn),jn=1,nel)
334 WRITE (*,
'(10E13.5)') (ebem(in,jn),jn=1,10)
336 WRITE (*,
'(//,A)')
' INVERSE FLUID MASS MATRIX M1I'
337 WRITE (*,
'(10E13.5)') (ebem(1,jn),jn=1,nel)
344 mfle(in,jn)=ebem(in,jn)
348 IF (
ALLOCATED(bbem))
DEALLOCATE(bbem)
349 IF (
ALLOCATED(ebem))
DEALLOCATE(ebem)
350 IF (
ALLOCATED(cbem))
DEALLOCATE(cbem)
subroutine hm_read_rbe3(irbe3, lrbe3, frbe3, itab, itabm1, igrnod, iskn, lxintd, ikine, iddlevel, nom_opt, itagnd, grnod_uid, unitab, lsubmodel)
subroutine intanl_tg(x1, y1, z1, x2, y2, z2, x3, y3, z3, xp, yp, zp, nrx, nry, nrz, area, rvlh, rvlg, jel, iel)
subroutine intgtg(x1, y1, z1, x2, y2, z2, x3, y3, z3, xp, yp, zp, d2, jac, xs, ys, zs, rval)
subroutine inthtg(x1, y1, z1, x2, y2, z2, x3, y3, z3, xp, yp, zp, nrx, nry, nrz, d2, jac, xs, ys, zs, rval)
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)