31
32
33
34#include "implicit_f.inc"
35
36
37
38#include "com04_c.inc"
39#include "com08_c.inc"
40
41
42
43 INTEGER IRBYM(NIRBYM,*),LNRBYM(*), KIND(*)
44
46 . x(3,*), a(3,*), ar(3,*), vr(3,*),v(3,*),
47 . vrrbym(3,*), arbym(3,*),arrbym(3,*),vrbym(3,*),
48 . rbym(nfrbym,*)
49
50
51
52 INTEGER I, J, N, M, NSL, NSLT
53
54 my_real rx, ry, rz, msx, msy, msz, fsx, fsy, fsz,
55 . xg,yg,zg,usdt,v1x2,v2x1,v2x3,v3x2,v3x1,v1x3,
56 . vx2,vx1,vx3,vg(3)
57
58
59 usdt = one /dt12
60
61
62
63 DO m=1,nrbym
64
65 nsl = irbym(2,m)
66 xg = rbym(2,m)
67 yg = rbym(3,m)
68 zg = rbym(4,m)
69
70 nslt= kind(m)-1
71
72 vg(1) = vrrbym(1,m) + arrbym(1,m)*dt12
73 vg(2) = vrrbym(2,m) + arrbym(2,m)*dt12
74 vg(3) = vrrbym(3,m) + arrbym(3,m)*dt12
75 DO i=1,nsl
76 n = lnrbym(nslt + i)
77
78 rx = x(1,n) - xg
79 ry = x(2,n) - yg
80 rz = x(3,n) - zg
81
82 ar(1,n) = (vg(1) - vr(1,n)) * usdt
83 ar(2,n) = (vg(2) - vr(2,n)) * usdt
84 ar(3,n) = (vg(3) - vr(3,n)) * usdt
85
86 v1x2 = vg(1)*ry
87 v2x1 = vg(2)*rx
88 v2x3 = vg(2)*rz
89 v3x2 = vg(3)*ry
90 v3x1 = vg(3)*rx
91 v1x3 = vg(1)*rz
92
93 vx1 = v2x3 - v3x2
94 vx2 = v3x1 - v1x3
95 vx3 = v1x2 - v2x1
96
97 a(1,n)= arbym(1,m) + usdt*(
98 . vrbym(1,m) + vx1+half*dt2*(vg(2)*vx3-vg(3)*vx2)-v(1,n) )
99 a(2,n)= arbym(2,m) + usdt*(
100 . vrbym(2,m) + vx2+half*dt2*(vg(3)*vx1-vg(1)*vx3)-v(2,n))
101 a(3,n)= arbym(3,m) + usdt*(
102 . vrbym(3,m)+vx3+half*dt2*(vg(1)*vx2-vg(2)*vx1)-v(3,n))
103
104
105 ENDDO
106
107 vrbym(1,m) = vrbym(1,m) + arbym(1,m)*dt12
108 vrbym(2,m) = vrbym(2,m) + arbym(2,m)*dt12
109 vrbym(3,m) = vrbym(3,m) + arbym(3,m)*dt12
110
111 vrrbym(1,m) = vg(1)
112 vrrbym(2,m) = vg(2)
113 vrrbym(3,m) = vg(3)
114 ENDDO
115
116
117
118
119 RETURN