32 . V ,VR ,VL1 ,VL2 ,VL3 ,
33 . VRL1 ,VRL2 ,VRL3 ,SIGY ,
34 . X1 ,X2 ,X3 ,Y1 ,Y2 ,
35 . Y3 ,Z1 ,Z2 ,Z3 ,XDP )
36 use element_mod ,
only : nixtg
40#include "implicit_f.inc"
56 . OFFG(*), OFF(*),DT1C(*),X(3,*),
57 . V(3,*),VR(3,*),VL1(MVSIZ,3),VL2(MVSIZ,3),VL3(MVSIZ,3),
58 . vrl1(mvsiz,3),vrl2(mvsiz,3),vrl3(mvsiz,3),sigy(*)
60 REAL(kind=8), dimension(3,*),
INTENT(in) :: xdp
61 REAL(kind=8), dimension(mvsiz),
INTENT(out) ::x1,x2,x3
62 REAL(kind=8), dimension(mvsiz),
INTENT(out) ::y1,y2,y3
63 REAL(kind=8), dimension(mvsiz),
INTENT(out) ::z1,z2,z3
69 INTEGER I, NC1, NC2, NC3
149 off(i) =
min(one,abs(offg(i)))
150 off_l =
min(off_l,offg(i))
153 IF (off_l < zero)
THEN
155 IF (offg(i) < zero)
THEN
188 1 DR ,XL2 ,XL3 ,YL2 ,YL3 ,
189 2 E1X ,E1Y ,E1Z ,E2X ,E2Y ,
190 3 E2Z ,E3X ,E3Y ,E3Z ,NEL ,
191 5 V21X ,V31X ,V21Y ,V31Y ,RZ13 ,
192 6 RZ23 ,X2_T ,X3_T ,Y2_T ,Y3_T ,
193 7 AREA ,SMSTR ,ISROT )
194 use element_mod ,
only : nixtg
198#include "implicit_f.inc"
202#include
"mvsiz_p.inc"
206 INTEGER JFT, JLT,ISROT,NEL
207 INTEGER IXTG(NIXTG,*)
209 . X(3,*), OFFG(*), DR(3,*),
210 . E1X(*), E1Y(*), E1Z(*),
211 . E2X(*), E2Y(*), E2Z(*),E3X(*), E3Y(*), E3Z(*),
212 . XL2(*),XL3(*),YL2(*),YL3(*),AREA(*),
213 . V21X(*),V31X(*),V21Y(*),V31Y(*),RZ13(*),RZ23(*),
214 . X2_T(*),X3_T(*),Y2_T(*),Y3_T(*)
220 INTEGER I,II(6),NN(3)
222 . X0G2(MVSIZ),X0G3(MVSIZ),Y0G2(MVSIZ),Y0G3(MVSIZ),OFF_L,
223 . Z0G2(MVSIZ),Z0G3(MVSIZ),AXYZ(MVSIZ,3,3),
224 . E01X(MVSIZ), E01Y(MVSIZ), E01Z(MVSIZ),
225 . E02X(MVSIZ), E02Y(MVSIZ), E02Z(MVSIZ),E03X(MVSIZ),
226 . e03y(mvsiz), e03z(mvsiz),x0l2(mvsiz), x0l3(mvsiz),
227 . y0l2(mvsiz),y0l3(mvsiz),sum(mvsiz),
norm,xl,yl,vr1_12,vr1_21,
228 . rlz1,rlz2,rlz3,areai,x0g32,y0g32,z0g32,dirz(mvsiz,2)
235 IF(abs(offg(i))==one)offg(i)=sign(two,offg(i))
236 axyz(i,1:3,1:3)= zero
242 axyz(i,1,1) = dr(1,nn(1))
243 axyz(i,2,1) = dr(2,nn(1))
244 axyz(i,3,1) = dr(3,nn(1))
245 axyz(i,1,2) = dr(1,nn(2))
246 axyz(i,2,2) = dr(2,nn(2))
247 axyz(i,3,2) = dr(3,nn(2))
248 axyz(i,1,3) = dr(1,nn(3))
249 axyz(i,2,3) = dr(2,nn(3))
250 axyz(i,3,3) = dr(3,nn(3))
253 x0g2(i) = smstr(ii(1)+i)
254 y0g2(i) = smstr(ii(2)+i)
255 z0g2(i) = smstr(ii(3)+i)
256 x0g3(i) = smstr(ii(4)+i)
257 y0g3(i) = smstr(ii(5)+i)
258 z0g3(i) = smstr(ii(6)+i)
265 sum(i) = sqrt(e01x(i)*e01x(i)+e01y(i)*e01y(i)+e01z(i)*e01z(i))
266 e01x(i)=e01x(i)/sum(i)
267 e01y(i)=e01y(i)/sum(i)
268 e01z(i)=e01z(i)/sum(i)
272 x0g32=x0g3(i)-x0g2(i)
273 y0g32=y0g3(i)-y0g2(i)
274 z0g32=z0g3(i)-z0g2(i)
275 e03x(i)=y0g3(i)*z0g32-z0g3(i)*y0g32
276 e03y(i)=z0g3(i)*x0g32-x0g3(i)*z0g32
277 e03z(i)=x0g3(i)*y0g32-y0g3(i)*x0g32
278 sum(i) = sqrt(e03x(i)*e03x(i)+e03y(i)*e03y(i)+e03z(i)*e03z(i))
279 e03x(i)=e03x(i)/sum(i)
280 e03y(i)=e03y(i)/sum(i)
281 e03z(i)=e03z(i)/sum(i)
282 area(i) = half * sum(i)
286 e02x(i)=e03y(i)*e01z(i)-e03z(i)*e01y(i)
287 e02y(i)=e03z(i)*e01x(i)-e03x(i)*e01z(i)
288 e02z(i)=e03x(i)*e01y(i)-e03y(i)*e01x(i)
289 sum(i) = sqrt(e02x(i)*e02x(i)+e02y(i)*e02y(i)+e02z(i)*e02z(i))
290 e02x(i)=e02x(i)/sum(i)
291 e02y(i)=e02y(i)/sum(i)
292 e02z(i)=e02z(i)/sum(i)
298 vr1_12=e01x(i)*e2x(i)+e01y(i)*e2y(i)+e01z(i)*e2z(i)
299 vr1_21=e02x(i)*e1x(i)+e02y(i)*e1y(i)+e02z(i)*e1z(i)
300 dirz(i,2) = half*(vr1_12-vr1_21)
301 norm = one-dirz(i,2)*dirz(i,2)
302 dirz(i,1) = sqrt(
max(zero,
norm))
305 x0l2(i)=e01x(i)*x0g2(i)+e01y(i)*y0g2(i)+e01z(i)*z0g2(i)
306 y0l2(i)=e02x(i)*x0g2(i)+e02y(i)*y0g2(i)+e02z(i)*z0g2(i)
307 x0l3(i)=e01x(i)*x0g3(i)+e01y(i)*y0g3(i)+e01z(i)*z0g3(i)
308 y0l3(i)=e02x(i)*x0g3(i)+e02y(i)*y0g3(i)+e02z(i)*z0g3(i)
314 xl= x0l2(i)*dirz(i,1)-y0l2(i)*dirz(i,2)
315 yl= x0l2(i)*dirz(i,2)+y0l2(i)*dirz(i,1)
318 xl= x0l3(i)*dirz(i,1)-y0l3(i)*dirz(i,2)
319 yl= x0l3(i)*dirz(i,2)+y0l3(i)*dirz(i,1)
325 v21x(i)=xl2(i)-x0l2(i)
326 v31x(i)=xl3(i)-x0l3(i)
327 v21y(i)=yl2(i)-y0l2(i)
328 v31y(i)=yl3(i)-y0l3(i)
339 areai=half/
max(em20,area(i))
340 rlz1 =e3x(i)*axyz(i,1,1)+e3y(i)*axyz(i,2,1)+e3z(i)*axyz(i,3,1)
341 rlz2 =e3x(i)*axyz(i,1,2)+e3y(i)*axyz(i,2,2)+e3z(i)*axyz(i,3,2)
342 rlz3 =e3x(i)*axyz(i,1,3)+e3y(i)*axyz(i,2,3)+e3z(i)*axyz(i,3,3)
343 rz13(i)=(rlz1-rlz3)*areai
344 rz23(i)=(rlz2-rlz3)*areai
350 off_l =
min(off_l,offg(i))
352 IF (off_l < zero)
THEN
354 IF (offg(i) < zero)
THEN
subroutine c3coor3(jft, jlt, x, ixtg, offg, off, dt1c, v, vr, vl1, vl2, vl3, vrl1, vrl2, vrl3, sigy, x1, x2, x3, y1, y2, y3, z1, z2, z3, xdp)
subroutine c3coort3(jft, jlt, x, ixtg, offg, dr, xl2, xl3, yl2, yl3, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, nel, v21x, v31x, v21y, v31y, rz13, rz23, x2_t, x3_t, y2_t, y3_t, area, smstr, isrot)