34
35
36
37#include "implicit_f.inc"
38
39
40
41#include "mvsiz_p.inc"
42
43
44
45 INTEGER IPART(*), NC(MVSIZ,20)
47 . mass(*), ms(*),partsav(20,*), mss(8,*),deltax2(*),
48 . xx(mvsiz,20), yy(mvsiz,20), zz(mvsiz,20),
49 . vx(mvsiz,20), vy(mvsiz,20), vz(mvsiz,20),sti(*),stifn(*),
50 . volg(mvsiz),rho(mvsiz),dtx(mvsiz),dtelem(mvsiz),mssx(12,*),
51 . rhocp(*), mcp(*), mcps(8,*),mcpsx(12,*), fill(*)
52
53
54
55#include "vect01_c.inc"
56
57
58
59 INTEGER I, IP,N1,N2, IPERM1(20),IPERM2(20),N
60
62 . axx,ayy,azz,axy,ayz,azx,am,bm,fac,masscp
63
64 DATA iperm1/0,0,0,0,0,0,0,0,1,2,3,4,1,2,3,4,5,6,7,8/
65 DATA iperm2/0,0,0,0,0,0,0,0,2,3,4,1,5,6,7,8,6,7,8,5/
66
67
68 DO i=lft,llt
69
70 mass(i)=fill(i)*rho(i)*volg(i)
71 dtelem(i)=
min(dtelem(i),dtx(i))
72 sti(i) = fill(i) * rho(i) * volg(i) * two / sixty4 /
73 .
max(em20,dtx(i)*dtx(i))
74 fac=trhee_over_14
75 am = mass(i)*fac/(eight*fac + twelve)
76 bm = mass(i)*one/(eight*fac + twelve)
77 mss(1,i)=am
78 mss(2,i)=am
79 mss(3,i)=am
80 mss(4,i)=am
81 mss(5,i)=am
82 mss(6,i)=am
83 mss(7,i)=am
84 mss(8,i)=am
85 stifn(nc(i,1))=stifn(nc(i,1))+sti(i)*deltax2(i)
86 stifn(nc(i,2))=stifn(nc(i,2))+sti(i)*deltax2(i)
87 stifn(nc(i,3))=stifn(nc(i,3))+sti(i)*deltax2(i)
88 stifn(nc(i,4))=stifn(nc(i,4))+sti(i)*deltax2(i)
89 stifn(nc(i,5))=stifn(nc(i,5))+sti(i)*deltax2(i)
90 stifn(nc(i,6))=stifn(nc(i,6))+sti(i)*deltax2(i)
91 stifn(nc(i,7))=stifn(nc(i,7))+sti(i)*deltax2(i)
92 stifn(nc(i,8))=stifn(nc(i,8))+sti(i)*deltax2(i)
93 DO n=9,20
94 n1=iperm1(n)
95 n2=iperm2(n)
96 IF(nc(i,n) /= 0)THEN
97 mssx(n-8,i)=bm
98 stifn(nc(i,n))=stifn(nc(i,n))+sti(i)
99 ELSE
100 mss(n1,i)=mss(n1,i)+ half*bm
101 mss(n2,i)=mss(n2,i)+ half*bm
102 stifn(nc(i,n1))=stifn(nc(i,n1)) + half*sti(i)
103 stifn(nc(i,n2))=stifn(nc(i,n2)) + half*sti(i)
104 ENDIF
105 ENDDO
106
107 ip=ipart(i)
108 partsav(1,ip)=partsav(1,ip) + mass(i)
109 partsav(2,ip)=partsav(2,ip)
110 . + am*(xx(i,1)+xx(i,2)+xx(i,3)+xx(i,4)
111 . +xx(i,5)+xx(i,6)+xx(i,7)+xx(i,8))
112 . + bm*(xx(i,9) +xx(i,10)+xx(i,11)+xx(i,12)+xx(i,13)+xx(i,14)
113 . +xx(i,15)+xx(i,16)+xx(i,17)+xx(i,18)+xx(i,19)+xx(i,20))
114 partsav(3,ip)=partsav(3,ip)
115 . + am*(yy(i,1)+yy(i,2)+yy(i,3)+yy(i,4)
116 . +yy(i,5)+yy(i,6)+yy(i,7)+yy(i,8))
117 . + bm*(yy(i,9) +yy(i,10)+yy(i,11)+yy(i,12)+yy(i,13)+yy(i,14)
118 . +yy(i,15)+yy(i,16)+yy(i,17)+yy(i,18)+yy(i,19)+yy(i,20))
119 partsav(4,ip)=partsav(4,ip)
120 . + am*(zz(i,1)+zz(i,2)+zz(i,3)+zz(i,4)
121 . +zz(i,5)+zz(i,6)+zz(i,7)+zz(i,8))
122 . + bm*(zz(i,9) +zz(i,10)+zz(i,11)+zz(i,12)+zz(i,13)+zz(i,14)
123 . +zz(i,15)+zz(i,16)+zz(i,17)+zz(i,18)+zz(i,19)+zz(i,20))
124 axx = am*(xx(i,1)*xx(i,1)+xx(i,2)*xx(i,2)
125 . +xx(i,3)*xx(i,3)+xx(i,4)*xx(i,4)
126 . +xx(i,5)*xx(i,5)+xx(i,6)*xx(i,6)
127 . +xx(i,7)*xx(i,7)+xx(i,8)*xx(i,8))
128 . +bm*(xx(i,9) *xx(i,9) +xx(i,10)*xx(i,10)
129 . +xx(i,11)*xx(i,11)+xx(i,12)*xx(i,12)
130 . +xx(i,13)*xx(i,13)+xx(i,14)*xx(i,14)
131 . +xx(i,15)*xx(i,15)+xx(i,16)*xx(i,16)
132 . +xx(i,17)*xx(i,17)+xx(i,18)*xx(i,18)
133 . +xx(i,19)*xx(i,19)+xx(i,20)*xx(i,20))
134 ayy = am*(yy(i,1)*yy(i,1)+yy(i,2)*yy(i,2)
135 . +yy(i,3)*yy(i,3)+yy(i,4)*yy(i,4)
136 . +yy(i,5)*yy(i,5)+yy(i,6)*yy(i,6)
137 . +yy(i,7)*yy(i,7)+yy(i,8)*yy(i,8))
138 . +bm*(yy(i,9) *yy(i,9) +yy(i,10)*yy(i,10)
139 . +yy(i,11)*yy(i,11)+yy(i,12)*yy(i,12)
140 . +yy(i,13)*yy(i,13)+yy(i,14)*yy(i,14)
141 . +yy(i,15)*yy(i,15)+yy(i,16)*yy(i,16)
142 . +yy(i,17)*yy(i,17)+yy(i,18)*yy(i,18)
143 . +yy(i,19)*yy(i,19)+yy(i,20)*yy(i,20))
144 azz = am*(zz(i,1)*zz(i,1)+zz(i,2)*zz(i,2)
145 . +zz(i,3)*zz(i,3)+zz(i,4)*zz(i,4)
146 . +zz(i,5)*zz(i,5)+zz(i,6)*zz(i,6)
147 . +zz(i,7)*zz(i,7)+zz(i,8)*zz(i,8))
148 . +bm*(zz(i,9) *zz(i,9) +zz(i,10)*zz(i,10)
149 . +zz(i,11)*zz(i,11)+zz(i,12)*zz(i,12)
150 . +zz(i,13)*zz(i,13)+zz(i,14)*zz(i,14)
151 . +zz(i,15)*zz(i,15)+zz(i,16)*zz(i,16)
152 . +zz(i,17)*zz(i,17)+zz(i,18)*zz(i,18)
153 . +zz(i,19)*zz(i,19)+zz(i,20)*zz(i,20))
154 axy = am*(xx(i,1)*yy(i,1)+xx(i,2)*yy(i,2)
155 . +xx(i,3)*yy(i,3)+xx(i,4)*yy(i,4)
156 . +xx(i,5)*yy(i,5)+xx(i,6)*yy(i,6)
157 . +xx(i,7)*yy(i,7)+xx(i,8)*yy(i,8))
158 . +bm*(xx(i,9) *yy(i,9) +xx(i,10)*yy(i,10)
159 . +xx(i,11)*yy(i,11)+xx(i,12)*yy(i,12)
160 . +xx(i,13)*yy(i,13)+xx(i,14)*yy(i,14)
161 . +xx(i,15)*yy(i,15)+xx(i,16)*yy(i,16)
162 . +xx(i,17)*yy(i,17)+xx(i,18)*yy(i,18)
163 . +xx(i,19)*yy(i,19)+xx(i,20)*yy(i,20))
164 ayz = am*(yy(i,1)*zz(i,1)+yy(i,2)*zz(i,2)
165 . +yy(i,3)*zz(i,3)+yy(i,4)*zz(i,4)
166 . +yy(i,5)*zz(i,5)+yy(i,6)*zz(i,6)
167 . +yy(i,7)*zz(i,7)+yy(i,8)*zz(i,8))
168 . +bm*(yy(i,9) *zz(i,9) +yy(i,10)*zz(i,10)
169 . +yy(i,11)*zz(i,11)+yy(i,12)*zz(i,12)
170 . +yy(i,13)*zz(i,13)+yy(i,14)*zz(i,14)
171 . +yy(i,15)*zz(i,15)+yy(i,16)*zz(i,16)
172 . +yy(i,17)*zz(i,17)+yy(i,18)*zz(i,18)
173 . +yy(i,19)*zz(i,19)+yy(i,20)*zz(i,20))
174 azx = am*(zz(i,1)*xx(i,1)+zz(i,2)*xx(i,2)
175 . +zz(i,3)*xx(i,3)+zz(i,4)*xx(i,4)
176 . +zz(i,5)*xx(i,5)+zz(i,6)*xx(i,6)
177 . +zz(i,7)*xx(i,7)+zz(i,8)*xx(i,8))
178 . +bm*(zz(i,9) *xx(i,9) +zz(i,10)*xx(i,10)
179 . +zz(i,11)*xx(i,11)+zz(i,12)*xx(i,12)
180 . +zz(i,13)*xx(i,13)+zz(i,14)*xx(i,14)
181 . +zz(i,15)*xx(i,15)+zz(i,16)*xx(i,16)
182 . +zz(i,17)*xx(i,17)+zz(i
183 . +zz(i,19)*xx(i,19)+zz(i,20)*xx(i,20))
184 partsav(5,ip) =partsav(5,ip) + (ayy+azz)
185 partsav(6,ip) =partsav(6,ip) + (azz+axx)
186 partsav(7,ip) =partsav(7,ip) + (axx+ayy)
187 partsav(8,ip) =partsav(8,ip) - axy
188 partsav(9,ip) =partsav(9,ip) - ayz
189 partsav(10,ip)=partsav(10,ip) - azx
190
191 partsav(11,ip)=partsav(11,ip)
192 . + am*(vx(i,1)+vx(i,2)+vx(i,3)+vx(i,4)
193 . +vx(i,5)+vx(i,6)+vx(i,7)+vx(i,8))
194 . + bm*(vx(i,9) +vx(i,10)+vx(i,11)+vx(i,12)+vx(i,13)+vx(i,14)
195 . +vx(i,15)+vx(i,16)+vx(i,17)+vx(i,18)+vx(i,19)+vx(i,20))
196 partsav(12,ip)=partsav(12,ip)
197 . + am*(vy(i,1)+vy(i,2)+vy(i,3)+vy(i,4)
198 . +vy(i,5)+vy(i,6)+vy(i,7)+vy(i,8))
199 . + bm*(vy(i,9) +vy(i,10)+vy(i,11)+vy(i,12)+vy(i,13)+vy(i,14)
200 . +vy(i,15)+vy(i,16)+vy(i,17)+vy(i,18)+vy(i,19)+vy(i,20))
201 partsav(13,ip)=partsav(13,ip)
202 . + am*(vz(i,1)+vz(i,2)+vz(i,3)+vz(i,4)
203 . +vz(i,5)+vz(i,6)+vz(i,7)+vz(i,8))
204 . + bm*(vz(i,9) +vz(i,10)+vz(i,11)+vz(i,12)+vz(i,13)+vz(i,14)
205 . +vz(i,15)+vz(i,16)+vz(i,17)+vz(i,18)+vz(i,19)+vz(i,20))
206 partsav(14,ip)=partsav(14,ip) + half *
207 . (am*(vx(i,1)*vx(i,1)+vx(i,2)*vx(i,2)
208 . +vx(i,3)*vx(i,3)+vx(i,4)*vx(i,4)
209 . +vx(i,5)*vx(i,5)+vx(i,6)*vx(i,6)
210 . +vx(i,7)*vx(i,7)+vx(i,8)*vx(i,8)
211 . +vy(i,1)*vy(i,1)+vy(i,2)*vy(i,2)
212 . +vy(i,3)*vy(i,3)+vy(i,4)*vy(i,4)
213 . +vy(i,5)*vy(i,5)+vy(i,6)*vy(i,6)
214 . +vy(i,7)*vy(i,7)+vy(i,8)*vy(i,8)
215 . +vz(i,1)*vz(i,1)+vz(i,2)*vz(i,2)
216 . +vz(i,3)*vz(i,3)+vz(i,4)*vz(i,4)
217 . +vz(i,5)*vz(i,
218 . +vz(i,7)*vz(i,7)+vz(i,8)*vz(i,8))
219 . +bm*(vx(i,9) *vx(i,9) +vx(i,10)*vx(i,10)
220 . +vx(i,11)*vx(i,11)+vx(i
221 . +vx(i,13)*vx(i,13)+vx(i,14)*vx(i,14)
222 . +vx(i,15)*vx(i,15)+vx(i,16)*vx(i,16)
223 . +vx(i,17)*vx(i,17)+vx(i,18)*vx(i,18)
224 . +vx(i,19)*vx(i,19)+vx(i,20)*vx(i,20)
225 . +vy(i,9) *vy(i,9) +vy(i,10)*vy(i,10)
226 . +vy(i,11)*vy(i,11)+vy(i,12)*vy(i,12)
227 . +vy(i,13)*vy(i,13)+vy(i,14)*vy(i,14)
228 . +vy(i,15)*vy(i,15)+vy(i,16)*vy(i,16)
229 . +vy(i,17)*vy(i,17)+vy(i,18)*vy(i,18)
230 . +vy(i,19)*vy(i,19)+vy(i,20)*vy(i,20)
231 . +vz(i,9) *vz(i,9) +vz(i,10)*vz(i,10)
232 . +vz(i,11)*vz(i,11)+vz(i,12)*vz(i,12)
233 . +vz(i,13)*vz(i,13)+vz(i,14)*vz(i,14)
234 . +vz(i,15)*vz(i,15)+vz(i,16)*vz(i,16)
235 . +vz(i,17)*vz(i,17)+vz(i,18)*vz(i,18)
236 . +vz(i,19)*vz(i,19)+vz(i,20)*vz(i,20)))
237 ENDDO
238
239
240
241 IF(jthe < 0 ) THEN
242 DO i=lft,llt
243 masscp=fill(i)*rhocp(i)*volg(i)
244 fac=trhee_over_14
245 am = masscp*fac/(eight*fac + twelve)
246 bm = masscp*one/(eight*fac + twelve)
247 mcps(1,i)=am
248 mcps(2,i)=am
249 mcps(3,i)=am
250 mcps(4,i)=am
251 mcps(5,i)=am
252 mcps(6,i)=am
253 mcps(7,i)=am
254 mcps(8,i)=am
255 DO n=9,20
256 n1=iperm1(n)
257 n2=iperm2(n)
258 IF(nc(i,n) /= 0)THEN
259 mcpsx(n-8,i)=bm
260 ELSE
261 mcps(n1,i)=mcps(n1,i)+ half*bm
262 mcps(n2,i)=mcps(n2,i)+ half*bm
263 ENDIF
264 ENDDO
265 ENDDO
266 ENDIF
267
268 RETURN