35
36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "param_c.inc"
44#include "com04_c.inc"
45
46
47
48 INTEGER IXRI(4,*), ITAB(*), IKINE(*)
49
51 . v(3,*), vr(3,*), ms(*), in(*), rivet(nrivf,*),
52 . geo(npropg,*)
53
54
55
56 INTEGER I, J, IGL, IG, IROT, K1, K2, IGTYP, IKINE1(3*NUMNOD)
57
59 . xm, xin
60
61 DO i=1,3*numnod
62 ikine1(i) = 0
63 ENDDO
64
65 DO 100 i=1,nrivet
66 rivet(1,i) = one
67 ig=ixri(1,i)
68
69 irot=geo(4,ig)
70 k1=ixri(2,i)
71 k2=ixri(3,i)
72 xm=(ms(k1)+ms(k2))
73 igtyp=geo(12,ig)
74 IF (igtyp/=5) THEN
75
76
77
78
79
81 . msgtype=msgerror,
82 . anmode=aninfo_blind_1,
83 . i1=ixri(4,i),
84 . i2=igtyp)
85 ENDIF
86 IF(ms(k1)<1.e-15.OR.ms(k2)<1.e-15) THEN
87
88
89
90
91
92
93
94 IF(ms(k1)<em15.AND.ms(k2)<em15) THEN
96 . msgtype=msgerror,
97 . anmode=aninfo,
98 . i1=ixri(4,i))
99 END IF
101 . msgtype=msgerror,
102 . anmode=aninfo_blind_1,
103 . i1=ixri(4,i))
104 ENDIF
105 v(1,k1)=(v(1,k1)*ms(k1)+v(1,k2)*ms(k2))/xm
106 v(2,k1)=(v(2,k1)*ms(k1)+v(2,k2)*ms(k2))/xm
107 v(3,k1)=(v(3,k1)*ms(k1)+v(3,k2)*ms(k2))/xm
108 v(1,k2)=v(1,k1)
109 v(2,k2)=v(2,k1)
110 v(3,k2)=v(3,k1)
111 CALL kinset(32,itab(k1),ikine(k1),1,0,ikine1(k1))
112 CALL kinset(32,itab(k1),ikine(k1),2,0,ikine1(k1))
113 CALL kinset(32,itab(k1),ikine(k1),3,0,ikine1(k1))
114 CALL kinset(32,itab(k2),ikine(k2),1,0,ikine1(k2))
115 CALL kinset(32,itab(k2),ikine(k2),2,0,ikine1(k2))
116 CALL kinset(32,itab(k2),ikine(k2),3,0,ikine1(k2))
117 IF(irot==1)THEN
118 CALL kinset(32,itab(k1),ikine(k1),4,0,ikine1(k1))
119 CALL kinset(32,itab(k1),ikine(k1),5,0,ikine1(k1))
120 CALL kinset(32,itab(k1),ikine(k1),6,0,ikine1(k1))
121 CALL kinset(32,itab(k2),ikine(k2),4,0,ikine1(k2))
122 CALL kinset(32,itab(k2),ikine(k2),5,0,ikine1(k2))
123 CALL kinset(32,itab(k2),ikine(k2),6,0,ikine1(k2))
124 IF(in(k1)<em15.AND.in(k2)<em15) THEN
125
126
127
128
129
130
131
133 . msgtype=msgerror,
134 . anmode=aninfo,
135 . i1=ixri(4,i))
136 ENDIF
137 xin=(in(k1)+in(k2))
138 vr(1,k1)=(vr(1,k1)*in(k1)+vr(1,k2)*in(k2))/xin
139 vr(2,k1)=(vr(2,k1)*in(k1)+vr(2,k2)*in(k2))/xin
140 vr(3,k1)=(vr(3,k1)*in(k1)+vr(3,k2)*in(k2))/xin
141 vr(1,k2)=vr(1,k1)
142 vr(2,k2)=vr(2,k1)
143 vr(3,k2)=vr(3,k1)
144 ENDIF
145 100 CONTINUE
146
147 RETURN
subroutine kinset(ik, node, ikine, idir, isk, ikine1)
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)