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 , 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
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)