37
38
39
40
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "mvsiz_p.inc"
50
51
52
53#include "param_c.inc"
54
55
56
57 INTEGER :: NEL,JEUL,NGL(*),NGEO(*)
59 . vol(*), veul(lveul,*),geo(npropg,*),
60 . vzl(*),vzq(*), det(*)
61
62
63
64 INTEGER I,J
66 . dett(mvsiz),
67 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
68 . x5(mvsiz), x6(mvsiz), x7(mvsiz), x8(mvsiz),
69 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
70 . y5(mvsiz), y6(mvsiz), y7(mvsiz), y8(mvsiz),
71 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
72 . z5(mvsiz), z6(mvsiz), z7(mvsiz), z8(mvsiz),
73 . jac1(mvsiz), jac2(mvsiz), jac3(mvsiz), jac4(mvsiz),
74 . jac5(mvsiz), jac6(mvsiz), jac7(mvsiz), jac8(mvsiz),
75 . jac9(mvsiz),
76 . jaci1(mvsiz), jaci2(mvsiz), jaci3(mvsiz), jaci4(mvsiz),
77 . jaci5(mvsiz), jaci6(mvsiz), jaci7(mvsiz), jaci8(mvsiz),
78 . jaci9(mvsiz),
79 . x17(mvsiz), x28(mvsiz), x35(mvsiz), x46(mvsiz),
80 . y17(mvsiz), y28(mvsiz), y35(mvsiz), y46(mvsiz),
81 . z17(mvsiz), z28(mvsiz), z35(mvsiz), z46(mvsiz),
82 . jac_59_68
83 . x_17_46(mvsiz),y_17_46(mvsiz),z_17_46(mvsiz),
84 . x_28_35(mvsiz),y_28_35(mvsiz),z_28_35(mvsiz)
86 . h1x,h2x,h1y,h2y,h1z,h2z
87
88 DO i=1,nel
89 x17(i)=x7(i)-x1(i)
90 x28(i)=x8(i)-x2(i)
91 x35(i)=x5(i)-x3(i)
92 x46(i)=x6(i)-x4(i)
93 y17(i)=y7(i)-y1(i)
94 y28(i)=y8(i)-y2(i)
95 y35(i)=y5(i)-y3(i)
96 y46(i)=y6(i)-y4(i)
97 z17(i)=z7(i)-z1(i)
98 z28(i)=z8(i)-z2(i)
99 z35(i)=z5(i)-z3(i)
100 z46(i)=z6(i)-z4(i)
101 ENDDO
102
103
104 DO i=1,nel
105
106 jac3(i)=x17(i)+x28(i)-x35(i)-x46(i)
107 jac1(i)=y17(i)+y28(i)-y35(i)-y46(i)
108 jac2(i)=z17(i)+z28(i)-z35(i)-z46(i)
109 x_17_46(i)=x17(i)+x46(i)
110 y_17_46(i)=y17(i)+y46(i)
111 z_17_46(i)=z17(i)+z46(i)
112 x_28_35(i)=x28(i)+x35(i)
113 y_28_35(i)=y28(i)+y35(i)
114 z_28_35(i)=z28(i)+z35(i)
115 ENDDO
116
117 DO i=1,nel
118
119 jac6(i)=x_17_46(i)+x_28_35(i)
120 jac4(i)=y_17_46(i)+y_28_35(i)
121 jac5(i)=z_17_46(i)+z_28_35(i)
122
123 jac9(i)=x_17_46(i)-x_28_35(i)
124 jac7(i)=y_17_46(i)-y_28_35(i)
125 jac8(i)=z_17_46(i)-z_28_35(i)
126 ENDDO
127
128 DO i=1,nel
129 jac_59_68(i)=jac5(i)*jac9(i)-jac6(i)*jac8(i)
130 jac_67_49(i)=jac6(i)*jac7(i)-jac4(i)*jac9(i)
131 jac_48_57(i)=jac4(i)*jac8(i)-jac5(i)*jac7(i)
132 ENDDO
133
134 DO i=1,nel
135 det(i)=one_over_64*(jac1(i)*jac_59_68(i)+jac2(i)*jac_67_49(i)+jac3(i)*jac_48_57(i))
136 vol(i)=det(i)
137 ENDDO
138
139 DO i=1,nel
140 IF(det(i)>zero) cycle
142 . msgtype=msgerror,
143 . anmode=aninfo,
144 . i1=ngl(i))
145 ENDDO
146
147 DO i=1,nel
148 h1x = x1(i)+x2(i)-x3(i)-x4(i)-x5(i)-x6(i)+x7(i)+x8(i)
149 h1y = y1(i)+y2(i)-y3(i)-y4(i)-y5(i)-y6(i)+y7(i)+y8(i)
150 h1z = z1(i)+z2(i)-z3(i)-z4(i)-z5(i)-z6(i)+z7(i)+z8(i)
151 h2x = x1(i)-x2(i)-x3(i)+x4(i)-x5(i)+x6(i)+x7(i)-x8(i
152 h2y = y1(i)-y2(i)-y3(i)+y4(i)-y5(i)+y6(i)+y7(i)-y8(i)
153 h2z = z1(i)-z2(i)-z3(i)+z4(i)-z5(i)+z6(i)+z7(i)-z8(i)
154 vzl(i) = one_over_64*jac5(i)*(jac9(i)*h1y+jac1(i)*h2x-jac3(i)*h2y-jac7(i)*h1x)
155 . + one_over_64*jac4(i)*(jac3(i)*h2z+jac8(i)*h1x-jac9(i)*h1z-jac2(i)*h2x)
156 . + one_over_64*jac6(i)*(jac7(i)*h1z+jac2(i)*h2y-jac1(i)*h2z-jac8(i)*h1y)
157 vzq(i) = one_over_64*jac5(i)*(h1y*h2x-h2y*h1x)
158 ENDDO
159
160 IF (jeul == 0) RETURN
161
162 DO i=1,nel
163 dett(i)=one_over_64/det(i)
164 ENDDO
165
166
167 DO i=1,nel
168 jaci1(i)=dett(i)*jac_59_68(i)
169 jaci4(i)=dett(i)*jac_67_49(i)
170 jaci7(i)=dett(i)*jac_48_57(i)
171 jaci2(i)=dett(i)*(-jac2(i)*jac9(i)+jac3(i)*jac8(i))
172 jaci5(i)=dett(i)*( jac1(i)*jac9(i)-jac3(i)*jac7(i))
173 jaci8(i)=dett(i)*(-jac1(i)*jac8(i)+jac2(i)*jac7(i))
174 jaci3(i)=dett(i)*( jac2(i)*jac6(i)-jac3(i)*jac5(i))
175 jaci6(i)=dett(i)*(-jac1(i)*jac6(i)+jac3(i)*jac4(i))
176 jaci9(i)=dett(i)*( jac1(i)*jac5(i)-jac2(i)*jac4(i))
177 ENDDO
178
179 DO i=1,nel
180 veul(3,i) = jaci1(i)-jaci2(i)+jaci3(i)
181 veul(4,i) = jaci1(i)-jaci2(i)-jaci3(i)
182 veul(7,i) = jaci4(i)-jaci5(i)+jaci6(i)
183 veul(8,i) = jaci4(i)-jaci5(i)-jaci6(i)
184 veul(11,i)= jaci7(i)-jaci8(i)+jaci9(i)
185 veul(12,i)= jaci7(i)-jaci8(i)-jaci9(i)
186 ENDDO
187
188 DO i=1,nel
189 veul(1,i) =-jaci1(i)-jaci2(i)-jaci3(i)
190 veul(2,i) =-jaci1(i)-jaci2(i)+jaci3(i)
191 veul(5,i) =-jaci4(i)-jaci5(i)-jaci6(i)
192 veul(6,i) =-jaci4(i)-jaci5(i)+jaci6(i)
193 veul(9,i) =-jaci7(i)-jaci8(i)-jaci9(i)
194 veul(10,i)=-jaci7(i)-jaci8(i)+jaci9(i)
195 ENDDO
196
197 IF (geo(12,ngeo(i)) == 15) THEN
198 DO i=1,nel
199 vol(i)=vol(i)*geo(1,ngeo(i))
200 ENDDO
201 ENDIF
202
203 RETURN
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)