31
32
33
35
36
37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "com04_c.inc"
45#include "scrcut_c.inc"
46
47
48
49 my_real xcut(7,*),xyz0(3,*),d(3,*)
50 INTEGER ICUT(44,*),IXS(NIXS,*),LEN
51
52
53
54 INTEGER IC,I,J,K,ITYP
55 my_real dist,dist0,distmin,distmax,dd,dx1,dy1,dz1,dx2,dy2,dz2,vnx,vny,vnz,x,y,z
56
57
58
59 len=0
60 DO ic=1,ncuts
61 ityp=icut(1,ic)
62 IF(ityp==1)THEN
63 dd=dtanim*xcut(7,ic)
64 xcut(1,ic)=xcut(1,ic)+dd*xcut(4,ic)
65 xcut(2,ic)=xcut(2,ic)+dd*xcut(5,ic)
66 xcut(3,ic)=xcut(3,ic)+dd*xcut(6,ic)
67 ELSEIF(ityp==3)THEN
68 xcut(1,ic)=xyz0(1,icut(2,ic))
69 xcut(2,ic)=xyz0(2,icut(2,ic))
70 xcut(3,ic)=xyz0(3,icut(2,ic))
71 dx1=xyz0(1,icut(3,ic))-xcut(1,ic)
72 dy1=xyz0(2,icut(3,ic))-xcut(2,ic)
73 dz1=xyz0(3,icut(3,ic))-xcut(3,ic)
74 dx2=xyz0(1,icut(4,ic))-xcut(1,ic)
75 dy2=xyz0(2,icut(4,ic))-xcut(2,ic)
76 dz2=xyz0(3,icut(4,ic))-xcut(3,ic)
77 vnx=dy1*dz2-dy2*dz1
78 vny=dz1*dx2-dz2*dx1
79 vnz=dx1*dy2-dx2*dy1
80 dd=sqrt(vnx**2+vny**2+vnz**2)
81 IF(dd>em10)THEN
82 xcut(4,ic)=vnx/dd
83 xcut(5,ic)=vny/dd
84 xcut(6,ic)=vnz/dd
85 ENDIF
86 ENDIF
87
88 dist0=xcut(4,ic)*xcut(1,ic)+xcut(5,ic)*xcut(2,ic)+xcut(6,ic)*xcut(3,ic)
89 DO i=1,numels
90 distmin= ep30
91 distmax=-ep30
92 DO j=1,8
93 k=ixs(j+1,i)
94 x=xyz0(1,k)
95 y=xyz0(2,k)
96 z=xyz0(3,k)
97 IF(ityp==2)THEN
98 x=x-d(1,k)
99 y=y-d(2,k)
100 z=z-d(3,k)
101 ENDIF
102 dist=x*xcut(4,ic)+y*xcut(5,ic)+z*xcut(6,ic)-dist0
103 distmin=
min(dist,distmin)
104 distmax=
max(dist,distmax)
105 enddo
106 IF(distmin*distmax<= zero)len=len+1
107 enddo
108
109 enddo
110 RETURN