42
43
44
46
47
48
49#include "implicit_f.inc"
50
51
52
53#include "mvsiz_p.inc"
54
55
56
57#include "param_c.inc"
58
59
60
61 INTEGER :: IGEO(NPROPGI,*),NGL(*),NGEO(*),NEL,JEUL,NXREF
63 . vol(*), veul(lveul,*), geo(npropg,*),
64 . jac1(*), jac2(*), jac3(*), jac4(*), jac5(*), jac6(*), jac9(*),
65 . px1(*), px2(*), px3(*), px4(*),
66 . py1(*), py2(*), py3(*), py4(*),
67 . pz1(*), pz2(*), pz3(*), pz4(*), det(*)
68 double precision
69 . xd1(mvsiz), xd2(mvsiz), xd3(mvsiz), xd4(mvsiz),
70 . xd5(mvsiz), xd6(mvsiz), xd7(mvsiz), xd8(mvsiz),
71 . yd1(mvsiz), yd2(mvsiz), yd3(mvsiz), yd4(mvsiz),
72 . yd5(mvsiz), yd6(mvsiz), yd7(mvsiz), yd8(mvsiz),
73 . zd1(mvsiz), zd2(mvsiz), zd3(mvsiz), zd4(mvsiz),
74 . zd5(mvsiz), zd6(mvsiz), zd7(mvsiz), zd8(mvsiz),voldp(*)
75
76
77
78 INTEGER I
80 . dett(mvsiz), jac7(mvsiz), jac8(mvsiz) ,
81 . jaci1(mvsiz), jaci2(mvsiz), jaci3(mvsiz), jaci4(mvsiz),
82 . jaci5(mvsiz), jaci6(mvsiz), jaci7(mvsiz), jaci8(mvsiz), jaci9(mvsiz),
83 . jac_59_68(mvsiz), jac_67_49(mvsiz), jac_48_57(mvsiz),
84 . a17_46(mvsiz),
85 . a28_35(mvsiz),
86 . b17_46(mvsiz),
87 . b28_35(mvsiz),
88 . c17_46(mvsiz),
89 . c28_35(mvsiz)
90 double precision
91 . x17(mvsiz), x28(mvsiz), x35(mvsiz), x46(mvsiz),
92 . y17(mvsiz), y28(mvsiz), y35(mvsiz), y46(mvsiz),
93 . z17(mvsiz), z28(mvsiz), z35(mvsiz), z46(mvsiz)
94
95 DO i=1,nel
96 x17(i)=xd7(i)-xd1(i)
97 x28(i)=xd8(i)-xd2(i)
98 x35(i)=xd5(i)-xd3(i)
99 x46(i)=xd6(i)-xd4(i)
100 y17(i)=yd7(i)-yd1(i)
101 y28(i)=yd8(i)-yd2(i)
102 y35(i)=yd5(i)-yd3(i)
103 y46(i)=yd6(i)-yd4(i)
104 z17(i)=zd7(i)-zd1(i)
105 z28(i)=zd8(i)-zd2(i)
106 z35(i)=zd5(i)-zd3(i)
107 z46(i)=zd6(i)-zd4(i)
108 ENDDO
109 DO i=1,nel
110 jac4(i)=x17(i)+x28(i)-x35(i)-x46(i)
111 jac5(i)=y17(i)+y28(i)-y35(i)-y46(i)
112 jac6(i)=z17(i)+z28(i)-z35(i)-z46(i)
113 a17_46(i)=x17(i)+x46(i)
114 a28_35(i)=x28(i)+x35(i)
115 b17_46(i)=y17(i)+y46(i)
116 b28_35(i)=y28(i)+y35(i)
117 c17_46(i)=z17(i)+z46(i)
118 c28_35(i)=z28(i)+z35(i)
119 ENDDO
120 DO i=1,nel
121 jac7(i)=a17_46(i)+a28_35(i)
122 jac8(i)=b17_46(i)+b28_35(i)
123 jac9(i)=c17_46(i)+c28_35(i)
124 jac1(i)=a17_46(i)-a28_35(i)
125 jac2(i)=b17_46(i)-b28_35(i)
126 jac3(i)=c17_46(i)-c28_35(i)
127 ENDDO
128
129 DO i=1,nel
130 jac_59_68(i)=jac5(i)*jac9(i)-jac6(i)*jac8(i)
131 jac_67_49(i)=jac6(i)*jac7(i)-jac4(i)*jac9(i)
132 jac_48_57(i)=jac4(i)*jac8(i)-jac5(i)*jac7(i)
133 ENDDO
134
135
136 DO i=1,nel
137 voldp(i)=one_over_64*(jac1(i)*jac_59_68(i)+jac2(i)*jac_67_49(i)+jac3(i)*jac_48_57(i))
138 det(i)=voldp(i)
139 vol(i)=det(i)
140 ENDDO
141
142 DO i=1,nel
143 IF(det(i) <=zero) THEN
145 . msgtype=msgerror,
146 . anmode=aninfo,
147 . i1=ngl(i))
148 ENDIF
149 ENDDO
150
151 IF (jeul == 0 .AND. nxref == 0) RETURN
152
153 DO i=1,nel
154 dett(i)=one_over_64/det(i)
155 ENDDO
156
157
158 DO i=1,nel
159 jaci1(i)=dett(i)*jac_59_68(i)
160 jaci4(i)=dett(i)*jac_67_49(i)
161 jaci7(i)=dett(i)*jac_48_57(i)
162 jaci2(i)=dett(i)*(-jac2(i)*jac9(i)+jac3(i)*jac8(i))
163 jaci5(i)=dett(i)*( jac1(i)*jac9(i)-jac3(i)*jac7(i))
164 jaci8(i)=dett(i)*(-jac1(i)*jac8(i)+jac2(i)*jac7(i))
165 jaci3(i)=dett(i)*( jac2(i)*jac6(i)-jac3(i)*jac5(i))
166 jaci6(i)=dett(i)*(-jac1(i)*jac6(i)+jac3(i)*jac4(i))
167 jaci9(i)=dett(i)*( jac1(i)*jac5(i)-jac2(i)*jac4(i))
168 ENDDO
169
170
171 DO i=1,nel
172 px2(i)= jaci1(i)-jaci2(i)-jaci3(i)
173 py2(i)= jaci4(i)-jaci5(i)-jaci6(i)
174 pz2(i)= jaci7(i)-jaci8(i)-jaci9(i)
175
176 px4(i)=-jaci1(i)+jaci2(i)-jaci3(i)
177 py4(i)=-jaci4(i)+jaci5(i)-jaci6(i)
178 pz4(i)=-jaci7(i)+jaci8(i)-jaci9(i)
179
180 px1(i)=-jaci1(i)-jaci2(i)-jaci3(i)
181 py1(i)=-jaci4(i)-jaci5(i)-jaci6(i)
182 pz1(i)=-jaci7(i)-jaci8(i)-jaci9(i)
183
184 px3(i)= jaci1(i)+jaci2(i)-jaci3(i)
185 py3(i)= jaci4(i)+jaci5(i)-jaci6(i)
186 pz3(i)= jaci7(i)+jaci8(i)-jaci9(i)
187 ENDDO
188
189 IF(jeul /= 0)THEN
190 DO i=1,nel
191 veul(3,i) = px3(i)
192 veul(4,i) = py3(i)
193 veul(7,i) = pz3(i)
194 veul(8,i) = px4(i)
195 veul(11,i)= py4(i)
196 veul(12,i)= pz4(i)
197 veul(1,i) = px1(i)
198 veul(2,i) = py1(i)
199 veul(5,i) = pz1(i)
200 veul(6,i) = px2(i)
201 veul(9,i) = py2(i)
202 veul(10,i)= pz2(i)
203 END DO
204 IF (igeo(11,ngeo(1)) == 15) THEN
205 DO i=1,nel
206 vol(i)=vol(i)*geo(1,ngeo(i))
207 ENDDO
208 ENDIF
209 ENDIF
210
211 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)