37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48
49
50
51 INTEGER, INTENT(IN) :: NEL
52 my_real,
DIMENSION(MVSIZ) ,
INTENT(OUT) ::
area,llsh
53 my_real,
DIMENSION(MVSIZ) ,
INTENT(IN) ::
54 . voln,
55 . x1, x2, x3, x4, x5, x6, x7, x8,
56 . y1, y2, y3, y4, y5, y6, y7, y8,
57 . z1, z2, z3, z4, z5, z6, z7, z8
58
59
60
61 INTEGER I, J, N
63 . rx(mvsiz),ry(mvsiz),rz(mvsiz),sx(mvsiz),sy(mvsiz),sz(mvsiz),
64 . xn(mvsiz,4) , yn(mvsiz,4) , zn(mvsiz,4)
66 . al1,al2,e3x,e3y,e3z,det
67
68 DO i=1,nel
69 xn(i,1) = half*(x1(i)+x5(i))
70 yn(i,1) = half*(y1(i)+y5(i))
71 zn(i,1) = half*(z1(i)+z5(i))
72 xn(i,2) = half*(x2(i)+x6(i))
73 yn(i,2) = half*(y2(i)+y6(i))
74 zn(i,2) = half*(z2(i)+z6(i))
75 xn(i,3) = half*(x3(i)+x7(i))
76 yn(i,3) = half*(y3(i)+y7(i))
77 zn(i,3) = half*(z3(i)+z7(i))
78 xn(i,4) = half*(x4(i)+x8(i))
79 yn(i,4) = half*(y4(i)+y8(i))
80 zn(i,4) = half*(z4(i)+z8(i))
81 ENDDO
82
83 DO i=1,nel
84 rx(i)=xn(i,2)+xn(i,3)-xn(i,1)-xn(i,4)
85 ry(i)=yn(i,2)+yn(i,3)-yn(i,1)-yn(i,4)
86 rz(i)=zn(i,2)+zn(i,3)-zn(i,1)-zn(i,4)
87 sx(i)=xn(i,3)+xn(i,4)-xn(i,1)-xn(i,2)
88 sy(i)=yn(i,3)+yn(i,4)-yn(i,1)-yn(i,2)
89 sz(i)=zn(i,3)+zn(i,4)-zn(i,1)-zn(i,2)
90 ENDDO
91 DO i=1,nel
92 e3x = ry(i) * sz(i) - rz(i) * sy(i)
93 e3y = rz(i) * sx(i) - rx(i) * sz(i)
94 e3z = rx(i) * sy(i) - ry(i) * sx(i)
95 det = sqrt(e3x*e3x + e3y*e3y + e3z*e3z)
97 al1 = rx(i)*rx(i) + ry(i)*ry(i)+ rz(i)*rz(i)
98 al2 = sx(i)*sx(i) + sy(i)*sy(i)+ sz(i)*sz(i)
99 llsh(i) = fourth*
max(al1,al2)
100 ENDDO
101
102 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)