37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
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(*)
60
61
62
63 INTEGER I, II(3)
65
66 DO i=jft,jlt
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)
71 ENDDO
72
73 DO i=1,3
74 ii(i) = nel*(i-1)
75 ENDDO
76
77 IF (ismstr == 11) THEN
78 DO i=jft,jlt
79 IF (abs(offg(i)) == one) offg(i)=sign(two,offg(i))
80 ENDDO
81 DO i=jft,jlt
82 ux1(i) = zero
83 uy1(i) = zero
84 ux2(i) = zero
85 uy2(i) = zero
86 ux3(i) = zero
87 uy3(i) = zero
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)
96 ELSE
97 smstr(ii(1)+i)=x2(i)
98 smstr(ii(2)+i)=x3(i)
99 smstr(ii(3)+i)=y3(i)
100 ENDIF
101 ENDDO
102 ELSEIF (ismstr == 1.OR.ismstr == 2) THEN
103 DO i=jft,jlt
104 IF(offg(i) == two)THEN
105 x2(i)=smstr(ii(1)+i)
106 x3(i)=smstr(ii(2)+i)
107 y3(i)=smstr(ii(3)+i)
108 area(i) = half*x2(i)*y3(i)
109 ELSE
110 smstr(ii(1)+i)=x2(i)
111 smstr(ii(2)+i)=x3(i)
112 smstr(ii(3)+i)=y3(i)
113 ENDIF
114 ENDDO
115 ENDIF
116 IF (ismstr == 1) THEN
117 DO i=jft,jlt
118 IF (offg(i) == one) offg(i)=two
119 ENDDO
120 ENDIF
121
122 DO i=jft,jlt
123 y3(i) = sign(
max(em15,abs(y3(i))),y3(i))
124 px1(i)=-half*y3(i)
125 py1(i)= half*(x3(i)-x2(i))
126 py2(i)=-half*x3(i)
127 ENDDO
128
129 DO i=jft,jlt
130 al1 = x2(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)
135 alpe(i)=one
136 ENDDO
137
138 RETURN
139
subroutine area(d1, x, x2, y, y2, eint, stif0)