29 . IXRT ,RIVET ,GEO ,V ,VR ,
34#include "implicit_f.inc"
55 . ms(*), in(*), a(3,*), ar(3,*), x(3,*), rivet(nrivf,*),
56 . geo(npropg,*), v(3,*), vr(3,*)
60 INTEGER I,IG,N1,N2,IROT,IMOD,RUPT,LFT,LLT,PROC,
61 . JS, NN, IS, NIND1, NIND2, J, L,
62 . ind1(mvsiz), ind2(mvsiz)
66 . da1(3),da2(3),vt1(3),vt2(3),
67 . dmx2, dt12m1, fn2, ft2,
68 . xm, amx, amy, amz, an, an2, anx, any, anz,
69 . atx, aty, atz, at2, alp,mass,masm1,iner,inm1,i1,i2,
70 . xcdg,ycdg,zcdg,xx1,yy1,zz1,xx2,yy2,zz2, ww,wt,
71 . vx1,vy1,vz1,vx2,vy2,vz2,vmx1,vmy1,vmz1,vmx2,vmy2,vmz2,
72 . vx,vy,vz,vrx1,vrx2,vry1,vry2,vrz1,vrz2,vxx,vyy,vzz,
74 . xn(mvsiz), yn(mvsiz), zn(mvsiz), dx2(mvsiz), enrot_l
79 lft = 1 + itask*nrivet / nthread
80 llt = (itask+1)*nrivet / nthread
83 nn =
min(nvsiz,llt-js)
100 xn(is)=x(1,n2)-x(1,n1)
101 yn(is)=x(2,n2)-x(2,n1)
102 zn(is)=x(3,n2)-x(3,n1)
103 dx2(is)=xn(is)**2+yn(is)**2+zn(is)**2
129#include "vectorize.inc"
147 xcdg=(x(1,n1)*ms(n1)+x(1,n2)*ms(n2))*masm1
148 ycdg=(x(2,n1)*ms(n1)+x(2,n2)*ms(n2))*masm1
149 zcdg=(x(3,n1)*ms(n1)+x(3,n2)*ms(n2))*masm1
151 vx1= v(1,n1)+a(1,n1)*dt12
152 vy1= v(2,n1)+a(2,n1)*dt12
153 vz1= v(3,n1)+a(3,n1)*dt12
154 vx2= v(1,n2)+a(1,n2)*dt12
155 vy2= v(2,n2)+a(2,n2)*dt12
156 vz2= v(3,n2)+a(3,n2)*dt12
165 vx = (vmx1+vmx2)*masm1
166 vy = (vmy1+vmy2)*masm1
167 vz = (vmz1+vmz2)*masm1
173 ax = (-a(1,n1)+(vx-v(1,n1))*dt12m1)*ms(n1)
174 ay = (-a(2,n1)+(vy-v(2,n1))*dt12m1)*ms(n1)
179 s = one/sqrt(dx2(is))
183 an =ax*xn(is)+ay*yn(is)+az*zn(is
191 at2=(atx**2+aty**2+atz**2)
194 an2=(ax**2+ay**2+az**2)
198 alp=sqrt((an2/fn2)+(at2/ft2))
199 alp=off /
max(alp,one)
206 a(1,n1)=a(1,n1)+ax/ms(n1)
207 a(2,n1)=a(2,n1)+ay/ms(n1)
208 a(3,n1)=a(3,n1)+az/ms(n1)
209 a(1,n2)=a(1,n2)-ax/ms(n2)
210 a(2,n2)=a(2,n2)-ay/ms(n2)
211 a(3,n2)=a(3,n2)-az/ms(n2)
223 i1 = (xx1*xx1+yy1*yy1+zz1*zz1)*ms(n1) + in(n1)
224 i2 = (xx2*xx2+yy2*yy2+zz2*zz2)*ms(n2) + in(n2)
228 vrx1= vr(1,n1)+ar(1,n1)*dt12
229 vry1= vr(2,n1)+ar(2,n1)*dt12
230 vrz1= vr(3,n1)+ar(3,n1)*dt12
231 vrx2= vr(1,n2)+ar(1,n2)*dt12
232 vry2= vr(2,n2)+ar(2,n2)*dt12
233 vrz2= vr(3,n2)+ar(3,n2)*dt12
235 vxx = (vrx1*in(n1)+yy1*vmz1-zz1*vmy1
236 . + vrx2*in(n2)+yy2*vmz2-zz2*vmy2)*inm1
237 vyy = (vry1*in(n1)+zz1*vmx1-xx1*vmz1
238 . + vry2*in(n2)+zz2*vmx2-xx2*vmz2)*inm1
239 vzz = (vrz1*in(n1)+xx1*vmy1-yy1*vmx1
240 . + vrz2*in(n2)+xx2*vmy2-yy2*vmx2)*inm1
244 vt1(1) = zz1*vyy - yy1*vzz
245 vt1(2) = xx1*vzz - zz1*vxx
246 vt1(3) = yy1*vxx - xx1*vyy
247 vt2(1) = zz2*vyy - yy2*vzz
248 vt2(2) = xx2*vzz - zz2*vxx
249 vt2(3) = yy2*vxx - xx2*vyy
251 ax = (-a(1,n2)+(vx+vt2(1)-v(1,n2))*dt12m1)*ms(n2)
252 ay = (-a(2,n2)+(vy+vt2(2)-v(2,n2))*dt12m1)*ms(n2)
253 az = (-a(3,n2)+(vz+vt2(3)-v(3,n2))*dt12m1)*ms(n2)
255 ax = (-a(1,n1)+(vx+vt1(1)-v(1,n1))*dt12m1)*ms(n1)
256 ay = (-a(2,n1)+(vy+vt1(2)-v(2,n1))*dt12m1)*ms(n1)
257 az = (-a(3,n1)+(vz+vt1(3)-v(3,n1))*dt12m1)*ms(n1)
261 s = one/sqrt(dx2(is))
265 an =ax*xn(is)+ay*yn(is)+az*zn(is)
273 at2=(atx**2+aty**2+atz**2)
276 an2=(ax**2+ay**2+az**2)
281 alp=sqrt((an2/fn2)+(at2/ft2))
282 alp=off /
max(alp,one)
289 da1(1) = half*dt2*dt12m1*(vyy*vt1(3) - vzz*vt1(2))
290 da1(2) = half*dt2*dt12m1*(vzz*vt1(1) - vxx*vt1(3))
291 da1(3) = half*dt2*dt12m1*(vxx*vt1(1) - vyy*vt1(2))
292 da2(1) = half*dt2*dt12m1*(vyy*vt2(3) - vzz*vt2(2))
293 da2(2) = half*dt2*dt12m1*(vzz*vt2(1) - vxx*vt2(3))
294 da2(3) = half*dt2*dt12m1*(vxx*vt2(1)
296 a(1,n1)=a(1,n1)+ax/ms(n1)+da1(1)
297 a(2,n1)=a(2,n1)+ay/ms(n1)+da1(2)
298 a(3,n1)=a(3,n1)+az/ms(n1)+da1(3)
299 a(1,n2)=a(1,n2)-ax/ms(n2)+da2(1)
300 a(2,n2)=a(2,n2)-ay/ms(n2)+da2(2)
301 a(3,n2)=a(3,n2)-az/ms(n2)+da2(3)
303 rivet(3, i) = sqrt(at2)
307 rivet(7, i) = a(1,n1)*ms(n1)
308 rivet(8 ,i) = a(2,n1)*ms(n1)
309 rivet(9 ,i) = a(3,n1)*ms(n1)
311 amx=-ar(1,n1)+(vxx-vr(1,n1))*dt12m1
312 amy=-ar(2,n1)+(vyy-vr(2,n1))*dt12m1
313 amz=-ar(3,n1)+(vzz-vr(3,n1))*dt12m1
314 ar(1,n1)=ar(1,n1)+amx*alp
315 ar(2,n1)=ar(2,n1)+amy*alp
316 ar(3,n1)=ar(3,n1)+amz*alp
317 rivet(10,i) = ar(1,n1)*i1
318 rivet(11,i) = ar(2,n1)*i1
319 rivet(12,i) = ar(3,n1)*i1
321 amx=-ar(1,n2)+(vxx-vr(1,n2))*dt12m1
322 amy=-ar(2,n2)+(vyy-vr(2,n2))*dt12m1
323 amz=-ar(3,n2)+(vzz-vr(3,n2))*dt12m1
324 ar(1,n2)=ar(1,n2)+amx*alp
325 ar(2,n2)=ar(2,n2)+amy*alp
326 ar(3,n2)=ar(3,n2)+amz*alp
328 rivet(10,i) = ar(1,n2)*i2
329 rivet(11,i) = ar(2,n2)*i2
330 rivet(12,i) = ar(3,n2)*i2
333 ww = vxx**2+vyy**2+vzz**2
334 wt = (vyy*zn(is)-vzz*yn(is))**2
335 . + (vzz*xn(is)-vxx*zn(is))**2
336 . + (vxx*yn(is)-vyy*xn(is))**2
337 enrot_l = enrot_l + half*iner*(ww-wt)
343#include
"vectorize.inc"
354 xm=ms(n1)*ms(n2)/(ms(n1)+ms(n2))
355 amx=(a(1,n2)-a(1,n1)+(v(1,n2)-v(1,n1))/dt12)*xm
356 amy=(a(2,n2)-a(2,n1)+(v(2,n2)-v(2,n1))/dt12)*xm
357 amz=(a(3,n2)-a(3,n1)+(v(3,n2)-v(3,n1))/dt12)*xm
360 s = one/sqrt(dx2(is))
364 an =amx*xn(is)+amy*yn(is)+amz*zn(is)
372 at2=(atx**2+aty**2+atz**2)
375 an2=(amx**2+amy**2+amz**2)
378 alp=sqrt((an2/fn2)+(at2/ft2))
379 alp=off /
max(alp,one)
383 a(1,n1)=a(1,n1)+amx/ms(n1)
384 a(2,n1)=a(2,n1)+amy/ms(n1)
385 a(3,n1)=a(3,n1)+amz/ms(n1)
386 a(1,n2)=a(1,n2)-amx/ms(n2)
387 a(2,n2)=a(2,n2)-amy/ms(n2)
388 a(3,n2)=a(3,n2)-amz/ms(n2)
390 inm1=one/(in(n1)+in(n2))
391 ar(1,n1)=(ar(1,n1)*in(n1)+ar(1,n2)*in(n2))*inm1
392 ar(2,n1)=(ar(2,n1)*in(n1)+ar(2,n2)*in(n2))*inm1
393 ar(3,n1)=(ar(3,n1)*in(n1)+ar(3,n2)*in(n2))*inm1
404 enrot = enrot + enrot_l
405#include "lockoff.inc"
408 IF(rivet(1,i)==-one)
THEN
411 WRITE(istdo,*)
' FAILURE OF RIVET',ixrt(4,i)
412 WRITE(iout,*)
' FAILURE OF RIVET',ixrt(4,i)
413#include "lockoff.inc"