29 SUBROUTINE c3deri3(JFT ,JLT ,PX1 ,PY1 ,PY2 ,
30 . SMSTR ,OFFG ,ISMSTR ,ALPE ,ALDT ,
31 . UX1 ,UX2 ,UX3 ,UY1 ,UY2 ,
32 . UY3 ,NEL ,AREA ,X21G ,Y21G ,
33 . Z21G ,X31G ,Y31G ,Z31G ,X2 ,
35 . E1X ,E1Y ,E1Z ,E2X ,
36 . E2Y ,E2Z ,E3X ,E3Y ,E3Z )
40#include "implicit_f.inc"
48 INTEGER JFT, JLT,ISMSTR,NEL
50 . PX1(*),PY1(*),PY2(*),OFFG(*),ALPE(MVSIZ),AREA(MVSIZ),
51 . E1X(MVSIZ), E1Y(MVSIZ), E1Z(MVSIZ),
52 . E2X(MVSIZ), E2Y(MVSIZ), E2Z(MVSIZ),
53 . E3X(MVSIZ), E3Y(MVSIZ), E3Z(MVSIZ),
54 . UX1(MVSIZ),UX2(MVSIZ),UX3(MVSIZ),UY1(MVSIZ),
55 . x2(mvsiz),y2(mvsiz),x3(mvsiz),y3(mvsiz),
56 . x21g(mvsiz), y21g(mvsiz), z21g(mvsiz),
57 . x31g(mvsiz), y31g(mvsiz), z31g(mvsiz),
58 . uy2(mvsiz),uy3(mvsiz),aldt(mvsiz)
59 DOUBLE PRECISION SMSTR(*)
64 my_real AL1, AL2, AL3, ALMAX
67 x2(i)=e1x(i)*x21g(i)+e1y(i)*y21g(i)+e1z(i)*z21g(i)
68 y2(i)=e2x(i)*x21g(i)+e2y(i)*y21g(i)+e2z(i)*z21g(i)
69 x3(i)=e1x(i)*x31g(i)+e1y(i)*y31g(i)+e1z(i)*z31g(i)
70 y3(i)=e2x(i)*x31g(i)+e2y(i)*y31g(i)+e2z(i)*z31g(i)
77 IF (ismstr == 11)
THEN
79 IF (abs(offg(i)) == one) offg(i)=sign(two,offg(i))
88 IF(abs(offg(i)) == two)
THEN
89 ux2(i) = x2(i)-smstr(ii(1)+i)
90 ux3(i) = x3(i)-smstr(ii(2)+i)
91 uy3(i) = y3(i)-smstr(ii(3)+i)
92 x2(i) = smstr(ii(1)+i)
93 x3(i) = smstr(ii(2)+i)
94 y3(i) = smstr(ii(3)+i)
95 area(i) = half*x2(i)*y3(i)
102 ELSEIF (ismstr == 1.OR.ismstr == 2)
THEN
104 IF(offg(i) == two)
THEN
108 area(i) = half*x2(i)*y3(i)
116 IF (ismstr == 1)
THEN
118 IF (offg(i) == one) offg(i)=two
123 y3(i) = sign(
max(em15,abs(y3(i))),y3(i))
125 py1(i)= half*(x3(i)-x2(i))
131 al2 = (x3(i)-x2(i)) * (x3(i)-x2(i)) + y3(i) * y3(i)
132 al3 = x3(i) * x3(i) + y3(i) * y3(i)
133 almax =
max(al1,al2,al3)
134 aldt(i)= two*area(i) / sqrt(almax)
subroutine c3deri3(jft, jlt, px1, py1, py2, smstr, offg, ismstr, alpe, aldt, ux1, ux2, ux3, uy1, uy2, uy3, nel, area, x21g, y21g, z21g, x31g, y31g, z31g, x2, y2, x3, y3, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)