35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "mvsiz_p.inc"
43
44
45
46 INTEGER, INTENT(IN) :: NEL
47 my_real,
DIMENSION(MVSIZ) ,
INTENT(OUT) ::
area,llsh3n
48 my_real,
DIMENSION(MVSIZ) ,
INTENT(IN) :: voln,
49 . x1, x2, x3, x4, x5, x6,
50 . y1, y2, y3, y4, y5, y6,
51 . z1, z2, z3, z4, z5, z6
52
53
54
55 INTEGER I, J, N
57 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
58 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
59 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
60 . x31(mvsiz), y31(mvsiz), z31(mvsiz),
61 . x32(mvsiz), y32(mvsiz), z32(mvsiz),
62 . x21(mvsiz), y21(mvsiz), z21(mvsiz),
63 . x2l(mvsiz), x3l(mvsiz), y3l(mvsiz),
64 . xn(mvsiz,3) , yn(mvsiz,3) , zn(mvsiz,3)
66 . al1,al2,al3,almax,sum
67
68 DO i=1,nel
69 xn(i,1) = half*(x1(i)+x4(i))
70 yn(i,1) = half*(y1(i)+y4(i))
71 zn(i,1) = half*(z1(i)+z4(i))
72 xn(i,2) = half*(x2(i)+x5(i))
73 yn(i,2) = half*(y2(i)+y5(i))
74 zn(i,2) = half*(z2(i)+z5(i))
75 xn(i,3) = half*(x3(i)+x6(i))
76 yn(i,3) = half*(y3(i)+y6(i))
77 zn(i,3) = half*(z3(i)+z6(i))
78 ENDDO
79 DO i=1,nel
80 x21(i)=xn(i,2)-xn(i,1)
81 y21(i)=yn(i,2)-yn(i,1)
82 z21(i)=zn(i,2)-zn(i,1)
83 x31(i)=xn(i,3)-xn(i,1)
84 y31(i)=yn(i,3)-yn(i,1)
85 z31(i)=zn(i,3)-zn(i,1)
86 x32(i)=xn(i,3)-xn(i,2)
87 y32(i)=yn(i,3)-yn(i,2)
88 z32(i)=zn(i,3)-zn(i,2)
89 ENDDO
90
91 DO i=1,nel
92 e1x(i)= x21(i)
93 e1y(i)= y21(i)
94 e1z(i)= z21(i)
95 x2l(i) = sqrt(e1x(i)*e1x(i)+e1y(i)*e1y(i)+e1z(i)*e1z(i))
96 e1x(i)=e1x(i)/x2l(i)
97 e1y(i)=e1y(i)/x2l(i)
98 e1z(i)=e1z(i)/x2l(i)
99 ENDDO
100
101 DO i=1,nel
102 e3x(i)=y31(i)*z32(i)-z31(i)*y32(i)
103 e3y(i)=z31(i)*x32(i)-x31(i)*z32(i)
104 e3z(i)=x31(i)*y32(i)-y31(i)*x32(i)
105 sum = sqrt(e3x(i)*e3x(i)+e3y(i)*e3y(i)+e3z(i)*e3z(i))
106 e3x(i)=e3x(i)/sum
107 e3y(i)=e3y(i)/sum
108 e3z(i)=e3z(i)/sum
110 ENDDO
111
112 DO i=1,nel
113 e2x(i)=e3y(i)*e1z(i)-e3z(i)*e1y(i)
114 e2y(i)=e3z(i)*e1x(i)-e3x(i)*e1z(i)
115 e2z(i)=e3x(i)*e1y(i)-e3y(i)*e1x(i)
116 sum = sqrt(e2x(i)*e2x(i)+e2y(i)*e2y(i)+e2z(i)*e2z(i))
117 e2x(i)=e2x(i)/sum
118 e2y(i)=e2y(i)/sum
119 e2z(i)=e2z(i)/sum
120 y3l(i)=e2x(i)*x31(i)+e2y(i)*y31(i)+e2z(i)*z31(i)
121 x3l(i)=e1x(i)*x31(i)+e1y(i)*y31(i)+e1z(i)*z31(i)
122 ENDDO
123 DO i=1,nel
124 al1 = x2l(i) * x2l(i)
125 al2 = (x3l(i)-x2l(i)) * (x3l(i)-x2l(i)) + y3l(i) * y3l(i)
126 al3 = x3l(i) * x3l(i) + y3l(i) * y3l(i)
127 almax =
max(al1,al2,al3)
128 llsh3n(i)= almax
129 ENDDO
130
131 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)