31
32
33
34#include "implicit_f.inc"
35
36
37
38 INTEGER NSN
39 INTEGER IRECT(4,*), MSR(*), (*), ILOC(*), IRTL(*)
40
42 . x(3,*), v(3,*), a(3,*), cst(
43
44
45
46#include "com08_c.inc"
47
48
49
50 INTEGER IX(2), II, I, J, K, L, M, IMP, I3, I2, JJ, J3, J2, LOLD
51
53 . h(2), n2, n3, gap, ym1, zm1, ym2, zm2, ys, zs, t2, t3,
54 . xl, ans, ss, stif, fni, fyi, fzi, ss0, fti, ds, anst
55
56 gap =frigap(2)
57
58 DO 500 ii=1,nsn
59 i=nsv(ii)
60 j=iloc(ii)
61 k=msr(j)
62 l=irtl(ii)
63 m=msr(irect(1,l))
64 ix(1)=m
65 ym1=x(2,m) + (v(2,m) + a(2,m)*dt12)*dt2
66 zm1=x(3,m) + (v(3,m) + a(3,m)*dt12)*dt2
67 m=msr(irect(2,l))
68 ix(2)=m
69 ym2=x(2,m) + (v(2,m) + a(2,m)*dt12)*dt2
70 zm2=x(3,m) + (v(3,m) + a(3,m)*dt12)*dt2
71 ys =x(2,i) + (v(2,i) + a(2,i)*dt12)*dt2
72 zs =x(3,i) + (v(3,i) + a(3,i)*dt12)*dt2
73 t2=ym2-ym1
74 t3=zm2-zm1
75 xl=sqrt(t2**2+t3**2)
76 t2=t2/xl
77 t3=t3/xl
78 n2= t3
79 n3=-t2
80
81 ans =n2*(ys-ym1)+n3*(zs-zm1)
82 ans =ans-gap
83 IF(ans>zero)THEN
84 iloc(ii)=-iloc(ii)
85 ELSE
86 h(2)=t2*(ys-ym1)+t3*(zs-zm1)
87 h(2)=h(2)/xl
88 h(1)=one - h(2)
89 ss=h(2)-h(1)
90 IF(ss> onep05)iloc(ii)=-iloc(ii)
91 IF(ss<-onep05)iloc(ii)=-iloc(ii)
94 nor(2,ii)=n2
95 nor(3,ii)=n3
96 cst(1,ii)=ss
97 ENDIF
98
99 500 CONTINUE
100 RETURN