52
53
54
56
57
58
59#include "implicit_f.inc"
60#include "comlock.inc"
61
62
63
64#include "mvsiz_p.inc"
65
66
67
68
69
70
71 INTEGER, INTENT(IN) :: NEL
72 INTEGER, INTENT(IN) :: ISMSTR
73 double precision
74 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*), x7(*), x8(*),
75 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*), y7(*), y8(*),
76 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*), z7(*), z8(*)
77
79 . off(*),det(*),
80 . px1(*), px2(*), px3(*), px4(*),
81 . py1(*), py2(*), py3(*), py4(*),
82 . pz1(*), pz2(*), pz3(*), pz4(*)
83 . px1h1(*), px1h2(*), px1h3(*),px1h4(*),
84 . px2h1(*), px2h2(*), px2h3(*),px2h4(*),
85 . px3h1(*), px3h2(*), px3h3(*),px3h4(*),
86 . px4h1(*), px4h2(*), px4h3(*),px4h4(*),
87 . hx(mvsiz,4), hy(mvsiz,4), hz(mvsiz,4),
88 . jac1(*),jac2(*),jac3(*),
89 . jac4(*),jac5(*),jac6(*),
90 . jac7(*),jac8(*),jac9
91
92
93
94 INTEGER NGL(*), I, J ,ICOR
95
96
98 . dett(mvsiz) ,
99 . jaci1, jaci2, jaci3,
100 . jaci4, jaci5, jaci6,
101 . jaci7, jaci8, jaci9,
102 . x17 , x28 , x35 , x46,
103 . y17 , y28 , y35 , y46,
104 . z17 , z28 , z35 , z46,
105 . jac_59_68, jac_67_49, jac_48_57,
106 . jac_38_29, jac_19_37, jac_27_18,
107 . jac_26_35, jac_34_16, jac_15_24,
108 . jaci12, jaci45, jaci78,
109 . x_17_46 , x_28_35 ,
110 . y_17_46 , y_28_35 ,
111 . z_17_46 , z_28_35
112
113
114 DO i=1,nel
115 jaci1=jac_i(1,i)
116 jaci4=jac_i(4,i)
117 jaci7=jac_i(7,i)
118 jaci2=jac_i(2,i)
119 jaci5=jac_i(5,i)
120 jaci8=jac_i(8,i)
121 jaci3=jac_i(3,i)
122 jaci6=jac_i(6,i)
123 jaci9=jac_i(9,i)
124 det(i) =jac_i(10,i)
125
126 jaci12=jaci1-jaci2
127 jaci45=jaci4-jaci5
128 jaci78=jaci7-jaci8
129
130 px2(i)= jaci12-jaci3
131 py2(i)= jaci45-jaci6
132 pz2(i)= jaci78-jaci9
133 px4(i)=-jaci12-jaci3
134 py4(i)=-jaci45-jaci6
135 pz4(i)=-jaci78-jaci9
136
137 jaci12=jaci1+jaci2
138 jaci45=jaci4+jaci5
139 jaci78=jaci7+jaci8
140
141 px1(i)=-jaci12-jaci3
142 py1(i)=-jaci45-jaci6
143 pz1(i)=-jaci78-jaci9
144 px3(i)=jaci12-jaci3
145 py3(i)=jaci45-jaci6
146 pz3(i)=jaci78-jaci9
147 ENDDO
148
149
150
151
152 DO i=1,nel
153 hx(i,1)=(x1(i)+x2(i)-x3(i)-x4(i)-x5(i)-x6(i)+x7(i)+x8(i))
154 hy(i,1)=(y1(i)+y2(i)-y3(i)-y4(i)-y5(i)-y6(i)+y7(i)+y8(i))
155 hz(i,1)=(z1(i)+z2(i)-z3(i)-z4(i)-z5(i)-z6(i)+z7(i)+z8(i))
156 px1h1(i)=px1(i)*hx(i,1)+ py1(i)*hy(i,1)+pz1(i)*hz(i,1)
157 px2h1(i)=px2(i)*hx(i,1)+ py2(i)*hy(i,1)+pz2(i)*hz(i,1)
158 px3h1(i)=px3(i)*hx(i,1)+ py3(i)*hy(i,1)+pz3(i)*hz(i,1)
159 px4h1
160 ENDDO
161
162
163 DO i=1,nel
164 hx(i,2)=(x1(i)-x2(i)-x3(i)+x4(i)-x5(i)+x6(i)+x7(i)-x8(i))
165 hy(i,2)=(y1
166 hz(i,2)=(z1(i)-z2(i)-z3(i)+z4(i)-z5(i)+z6(i)+z7(i)-z8(i))
167 px1h2(i)=px1(i)*hx(i,2)+ py1(i)*hy(i,2)+pz1(i)*hz(i,2)
168 px2h2(i)=px2(i)*hx(i,2)+ py2(i)*hy(i,2)+pz2(i)*hz(i,2)
169 px3h2(i)=px3(i)*hx(i,2)+ py3(i)*hy(i,2)+pz3(i)*hz(i,2)
170 px4h2(i)=px4(i)*hx(i,2)+ py4(i)*hy(i,2)+pz4(i)*hz(i,2)
171 ENDDO
172
173
174 DO i=1,nel
175 hx(i,3)=(x1(i)-x2(i)+x3(i)-x4(i)+x5(i)-x6(i)+x7(i)-x8(i))
176 hy(i,3)=(y1(i)-y2(i)+y3(i)-y4(i)+y5(i)-y6(i)+y7(i)-y8(i))
177 hz(i,3)=(z1(i)-z2(i)+z3(i)-z4(i)+z5(i)-z6(i)+z7(i)-z8(i))
178 px1h3(i)=px1(i)*hx(i,3)+ py1(i)*hy(i,3)+pz1(i)*hz(i,3)
179 px2h3(i)=px2(i)*hx(i,3)+ py2(i)*hy(i,3)+pz2(i)*hz(i,3)
180 px3h3(i)=px3(i)*hx(i,3)+ py3(i)*hy(i,3)+pz3(i)*hz(i,3)
181 px4h3(i)=px4(i)*hx(i,3)+ py4(i)*hy(i,3)+pz4(i)*hz(i,3)
182 ENDDO
183
184
185 DO i=1,nel
186 hx(i,4)=(-x1(i)+x2(i)-x3(i)+x4(i)+x5(i)-x6(i)+x7(i)-x8(i))
187 hy(i,4)=(-y1(i)+y2(i)-y3(i)+y4(i)+y5(i)-y6(i)+y7(i)-y8(i))
188 hz(i,4)=(-z1(i)+z2(i)-z3(i)+z4(i)+z5(i)-z6(i)+z7(i)-z8(i))
189 px1h4(i)=px1(i)*hx(i,4)+ py1(i)*hy(i,4)+pz1(i)*hz(i,4)
190 px2h4(i)=px2(i)*hx(i,4)+ py2(i)*hy(i,4)+pz2(i)*hz(i,4)
191
192 px4h4(i)=px4(i)*hx(i,4)+ py4(i)*hy(i,4)+pz4(i)*hz(i,4)
193 ENDDO
194
195 IF (ismstr/=11) RETURN
196
197 DO i=1,nel
198 x17=x7(i)-x1(i)
199 x28=x8(i)-x2(i)
200 x35=x5(i)-x3(i)
201 x46=x6(i)-x4(i)
202 y17=y7(i)-y1(i)
203 y28=y8(i)-y2(i)
204 y35=y5(i)-y3(i)
205 y46=y6(i)-y4(i)
206 z17=z7(i)-z1(i)
207 z28=z8(i)-z2(i)
208 z35=z5(i)-z3(i)
209 z46=z6(i)-z4(i)
210
211 jac4(i)=x17+x28-x35-x46
212 jac5(i)=y17+y28-y35-y46
213 jac6(i)=z17+z28-z35-z46
214 x_17_46=x17+x46
215 x_28_35=x28+x35
216 y_17_46=y17+y46
217 y_28_35=y28+y35
218 z_17_46=z17+z46
219 z_28_35=z28+z35
220
221 jac7(i)=x_17_46+x_28_35
222 jac8(i)=y_17_46+y_28_35
223 jac9(i)=z_17_46+z_28_35
224 jac1(i)=x_17_46-x_28_35
225 jac2(i)=y_17_46-y_28_35
226 jac3(i)=z_17_46-z_28_35
227
228
229
230 jac_59_68=jac5(i)*jac9(i)-jac6(i)*jac8(i)
231 jac_67_49=jac6(i)*jac7(i)-jac4(i)*jac9(i)
232 jac_38_29=(-jac2(i)*jac9(i)+jac3(i)*jac8(i))
233 jac_19_37=( jac1(i)*jac9(i)-jac3(i)*jac7(i))
234 jac_27_18=(-jac1(i)*jac8(i)+jac2(i)*jac7(i))
235 jac_26_35=( jac2(i)*jac6(i)-jac3(i)*jac5(i))
236 jac_34_16=(-jac1(i)*jac6(i)+jac3(i)*jac4(i))
237 jac_15_24=( jac1(i)*jac5(i)-jac2(i)*jac4(i))
238 jac_48_57=jac4(i)*jac8(i)-jac5(i)*jac7(i)
239
240 smax(i)= jac_59_68*jac_59_68+jac_67_49*jac_67_49
241 . +jac_48_57*jac_48_57
242 smax(i)=
max(smax(i),jac_38_29*jac_38_29+jac_19_37*jac_19_37
243 . +jac_27_18*jac_27_18)
244 smax(i)=
max(smax(i),jac_26_35*jac_26_35+jac_34_16*jac_34_16
245 . +jac_15_24*jac_15_24)
246 ENDDO
247 DO i=1,nel
248 IF(smax(i)<=zero)THEN
249 CALL ancmsg(msgid=173,anmode=aninfo,
250 . i1=ngl(i))
252 ENDIF
253 smax(i)= one/sqrt(smax(i))
254 ENDDO
255 RETURN
256
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)