28 SUBROUTINE init_qd(IFLOW, IBUF, ELEM, X, XS, YS, ZS, XD, YD, ZD,
29 . RFLOW, NORMAL, TA, AF, COSG, DCP)
33#include "implicit_f.inc"
41 INTEGER IFLOW(*), IBUF(*), (5,*)
42 my_real x(3,*), af(*), rflow(*), normal(3,*), ta(*), cosg(*), dcp(*)
47 INTEGER ILVOUT, NEL, IWAVE, FREESURF
48 INTEGER N1, N2, N3, N4, N5, NN1, NN2, NN3, NN4, IEL, JEL
49 my_real x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4,
50 . xp, yp, zp, x13, y13, z13, x24, y24, z24,
51 . nrx, nry, nrz, area2, dcs, ssp, wi(4,2),
52 . xc, yc, zc, dirx, diry, dirz
113 area2=sqrt(nrx**2+nry**2+nrz**2)
114 normal(1,iel)=nrx/area2
115 normal(2,iel)=nry/area2
116 normal(3,iel)=nrz/area2
119 xp=wi(1,n5)*x1+wi(2,n5)*x2+wi(3,n5)*x3+wi(4,n5)*x4
120 yp=wi(1,n5)*y1+wi(2,n5)*y2+wi(3,n5)*y3+wi(4,n5)*y4
121 zp=wi(1,n5)*z1+wi(2,n5)*z2+wi(3,n5)*z3+wi(4,n5)*z4
124 dcp(iel) = sqrt((xp-xc)**2+(yp-yc)**2+(zp-zc)**2)
125 ta(iel) = (dcp(iel)-dcs)/ssp
126 cosg(iel)= (nrx*(xp-xc)+nry*(yp-yc)+nrz*(zp-zc))/(area2*dcp(iel))
127 IF(freesurf == 2)
THEN
129 dcp(jel) = sqrt((xp-xd)**2+(yp-yd)**2+(zp-zd)**2)
130 ta(jel) = (dcp(jel)-dcs)/ssp
131 cosg(jel)= (nrx*(xp-xd)+nry*(yp-yd)+nrz*(zp-zd))/(area2*dcp(jel))
133 ELSEIF(iwave==2)
THEN
134 dcp(iel) = (xp-xs)*dirx+(yp-xs)*diry+(zp-zs)*dirz
135 ta(iel) = dcp(iel)/ssp
136 cosg(iel)= (nrx*dirx+nry*diry+nrz*dirz)/area2
142 WRITE (iout,
'(//7X,2A)')
'ELEMENT ARRIVAL TIME AREA DISTANCE DIR.COSINE ',
143 . 'normal-x normal-y normal-z
'
145 WRITE (IOUT,'(5x,i10,7e13.5)
')IEL,TA(IEL),AF(IEL),DCP(IEL),COSG(IEL),NORMAL(1,IEL),NORMAL(2,IEL),NORMAL(3,IEL)
147 IF(FREESURF == 2) THEN
148 WRITE (IOUT,'(//7x,2a)
') 'element arrival time
area distance dir.cosine
'
151 WRITE (IOUT,'(5x,i10,7e13.5)
')IEL,TA(JEL),AF(IEL),DCP(JEL),COSG(JEL)
subroutine init_qd(iflow, ibuf, elem, x, xs, ys, zs, xd, yd, zd, rflow, normal, ta, af, cosg, dcp)