71
72
73
74
75#include "implicit_f.inc"
76
77
78
79#include "mvsiz_p.inc"
80
81
82
83
84
85
86 INTEGER, INTENT(IN) :: NEL
87 INTEGER ICP,IDEG(*)
88
90 . vx1(*), vx2(*), vx3(*), vx4(*), vx5(*), vx6(*), vx7(*), vx8(*),
91 . vy1(*), vy2(*), vy3(*), vy4(*), vy5(*), vy6(*), vy7(*), vy8(*),
92 . vz1(*), vz2(*), vz3(*), vz4(*), vz5(*), vz6(*), vz7(*), vz8(*),
93 . px1(*), px2(*), px3(*), px4(*),
94 . px5(*), px6(*), px7(*), px8(*),
95 . py1(*), py2(*), py3(*), py4(*),
96 . py5(*), py6(*), py7(*), py8(*),
97 . pz1(*), pz2(*), pz3(*), pz4(*),
98 . pz5(*), pz6(*), pz7(*), pz8(*),
99 . pxy1(*),pxy2(*),pxy3(*),pxy4(*),
100 . pxy5(*),pxy6(*),pxy7(*),pxy8(*),
101 . pyx1(*),pyx2(*),pyx3(*),pyx4(*),
102 . pyx5(*),pyx6(*),pyx7(*),pyx8(*),
103 . pxz1(*),pxz2(*),pxz3(*),pxz4(*),
104 . pxz5(*),pxz6(*),pxz7(*),pxz8(*),
105 . pzx1(*),pzx2(*),pzx3(*),pzx4(*),
106 . pzx5(*),pzx6(*),pzx7(*),pzx8(*),
107 . pyz1(*),pyz2(*),pyz3(*),pyz4(*),
108 . pyz5(*),pyz6(*),pyz7(*),pyz8(*),
109 . pzy1(*),pzy2(*),pzy3(*),pzy4(*),
110 . pzy5(*),pzy6(*),pzy7(*),pzy8(*),
111 . bxy1(*),bxy2(*),bxy3(*),bxy4(*),
112 . bxy5(*),bxy6(*),bxy7(*),bxy8(*),
113 . byx1(*),byx2(*),byx3(*),byx4(*),
114 . byx5(*),byx6(*),byx7(*),byx8(*),
115 . bxz1(*),bxz2(*),bxz3(*),bxz4(*),
116 . bxz5(*),bxz6(*),bxz7(*),bxz8(*),
117 . bzx1(*),bzx2(*),bzx3(*),bzx4(*),
118 . bzx5(*),bzx6(*),bzx7(*),bzx8(*),
119 . byz1(*),byz2(*),byz3(*),byz4(*),
120 . byz5(*),byz6(*),byz7(*),byz8(*),
121 . bzy1(*),bzy2(*),bzy3(*),bzy4(*),
122 . bzy5(*),bzy6(*),bzy7(*),bzy8(*),
123 . dxx(*), dxy(*), dxz(*),
124 . dyx(*), dyy(*), dyz(*),
125 . dzx(*), dzy(*), dzz(*) ,det0(*),jfac(*),nu(*)
126
127
128
129 INTEGER I
130
132 . fac,det(mvsiz),base
133
134 dxx(1:nel) =px1(1:nel)*vx1(1:nel)+px2(1:nel)*vx2(1:nel)+px3(1:nel)*vx3(1:nel)+px4(1:nel)*vx4(1:nel)
135 . +px5(1:nel)*vx5(1:nel)+px6(1:nel)*vx6(1:nel)+px7(1:nel)*vx7(1:nel)+px8(1:nel)*vx8(1:nel)
136 dyy(1:nel) =py1(1:nel)*vy1(1:nel)+py2(1:nel)*vy2(1:nel)+py3(1:nel)*vy3(1:nel)+py4(1:nel)*vy4(1:nel)
137 . +py5(1:nel)*vy5(1:nel)+py6(1:nel)*vy6(1:nel)+py7(1:nel)*vy7(1:nel)+py8(1:nel)*vy8(1:nel)
138 dzz(1:nel) =pz1(1:nel)*vz1(1:nel)+pz2(1:nel)*vz2(1:nel)+pz3(1:nel)*vz3(1:nel)+pz4(1:nel)*vz4(
139 . +pz5(1:nel)*vz5(1:nel)+pz6(1:nel)*vz6(1:nel)+pz7(1:nel)*vz7(1:nel)+pz8(1:nel)*vz8(1:nel
140 dxy(1:nel) =pxy1(1:nel)*vx1(1:nel)+pxy2(1:nel)*vx2(1:nel)
141 + +pxy3(1:nel)*vx3(1:nel)+pxy4(1:nel)*vx4(1:nel)
142 + +pxy5(1:nel)*vx5(1:nel)+pxy6(1:nel)*vx6(1:nel)
143 + +pxy7(1:nel)*vx7(1:nel)+pxy8(1:nel)*vx8(1:nel)
144 dxz(1:nel) =pxz1(1:nel)*vx1(1:nel)+pxz2(1:nel)*vx2(1:nel)
145 + +pxz3(1:nel)*vx3(1:nel)+pxz4(1:nel)*vx4(1:nel)
146 + +pxz5(1:nel)*vx5(1:nel)+pxz6(1:nel)*vx6(1:nel)
147 + +pxz7(1:nel)*vx7(1:nel)+pxz8(1:nel)*vx8(1:nel)
148 dyx(1:nel) =pyx1(1:nel)*vy1(1:nel)+pyx2(1:nel)*vy2(1:nel)
149 + +pyx3(1:nel)*vy3(1:nel)+pyx4(1:nel)*vy4(1:nel)
150 + +pyx5(1:nel)*vy5(1:nel)+pyx6(1:nel)*vy6(1:nel)
151 + +pyx7(1:nel)*vy7(1:nel)+pyx8(1:nel)*vy8(1:nel)
152 dyz(1:nel) =pyz1(1:nel)*vy1(1:nel)+pyz2(1:nel)*vy2(1:nel)
153 + +pyz3(1:nel)*vy3(1:nel)+pyz4(1:nel)*vy4(1:nel)
154 + +pyz5(1:nel)*vy5(1:nel)+pyz6(1:nel)*vy6(1:nel)
155 + +pyz7(1:nel)*vy7(1:nel)+pyz8(1:nel)*vy8(1:nel)
156 dzx(1:nel) =pzx1(1:nel)*vz1(1:nel)+pzx2(1:nel)*vz2(1:nel)
157 + +pzx3(1:nel)*vz3(1:nel)+pzx4(1:nel)*vz4(1:nel)
158 + +pzx5(1:nel)*vz5(1:nel)+pzx6(1:nel)*vz6(1:nel)
159 + +pzx7(1:nel)*vz7(1:nel)+pzx8(1:nel)*vz8(1:nel)
160 dzy(1:nel) =pzy1(1:nel)*vz1(1:nel)+pzy2(1:nel)*vz2(1:nel)
161 + +pzy3(1:nel)*vz3(1:nel)+pzy4(1:nel)*vz4(1:nel)
162 + +pzy5(1:nel)*vz5(1:nel)+pzy6(1:nel)*vz6(1:nel)
163 + +pzy7(1:nel)*vz7(1:nel)+pzy8(1:nel)*vz8(1:nel)
164
165 IF (icp==1) THEN
167 1 det, dxx, dxy, dxz,
168 2 dyx, dyy, dyz, dzx,
169 3 dzy, dzz, nel)
170
171 DO i=1,nel
172 fac=two_third*nu(i)
173 base = det0(i)/
max(em20,det(i))
174 jfac(i)=exp(fac*log(
max(em20,base)))
175 IF (ideg(i)>10) jfac(i) =one
176 ENDDO
177 dxx(1:nel) = jfac(1:nel)*dxx(1:nel)+jfac(1:nel)-one
178 dyy(1:nel) = jfac(1:nel)*dyy(1:nel)+jfac(1:nel)-one
179 dzz(1:nel) = jfac(1:nel)*dzz(1:nel)+jfac(1:nel)-one
180 dxy(1:nel) = jfac(1:nel)*dxy(1:nel)
181 dyx(1:nel) = jfac(1:nel)*dyx(1:nel)
182 dzx(1:nel) = jfac(1:nel)*dzx(1:nel)
183 dxz(1:nel) = jfac(1:nel)*dxz(1:nel)
184 dyz(1:nel) = jfac(1:nel)*dyz(1:nel)
185 dzy(1:nel) = jfac(1:nel)*dzy(1:nel)
186 ELSE
187 dyy(1:nel) =dyy(1:nel)+bxy1(1:nel)*vx1(1:nel)+bxy2(1:nel)*vx2(1:nel)
188 + +bxy3(1:nel)*vx3(1:nel)+bxy4(1:nel)*vx4(1:nel)
189 + +bxy5(1:nel)*vx5(1:nel)+bxy6(1:nel)*vx6(1:nel)
190 + +bxy7(1:nel)*vx7(1:nel)+bxy8(1:nel)*vx8(1:nel)
191 dzz(1:nel) =dzz(1:nel)+bxz1(1:nel)*vx1(1:nel)+bxz2(1:nel)*vx2(1:nel)
192 + +bxz3(1:nel)*vx3(1:nel)+bxz4(1:nel)*vx4(1:nel)
193 + +bxz5(1:nel)*vx5(1:nel)+bxz6(1:nel)*vx6(1:nel)
194 + +bxz7(1:nel)*vx7(1:nel)+bxz8(1:nel)*vx8(1:nel)
195 dxx(1:nel) =dxx(1:nel)+byx1(1:nel)*vy1(1:nel)+byx2(1:nel)*vy2(1:nel)
196 + +byx3(1:nel)*vy3(1:nel)+byx4(1:nel)*vy4(1:nel)
197 + +byx5(1:nel)*vy5(1:nel)+byx6(1:nel)*vy6(1:nel)
198 + +byx7(1:nel)*vy7(1:nel)+byx8(1:nel)*vy8(1:nel)
199 dzz(1:nel) =dzz(1:nel)+byz1(1:nel)*vy1(1:nel)+byz2(1:nel)*vy2(1:nel)
200 + +byz3(1:nel)*vy3(1:nel)+byz4(1:nel)*vy4(1:nel)
201 + +byz5(1:nel)*vy5(1:nel)+byz6(1:nel)*vy6(1:nel)
202 + +byz7(1:nel)*vy7(1:nel)+byz8(1:nel)*vy8(1:nel)
203 dxx(1:nel) =dxx(1:nel)+bzx1(1:nel)*vz1(1:nel)+bzx2(1:nel)*vz2(1:nel)
204 + +bzx3(1:nel)*vz3(1:nel)+bzx4(1:nel)*vz4(1:nel)
205 + +bzx5(1:nel)*vz5(1:nel)+bzx6(1:nel)*vz6(1:nel)
206 + +bzx7(1:nel)*vz7(1:nel)+bzx8(1:nel)*vz8(1:nel)
207 dyy(1:nel) =dyy(1:nel)+bzy1(1:nel)*vz1(1:nel)+bzy2(1:nel)*vz2(1:nel)
208 + +bzy3(1:nel)*vz3(1:nel)+bzy4(1:nel)*vz4(1:nel)
209 + +bzy5(1:nel)*vz5(1:nel)+bzy6(1:nel)*vz6(1:nel)
210 + +bzy7(1:nel)*vz7(1:nel)+bzy8(1:nel)*vz8(1:nel)
211 ENDIF
212
213 RETURN
subroutine jacob_j33(det, aj1, aj2, aj3, aj4, aj5, aj6, aj7, aj8, aj9, nel)