34
35
36
37#include "implicit_f.inc"
38
39
40
41#include "com01_c.inc"
42
43
44
45 INTEGER NSN, IC, ICR, IFLAG
46 INTEGER NOD(*),(*)
47
49 . ms(*), in(*), a(3,*), ar(3,*)
50 DOUBLE PRECISION (15,6)
51
52
53
54 INTEGER I, N,
55
57 . mass, iner, ax, ay, az,
58 . f1(nsn), f2(nsn), f3(nsn), f4(nsn)
59
60 IF(iflag == 1)THEN
61
62
63 DO k = 1, 6
64 frl6(1,k) = zero
65 frl6(2,k) = zero
66 frl6(3,k) = zero
67 frl6(4,k) = zero
68 frl6(5,k) = zero
69 frl6(6,k) = zero
70 frl6(7,k) = zero
71 frl6(8,k) = zero
72 frl6(9,k) = zero
73 frl6(10,k) = zero
74 frl6(11,k) = zero
75 frl6(12,k) = zero
76 frl6(13,k) = zero
77 frl6(14,k) = zero
78 frl6(15,k) = zero
79 END DO
80
81 IF(ic==0)GOTO 150
82
83 DO i=1,nsn
84 n = nod(i)
85 IF(weight(n)==1) THEN
86 f1(i)=ms(n)
87 f2(i)=ms(n)*a(1,n)
88 f3(i)=ms(n)*a(2,n)
89 f4(i)=ms(n)*a(3,n)
90 ELSE
91 f1(i)=zero
92 f2(i)=zero
93 f3(i)=zero
94 f4(i)=zero
95 ENDIF
96 ENDDO
97
98
99
104
105 150 IF(icr==0.OR.iroddl==0)RETURN
106
107 DO i=1,nsn
108 n = nod(i)
109 IF(weight(n)==1) THEN
110 f1(i)=in(n)
111 f2(i)=in(n)*ar(1,n)
112 f3(i)=in(n)*ar(2,n)
113 f4(i)=in(n)*ar(3,n)
114 ELSE
115 f1(i)=zero
116 f2(i)=zero
117 f3(i)=zero
118 f4(i)=zero
119 ENDIF
120 ENDDO
121
122
123
128
129
130 ELSEIF(iflag == 2)THEN
131
132 IF(ic==0)GOTO 250
133
134 mass = frl6(1,1)+frl6(1,2)+frl6(1,3)+
135 + frl6(1,4)+frl6(1,5)+frl6(1,6)
136 ax = frl6(2,1)+frl6(2,2)+frl6(2,3)+
137 + frl6(2,4)+frl6(2,5)+frl6(2,6)
138 ay = frl6(3,1)+frl6(3,2)+frl6(3,3)+
139 + frl6(3,4)+frl6(3,5)+frl6(3,6)
140 az = frl6(4,1)+frl6(4,2)+frl6(4,3)+
141 + frl6(4,4)+frl6(4,5)+frl6(4,6)
142
143 IF(mass==zero)GOTO 250
144 ax=ax/mass
145 ay=ay/mass
146 az=az/mass
147
148 IF(ic==1.OR.ic==3.OR.ic==5.OR.ic==7)THEN
149 DO 110 i=1,nsn
150 n = nod(i)
151 a(3,n) =az
152 110 CONTINUE
153 ENDIF
154 IF(ic==2.OR.ic==3.OR.ic==6.OR.ic==7)THEN
155 DO 120 i=1,nsn
156 n = nod(i)
157 a(2,n) =ay
158 120 CONTINUE
159 ENDIF
160 IF(ic==4.OR.ic==5.OR.ic==6.OR.ic==7)THEN
161 DO 130 i=1,nsn
162 n = nod(i)
163 a(1,n) =ax
164 130 CONTINUE
165 ENDIF
166
167 250 IF(icr==0.OR.iroddl==0)RETURN
168
169 iner = frl6(5,1)+frl6(5,2)+frl6(5,3)+
170 + frl6(5,4)+frl6(5,5)+frl6(5,6)
171 ax = frl6(6,1)+frl6(6,2)+frl6(6,3)+
172 + frl6(6,4)+frl6(6,5)+frl6(6,6)
173 ay = frl6(7,1)+frl6(7,2)+frl6(7,3)+
174 + frl6(7,4)+frl6(7,5)+frl6(7,6)
175 az = frl6(8,1)+frl6(8,2)+frl6(8,3)+
176 + frl6(8,4)+frl6(8,5)+frl6(8,6)
177
178 IF(iner==zero)RETURN
179
180 ax=ax/iner
181 ay=ay/iner
182 az=az/iner
183
184 IF(icr==1.OR.icr==3.OR.icr==5.OR.icr==7)THEN
185 DO 210 i=1,nsn
186 n = nod(i)
187 ar(3,n) =az
188 210 CONTINUE
189 ENDIF
190 IF(icr==2.OR.icr==3.OR.icr==6.OR.icr==7)THEN
191 DO 220 i=1,nsn
192 n = nod(i)
193 ar(2,n) =ay
194 220 CONTINUE
195 ENDIF
196 IF(icr==4.OR.icr==5.OR.icr==6.OR.icr==7)THEN
197 DO 230 i=1,nsn
198 n = nod(i)
199 ar(1,n) =ax
200 230 CONTINUE
201 ENDIF
202 END IF
203
204 RETURN
subroutine sum_6_float(jft, jlt, f, f6, n)