34 1 JLT ,A ,X ,CAND_N ,CAND_E ,
35 2 MBINFLG,ISEADD ,ISEDGE ,NSVG ,NIN ,
37 4 JLT_NEW,INACTI ,XI ,YI ,ZI ,
38 5 XX ,YY ,ZZ ,PMAX_GAP,
39 6 FSKYI ,ISKY ,CAND_T ,FCONT ,H3D_DATA)
48#include "implicit_f.inc"
57 INTEGER JLT, JLT_NEW,NIN,INACTI, CAND_N(*),NSVG(MVSIZ),
58 . CAND_E(*),MBINFLG(*),ISEDGE(*),ISEADD(*),CAND_T(*)
59 INTEGER ISKY(*),IXX(MVSIZ,13)
61 . N1(MVSIZ), N2(MVSIZ), N3(MVSIZ), ,
62 . XI(MVSIZ), YI(MVSIZ), ZI(MVSIZ), STIF(MVSIZ),
63 . fskyi(lskyi,nfskyi),x(3,*),a(3,*),fcont(3,*),
64 . xx(mvsiz,17),yy(mvsiz,17),zz(mvsiz,17)
75 INTEGER I, J, K, IFSEG,IK1(4),IK2(4),IK14(4),IK5(4),ICONT,
76 . JM,JP,JG,JMG,JPG,NES,IAD,K1,K2,K5,K14,KJ,IFE,IX(4),
78 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
80 . XJM,YJM,ZJM,XJP,YJP,ZJP,FM(4,4),FSI(4),X1,Y1,Z1,X2,Y2,Z2,F,
81 . xijm,yijm,zijm,xijp,yijp,zijp,fx,fy,fz,
82 . x12,y12,z12,x14,y14,z14,x15,y15,z15,xij,yij,zij,aaa,bbb,
83 . sxm1,sym1,szm1,sxm2,sym2,szm2,sxm,sym,szm,xm2,xa,xb,det,
84 . sxsm,sysm,szsm,nxij,nyij,nzij,xsm,xs2m2,ys2m2,zs2m2,
85 . tx12,ty12,tz12,xj,yj,zj,dist,nxsm,nysm,nzsm,h1m,h2m,
86 . sxs1,sys1,szs1,sxs2,sys2,szs2,sxs,sys,szs,xs2,h1s,h2s,
87 . nx12,ny12,nz12,txij,tyij,tzij,f1,f2,unp,zerom,eps,fi,fj,fsj
94 DATA ik14 /14,15,16,17/
102 IF(cand_t(i)==0)cycle
104 IF(bitget(mbinflg(m),8)==0)cycle
119 iad = iseadd(cand_n(i))
130 IF(bitget(mbinflg(m),k+1)==0)cycle
135 IF(ix3(i) == ix4(i)) k5=ik5(k)
158 sxm1 = y12*z15 - z12*y15
159 sym1 = z12*x15 - x12*z15
160 szm1 = x12*y15 - y12*x15
162 sxm2 = y14*z12 - z14*y12
163 sym2 = z14*x12 - x14*z12
164 szm2 = x14*y12 - y14*x12
168 aaa = (sym1*szm2 - szm1*sym2)*x12
169 . + (szm1*sxm2 - sxm1*szm2)*y12
170 . + (sxm1*sym2 - sym1*sxm2)*z12
178 xm2 = x12*x12+y12*y12+z12*z12
189 jmg = isedge(iad+kj+nes)
190 jpg = isedge(iad+kj+nes+nes)
217 sxs1 = yij*zijm - zij*yijm
218 sys1 = zij*xijm - xij*zijm
219 szs1 = xij*yijm - yij*xijm
221 sxs2 = yijp*zij - zijp*yij
222 sys2 = zijp*xij - xijp*zij
223 szs2 = xijp*yij - yijp*xij
227 aaa = (sys1*szs2 - szs1*sys2)*xij
228 . + (szs1*sxs2 - sxs1*szs2)*yij
229 . + (sxs1*sys2 - sys1*sxs2)*zij
237 aaa = sxs*sxm+sys*sym+szs*szm
241 sxsm = y12*zij - z12*yij
242 sysm = z12*xij - x12*zij
243 szsm = x12*yij - y12*xij
245 aaa = sxs*sxsm+sys*sysm+szs*szsm
251 aaa = sxm*sxsm+sym*sysm+szm*szsm
254 aaa = sxsm*(xi(i)-x1)
258 bbb = sxsm*sxsm + sysm*sysm + szsm*szsm
261 IF(bbb == zero)cycle ! // edges
272 aaa = one/sqrt(nxsm*nxsm+nysm*nysm+nzsm*nzsm)
282 aaa = tx12*nxsm + ty12*nysm + tz12*nzsm
292 aaa = (sym1*nzsm - szm1*nysm)*tx12
293 . + (szm1*nxsm - sxm1*nzsm)*ty12
298 aaa = sxm1*sxm1 + sym1*sym1 + szm1*szm1
299 aaa = (sxm1*nxsm + sym1*nysm + szm1*nzsm)/sqrt(aaa)
305 aaa = (nysm*szm2 - nzsm*sym2)*tx12
306 . + (nzsm*sxm2 - nxsm*szm2)*ty12
307 . + (nxsm*sym2 - nysm*sxm2)*tz12
311 aaa = sxm2*sxm2 + sym2*sym2 + szm2*szm2
312 aaa = (sxm2*nxsm + sym2*nysm + szm2*nzsm)/sqrt(aaa)
318 nxsm = -(nxsm + nx12)
319 nysm = -(nysm + ny12)
320 nzsm = -(nzsm + nz12)
329 aaa = txij*nxsm + tyij*nysm + tzij*nzsm
339 aaa = (sys1*nzsm - szs1*nysm)*txij
340 . + (szs1*nxsm - sxs1*nzsm)*tyij
341 . + (sxs1*nysm - sys1*nxsm)*tzij
345 aaa = sxs1*sxs1 + sys1*sys1 + szs1*szs1
346 aaa = (sxs1*nxsm + sys1*nysm + szs1*nzsm)/sqrt(aaa)
352 aaa = (nysm*szs2 - nzsm*sys2)*txij
353 . + (nzsm*sxs2 - nxsm*szs2)*tyij
354 . + (nxsm*sys2 - nysm*sxs2)*tzij
358 aaa = sxs2*sxs2 + sys2*sys2 + szs2*szs2
359 aaa = (sxs2*nxsm + sys2*nysm + szs2*nzsm)/sqrt(aaa)
365 nxsm = -(nxsm + nxij)
366 nysm = -(nysm + nyij)
367 nzsm = -(nzsm + nzij)
376 xsm = xij*x12 + yij*y12 + zij*z12
382 xa = xij*xs2m2 + yij*ys2m2 + zij*zs2m2
383 xb = -x12*xs2m2 - y12*ys2m2 - z12*zs2m2
384 det = xm2*xs2 - xsm*xsm
387 h1m = (xa*xsm-xb*xs2) / det
390 IF(h1m > one+em3)cycle
394 h1m =
min(one,
max(zero,h1m ))
395 h1s = -(xa + h1m *xsm) / xs2
397 IF(h1s > one+em3)cycle
398 IF(h1s < half-em3)cycle
400 h1s =
min(one,
max(zero,h1s))
402 h1m = -(xb + h1s *xsm) / xm2
403 h1m =
min(one,
max(zero,h1m ))
411 IF(h1s < half+em3)
THEN
412 aaa=(h1s-half+em3)/(two*em3)
414 ELSEIF(h1s > one-em3)
THEN
415 aaa=-(h1s-one-em3)/(two*em3)
419 aaa=(h1m+em3)/(two*em3)
421 ELSEIF(h1m > one-em3)
THEN
422 aaa=-(h1m-one-em3)/(two*em3)
430 fm(1,k1) = fm(1,k1) + f1*nxsm
431 fm(2,k1) = fm(2,k1) + f1*nysm
432 fm(3,k1) = fm(3,k1) + f1*nzsm
433 fm(4,k1) = fm(4,k1) + stif(i)*abs(h1m)
434 fm(1,k2) = fm(1,k2) + f2*nxsm
435 fm(2,k2) = fm(2,k2) + f2*nysm
436 fm(3,k2) = fm(3,k2) + f2*nzsm
437 fm(4,k2) = fm(4,k2) + stif(i)*abs(h2m)
438 fsi(1) = fsi(1) + fi*nxsm
439 fsi(2) = fsi(2) + fi*nysm
440 fsi(3) = fsi(3) + fi*nzsm
441 fsi(4) = fsi(4) + stif(i)*abs(h1s)
447#include "lockoff.inc"
454 fskyi(niskyl,4)=stif(i)*abs(h2s)
456 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT > 0)
THEN
457 fcont(1,jg) =fcont(1,jg) + fx
458 fcont(2,jg) =fcont(2,jg) + fy
459 fcont(3,jg) =fcont(3,jg) + fz
473 IF(fm(4,k)/=zero)
THEN
477#include "lockoff.inc"
478 fskyi(niskyl,1)=fm(1,k)
479 fskyi(niskyl,2)=fm(2,k)
480 fskyi(niskyl,3)=fm(3,k)
481 fskyi(niskyl,4)=fm(4,k)
489#include "lockoff.inc"
490 fskyi(niskyl,1)=fsi(1)
491 fskyi(niskyl,2)=fsi(2)
492 fskyi(niskyl,3)=fsi(3)
493 fskyi(niskyl,4)=fsi(4)
494 isky(niskyl) = nsvg(i)
497 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT > 0)
THEN
499 IF(fm(4,k)/=zero)
THEN
501 fcont(1,ig) = fcont(1,ig) + fm(1,k)
502 fcont(2,ig) = fcont(2,ig) + fm(2,k)
503 fcont(3,ig) = fcont(3,ig) + fm(3,k)
508 fcont(1,jg) = fcont(1,jg) + fsi(1)
509 fcont(2,jg) = fcont(2,jg) + fsi(2)
510 fcont(3,jg) = fcont(3,jg) + fsi(3)