35 1 INTSTAMP,MS ,IN ,A ,AR ,
36 2 STIFN ,STIFR ,WEIGHT ,WFEXT)
44#include "implicit_f.inc"
53#include "intstamp_c.inc"
58 my_real MS(*), IN(*), A(3,*), AR(3,*), STIFN(*), STIFR(*)
60 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
64 INTEGER NN, MSR, MSRR, INTDAMP, KDIR, K, IROT
65 my_real BUFS(8,NINTSTAMP), ALPHA, VIS, MASS, INM, STF, STR, VX, VY, VZ, FVX, FVY, FVZ, DT05, DW
66 DOUBLE PRECISION BUFS6(6,8,NINTSTAMP)
72 bufs6(k,kdir,nn)=intstamp(nn)%FC6(k,kdir)
74 bufs6(k,4,nn)=intstamp(nn)%ST6(k)
80 bufs6(k,kdir+4,nn)=intstamp(nn)%MC6(k,kdir)
82 bufs6(k,8,nn)=intstamp(nn)%STR6(k)
90 bufs(kdir,nn)=bufs6(1,kdir,nn)
103 intstamp(nn)%FC(kdir)=bufs(kdir,nn)
105 intstamp(nn)%STF=bufs(4,nn)
106 irot=intstamp(nn)%IROT
109 intstamp(nn)%MC(kdir)=bufs(kdir+4,nn)
111 intstamp(nn)%STR=bufs(8,nn)
118 bufs(kdir,nn)=intstamp(nn)%FC(kdir)
120 bufs(4,nn)=intstamp(nn)%STF
124 bufs(kdir+4,nn)=intstamp(nn)%MC(kdir)
126 bufs(8,nn)=intstamp(nn)%STR
132 intstamp(nn)%FC(kdir)=bufs(kdir,nn)
134 intstamp(nn)%STF=bufs(4,nn)
135 irot=intstamp(nn)%IROT
139 intstamp(nn)%MC(kdir)=bufs(kdir+4,nn)
141 intstamp(nn)%STR=bufs(8,nn)
151 irot=intstamp(nn)%IROT
152 msr =intstamp(nn)%MSR
154 a(kdir,msr)=a(kdir,msr)+intstamp(nn)%FC(kdir)
158 ar(kdir,msr)=ar(kdir,msr)+intstamp(nn)%MC(kdir)
168 intdamp=intstamp(nn)%INTDAMP
169 alpha =intstamp(nn)%DAMP
171 stf =intstamp(nn)%STF
172 vis =alpha*sqrt(four*mass*stf)
173 wfext=wfext + dt05*intstamp(nn)%DW
175 a(1,msr)=a(1,msr)-vis*intstamp(nn)%V(1)
176 a(2,msr)=a(2,msr)-vis*intstamp(nn)%V(2)
177 a(3,msr)=a(3,msr)-vis*intstamp(nn)%V(3)
179 dw=-vis*( intstamp(nn)%V(1)*intstamp(nn)%V(1)
180 . +intstamp(nn)%V(2)*intstamp(nn)%V(2)
181 . +intstamp(nn)%V(3)*intstamp(nn)%V(3))
182 wfext=wfext + dt05 * dw
185 vx=(intstamp(nn)%V(1)-intstamp(intdamp)%V(1))
186 vy=(intstamp(nn)%V(2)-intstamp(intdamp)%V(2))
187 vz=(intstamp(nn)%V(3)-intstamp(intdamp)%V(3))
191 a(1,msr)=a(1,msr)-fvx
192 a(2,msr)=a(2,msr)-fvy
193 a(3,msr)=a(3,msr)-fvz
194 msrr=intstamp(intdamp)%MSR
195 a(1,msrr)=a(1,msrr)+fvx
196 a(2,msrr)=a(2,msrr)+fvy
197 a(3,msrr)=a(3,msrr)+fvz
199 dw=-two*(fvx*vx+fvy*vy+fvz*vz)
200 wfext=wfext + dt05 * dw
203 irot=intstamp(nn)%IROT
205 alpha=intstamp(nn)%DAMPR
207 str =intstamp(nn)%STR
208 vis =alpha*sqrt(four*inm*str)
210 ar(1,msr)=ar(1,msr)-vis*intstamp(nn)%VR(1)
211 ar(2,msr)=ar(2,msr)-vis*intstamp(nn)%VR(2)
212 ar(3,msr)=ar(3,msr)-vis*intstamp(nn)%VR(3)
214 dw=-vis*( intstamp(nn)%VR(1)*intstamp(nn)%VR(1)
215 . +intstamp(nn)%VR(2)*intstamp(nn)%VR(2)
216 . +intstamp(nn)%VR(3)*intstamp(nn)%VR(3))
217 wfext=wfext + dt05 * dw
220 vx=intstamp(nn)%VR(1)-intstamp(intdamp)%VR(1)
221 vy=intstamp(nn)%VR(2)-intstamp(intdamp)%VR(2)
222 vz=intstamp(nn)%VR(3)-intstamp(intdamp)%VR(3)
226 ar(1,msr)=ar(1,msr)-fvx
227 ar(2,msr)=ar(2,msr)-fvy
228 ar(3,msr)=ar(3,msr)-fvz
229 msrr=intstamp(intdamp)%MSR
230 ar(1,msrr)=ar(1,msrr)+fvx
231 ar(2,msrr)=ar(2,msrr)+fvy
232 ar(3,msrr)=ar(3,msrr)+fvz
234 dw=-two*(fvx*vx+fvy*vy+fvz*vz)
235 wfext=wfext + dt05 * dw