34 SUBROUTINE rigid_mat(NRB, GNSL ,LSN , NSLNRM ,STIFN,
35 . STIFR, X, V ,MS ,IN ,
36 . RBYM, IRBYM ,LCRBM,NOM_OPT)
51#include "implicit_f.inc"
60 INTEGER LSN(*), NSLNRM(*),IRBYM(NIRBYM,NRB) ,LCRBM(GNSL)
61 my_real rbym(nfrbym,*), ms(*), in(*), x(3,*),v(3,*), stifn(*),stifr(*)
62 INTEGER NOM_OPT(LNOPT1,*)
71 INTEGER , NOSKEW, I, N, NONOD,ICDG,KK,NR,NSL,IR
72 my_real XG(3), XM0(3), XMG, XX, XY, XZ, YY, YZ, ZZ, XIIN, INMIN,
73 . masrb,dd,tol, ii1,ii2,ii3,ii4,ii5,ii6,ii7,ii8,ii9,rby(20)
75 CHARACTER(LEN=NCHARTITLE) :: TITR
83 id=nom_opt(1,nrbykin+nr)
84 CALL fretitl2(titr, nom_opt(lnopt1-ltitr+1,nrbykin+nr),ltitr)
101 xg(j) = xg(j) + x(j,n)*ms(n)
103 masrb = masrb + ms(n)
111 . anmode=aninfo_blind_1
114 . c2=
'ON SECONDARY NODES')
121 rbym(1 + j,nr) = xg(j)
128 xx=(x(1,n) - xg(1))*(x(1,n) - xg(1))
129 xy=(x(1,n) - xg(1))*(x(2,n) - xg(2))
130 xz=(x(1,n) - xg(1))*(x(3,n) - xg(3))
131 yy=(x(2,n) - xg(2))*(x(2,n) - xg(2))
132 yz=(x(2,n) - xg(2))*(x(3,n) - xg(3))
133 zz=(x(3,n) - xg(3))*(x(3,n) - xg(3))
134 rby(1) = rby(1) + in(n)+(yy+zz)*ms(n)
135 rby(2) = rby(2) - xy*ms(n)
136 rby(3) = rby(3) - xz*ms(n)
137 rby(4) = rby(4) - xy*ms(n)
138 rby(5) = rby(5) + in(n)+(zz+xx)*ms(n)
139 rby(6) = rby(6) - yz*ms(n)
140 rby(7) = rby(7) - xz*ms(n)
141 rby(8) = rby(8) - yz*ms(n)
142 rby(9) = rby(9) + in(n)+(xx+yy)*ms(n)
149 rbym(27,nr)= rbym(27,nr) + stifn(i + kk)
150 dd = (x(1,n)-xg(1))**2 + (x(2,n)-xg(2))**2 + (x(3,n)-xg(3))**2
151 rbym(28,nr) = rbym(28,nr) + (stifr(i + kk) + dd*stifn(i + kk))
162 WRITE(iout,1100) nr,nsl,xg(1),xg(2),xg(3),
165 write(iout,1400) (lcrbm(i + kk ), i=1,nsl)
167 inmin =
min(rby(10),rby(11),rby(12))
170 IF(rby(10)>=rby(11).AND.rby(10)>=rby(12))
THEN
171 IF(rby(10)>(rby(11)+rby(12))*tol)
THEN
173 . msgtype=msgwarning,
174 . anmode=aninfo_blind_1,
181 ELSEIF(rby(11)>=rby(10).AND.rby(11)>=rby(12))
THEN
182 IF(rby(11)>(rby(10)+rby(12))*tol)
THEN
184 . msgtype=msgwarning,
185 . anmode=aninfo_blind_1,
192 ELSEIF(rby(12)>=rby(10).AND.rby(12)>=rby(11))
THEN
193 IF(rby(12)>(rby(10)+rby(11))*tol)
THEN
195 . msgtype=msgwarning,
196 . anmode=aninfo_blind_1,
208 . anmode=aninfo_blind_1,
211 ELSEIF(inmin<=1.e-10*
max(rby(10),rby(11),rby(12)))
THEN
214 . msgtype=msgwarning,
215 . anmode=aninfo_blind_1,
230 rbym(14,nr) = rby(10)
231 rbym(15,nr) = rby(11)
232 rbym(16,nr) = rby(12)
233 rbym(17,nr) =
min(rby(10),rby(11),rby
247 rbym(18,nr)=rby(1)*ii1 + rby(4)*ii4 + rby(7)*ii7
248 rbym(19,nr)=rby(1)*ii2 + rby(4)*ii5
249 rbym(20,nr)=rby(1)*ii3 + rby(4)*ii6 + rby(7)*ii9
250 rbym(21,nr)=rby(2)*ii1 + rby
251 rbym(22,nr)=rby(2)*ii2 + rby(5)*ii5 + rby(8)*ii8
252 rbym(23,nr)=rby(2)*ii3 + rby(5)*ii6 + rby(8)*ii9
253 rbym(24,nr)=rby(3)*ii1 + rby(6)*ii4 + rby(9)*ii7
254 rbym(25,nr)=rby(3)*ii2 + rby(6)*ii5 + rby(9)*ii8
255 rbym(26,nr)=rby(3)*ii3 + rby(6)*ii6 + rby(9)*ii9
262 .
' RIGID BODY INITIALIZATION '/
263 .
' ------------------------- ')
2641100
FORMAT(/5x,
'RIGID BODY ID',i10
265 . /5x,
'NUMBER OF SECONDARY NODE' ,i10
266 . /10x,
'NEW X,Y,Z ',3g14.7
267 . /10x,
'NEW MASS ',1g14.7)
2701200
FORMAT(10x,
'PRINCIPAL INERTIE ',1p3g14.7)
2711300
FORMAT(10x,
'SECONDARY NODES ')
2721400
FORMAT(10x,10i10)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)