42
44 use element_mod , only : nixs
45
46
47
48
49#include "implicit_f.inc"
50
51
52
53#include "mvsiz_p.inc"
54
55
56
57#include "vect01_c.inc"
58#include "com04_c.inc"
59
60
61
62 INTEGER IXS(NIXS,*),MXT(*),NGL(*),NGEO(*)
63 INTEGER ,INTENT(IN) :: NINTEMP
65 . x(3,*),geo(*),
66 . rx(*) ,ry(*) ,rz(*) ,sx(*) ,sy(*) ,sz(*) ,tx(*) ,ty(*) ,tz(*),
67 . r11(*),r12(*),r13(*),r21(*),r22(*),r23(*),r31(*),r32(*),r33(*),
68 . f1x(*),f1y(*),f1z(*),f2x(*),f2y(*),f2z(*),temp0(mvsiz), temp(*)
69 INTEGER IX1(*), IX2(*), IX3(*), IX4(*), IX5(*), IX6(*)
71 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*),
72 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*),
73 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*)
74
75
76
77 INTEGER I
79 . xl,yl,zl
80
81
82
85
86
87
88 DO i=lft,llt
89 mxt(i)=ixs(1,i)
90 ix1(i)=ixs(2,i)
91 ix2(i)=ixs(3,i)
92 ix3(i)=ixs(4,i)
93 ix4(i)=ixs(6,i)
94 ix5(i)=ixs(7,i)
95 ix6(i)=ixs(8,i)
96 ngeo(i)=ixs(nixs-1,i)
97 ngl(i)=ixs(nixs,i)
99
100 ix1(i)=ixs(6,i)
101 ix2(i)=ixs(7,i)
102 ix3(i)=ixs(8,i)
103 ix4(i)=ixs(2,i)
104 ix5(i)=ixs(3,i)
105 ix6(i)=ixs(4,i)
106 ixs(2,i)=ix1(i)
107 ixs(3,i)=ix2(i)
108 ixs(4,i)=ix3(i)
109 ixs(6,i)=ix4(i)
110 ixs(7,i)=ix5(i)
111 ixs(8,i)=ix6(i)
112 ENDIF
113 ENDDO
114
115
116
117
118 DO 20 i=lft,llt
119 x1(i)=x(1,ix1(i))
120 y1(i)=x(2,ix1(i))
121 z1(i)=x(3,ix1(i))
122 x2(i)=x(1,ix2(i))
123 y2(i)=x(2,ix2(i))
124 z2(i)=x(3,ix2(i))
125 x3(i)=x(1,ix3(i))
126 y3(i)=x(2,ix3(i))
127 z3(i)=x(3,ix3(i))
128 x4(i)=x(1,ix4(i))
129 y4(i)=x(2,ix4(i))
130 z4(i)=x(3,ix4(i))
131 x5(i)=x(1,ix5(i))
132 y5(i)=x(2,ix5(i))
133 z5(i)=x(3,ix5(i))
134 x6(i)=x(1,ix6(i))
135 y6(i)=x(2,ix6(i))
136 z6(i)=x(3,ix6(i))
137 20 CONTINUE
138
139 DO i=lft,llt
140 f1x(i) = x2(i) - x1(i)
141 f1y(i) = y2(i) - y1(i)
142 f1z(i) = z2(i) - z1(i)
143 f2x(i) = x3(i) - x1(i)
144 f2y(i) = y3(i) - y1(i)
145 f2z(i) = z3(i) - z1(i)
146 ENDDO
147
148 DO i=lft,llt
149 xl=one_over_6*(x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i))
150 yl=one_over_6*(y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i))
151 zl=one_over_6*(z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i))
152 x1(i)=x1(i)-xl
153 y1(i)=y1(i)-yl
154 z1(i)=z1(i)-zl
155 x2(i)=x2(i)-xl
156 y2(i)=y2(i)-yl
157 z2(i)=z2(i)-zl
158 x3(i)=x3(i)-xl
159 y3(i)=y3(i)-yl
160 z3(i)=z3(i)-zl
161 x4(i)=x4(i)-xl
162 y4(i)=y4(i)-yl
163 z4(i)=z4(i)-zl
164 x5(i)=x5(i)-xl
165 y5(i)=y5(i)-yl
166 z5(i)=z5(i)-zl
167 x6(i)=x6(i)-xl
168 y6(i)=y6(i)-yl
169 z6(i)=z6(i)-zl
170 ENDDO
171
172
173
175 . x1, x2, x3, x4, x5, x6,
176 . y1, y2, y3, y4, y5, y6,
177 . z1, z2, z3, z4, z5, z6,
178 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
179 . r11 ,r21 ,r31 ,r12 ,r22 ,r32 ,r13, r23, r33)
180
181 DO i=lft,llt
182 xl=r11(i)*x1(i)+r21(i)*y1(i)+r31(i)*z1(i)
183 yl=r12(i)*x1(i)+r22(i)*y1(i)+r32(i)*z1(i)
184 zl=r13(i)*x1(i)+r23(i)*y1(i)+r33(i)*z1(i)
185 x1(i)=xl
186 y1(i)=yl
187 z1(i)=zl
188 xl=r11(i)*x2(i)+r21(i)*y2(i)+r31(i)*z2(i)
189 yl=r12(i)*x2(i)+r22(i)*y2(i)+r32(i)*z2(i)
190 zl=r13(i)*x2(i)+r23(i)*y2(i)+r33(i)*z2(i)
191 x2(i)=xl
192 y2(i)=yl
193 z2(i)=zl
194 xl=r11(i)*x3(i)+r21(i)*y3(i)+r31(i)*z3(i)
195 yl=r12(i)*x3(i)+r22(i)*y3(i)+r32(i)*z3(i)
196 zl=r13(i)*x3(i)+r23(i)*y3(i)+r33(i)*z3(i)
197 x3(i)=xl
198 y3(i)=yl
199 z3(i)=zl
200 xl=r11(i)*x4(i)+r21(i)*y4(i)+r31(i)*z4(i)
201 yl=r12(i)*x4(i)+r22(i)*y4(i)+r32(i)*z4(i)
202 x4(i)=xl
203 y4(i)=yl
204 z4(i)=-z1(i)
205 xl=r11(i)*x5(i)+r21(i)*y5(i)+r31(i)*z5(i)
206 yl=r12(i)*x5(i)+r22(i)*y5(i)+r32(i)*z5(i)
207 x5(i)=xl
208 y5(i)=yl
209 z5(i)=-z2(i)
210 xl=r11(i)*x6(i)+r21(i)*y6(i)+r31(i)*z6(i)
211 yl=r12(i)*x6(i)+r22(i)*y6(i)+r32(i)*z6(i)
212 x6(i)=xl
213 y6(i)=yl
214 z6(i)=-z3(i)
215 ENDDO
216
217 IF(jthe < 0 ) THEN
218 IF(nintemp > 0 ) THEN
219 DO i= lft,llt
220 IF(temp(ix1(i))== zero) temp(ix1(i)) = temp0(i)
221 IF(temp(ix2(i))== zero) temp(ix2(i)) = temp0(i)
222 IF(temp(ix3(i))== zero) temp(ix3(i)) = temp0(i)
223 IF(temp(ix4(i))== zero) temp(ix4(i)) = temp0(i)
224 IF(temp(ix5(i))== zero) temp(ix5(i)) = temp0(i)
225 IF(temp(ix6(i))== zero) temp(ix6(i)) = temp0(i)
226 ENDDO
227 ELSE
228 DO i=lft,llt
229 temp(ix1(i))=temp0(i)
230 temp(ix2(i))=temp0(i)
231 temp(ix3(i))=temp0(i)
232 temp(ix4(i))=temp0(i)
233 temp(ix5(i))=temp0(i)
234 temp(ix6(i))=temp0(i)
235 ENDDO
236 ENDIF
237 ENDIF
238
239 RETURN
function checkvolume_6n(x, ixs)
subroutine s6cortho3(x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, z1, z2, z3, z4, z5, z6, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)