44 use element_mod , only : nixs
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "mvsiz_p.inc"
53
54
55
56
57
58
59 INTEGER NEL
60
62 . x(3,*),
63 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*), x7(*), x8(*),
64 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*), y7(*), y8(*),
65 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*), z7(*), z8(*),
66 . offg(*), off(*), sav(nel,21), gama0(nel,6),gama(mvsiz,6),
67 . r(3,3,mvsiz)
69 . k11(9,*) ,k12(9,*) ,k13(9,*) ,k14(9,*) ,k15(9,*) ,
70 . k16(9,*) ,k17(9,*) ,k18(9,*) ,k22(9,*) ,k23(9,*) ,
71 . k24(9,*) ,k25(9,*) ,k26(9,*) ,k27(9,*) ,k28(9,*) ,
72 . k33(9,*) ,k34(9,*) ,k35(9,*) ,k36(9,*) ,k37(9,*) ,
73 . k38(9,*) ,k44(9,*) ,k45(9,*) ,k46(9,*) ,k47(9,*) ,
74 . k48(9,*) ,k55(9,*) ,k56(9,*) ,k57(9,*) ,k58(9,*) ,
75 . k66(9,*) ,k67(9,*) ,k68(9,*) ,k77(9,*) ,k78(9,*) ,
76 . k88(9,*)
77 INTEGER NC1(*), NC2(*), NC3(*), NC4(*),
78 . NC5(*), NC6(*), NC7(*), NC8(*), MXT(*), NGL(*),NGEO(*)
79 INTEGER IXS(NIXS,*),KHBE
80 double precision
81 . trm(nel,24,24),invj(mvsiz,3,3),kl(576,nel),
82 . v1(mvsiz,9), v2(mvsiz,9), v3(mvsiz,9), v4(mvsiz,9),
83 . v5(mvsiz,9), v6(mvsiz,9), v7(mvsiz,9), v8(mvsiz,9)
84
85
86
87 INTEGER I,J, MXT_1
88
90 . g11(mvsiz),g12(mvsiz),g13(mvsiz),
91 . g21(mvsiz),g22(mvsiz),g23(mvsiz),
92 . g31(mvsiz),g32(mvsiz),g33(mvsiz),
93 . t11(mvsiz),t12(mvsiz),t13(mvsiz),
94 . t21(mvsiz),t22(mvsiz),t23(mvsiz),
95 . t31(mvsiz),t32(mvsiz),t33(mvsiz)
97 . xl,yl,zl
99 . rx(mvsiz) , ry(mvsiz) , rz(mvsiz) ,
100 . sx(mvsiz) , sy(mvsiz) , sz(mvsiz) ,
101 . tx(mvsiz) , ty(mvsiz) , tz(mvsiz)
102 DOUBLE PRECISION DX_DR,DX_DS,DX_DT,DY_DR,DY_DS,DY_DT,DZ_DR,DZ_DS,DZ_DT
103 DOUBLE PRECISION X0(8),Y0(8),Z0(8),,DETJ0
104
105
106 mxt_1 = ixs(1,1)
107 DO i=1,nel
108 ngeo(i)=ixs(10,i)
109 ngl(i)=ixs(11,i)
110 mxt(i)=mxt_1
111 nc1(i)=ixs(2,i)
112 nc2(i)=ixs(3,i)
113 nc3(i)=ixs(4,i)
114 nc4(i)=ixs(5,i)
115 nc5(i)=ixs(6,i)
116 nc6(i)=ixs(7,i)
117 nc7(i)=ixs(8,i)
118 nc8(i)=ixs(9,i)
119 ENDDO
120
121
122
123 DO i=1,nel
124 x1(i)=x(1,nc1(i))
125 y1(i)=x(2,nc1(i))
126 z1(i)=x(3,nc1(i))
127 x2(i)=x(1,nc2(i))
128 y2(i)=x(2,nc2(i))
129 z2(i)=x(3,nc2(i))
130 x3(i)=x(1,nc3(i))
131 y3(i)=x(2,nc3(i))
132 z3(i)=x(3,nc3(i))
133 x4(i)=x(1,nc4(i))
134 y4(i)=x(2,nc4(i))
135 z4(i)=x(3,nc4(i))
136 x5(i)=x(1,nc5(i))
137 y5(i)=x(2,nc5(i))
138 z5(i)=x(3,nc5(i))
139 x6(i)=x(1,nc6(i))
140 y6(i)=x(2,nc6(i))
141 z6(i)=x(3,nc6(i))
142 x7(i)=x(1,nc7(i))
143 y7(i)=x(2,nc7(i))
144 z7(i)=x(3,nc7(i))
145 x8(i)=x(1,nc8(i))
146 y8(i)=x(2,nc8(i))
147 z8(i)=x(3,nc8(i))
148 ENDDO
149
150
151
152 DO i=1,nel
153 x0(1) = zero
154 y0(1) = zero
155 z0(1) = zero
156 x0(2) = sav(i,1)
157 y0(2) = sav(i,2)
158 z0(2) = sav(i,3)
159 x0(3) = sav(i,4)
160 y0(3) = sav(i,5)
161 z0(3) = sav(i,6)
162 x0(4) = sav(i,7)
163 y0(4) = sav(i,8)
164 z0(4) = sav(i,9)
165 x0(5) = sav(i,10)
166 y0(5) = sav(i,11)
167 z0(5) = sav(i,12)
168 x0(6) = sav(i,13)
169 y0(6) = sav(i,14)
170 z0(6) = sav(i,15)
171 x0(7) = sav(i,16)
172 y0(7) = sav(i,17)
173 z0(7) = sav(i,18)
174 x0(8) = sav(i,19)
175 y0(8) = sav(i,20)
176 z0(8) = sav(i,21)
177
178 dx_dr = (x0(3)+x0(4)+x0(7)+x0(8))-(x0(1)+x0(2)+x0(5)+x0(6))
179 dy_dr = (y0(3)+y0(4)+y0(7)+y0(8))-(y0(1)+y0(2)+y0(5)+y0(6))
180 dz_dr = (z0(3)+z0(4)+z0(7)+z0(8))-(z0(1)+z0(2)+z0(5)+z0(6))
181 dx_ds = (x0(5)+x0(6)+x0(7)+x0(8))-(x0(1)+x0(2)+x0(3)+x0(4))
182 dy_ds = (y0(5)+y0(6)+y0(7)+y0(8))-(y0(1)+y0(2)+y0(3)+y0(4))
183 dz_ds = (z0(5)+z0(6)+z0(7)+z0(8))-(z0(1)+z0(2)+z0(3)+z0(4))
184 dx_dt = (x0(2)+x0(3)+x0(6)+x0(7))-(x0(1)+x0(4)+x0(5)+x0(8))
185 dy_dt = (y0(2)+y0(3)+y0(6)+y0(7))-(y0(1)+y0(4)+y0(5)+y0(8))
186 dz_dt = (z0(2)+z0(3)+z0(6)+z0(7))-(z0(1)+z0(4)+z0(5)+z0(8))
187 detj0 =(dx_dr*(dy_ds*dz_dt-dz_ds*dy_dt)
188 . -dx_ds*(dy_dr*dz_dt-dy_dt*dz_dr)
189 . +dx_dt*(dy_dr*dz_ds-dy_ds*dz_dr))
190 detm1 = one/detj0
191 detm1 = eight*detm1
192 invj(i,1,1) = (dy_ds*dz_dt-dz_ds*dy_dt)*detm1
193 invj(i,2,1) = (dz_dr*dy_dt-dy_dr*dz_dt)*detm1
194 invj(i,3,1) = (dy_dr*dz_ds-dy_ds*dz_dr)*detm1
195 invj(i,1,2) = (dx_dt*dz_ds-dx_ds*dz_dt)*detm1
196 invj(i,2,2) = (dx_dr*dz_dt-dx_dt*dz_dr)*detm1
197 invj(i,3,2) = (dx_ds*dz_dr-dx_dr*dz_ds)*detm1
198 invj(i,1,3) = (dx_ds*dy_dt-dx_dt*dy_ds)*detm1
199 invj(i,2,3) = (dx_dt*dy_dr-dx_dr*dy_dt)*detm1
200 invj(i,3,3) = (dx_dr*dy_ds-dx_ds*dy_dr)*detm1
201 ENDDO
203 1 sav, invj, x1, x2,
204 2 x3, x4, x5, x6,
205 3 x7, x8, y1, y2,
206 4 y3, y4, y5, y6,
207 5 y7, y8, z1, z2,
208 6 z3, z4, z5, z6,
209 7 z7, z8, v1, v2,
210 8 v3, v4, v5, v6,
211 9 v7, v8, r, trm,
212 a nel)
213
214
215
216 DO i = 1,nel
217 x1(i) = zero
218 y1(i) = zero
219 z1(i) = zero
220 x2(i) = sav(i,1)
221 y2(i) = sav(i,2)
222 z2(i) = sav(i,3)
223 x3(i) = sav(i,4)
224 y3(i) = sav(i,5)
225 z3(i) = sav(i,6)
226 x4(i) = sav(i,7)
227 y4(i) = sav(i,8)
228 z4(i) = sav(i,9)
229 x5(i) = sav(i,10)
230 y5(i) = sav(i,11)
231 z5(i) = sav(i,12)
232 x6(i) = sav(i,13)
233 y6(i) = sav(i,14)
234 z6(i) = sav(i,15)
235 x7(i) = sav(i,16)
236 y7(i) = sav(i,17)
237 z7(i) = sav(i,18)
238 x8(i) = sav(i,19)
239 y8(i) = sav(i,20)
240 z8(i) = sav(i,21)
241 ENDDO
242 DO i=1,nel
243 IF(offg(i)>one)THEN
244 off(i) = offg(i)-one
245 ENDIF
246 ENDDO
247 DO i=1,nel
248 off(i) =
min(one,offg(i))
249 ENDDO
250
251 DO j=1,9
252 DO i=1,nel
253 k11(j,i)=zero
254 k12(j,i)=zero
255 k13(j,i)=zero
256 k14(j,i)=zero
257 k15(j,i)=zero
258 k16(j,i)=zero
259 k17(j,i)=zero
260 k18(j,i)=zero
261 k22(j,i)=zero
262 k23(j,i)=zero
263 k24(j,i)=zero
264 k25(j,i)=zero
265 k26(j,i)=zero
266 k27(j,i)=zero
267 k28(j,i)=zero
268 k33(j,i)=zero
269 k34(j,i)=zero
270 k35(j,i)=zero
271 k36(j,i)=zero
272 k37(j,i)=zero
273 k38(j,i)=zero
274 k44(j,i)=zero
275 k45(j,i)=zero
276 k46(j,i)=zero
277 k47(j,i)=zero
278 k48(j,i)=zero
279 k55(j,i)=zero
280 k56(j,i)=zero
281 k57(j,i)=zero
282 k58(j,i)=zero
283 k66(j,i)=zero
284 k67(j,i)=zero
285 k68(j,i)=zero
286 k77(j,i)=zero
287 k78(j,i)=zero
288 k88(j,i)=zero
289 ENDDO
290 ENDDO
291
292 DO j=1,nel
293 DO i=1,576
294 kl(i,j)=zero
295 ENDDO
296 ENDDO
297
298 RETURN
subroutine crtrans_imp(sav, invj, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8, v1, v2, v3, v4, v5, v6, v7, v8, r, trm, nel)