31
32
33
34#include "implicit_f.inc"
35
36
37
38#include "com04_c.inc"
39
40
41
42 INTEGER IXS(NIXS,*),IXS10(6,*),IBUF(2,*),ISOLNOD(*) ,ITAB(*)
43 INTEGER NELE
46
47
48
49 INTEGER IE,II,I,J,IN1,IN2,IN3,IJ,I10
50 INTEGER NODE(10)
52 . x1,y1,z1,x2,y2,z2,x3,y3,z3,n3
53
54
56 DO ie=1,nele
57 j=0
58 ii=ibuf(1,ie)
59 node(1:10) = 0
60 IF(ii<=numels8)THEN
61 IF(isolnod(ii) == 4) THEN
62 DO i=0,6,2
63 IF(btest(ibuf(2,ie),i)) THEN
64 j=j+1
65 node(j)=ixs(i+2,ii)
66 ENDIF
67 ENDDO
68 ELSE IF (isolnod(ii) == 8) THEN
69 DO i=0,7
70 IF(btest(ibuf(2,ie),i)) THEN
71 j=j+1
72 node(j)=ixs(i+2,ii)
73 ENDIF
74 ENDDO
75 ENDIF
76
77 IF(j>=3)THEN
78 in1 = node(1)
79 in2 = node(2)
80 in3 = node(3)
81 x1=x(1,in1)-x(1,in2)
82 y1=x(2,in1)-x(2,in2)
83 z1=x(3,in1)-x(3,in2)
84 x2=x(1,in3)-x(1,in2)
85 y2=x(2,in3)-x(2,in2)
86 z2=x(3,in3)-x(3,in2)
87 x3=y1*z2-z1*y2
88 y3=z1*x2-z2*x1
89 z3=x1*y2-x2*y1
90 n3=x3*x3+y3*y3+z3*z3
92 IF(j==4)THEN
93 in2 = node(4)
94 x1=x(1,in1)-x(1,in2)
95 y1=x(2,in1)-x(2,in2)
96 z1=x(3,in1)-x(3,in2)
97 x2=x(1,in3)-x(1,in2)
98 y2=x(2,in3)-x(2,in2)
99 z2=x(3,in3)-x(3,in2)
100 x3=y1*z2-z1*y2
101 y3=z1*x2-z2*x1
102 z3=x1*y2-x2*y1
103 n3=x3*x3+y3*y3+z3*z3
105 ENDIF
106 ENDIF
107
108 ELSE
109 i10=ii-numels8
110 IF(i10<=numels10) THEN
111
112 DO i=0,6,2
113 IF(btest(ibuf(2,ie),i)) THEN
114 j=j+1
115 node(j)=ixs(i+2,ii)
116 ENDIF
117 ENDDO
118 DO i=8,13
119 IF(btest(ibuf(2,ie),i)) THEN
120 j=j+1
121 node(j)=ixs10(i-7,i10)
122 ENDIF
123 ENDDO
124
125 IF(j==6)THEN
126 in1 = node(1)
127 in2 = node(2)
128 in3 = node(3)
129 x1=x(1,in2)-x(1,in1)
130 y1=x(2,in2)-x(2,in1)
131 z1=x(3,in2)-x(3,in1)
132 x2=x(1,in3)-x(1,in1)
133 y2=x(2,in3)-x(2,in1)
134 z2=x(3,in3)-x(3,in1)
135 x3=y1*z2-z1*y2
136 y3=z1*x2-z2*x1
137 z3=x1*y2-x2*y1
138 n3=x3*x3+y3*y3+z3*z3
140 ENDIF
141 ENDIF
142 ENDIF
143 ENDDO
144
145 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)