169
170
171
172#include "implicit_f.inc"
173
174
175
176#include "mvsiz_p.inc"
177
178
179
180 INTEGER JFT, JLT,NEL
181 INTEGER IXC(NIXC,*)
183 . x(3,*), offg(*), dr(3,*),
184 . e1x(*), e1y(*), e1z(*),
185 . e2x(*), e2y(*), e2z(*),e3x(*), e3y(*), e3z(*),
186 . smstr(*),
area(*),px1(*),px2(*),py1(*),py2(*),
187 . v13x(*),v24x(*),v13y(*),v24y(*)
188
189
190
191 INTEGER I, J, II(9),NN(4)
193 . x0g2(mvsiz),x0g3(mvsiz),x0g4(mvsiz),y0g2(mvsiz),
194 . y0g3(mvsiz),y0g4(mvsiz),z0g2(mvsiz),z0g3(mvsiz),z0g4(mvsiz),
195 . off_l,vg13(3),vg24(3),
196 . xl2(mvsiz),xl3(mvsiz),xl4(mvsiz),yl2(mvsiz),yl3(mvsiz),
197 . yl4(mvsiz),uxyz(mvsiz,3,4),a_i(mvsiz)
198
199 DO i=1,9
200 ii(i) = nel*(i-1)
201 ENDDO
202
203 DO i=jft,jlt
204 IF(abs(offg(i))==one)offg(i)=sign(two,offg(i))
205 uxyz(i,1:3,1:4)= zero
206 nn(1)=ixc(2,i)
207 nn(2)=ixc(3,i)
208 nn(3)=ixc(4,i)
209 nn(4)=ixc(5,i)
210 x0g2(i) = x(1,nn(2))-x(1,nn(1))
211 y0g2(i) = x(2,nn(2))-x(2,nn(1))
212 z0g2(i) = x(3,nn(2))-x(3,nn(1))
213 x0g3(i) = x(1,nn(3))-x(1,nn(1))
214 y0g3(i) = x(2,nn(3))-x(2,nn(1))
215 z0g3(i) = x(3,nn(3))-x(3,nn(1))
216 x0g4(i) = x(1,nn(4))-x(1,nn(1))
217 y0g4(i) = x(2,nn(4))-x(2,nn(1))
218 z0g4(i) = x(3,nn(4))-x(3,nn(1))
219 IF(abs(offg(i))==two)THEN
220 uxyz(i,1,2) = x0g2(i)-smstr(ii(1)+i)
221 uxyz(i,2,2) = y0g2(i)-smstr(ii(2)+i)
222 uxyz(i,3,2) = z0g2(i)-smstr(ii(3)+i)
223 uxyz(i,1,3) = x0g3(i)-smstr(ii(4)+i)
224 uxyz(i,2,3) = y0g3(i)-smstr(ii(5)+i)
225 uxyz(i,3,3) = z0g3(i)-smstr(ii(6)+i)
226 uxyz(i,1,4) = x0g4(i)-smstr(ii(7)+i)
227 uxyz(i,2,4) = y0g4(i)-smstr(ii(8)+i)
228 uxyz(i,3,4) = z0g4(i)-smstr(ii(9)+i)
229
230 x0g2(i) = smstr(ii(1)+i)
231 y0g2(i) = smstr(ii(2)+i)
232 z0g2(i) = smstr(ii(3)+i)
233 x0g3(i) = smstr(ii(4)+i)
234 y0g3(i) = smstr(ii(5)+i)
235 z0g3(i) = smstr(ii(6)+i)
236 x0g4(i) = smstr(ii(7)+i)
237 y0g4(i) = smstr(ii(8)+i)
238 z0g4(i) = smstr(ii(9)+i)
239
240 ELSE
241 smstr(ii(1)+i)= x0g2(i)
242 smstr(ii(2)+i)= y0g2(i)
243 smstr(ii(3)+i)= z0g2(i)
244 smstr(ii(4)+i)= x0g3(i)
245 smstr(ii(5)+i)= y0g3(i)
246 smstr(ii(6)+i)= z0g3(i)
247 smstr(ii(7)+i)= x0g4(i)
248 smstr(ii(8)+i)= y0g4(i)
249 smstr(ii(9)+i)= z0g4(i)
250 ENDIF
251 ENDDO
252
253 DO i=jft,jlt
254 xl2(i)=e1x(i)*x0g2(i)+e1y(i)*y0g2(i)+e1z(i)*z0g2(i)
255 xl3(i)=e1x(i)*x0g3(i)+e1y(i)*y0g3(i)+e1z(i)*z0g3(i)
256 xl4(i)=e1x(i)*x0g4(i)+e1y(i)*y0g4(i)+e1z(i)*z0g4(i)
257 yl2(i)=e2x(i)*x0g2(i)+e2y(i)*y0g2(i)+e2z(i)*z0g2(i)
258 yl3(i)=e2x(i)*x0g3(i)+e2y(i)*y0g3(i)+e2z(i)*z0g3(i)
259 yl4(i)=e2x(i)*x0g4(i)+e2y(i)*y0g4(i)+e2z(i)*z0g4(i)
260 ENDDO
261 DO i=jft,jlt
262 px1(i)= half*(yl2(i)-yl4(i))
263 py1(i)= half*(xl4(i)-xl2(i))
264 px2(i)= half* yl3(i)
265 py2(i)=-half* xl3(i)
266 area(i)=
max(two*(py2(i)*px1(i)-py1(i)*px2(i)),em20)
267 a_i(i) = one /
area(i)
268 ENDDO
269
270 DO i=jft,jlt
271 vg13(1)=uxyz(i,1,1)-uxyz(i,1,3)
272 vg24(1)=uxyz(i,1,2)-uxyz(i,1,4)
273 vg13(2)=uxyz(i,2,1)-uxyz(i,2,3)
274 vg24(2)=uxyz(i,2,2)-uxyz(i,2,4)
275 vg13(3)=uxyz(i,3,1)-uxyz(i,3,3)
276 vg24(3)=uxyz(i,3,2)-uxyz(i,3,4)
277
278 v13x(i)=e1x(i)*vg13(1)+e1y(i)*vg13(2)+e1z(i)*vg13(3)
279 v24x(i)=e1x(i)*vg24(1)+e1y(i)*vg24(2)+e1z(i)*vg24(3)
280 v13y(i)=e2x(i)*vg13(1)+e2y(i)*vg13(2)+e2z(i)*vg13(3)
281 v24y(i)=e2x(i)*vg24(1)+e2y(i)*vg24(2)+e2z(i)*vg24(3)
282
283 px1(i)=a_i(i)*px1(i)
284 py1(i)=a_i(i)*py1(i)
285 px2(i)=a_i(i)*px2(i)
286 py2(i)=a_i(i)*py2(i)
287 ENDDO
288
289 off_l = zero
290 DO i=jft,jlt
291 off_l =
min(off_l,offg(i))
292 ENDDO
293 IF (off_l < zero) THEN
294 DO i=jft,jlt
295 IF (offg(i) < zero) THEN
296 v13x(i)=zero
297 v24x(i)=zero
298 v13y(i)=zero
299 v24y(i)=zero
300 ENDIF
301 ENDDO
302 ENDIF
303
304 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)