35 SUBROUTINE inirby(NRB ,RBY ,M ,LPBY ,
36 . MS ,IN ,X ,ITAB ,SKEW ,
37 . B1 ,B2 ,B3 ,B5 ,B6 ,
38 . B9 ,ISPH ,TOTMAS,XGT ,YGT ,
39 . ZGT ,STIFN ,STIFR ,NPBY ,RBYID ,
40 . V ,VR ,ID ,TITR ,ITAGND,
59#include "implicit_f.inc"
74 INTEGER NPBY(NNPBY,*), M, ISPH, NRB
75 INTEGER ITAB(*), RBYID,ITAGND(*)
76 INTEGER,
TARGET :: LPBY(*)
78 . RBY(NRBY,*), MS(*), IN(*), X(3,*), SKEW(LSKEW,*),
79 . B1, B2, B3, B5, B6, B9,TOTMAS ,XGT ,YGT ,
80 . zgt, stifn(*), stifr(*), v(3,*), vr(3,*),
81 . ii1,ii2,ii3,ii4,ii5,ii6,ii7,ii8,ii9,
82 . rby_r2r(9),rby_iniaxis(7,*)
84 CHARACTER(LEN=NCHARTITLE) :: TITR
88 INTEGER NSL, J, NOSKEW, I, N, NONOD,ICDG, FLAG,NSL_XTRA
90 . xg(3), xm0(3), xmg, xx, xy, xz, yy, yz, zz, xiin, inmin,
92 . v1x2, v2x1, v2x3, v3x2, v3x1, v1x3,
93 . inmax,x_msn0(3),dist
94 INTEGER M_I, OPT_MERGE, RBLEVEL
95 INTEGER,
DIMENSION(:),
POINTER :: LSN, LSN_XTRA
96 my_real,
DIMENSION(:),
ALLOCATABLE :: MS_LOC,IN_LOC
101 lsn => lpby(npby(11,nrb)+1:npby(11,nrb)+nsl)
102 rblevel = npby(12,nrb)
103 ALLOCATE (ms_loc(nsl))
104 ALLOCATE (in_loc(nsl))
114 IF ((nsubdom>0).AND.(ipid==0))
THEN
115 IF (
tagno(m+n_part)==3)
THEN
123 IF (
tagno(n+n_part)>3) ms_loc(i)= 0
124 IF (
tagno(n+n_part)>3) in_loc(i)= 0
125 IF (
tagno(n+n_part)==0) ms_loc(i)= 0
126 IF (
tagno(n+n_part)==0) in_loc(i)= 0
134 IF (itagnd(n)/=0)
THEN
141 nsl_xtra = npby(14,nrb)+npby(15,nrb)+npby(16,nrb)
142 nsl = npby(2,nrb) - nsl_xtra
143 lsn => lpby(npby(11,nrb)+1:npby(11,nrb)+nsl)
146 ms(m)=ms(m)+rby(1,nrb)
147 IF(ms(m)==zero) ms(m)=em20
154 rby(1,nrb)=rby(2,nrb)
155 rby(9,nrb)=rby(4,nrb)
156 rby(8,nrb)=rby(6,nrb)
157 rby(2,nrb)=rby(5,nrb)
158 rby(4,nrb)=rby(5,nrb)
159 rby(5,nrb)=rby(3,nrb)
160 rby(3,nrb)=rby(7,nrb)
163 CALL chbas(skew(1,noskew),rby(1,nrb))
166 rby(1,nrb)=rby(1,nrb)+in(m)
167 rby(5,nrb)=rby(5,nrb)+in(m)
168 rby(9,nrb)=rby(9,nrb)+in(m)
169 in(m) = (rby(1,nrb) + rby(5,nrb) + rby(9,nrb)) * third
179 IF (rby_iniaxis(1,nrb) > 0)
THEN
195 x(j,m) = x(j,m)+x(j,n)*ms_loc(i)
197 masrb = masrb+ms_loc(i)
200 IF(masrb<=1.e-30)
THEN
203 . anmode=aninfo_blind_1,
222 x(j,m) = x(j,m)+x(j,n)*ms_loc(i)
224 masrb = masrb+ms_loc(i)
226 IF (flag==1) masrb =
max
231 . anmode=aninfo_blind_1,
234 . c2=
'ON SECONDARY NODES')
253 masrb = masrb+ms_loc(i)
259 . anmode=aninfo_blind_1,
275 . anmode=aninfo_blind_1,
287 IF(npby(15,nrb) > 0)
THEN
288 lsn_xtra => lpby(npby(11,nrb)+nsl+npby(14,nrb)+1:
289 . npby(11,nrb)+nsl+npby(14,nrb)+npby(15,nrb))
299 x(j,m) = x(j,m)+x(j,n)*ms_loc(nsl+i)
301 masrb = masrb+ms_loc(nsl+i)
310 IF(npby(16,nrb) > 0)
THEN
311 lsn_xtra => lpby(npby(11,nrb)+nsl+npby(14,nrb)+npby(
312 . npby(11,nrb)+nsl+npby(14,nrb)+npby
315 masrb = masrb+ms_loc(nsl+i)
325 xx=(xg(1)-x(1,m))*(xg(1)-x(1,m))
326 xy=(xg(1)-x(1,m))*(xg(2)-x(2,m))
327 xz=(xg(1)-x(1,m))*(xg(3)-x(3,m))
328 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
329 yz=(xg(2)-x(2,m))*(xg(3)-x(3,m))
330 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
331 rby(1,nrb)=rby(1,nrb)+(yy+zz)*xmg
332 rby(2,nrb)=rby(2,nrb)-xy*xmg
333 rby(3,nrb)=rby(3,nrb)-xz*xmg
334 rby(4,nrb)=rby(4,nrb)-xy*xmg
335 rby(5,nrb)=rby(5,nrb)+(zz+xx)*xmg
336 rby(6,nrb)=rby(6,nrb)-yz*xmg
337 rby(7,nrb)=rby(7,nrb)-xz*xmg
339 rby(9,nrb)=rby(9,nrb)+(xx+yy)*xmg
342 rby(1,nrb)=rby(1,nrb)+em20
343 rby(5,nrb)=rby(5,nrb)+em20
344 rby(9,nrb)=rby(9,nrb)+em20
349 xx=(x(1,n)-x(1,m))*(x(1,n)-x(1,m))
350 xy=(x(1,n)-x(1,m))*(x(2,n)-x(2,m))
351 xz=(x(1,n)-x(1,m))*(x(3,n)-x(3,m))
352 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
353 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
354 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
355 rby(1,nrb)=rby(1,nrb)+in_loc(i)+(yy+zz)*ms_loc(i)
356 rby(2,nrb)=rby(2,nrb)-xy*ms_loc(i)
357 rby(3,nrb)=rby(3,nrb)-xz*ms_loc(i)
358 rby(4,nrb)=rby(4,nrb)-xy*ms_loc(i)
359 rby(5,nrb)=rby(5,nrb)+in_loc(i)+(zz+xx)*ms_loc(i)
360 rby(6,nrb)=rby(6,nrb)-yz*ms_loc(i)
361 rby(7,nrb)=rby(7,nrb)-xz*ms_loc(i)
362 rby(8,nrb)=rby(8,nrb)-yz*ms_loc(i)
363 rby(9,nrb)=rby(9,nrb)+in_loc(i)+(xx+yy)*ms_loc(i)
371 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
372 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
373 rby(1,nrb)=rby(1,nrb)+(yy+zz)*xmg
378 rby(5,nrb)=rby(5,nrb)+zz*xmg
383 rby(9,nrb)=rby(9,nrb)+yy*xmg
386 rby(1,nrb)=rby(1,nrb)+em20
387 rby(5,nrb)=rby(5,nrb)+em20
388 rby(9,nrb)=rby(9,nrb)+em20
393 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
394 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
395 rby(1,nrb)=rby(1,nrb)+in_loc(i)+(yy+zz)*ms_loc(i)
396 rby(5,nrb)=rby(5,nrb)+in_loc(i)+zz*ms_loc(i)
397 rby(9,nrb)=rby(9,nrb)+in_loc(i)+yy*ms_loc(i)
404 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
405 yz=(xg(2)-x(2,m))*(xg(3)-x(3,m))
406 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
407 rby(1,nrb)=rby(1,nrb)+(yy+zz)*xmg
412 rby(5,nrb)=rby(5,nrb)+zz*xmg
413 rby(6,nrb)=rby(6,nrb)-yz*xmg
416 rby(8,nrb)=rby(8,nrb)-yz*xmg
417 rby(9,nrb)=rby(9,nrb)+yy*xmg
420 rby(1,nrb)=rby(1,nrb)+em20
421 rby(5,nrb)=rby(5,nrb)+em20
422 rby(9,nrb)=rby(9,nrb)+em20
427 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
428 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
429 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
430 rby(1,nrb)=rby(1,nrb)+in_loc(i
432 rby(5,nrb)=rby(5,nrb)+in_loc(i)+zz*ms_loc(i)
433 rby(6,nrb)=rby(6,nrb)-yz*ms_loc(i)
435 rby(8,nrb)=rby(8,nrb)-yz*ms_loc(i)
436 rby(9,nrb)=rby(9,nrb)+in_loc(i)+yy*ms_loc(i)
444 IF((npby(15,nrb)+npby(16,nrb)) > 0)
THEN
446 lsn_xtra => lpby(npby(11,nrb)+nsl+npby(14,nrb)+1:
447 . npby(11,nrb)+nsl+npby(14,nrb)+npby(15,nrb)+npby(16,nrb))
450 DO i=1,npby(15,nrb)+npby(16,nrb)
452 xx=(x(1,n)-x(1,m))*(x(1,n)-x(1,m))
453 xy=(x(1,n)-x(1,m))*(x(2,n)-x(2,m))
454 xz=(x(1,n)-x(1,m))*(x(3,n)-x(3,m))
455 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
456 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
457 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
458 rby(1,nrb)=rby(1,nrb)+in_loc(nsl+i)+(yy+zz)*ms_loc(nsl+i)
459 rby(2,nrb)=rby(2,nrb)-xy*ms_loc(nsl+i)
460 rby(3,nrb)=rby(3,nrb)-xz*ms_loc(nsl+i)
461 rby(4,nrb)=rby(4,nrb)-xy*ms_loc
462 rby(5,nrb)=rby(5,nrb)+in_loc(nsl+i)+(zz+xx)*ms_loc(nsl+i)
463 rby(6,nrb)=rby(6,nrb)-yz*ms_loc(nsl+i)
464 rby(7,nrb)=rby(7,nrb)-xz*ms_loc(nsl+i)
465 rby(8,nrb)=rby(8,nrb)-yz*ms_loc(nsl+i)
466 rby(9,nrb)=rby(9,nrb)+in_loc(nsl+i)+(xx+yy)*ms_loc(nsl+i)
469 DO i=1,npby(15,nrb)+npby(16,nrb)
471 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
472 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
473 rby(1,nrb)=rby(1,nrb)+in_loc(nsl+i)+(yy+zz)*ms_loc(nsl+i)
474 rby(5,nrb)=rby(5,nrb)+in_loc(nsl+i)+zz*ms_loc(nsl+i)
475 rby(9,nrb)=rby(9,nrb)+in_loc(nsl+i)+yy*ms_loc(nsl+i)
478 DO i=1,npby(15,nrb)+npby(16,nrb)
480 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
481 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
482 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
483 rby(1,nrb)=rby(1,nrb)+in_loc(nsl+i)+(yy+zz)*ms_loc(nsl+i)
484 rby(5,nrb)=rby(5,nrb)+in_loc(nsl+i)+zz*ms_loc(nsl+i)
485 rby(6,nrb)=rby(6,nrb)-yz*ms_loc(nsl+i)
486 rby(8,nrb)=rby(8,nrb)-yz*ms_loc(nsl+i)
487 rby(9,nrb)=rby(9,nrb)+in_loc(nsl+i)+yy*ms_loc(nsl+i)
496 IF((npby(12,i)) == rblevel-1)
THEN
502 opt_merge = npby(13,i)
503 npby(11,nrb) = npby(11,i)
504 npby(2,nrb) = npby(2,nrb)+npby(2,i)
507 IF(opt_merge == 2)
THEN
509 x(j,m)=x(j,m)*masrb+x(j,m_i)*rby(14,i)
511 masrb = masrb + rby(14,i)
515 ELSEIF(opt_merge == 3)
THEN
516 masrb = masrb + rby(14,i)
522 IF(opt_merge == 2)
THEN
524 xx=(xg(1)-x(1,m))*(xg(1)-x(1,m))
525 xy=(xg(1)-x(1,m))*(xg(2)-x(2,m))
526 xz=(xg(1)-x(1,m))*(xg(3)-x(3,m))
527 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
528 yz=(xg(2)-x(2,m))*(xg(3)-x(3,m))
529 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
530 rby(1,nrb)=rby(1,nrb)+(yy+zz)*xmg
531 rby(2,nrb)=rby(2,nrb)-xy*xmg
532 rby(3,nrb)=rby(3,nrb)-xz*xmg
533 rby(4,nrb)=rby(4,nrb)-xy*xmg
534 rby(5,nrb)=rby(5,nrb)+(zz+xx)*xmg
535 rby(6,nrb)=rby(6,nrb)-yz*xmg
536 rby(7,nrb)=rby(7,nrb)-xz*xmg
537 rby(8,nrb)=rby(8,nrb)-yz*xmg
538 rby(9,nrb)=rby(9,nrb)+(xx+yy)*xmg
540 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
541 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
542 rby(1,nrb)=rby(1,nrb)+(yy+zz)*xmg
546 rby(5,nrb)=rby(5,nrb)+zz*xmg
550 rby(9,nrb)=rby(9,nrb)+yy*xmg
552 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
553 yz=(xg(2)-x(2,m))*(xg(3)-x(3,m))
554 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
555 rby(1,nrb)=rby(1,nrb)+(yy+zz)*xmg
559 rby(5,nrb)=rby(5,nrb)+zz*xmg
560 rby(6,nrb)=rby(6,nrb)-yz*xmg
562 rby(8,nrb)=rby(8,nrb)-yz*xmg
563 rby(9,nrb)=rby(9,nrb)+yy*xmg
566 IF(opt_merge > 1)
THEN
568 xx=(x(1,m_i)-x(1,m))*(x(1,m_i)-x(1,m))
569 xy=(x(1,m_i)-x(1,m))*(x(2,m_i)-x(2,m))
570 xz=(x(1,m_i)-x(1,m))*(x(3,m_i)-x(3,m))
571 yy=(x(2,m_i)-x(2,m))*(x(2,m_i)-x(2,m))
572 yz=(x(2,m_i)-x(2,m))*(x(3,m_i)-x(3,m))
573 zz=(x(3,m_i)-x(3,m))*(x(3,m_i)-x(3,m))
574 rby(1,nrb)=rby(1,nrb)+rby(1,i)+(yy+zz)*rby(14,i)
575 rby(2,nrb)=rby(2,nrb)+rby(2,i)-xy*rby(14,i)
576 rby(3,nrb)=rby(3,nrb)+rby(3,i)-xz*rby(14,i)
577 rby(4,nrb)=rby(4,nrb)+rby(4,i)-xy*rby(14,i)
578 rby(5,nrb)=rby(5,nrb)+rby(5,i)+(zz+xx)*rby(14,i)
579 rby(6,nrb)=rby(6,nrb)+rby(6,i)-yz*rby(14,i)
580 rby(7,nrb)=rby(7,nrb)+rby(7,i)-xz*rby(14,i)
581 rby(8,nrb)=rby(8,nrb)+rby(8,i)-yz*rby(14,i)
582 rby(9,nrb)=rby(9,nrb)+rby(9,i)+(xx+yy)*rby(14,i)
584 yy=(x(2,m_i)-x(2,m))*(x(2,m_i)-x(2,m))
585 zz=(x(3,m_i)-x(3,m))*(x(3,m_i)-x(3,m))
586 rby(1,nrb)=rby(1,nrb)+rby(1,i)+(yy+zz)*rby(14,i)
587 rby(5,nrb)=rby(5,nrb)+rby(5,i)+zz*rby(14,i)
588 rby(9,nrb)=rby(9,nrb)+rby(9,i)+yy*rby(14,i)
590 yy=(x(2,m_i)-x(2,m))*(x(2,m_i)-x(2,m))
591 yz=(x(2,m_i)-x(2,m))*(x(3,m_i)-x(3,m))
592 zz=(x(3,m_i)-x(3,m))*(x(3,m_i)-x(3,m))
593 rby(1,nrb)=rby(1,nrb)+rby(1,i)+(yy+zz)*rby(14,i)
594 rby(5,nrb)=rby(5,nrb)+rby(5,i)+zz*rby(14,i)
595 rby(6,nrb)=rby(6,nrb)-yz*rby(14,i)
596 rby(8,nrb)=rby(8,nrb)-yz*rby(14,i)
597 rby(9,nrb)=rby(9,nrb)+rby(9,i)+yy*rby(14,i)
604 ELSEIF(npby(12,i) == rblevel)
THEN
613 IF(rblevel == 0)
THEN
614 IF(nrbmerge > 0)
THEN
618 lsn => lpby(npby(11,nrb)+1:npby(11,nrb)+nsl)
619 ALLOCATE (ms_loc(nsl))
620 ALLOCATE (in_loc(nsl))
623 IF ((nsubdom>0).AND.(ipid==0))
THEN
624 IF (
tagno(m+n_part)==3)
THEN
628 IF (
tagno(n+n_part)>3) ms_loc(i)= 0
629 IF (
tagno(n+n_part)>3) in_loc(i)= 0
630 IF (
tagno(n+n_part)==0) ms_loc(i)= 0
631 IF (
tagno(n+n_part)==0) in_loc(i)= 0
639 IF (itagnd(n)/=0)
THEN
658 IF(
tagno(m+n_part)==3)
THEN
660 rby_r2r(j)=rby(j,nrb)
685 b1 = b1 - in_loc(i)-(yy+zz)*ms_loc(i)
686 b2 = b2 + xy*ms_loc(i)
687 b3 = b3 + xz*ms_loc(i)
688 b5 = b5 - in_loc(i)-(zz+xx)*ms_loc(i)
689 b6 = b6 + yz*ms_loc(i)
690 b9 = b9 - in_loc(i)-(xx+yy)*ms_loc(i)
691 xgt = xgt - ms_loc(i)*x(1,n)
692 ygt = ygt - ms_loc(i)*x(2,n)
693 zgt = zgt - ms_loc(i)*x(3,n)
694 totmas = totmas - ms_loc(i)
704 IF(
tagno(m+n_part)==3)
THEN
705 WRITE(iout,1300) rbyid
708 WRITE(iout,1100) rbyid,nonod,x(1,m),x(2,m),x(3,m),
709 . masrb,rby(1,nrb),rby(5,nrb),rby(9,nrb),rby(2,nrb),rby(6,nrb),rby(3,nrb)
712 WRITE(iout,1100) rbyid,nonod,x(1,m),x(2,m),x(3,m),
713 . masrb,rby(1,nrb),rby(5,nrb),rby(9,nrb),rby(2,nrb),rby(6,nrb),rby(3,nrb)
721 rby(10,nrb) = rby(1,nrb)
722 rby(11,nrb) = rby(5,nrb)
723 rby(12,nrb) = rby(9,nrb)
728 CALL inepri(rby(10,nrb),rby(1,nrb))
732 xiin = (rby(10,nrb) + rby(11,nrb) + rby(12,nrb)) * third
741 IF(
tagno(m+n_part)==3)
THEN
742 WRITE(iout,1300) rbyid
745 WRITE(iout,1100) rbyid,nonod,x(1,m),x(2,m),x(3,m),
746 . masrb,xiin,xiin,xiin,zero,zero,zero
749 WRITE(iout,1100) rbyid,nonod,x(1,m),x(2,m),x(3,m),
750 . masrb,xiin,xiin,xiin,zero,zero,zero
752 ELSEIF (isph==2)
THEN
753 inmin =
min(rby(10,nrb),rby(11,nrb),rby(12,nrb))
754 inmax =
max(rby(10,nrb),rby(11,nrb),rby(12,nrb))
755 IF(inmin<=1.e-3*inmax)
THEN
756 IF(rby(10,nrb)/inmax<em03) rby(10,nrb)=rby(10,nrb)+em01*inmax
757 IF(rby(11,nrb)/inmax<em03) rby(11,nrb)=rby(11,nrb)+em01*inmax
758 IF(rby(12,nrb)/inmax<em03) rby(12,nrb)=rby(12,nrb)+em01*inmax
760 IF(
tagno(m+n_part) /= 3)
THEN
762 . msgtype=msgwarning,
763 . anmode=aninfo_blind_1,
769 . msgtype=msgwarning,
770 . anmode=aninfo_blind_1,
779 IF(
tagno(m+n_part)==3)
GOTO 350
783 inmin =
min(rby(10,nrb),rby(11,nrb),rby(12,nrb))
784 WRITE(iout,1200) rby(10,nrb),rby(11,nrb),rby(12,nrb)
786 WRITE(iout,1102) (itab(lpby(i+npby(11,nrb))),i=1,nsl)
788 IF(rby(10,nrb)>=rby(11,nrb).AND.rby(10,nrb)>=rby(12,nrb))
THEN
789 IF(rby(10,nrb)>(rby(11,nrb)+rby(12,nrb))*tol)
THEN
791 . msgtype=msgwarning,
792 . anmode=aninfo_blind_1,
799 ELSEIF(rby(11,nrb)>=rby(10,nrb).AND.rby(11,nrb)>=rby(12,nrb))
THEN
800 IF(rby(11,nrb)>(rby(10,nrb)+rby(12,nrb))*tol)
THEN
802 . msgtype=msgwarning,
803 . anmode=aninfo_blind_1,
810 ELSEIF(rby(12,nrb)>=rby(10,nrb).AND.rby(12,nrb)>=rby(11,nrb))
THEN
811 IF(rby(12,nrb)>(rby(10,nrb)+rby(11,nrb))*tol)
THEN
813 . msgtype=msgwarning,
814 . anmode=aninfo_blind_1,
826 . anmode=aninfo_blind_1,
838 in(m) =
min(rby(10,nrb),rby(11,nrb),rby(12,nrb))
847 IF(rblevel == 0)
THEN
859 totmas = totmas - ms(m) + masrb
860 xgt = xgt - ms(m)*x(1,m) + masrb*x(1,m)
861 ygt = ygt - ms(m)*x(2,m) + masrb*x(2,m)
862 zgt = zgt - ms(m)*x(3,m) + masrb*x(3,m)
868 IF (itagnd(n)/=0) cycle
869 stifn(m)= stifn(m)+stifn(n)
870 dd = (x(1,n)-x(1,m))**2+(x(2,n)-x(2,m))**2+(x(3,n)-x(3,m))**2
871 stifr(m)= stifr(m)+(stifr(n)+dd*stifn(n))
878 stifn(m)= stifn(m)+stifn(n)
879 dd = (x(1,n)-x(1,m))**2+(x(2,n)
880 stifr(m)= stifr(m)+(stifr(n)+dd*stifn(n))
887 ii1=rby(10,nrb)*rby(1,nrb)
888 ii2=rby(10,nrb)*rby(2,nrb)
889 ii3=rby(10,nrb)*rby(3,nrb)
890 ii4=rby(11,nrb)*rby(4,nrb)
891 ii5=rby(11,nrb)*rby(5,nrb)
892 ii6=rby(11,nrb)*rby(6,nrb)
893 ii7=rby(12,nrb)*rby(7,nrb)
894 ii8=rby(12,nrb)*rby(8,nrb)
895 ii9=rby(12,nrb)*rby(9,nrb)
897 rby(17,nrb)=rby(1,nrb)*ii1 + rby(4,nrb)*ii4 + rby(7,nrb)*ii7
898 rby(18,nrb)=rby(1,nrb)*ii2 + rby(4,nrb)*ii5 + rby(7,nrb)*ii8
899 rby(19,nrb)=rby(1,nrb)*ii3 + rby(4,nrb)*ii6 + rby(7,nrb)*ii9
900 rby(20,nrb)=rby(2,nrb)*ii1 + rby(5,nrb)*ii4 + rby(8,nrb)*ii7
901 rby(21,nrb)=rby(2,nrb)*ii2 + rby(5,nrb)*ii5 + rby(8,nrb)*ii8
902 rby(22,nrb)=rby(2,nrb)*ii3 + rby(5,nrb)*ii6 + rby(8,nrb)*ii9
903 rby(23,nrb)=rby(3,nrb)*ii1 + rby(6,nrb)*ii4 + rby(9,nrb)*ii7
904 rby(24,nrb)=rby(3,nrb)*ii2 + rby(6,nrb)*ii5 + rby(9,nrb)*ii8
905 rby(25,nrb)=rby(3,nrb)*ii3 + rby(6,nrb)*ii6 + rby(9,nrb)*ii9
907 ELSEIF(n2d == 1)
THEN
912 totmas = totmas - ms(m) + masrb
914 ygt = ygt - ms(m)*x(2,m) + masrb*x(2,m)
915 zgt = zgt - ms(m)*x(3,m) + masrb*x(3,m)
922 IF (itagnd(n)/=0) cycle
923 stifn(m)= stifn(m)+stifn(n)
924 dd =(x(1,n)-x(1,m))**2+(x(2,n)-x(2,m))**2+(x(3,n)-x(3,m))**2
925 stifr(m)= stifr(m)+(stifr(n)+dd*stifn(n))
932 stifn(m)= stifn(m)+stifn(n)
933 dd = (x(1,n)-x(1,m))**2+(x(2,n)-x(2,m))**2+(x(3,n)-x(3,m))**2
934 stifr(m)= stifr(m)+(stifr(n)+dd*stifn(n))
941 rby(17,nrb)=rby(10,nrb)
945 rby(21,nrb)=rby(11,nrb)
949 rby(25,nrb)=rby(12,nrb)
951 ELSEIF(n2d == 2)
THEN
955 totmas = totmas - ms(m) + masrb
957 ygt = ygt - ms(m)*x(2,m) + masrb*x(2,m)
958 zgt = zgt - ms(m)*x(3,m) + masrb*x(3,m)
964 IF (itagnd(n)/=0) cycle
965 stifn(m)= stifn(m)+stifn(n)
966 dd = (x(2,n)-x(2,m))**2+(x(3,n)-x(3,m))**2
967 stifr(m)= stifr(m)+(stifr(n)+dd*stifn(n))
974 stifn(m)= stifn(m)+stifn(n)
975 dd = (x(2,n)-x(2,m))**2+(x(3,n)-x(3,m))**2
976 stifr(m)= stifr(m)+(stifr(n)+dd*stifn(n))
983 ii1=rby(10,nrb)*rby(1,nrb)
986 ii4=rby(11,nrb)*rby(4,nrb)
987 ii5=rby(11,nrb)*rby(5,nrb)
988 ii6=rby(11,nrb)*rby(6,nrb)
990 ii8=rby(12,nrb)*rby(8,nrb)
991 ii9=rby(12,nrb)*rby(9,nrb)
993 rby(17,nrb)=rby(1,nrb)*ii1 + rby(4,nrb)*ii4
994 rby(18,nrb)=rby(4,nrb)*ii5 + rby(7,nrb)*ii8
995 rby(19,nrb)=rby(4,nrb)*ii6 + rby(7,nrb)*ii9
996 rby(20,nrb)=rby(2,nrb)*ii1 + rby(5,nrb)*ii4
997 rby(21,nrb)=rby(5,nrb)*ii5 + rby(8,nrb)*ii8
998 rby(22,nrb)=rby(5,nrb)*ii6 + rby(8,nrb)*ii9
999 rby(23,nrb)=rby(3,nrb)*ii1 + rby(6,nrb)*ii4
1000 rby(24,nrb)=rby(6,nrb)*ii5 + rby(9,nrb)*ii8
1001 rby(25,nrb)=rby(6,nrb)*ii6 + rby(9,nrb)*ii9
1006 IF(
tagno(m+n_part)==3)
THEN
1008 rby(16+j,nrb)=rby_r2r(j)
1014 IF (rby_iniaxis(1,nrb) > 0)
THEN
1015 dist = sqrt((x(1,m)-x_msn0(1))**2+(x(2,m)-x_msn0(2))**2+(x(3,m)-x_msn0(3))**2)
1016 IF ((dist > zero).AND.
1017 . v(1,m)==rby_iniaxis(2,nrb).AND.
1018 . v(2,m)==rby_iniaxis(3,nrb).AND.
1019 . v(3,m)==rby_iniaxis(4,nrb))
THEN
1021 v1x2=rby_iniaxis(5,nrb)*(x(2,m)-x_msn0(2))
1022 v2x1=rby_iniaxis(6,nrb)*(x(1,m)-x_msn0(1))
1023 v2x3=rby_iniaxis(6,nrb)*(x(3,m)-x_msn0(3))
1024 v3x2=rby_iniaxis(7,nrb)*(x(2,m)-x_msn0(2))
1025 v3x1=rby_iniaxis(7,nrb)*(x(1,m)-x_msn0(1))
1026 v1x3=rby_iniaxis(5,nrb)*(x(3,m)-x_msn0(3))
1027 v(1,m)= v(1,m)+v2x3-v3x2
1028 v(2,m)= v(2,m)+v3x1-v1x3
1029 v(3,m)= v(3,m)+v1x2-v2x1
1036 v1x2=vr(1,m)*(x(2,n)-x(2,m))
1037 v2x1=vr(2,m)*(x(1,n)-x(1,m))
1038 v2x3=vr(2,m)*(x(3,n)-x(3,m))
1039 v3x2=vr(3,m)*(x(2,n)-x(2,m))
1040 v3x1=vr(3,m)*(x(1,n)-x(1,m))
1041 v1x3=vr(1,m)*(x(3,n)-x(3,m))
1042 v(1,n)= v(1,m)+v2x3-v3x2
1043 v(2,n)= v(2,m)+v3x1-v1x3
1044 v(3,n)= v(3,m)+v1x2-v2x1
1049 ELSEIF(n2d == 1)
THEN
1055 v3x2=vr(3,m)*(x(2,n)-x(2,m))
1056 v3x1=vr(3,m)*(x(1,n)-x(1,m))
1064 ELSEIF(n2d == 2)
THEN
1070 v1x2=vr(1,m)*(x(2,n)-x(2,m))
1071 v1x3=vr(1,m)*(x(3,n)-x(3,m))
1086 .
' RIGID BODY INITIALIZATION '/
1087 .
' ------------------------- ')
10891100
FORMAT(/5x,
'RIGID BODY ID',i10
1090 . /10x,
'PRIMARY NODE ',i10
1091 . /10x,
'NEW X,Y,Z ',3g14.7
1092 . /10x,
'NEW MASS ',1g14.7
1093 . /10x,
'NEW INERTIA xx yy zz ',3g14.7
1094 . /10x,
'NEW INERTIA xy yz zx ',3g14.7)
10951101
FORMAT(10x,
'SECONDARY NODES ')
10961102
FORMAT( 10x,10i10)
10981200
FORMAT(10x,
'PRINCIPAL INERTIA',1p3g20.13)
10991300
FORMAT(/5x,
'RIGID BODY ID',i10)
1101 & 5x,40hrigid body on multidomains
INTERFACE ,/,
1102 & 5x,55h --> mass and inertia matrix are computed in
the engine,/)
1117 . MS ,IN ,X ,ITAB,SKEW,
1118 . B1 ,B2 ,B3 ,B5 ,B6,
1119 . B9 ,ISPH ,TOTMAS,XGT ,YGT ,
1120 . ZGT ,NPBY ,IWA ,V ,VR,
1121 . RBYID,ID ,TITR ,ITAGND ,RBY_INIAXIS)
1135#include "implicit_f.inc"
1139#include "units_c.inc"
1140#include "param_c.inc"
1141#include "com04_c.inc"
1142#include "com01_c.inc"
1146 INTEGER NRB, M, ISPH
1147 INTEGER (*),NPBY(NNPBY,*) ,IWA(*),
1149 INTEGER,
TARGET :: LPBY(*)
1152 . RBY(NRBY,*), MS(*), IN(*), X(3,*), SKEW(LSKEW,*),
1154 . B1, B2, B3, B5, B6, B9,TOTMAS ,XGT ,YGT ,
1155 . ZGT,RBY_INIAXIS(7,*)
1157 CHARACTER(LEN=NCHARTITLE) :: TITR
1161 INTEGER NSL, J, I, N, NONOD,II,NI,K, NSLI,
1162 . rblevel, opt_merge, m_i, nsl_xtra
1165 . xg(3), xm0(3), xx, xy, xz, yy, yz, zz, xiin, inmin,
1166 . v1x2, v2x1, v2x3, v3x2, v3x1, v1x3,
1167 . masrb,dd,inmax, xmg, x_msn0(3), dist
1168 INTEGER,
DIMENSION(:),
POINTER :: LSN, LSN_XTRA
1174 nsl_xtra = npby(14,nrb)+npby(15,nrb)+npby(16,nrb)
1175 nsl = npby(2,nrb) - nsl_xtra
1176 lsn => lpby(npby(11,nrb)+1:npby(11,nrb)+nsl)
1177 rblevel = npby(12,nrb)
1201 IF(iwa(ni)==0)iwa(ni)=-1
1211 IF (rby_iniaxis(1,nrb) > 0)
THEN
1225 IF(iwa(n)>=0.AND.itagnd(n)==0)
THEN
1227 x(j,m) = x(j,m)+x(j,n)*ms(n)
1237 x(j,m) = x(j,m)+x(j,n)*ms(n)
1244 IF(masrb<=1.e-30)
THEN
1247 . anmode=aninfo_blind_1
1250 . c2=
'ON SECONDARY NODES')
1262 IF(npby(15,nrb) > 0)
THEN
1263 lsn_xtra => lpby(npby(11,nrb)+nsl+npby(14,nrb)+1:
1264 . npby(11,nrb)+nsl+npby(14,nrb)+npby(15,nrb))
1273 IF (itagnd(n)/=0) cycle
1275 x(j,m) = x(j,m)+x(j,n)*ms(n)
1286 IF(npby(16,nrb) > 0)
THEN
1287 lsn_xtra => lpby(npby(11,nrb)+nsl+npby(14,nrb)+npby(15,nrb)+1:
1288 . npby(11,nrb)+nsl+npby(14,nrb)+npby(15,nrb)+npby(16,nrb))
1291 IF (itagnd(n)/=0) cycle
1305 xx=(x(1,n)-x(1,m))*(x(1,n)-x(1,m))
1307 xz=(x(1,n)-x(1,m))*(x(3,n)-x(3,m))
1308 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
1309 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
1310 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
1311 rby(1,nrb)=rby(1,nrb)+in(n)+(yy+zz)*ms(n)
1312 rby(2,nrb)=rby(2,nrb)-xy*ms(n)
1313 rby(3,nrb)=rby(3,nrb)-xz*ms(n)
1314 rby(4,nrb)=rby(4,nrb)-xy*ms(n)
1315 rby(5,nrb)=rby(5,nrb)+in(n)+(zz+xx)*ms(n)
1316 rby(6,nrb)=rby(6,nrb)-yz*ms(n)
1317 rby(7,nrb)=rby(7,nrb)-xz*ms(n)
1318 rby(8,nrb)=rby(8,nrb)-yz*ms(n)
1319 rby(9,nrb)=rby(9,nrb)+in(n)+(xx+yy)*ms(n)
1322 xx=(x(1,n)-x(1,m))*(x(1,n)-x(1,m))
1323 xy=(x(1,n)-x(1,m))*(x(2,n)-x(2,m))
1324 xz=(x(1,n)-x(1,m))*(x(3,n)-x(3,m))
1325 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
1326 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
1327 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
1328 rby(1,nrb)=rby(1,nrb)+(yy+zz)*ms(n)+rby(17,ni)
1329 rby(2,nrb)=rby(2,nrb)-xy*ms(n)+rby(18,ni)
1330 rby(3,nrb)=rby(3,nrb)-xz*ms(n)+rby(19,ni)
1331 rby(4,nrb)=rby(4,nrb)-xy*ms(n)+rby(20,ni)
1332 rby(5,nrb)=rby(5,nrb)+(zz+xx)*ms(n)+rby(21,ni)
1333 rby(6,nrb)=rby(6,nrb)-yz*ms(n)+rby(22,ni)
1334 rby(7,nrb)=rby(7,nrb)-xz*ms(n)+rby(23,ni)
1335 rby(8,nrb)=rby(8,nrb)-yz*ms(n)+rby(24,ni)
1336 rby(9,nrb)=rby(9,nrb)+(xx+yy)*ms(n)+rby(25,ni)
1340 ELSEIF(n2d == 1)
THEN
1346 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
1347 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
1348 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
1349 rby(1,nrb)=rby(1,nrb)+in(n)+(yy+zz)*ms(n)
1353 rby(5,nrb)=rby(5,nrb)+in(n)+zz*ms(n)
1357 rby(9,nrb)=rby(9,nrb)+in(n)+yy*ms(n)
1360 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
1361 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
1362 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
1363 rby(1,nrb)=rby(1,nrb)+(yy+zz)*ms(n)+rby(17,ni)
1367 rby(5,nrb)=rby(5,nrb)+zz*ms(n)+rby(21,ni)
1371 rby(9,nrb)=rby(9,nrb)+yy*ms(n)+rby(25,ni)
1375 ELSEIF(n2d == 2)
THEN
1381 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
1382 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
1383 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
1384 rby(1,nrb)=rby(1,nrb)+in(n)+(yy+zz)*ms(n)
1388 rby(5,nrb)=rby(5,nrb)+in(n)+zz*ms(n)
1389 rby(6,nrb)=rby(6,nrb)-yz*ms(n)
1391 rby(8,nrb)=rby(8,nrb)-yz*ms(n)
1392 rby(9,nrb)=rby(9,nrb)+in(n)+yy*ms(n)
1395 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
1396 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
1397 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
1402 rby(5,nrb)=rby(5,nrb)+zz*ms(n)+rby(21,ni)
1403 rby(6,nrb)=rby(6,nrb)-yz*ms(n)+rby(22,ni)
1405 rby(8,nrb)=rby(8,nrb)-yz*ms(n)+rby(24,ni)
1406 rby(9,nrb)=rby(9,nrb)+yy*ms(n)+rby(25,ni)
1415 IF((npby(15,nrb)+npby(16,nrb)) > 0)
THEN
1417 lsn_xtra => lpby(npby(11,nrb)+nsl+npby(14,nrb)+1:
1418 . npby(11,nrb)+nsl+npby(14,nrb)+npby(15,nrb)+npby(16,nrb))
1421 DO i=1,npby(15,nrb)+npby(16,nrb)
1423 IF (itagnd(n)/=0) cycle
1424 xx=(x(1,n)-x(1,m))*(x(1,n)-x(1,m))
1425 xy=(x(1,n)-x(1,m))*(x(2,n)-x(2,m))
1426 xz=(x(1,n)-x(1,m))*(x(3,n)-x(3,m))
1427 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
1428 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
1429 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
1430 rby(1,nrb)=rby(1,nrb)+in(n)+(yy+zz)*ms(n)
1431 rby(2,nrb)=rby(2,nrb)-xy*ms(n)
1433 rby(4,nrb)=rby(4,nrb)-xy*ms(n)
1434 rby(5,nrb)=rby(5,nrb)+in(n)+(zz+xx)*ms(n
1435 rby(6,nrb)=rby(6,nrb)-yz*ms(n
1436 rby(7,nrb)=rby(7,nrb)-xz*ms(n)
1437 rby(8,nrb)=rby(8,nrb)-yz*ms(n)
1438 rby(9,nrb)=rby(9,nrb)+in(n)+(xx+yy)*ms(n)
1441 DO i=1,npby(15,nrb)+npby(16,nrb)
1443 IF (itagnd(n)/=0) cycle
1444 yy=(x(2,n)-x(2,m))*(x(2,n)-x(2,m))
1445 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
1446 rby(1,nrb)=rby(1,nrb)+in(n)+(yy+zz)*ms(n)
1447 rby(5,nrb)=rby(5,nrb)+in(n)+zz*ms(n)
1448 rby(9,nrb)=rby(9,nrb)+in(n)+yy*ms(n)
1451 DO i=1,npby(15,nrb)+npby(16,nrb)
1453 IF (itagnd(n)/=0) cycle
1454 yy=(x(2,n)-x(2,m))*(x(2,n)
1455 yz=(x(2,n)-x(2,m))*(x(3,n)-x(3,m))
1456 zz=(x(3,n)-x(3,m))*(x(3,n)-x(3,m))
1457 rby(1,nrb)=rby(1,nrb)+in(n)+(yy+zz)*ms(n)
1458 rby(5,nrb)=rby(5,nrb)+in(n)+zz*ms(n)
1459 rby(6,nrb)=rby(6,nrb)-yz*ms(n)
1460 rby(8,nrb)=rby(8,nrb)-yz*ms(n)
1461 rby(9,nrb)=rby(9,nrb)+in(n)+yy*ms(n)
1470 IF((npby(12,i)) == rblevel-1)
THEN
1476 opt_merge = npby(13,i)
1477 npby(11,nrb) = npby(11,i)
1478 npby(2,nrb) = npby(2,nrb)+npby(2,i)
1481 IF(opt_merge == 2)
THEN
1483 x(j,m)=x(j,m)*masrb+x(j,m_i)*rby(14,i)
1485 masrb = masrb + rby(14,i)
1489 ELSEIF(opt_merge == 3)
THEN
1490 masrb = masrb + rby(14,i)
1496 IF(opt_merge == 2)
THEN
1498 xx=(xg(1)-x(1,m))*(xg(1)-x(1,m))
1499 xy=(xg(1)-x(1,m))*(xg(2)-x(2,m))
1500 xz=(xg(1)-x(1,m))*(xg(3)-x(3,m))
1501 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
1502 yz=(xg(2)-x(2,m))*(xg(3)-x(3,m))
1503 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
1504 rby(1,nrb)=rby(1,nrb)+(yy+zz)*xmg
1505 rby(2,nrb)=rby(2,nrb)-xy*xmg
1506 rby(3,nrb)=rby(3,nrb)-xz*xmg
1507 rby(4,nrb)=rby(4,nrb)-xy*xmg
1508 rby(5,nrb)=rby(5,nrb)+(zz+xx)*xmg
1509 rby(6,nrb)=rby(6,nrb)-yz*xmg
1510 rby(7,nrb)=rby(7,nrb)-xz*xmg
1511 rby(8,nrb)=rby(8,nrb)-yz*xmg
1512 rby(9,nrb)=rby(9,nrb)+(xx+yy)*xmg
1514 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
1515 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
1516 rby(1,nrb)=rby(1,nrb)+(yy+zz)*xmg
1520 rby(5,nrb)=rby(5,nrb)+zz*xmg
1524 rby(9,nrb)=rby(9,nrb)+yy*xmg
1526 yy=(xg(2)-x(2,m))*(xg(2)-x(2,m))
1527 yz=(xg(2)-x(2,m))*(xg(3)-x(3,m))
1528 zz=(xg(3)-x(3,m))*(xg(3)-x(3,m))
1529 rby(1,nrb)=rby(1,nrb)+(yy+zz)*xmg
1533 rby(5,nrb)=rby(5,nrb)+zz*xmg
1534 rby(6,nrb)=rby(6,nrb)-yz*xmg
1536 rby(8,nrb)=rby(8,nrb)-yz*xmg
1537 rby(9,nrb)=rby(9,nrb)+yy*xmg
1540 IF(opt_merge > 1)
THEN
1542 xx=(x(1,m_i)-x(1,m))*(x(1,m_i)-x(1,m))
1543 xy=(x(1,m_i)-x(1,m))*(x(2,m_i)-x(2,m))
1544 xz=(x(1,m_i)-x(1,m))*(x(3,m_i)-x(3,m))
1545 yy=(x(2,m_i)-x(2,m))*(x(2,m_i)-x(2,m))
1546 yz=(x(2,m_i)-x(2,m))*(x(3,m_i)-x(3,m))
1547 zz=(x(3,m_i)-x(3,m))*(x(3,m_i)-x(3,m))
1548 rby(1,nrb)=rby(1,nrb)+rby(1,i)+(yy+zz)*rby(14,i)
1549 rby(2,nrb)=rby(2,nrb)+rby(2,i)-xy*rby(14,i)
1550 rby(3,nrb)=rby(3,nrb)+rby(3,i)-xz*rby(14,i)
1551 rby(4,nrb)=rby(4,nrb)+rby(4,i)-xy*rby(14,i)
1552 rby(5,nrb)=rby(5,nrb)+rby(5,i)+(zz+xx)*rby(14,i)
1553 rby(6,nrb)=rby(6,nrb)+rby(6,i)-yz*rby(14,i)
1554 rby(7,nrb)=rby(7,nrb)+rby(7,i)-xz*rby(14,i)
1555 rby(8,nrb)=rby(8,nrb)+rby(8,i)-yz*rby(14,i)
1556 rby(9,nrb)=rby(9,nrb)+rby(9,i)+(xx+yy)*rby(14,i)
1558 yy=(x(2,m_i)-x(2,m))*(x(2,m_i)-x(2,m))
1559 zz=(x(3,m_i)-x(3,m))*(x(3,m_i)-x
1560 rby(1,nrb)=rby(1,nrb)+rby(1,i)+(yy+zz)*rby(14,i)
1561 rby(5,nrb)=rby(5,nrb)+rby(5,i)+zz*rby(14,i)
1562 rby(9,nrb)=rby(9,nrb)+rby(9,i)+yy*rby(14,i)
1564 yy=(x(2,m_i)-x(2,m))*(x(2,m_i)-x(2,m))
1565 yz=(x(2,m_i)-x(2,m))*(x(3,m_i)-x(3,m))
1566 zz=(x(3,m_i)-x(3,m))*(x(3,m_i)-x(3,m))
1567 rby(1,nrb)=rby(1,nrb)+rby(1,i)+(yy+zz)*rby(14,i)
1568 rby(5,nrb)=rby(5,nrb)+rby(5,i)+zz*rby(14,i)
1569 rby(6,nrb)=rby(6,nrb)-yz*rby(14,i)
1570 rby(8,nrb)=rby(8,nrb)-yz*rby(14,i)
1571 rby(9,nrb)=rby(9,nrb)+rby(9,i)+yy*rby(14,i)
1578 ELSEIF(npby(12,i) == rblevel)
THEN
1587 IF(rblevel == 0)
THEN
1589 lsn => lpby(npby(11,nrb)+1:npby(11,nrb)+nsl)
1596 WRITE(iout,1100) rbyid,nonod,x(1,m),x(2,m),x(3,m),
1597 . masrb,rby(1,nrb),rby(5,nrb),rby(9,nrb),
1598 . rby(2,nrb),rby(6,nrb),rby(3,nrb)
1604 rby(11,nrb) = rby(5,nrb)
1605 rby(12,nrb) = rby(9,nrb)
1610 CALL inepri(rby(10,nrb),rby(1,nrb))
1614 xiin = (rby(10,nrb) + rby(11,nrb) + rby(12,nrb)) * third
1620 WRITE(iout,1100) rbyid,nonod,x(1,m),x(2,m),x(3,m),
1621 . masrb,xiin,xiin,xiin,zero,zero,zero
1622 ELSEIF(isph==2)
THEN
1623 inmin =
min(rby(10,nrb),rby(11,nrb),rby(12,nrb))
1624 inmax =
max(rby(10,nrb),rby(11,nrb),rby(12,nrb))
1625 IF(inmin<=1.e-3*inmax)
THEN
1626 IF(rby(10,nrb)/inmax<em03) rby(10,nrb)=rby(10,nrb)+em01*inmax
1627 IF(rby(11,nrb)/inmax<em03) rby(11,nrb)=rby(11,nrb)+em01*inmax
1628 IF(rby(12,nrb)/inmax<em03) rby(12,nrb)=rby(12,nrb)+em01*inmax
1631 . anmode=aninfo_blind_1,
1637 inmin =
min(rby(10,nrb),rby(11,nrb),rby(12,nrb))
1638 WRITE(iout,1200) rby(10,nrb),rby(11,nrb),rby(12,nrb)
1640 WRITE(iout,1102) (itab(lpby(i+npby(11,nrb))),i=1,nsl)
1646 . anmode=aninfo_blind_1,
1659 IF (rby_iniaxis(1,nrb) > 0)
THEN
1660 dist = sqrt((x(1,m)-x_msn0(1))**2+(x(2,m)-x_msn0(2))**2+(x(3,m)-x_msn0(3))**2)
1661 IF ((dist > zero).AND.
1662 . v(1,m)==rby_iniaxis(2,nrb).AND.
1663 . v(2,m)==rby_iniaxis(3,nrb).AND.
1664 . v(3,m)==rby_iniaxis(4,nrb))
THEN
1666 v1x2=rby_iniaxis(5,nrb)*(x(2,m)-x_msn0(2))
1667 v2x1=rby_iniaxis(6,nrb)*(x(1,m)-x_msn0(1))
1668 v2x3=rby_iniaxis(6,nrb)*(x(3,m)-x_msn0(3))
1669 v3x2=rby_iniaxis(7,nrb)*(x(2,m)-x_msn0(2))
1670 v3x1=rby_iniaxis(7,nrb)*(x(1,m)-x_msn0(1))
1671 v1x3=rby_iniaxis(5,nrb)*(x(3,m)-x_msn0(3))
1672 v(1,m)= v(1,m)+v2x3-v3x2
1673 v(2,m)= v(2,m)+v3x1-v1x3
1674 v(3,m)= v(3,m)+v1x2-v2x1
1681 iwa(n)=
max(iwa(n),0)
1682 v1x2=vr(1,m)*(x(2,n)-x(2,m))
1683 v2x1=vr(2,m)*(x(1,n)-x(1,m))
1684 v2x3=vr(2,m)*(x(3,n)-x(3,m))
1685 v3x2=vr(3,m)*(x(2,n)-x(2,m))
1686 v3x1=vr(3,m)*(x(1,n)-x(1,m))
1687 v1x3=vr(1,m)*(x(3,n)-x(3,m))
1688 v(1,n)= v(1,m)+v2x3-v3x2
1689 v(2,n)= v(2,m)+v3x1-v1x3
1690 v(3,n)= v(3,m)+v1x2-v2x1
1695 ELSEIF(n2d == 1)
THEN
1698 iwa(n)=
max(iwa(n),0)
1703 v3x2=vr(3,m)*(x(2,n)-x(2,m))
1711 ELSEIF(n2d == 2)
THEN
1714 iwa(n)=
max(iwa(n),0)
1718 v1x2=vr(1,m)*(x(2,n)-x(2,m))
1719 v1x3=vr(1,m)*(x(3,n)-x(3,m))
1734 .
' RIGID BODY INITIALIZATION (SENSOR ACTIVATED) '/
1735 .
' ------------------------- ')
17371100
FORMAT(/5x,
'RIGID BODY ID',i10
1738 . /10x,
'PRIMARY NODE ',i10
1739 . /10x,
'NEW X,Y,Z ',1p3g14.7
1740 . /10x,
'NEW MASS ',1g14.7
1741 . /10x,
'NEW INERTIA xx yy zz ',3g14.7
1742 . /10x,
'NEW INERTIA xy yz zx ',3g14.7)
17431200
FORMAT(10x,
'PRINCIPAL INERTIA',1p3g20.13)
17441101
FORMAT(10x,
'SECONDARY NODES ')
17451102
FORMAT( 10x,10i10)