37 SUBROUTINE rbyact(RBY,M,LSN ,NSL ,MS ,
38 . IN ,X,ITAB,SKEW,ISPH,
39 . IWA,NPBYI,RBYI,LSNI ,
40 . PMAIN,ICOMM,WEIGHT,ID)
48#include "implicit_f.inc"
59 INTEGER M, NSL,ISPH, PMAIN, ICOMM(*), WEIGHT(*)
60 INTEGER (*), ITAB(*),IWA(*),NPBYI(,*)
63 . rby(20), ms(*), in(*), x(3,*), skew(lskew,*),rbyi(nrby,*),
64 . f1(nsl), f2(nsl), f3(nsl), f4(nsl),
66 DOUBLE PRECISION RBF6(5,6), RBFB6(9,6)
70 INTEGER J, I, , NONOD, NI, NSLI, K, II
73 . xg(3), xmg, xx, xy, xz, yy, yz, zz, xiin,masrb,inert,
74 . rby17,rby18,rby19,rby20,rby21,rby22,rby23,rby24,rby25,
75 . ii1,ii2,ii3,ii4,ii5,ii6,ii7,ii8,ii9, inmin, inmax
113 IF(iwa(ni)==0)iwa(ni)=-1
133 IF(iwa(n)>=0.AND.weight(n)==1)
THEN
145 f5(i) = in(n)*weight(n)
171 + rbf6(1,1)+rbf6(1,2)+rbf6(1,3)+
172 + rbf6(1,4)+rbf6(1,5)+rbf6(1,6)
174 + rbf6(2,1)+rbf6(2,2)+rbf6(2,3)+
175 + rbf6(2,4)+rbf6(2,5)+rbf6(2,6)
177 + rbf6(3,1)+rbf6(3,2)+rbf6(3,3)+
178 + rbf6(3,4)+rbf6(3,5)+rbf6(3,6)
180 + rbf6(4,1)+rbf6(4,2)+rbf6(4,3)+
181 + rbf6(4,4)+rbf6(4,5)+rbf6(4,6)
182 inert =rbf6(5,1)+rbf6(5,2)+rbf6(5,3)+
183 + rbf6(5,4)+rbf6(5,5)+rbf6(5,6)
186 IF (ispmd+1==pmain)
THEN
187 CALL ancmsg(msgid=109,anmode=aninfo,
206 xx=(xg(1)-x(1,m))*(xg(1)-x(1,m))
207 xy=(xg(1)-x(1,m))*(xg(2)-x(2,m))
208 xz=(xg(1)-x(1,m))*(xg(3)-x(3,m))
209 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
210 yz=(xg(2)-x(2,m))*(xg(3)-x(3,m))
212 rby(1)=rby(1)+(yy+zz)*xmg
216 rby(5)=rby(5)+(zz+xx)*xmg
220 rby(9)=rby(9)+(xx+yy)*xmg
225 IF(ni==0.AND.weight(n)==1)
THEN
226 xx=(x(1,n)-x(1,m))*(x(1,n)-x(1,m))
227 xy=(x(1,n)-x(1,m))*(x(2,n)-x(2,m))
228 xz=(x(1,n)-x(1,m))*(x(3,n)-x(3,m))
229 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
230 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
231 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
241 ELSEIF(ni>0.AND.weight(n)==1)
THEN
246 xx=(x(1,n)-x(1,m))*(x(1,n)-x(1,m))
247 xy=(x(1,n)-x(1,m))*(x(2,n)-x(2,m))
248 xz=(x(1,n)-x(1,m))*(x(3,n)-x(3,m))
249 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
250 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
251 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
253 ii1=rbyi(10,ni)*rbyi(1,ni)
254 ii2=rbyi(10,ni)*rbyi(2,ni)
255 ii3=rbyi(10,ni)*rbyi(3,ni)
256 ii4=rbyi(11,ni)*rbyi(4,ni)
257 ii5=rbyi(11,ni)*rbyi(5,ni)
258 ii6=rbyi(11,ni)*rbyi(6,ni)
259 ii7=rbyi(12,ni)*rbyi(7,ni)
261 ii9=rbyi(12,ni)*rbyi(9,ni)
263 rby17=rbyi(1,ni)*ii1 + rbyi(4,ni)*ii4 + rbyi(7,ni)*ii7
264 rby18=rbyi(1,ni)*ii2 + rbyi(4,ni)*ii5 + rbyi(7,ni)*ii8
265 rby19=rbyi(1,ni)*ii3 + rbyi(4,ni)*ii6 + rbyi(7,ni)*ii9
266 rby20=rbyi(2,ni)*ii1 + rbyi(5,ni)*ii4 + rbyi(8,ni)*ii7
267 rby21=rbyi(2,ni)*ii2 + rbyi(5,ni)*ii5 + rbyi(8,ni)*ii8
268 rby22=rbyi(2,ni)*ii3 + rbyi(5,ni)*ii6 + rbyi(8,ni)*ii9
269 rby23=rbyi(3,ni)*ii1 + rbyi(6,ni)*ii4 + rbyi(9,ni)*ii7
270 rby24=rbyi(3,ni)*ii2 + rbyi(6,ni)*ii5 + rbyi(9,ni)*ii8
271 rby25=rbyi(3,ni)*ii3 + rbyi(6,ni)*ii6 + rbyi(9,ni)*ii9
273 f1(i)=(yy+zz)*ms(n)+rby17
274 f2(i)=-xy*ms(n)+rby18
275 f3(i)=-xz*ms(n)+rby19
276 f4(i)=-xy*ms(n)+rby20
277 f5(i)=(zz+xx)*ms(n)+rby21
278 f6(i)=-yz*ms(n)+rby22
279 f7(i)=-xz*ms(n)+rby23
280 f8(i)=-yz*ms(n)+rby24
281 f9(i)=(xx+yy)*ms(n)+rby25
296 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
297 yz=(xg(2)-x(2,m))*(xg(3)-x(3,m))
298 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
299 rby(1)=rby(1)+(yy+zz)*xmg
312 IF(ni==0.AND.weight(n)==1)
THEN
313 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
314 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
315 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
325 ELSEIF(ni>0.AND.weight(n)==1)
THEN
330 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
331 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
332 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
334 ii1=rbyi(10,ni)*rbyi(1,ni)
335 ii5=rbyi(11,ni)*rbyi(5,ni)
336 ii6=rbyi(11,ni)*rbyi(6,ni)
337 ii8=rbyi(12,ni)*rbyi(8,ni)
338 ii9=rbyi(12,ni)*rbyi(9,ni)
344 rby21= rbyi(5,ni)*ii5 + rbyi(8,ni)*ii8
345 rby22= rbyi(5,ni)*ii6 + rbyi(8,ni)*ii9
347 rby24= rbyi(6,ni)*ii5 + rbyi(9,ni)*ii8
348 rby25= rbyi(6,ni)*ii6 + rbyi(9,ni)*ii9
355 f6(i)=-yz*ms(n)+rby22
357 f8(i)=-yz*ms(n)+rby24
402 rby(1) = rby(1) + rbfb6(1,1)+rbfb6(1,2)+rbfb6(1,3)+
403 + rbfb6(1,4)+rbfb6(1,5)+rbfb6(1,6)
404 rby(2) = rby(2) + rbfb6(2,1)+rbfb6(2,2)+rbfb6(2,3)+
405 + rbfb6(2,4)+rbfb6(2,5)+rbfb6(2,6)
406 rby(3) = rby(3) + rbfb6(3,1)+rbfb6(3,2)+rbfb6(3,3)+
407 + rbfb6(3,4)+rbfb6(3,5)+rbfb6(3,6)
408 rby(4) = rby(4) + rbfb6(4,1)+rbfb6(4,2)+rbfb6(4,3)+
409 + rbfb6(4,4)+rbfb6(4,5)+rbfb6(4,6)
411 + rbfb6(5,4)+rbfb6(5,5)+rbfb6(5,6)
412 rby(6) = rby(6) + rbfb6(6,1)+rbfb6(6,2)+rbfb6(6,3)+
413 + rbfb6(6,4)+rbfb6(6,5)+rbfb6(6,6)
414 rby(7) = rby(7) + rbfb6(7,1)+rbfb6(7,2)+rbfb6(7,3)+
415 + rbfb6(7,4)+rbfb6(7,5)+rbfb6(7,6)
416 rby(8) = rby(8) + rbfb6(8,1)+rbfb6(8,2)+rbfb6(8,3)+
417 + rbfb6(8,4)+rbfb6(8,5)+rbfb6(8,6)
418 rby(9) = rby(9) + rbfb6(9,1)+rbfb6(9,2)+rbfb6(9,3)+
419 + rbfb6(9,4)+rbfb6(9,5)+rbfb6(9,6)
423 IF (ispmd+1==pmain)
THEN
425 WRITE(iout,1100) nonod,x(1,m),x(2,m),x(3,m),
426 . masrb,rby(1),rby(5),rby(9),rby(2),rby(3),rby(6)
442 xiin = (rby(10) + rby(11) + rby(12)) * third
447 inmin =
min(rby(10),rby(11),rby(12))
448 inmax =
max(rby(10),rby(11),rby(12))
449 IF(inmin<=1.e-3*inmax)
THEN
450 IF(rby(10)/inmax<em03)
THEN
451 rby(10)=rby(10)+em01*inmax
453 IF (rby(11)/inmax<em03)
THEN
454 rby(11)=rby(11)+em01*inmax
456 IF (rby(12)/inmax<em03)
THEN
457 rby(12)=rby(12)+em01*inmax
469 in(m) =
min(rby(10),rby(11),rby(12))
474 . 44h1 rigid body initialization /
475 . 44h ------------------------- /)
4761100
FORMAT(/5x,
'RIGID BODY ',
477 . /10x,
'PRIMARY NODE ',i8
478 . /10x,
'NEW X,Y,Z ',3g10.3
479 . /10x,
'NEW MASS ',1g10.3
480 . /10x,
'NEW INERTIA ',6g10.3)