39
40
41
43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "param_c.inc"
51#include "com08_c.inc"
52
53
54
55 INTEGER, INTENT(IN) :: NEL
56 INTEGER, INTENT(IN) :: NFT
57 INTEGER, INTENT(IN) :: NUMMAT
58 INTEGER, INTENT(IN) :: NUMELS
59 INTEGER IXS(NIXS,NUMELS)
61 . v(3,*), veul(lveul,*),x(3,*),pm(npropm,nummat),
62 . dxx(*), dxy(*), dxz(*),
63 . dyx(*), dyy(*), dyz(*),
64 . dzx(*), dzy(*), dzz(*), d4(*), d5(*), d6(*),
65 . wxx(*), wyy(*), wzz(*),bufmat(*)
66 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
67 INTEGER,INTENT(IN)::IPM(NPROPMI,NUMMAT)
68
69
70
71 INTEGER I, II,IVOI,ML,NC1,NC2,NC3,NC4,NC5,NC6,NC7,NC8,J,IADBUF,IFLG,IAD2
73 . x1,y1,z1,vx1,vy1,vz1,
74 . x2,y2,z2,vx2,vy2,vz2,
75 . x3,y3,z3,vx3,vy3,vz3,
76 . x4,y4,z4,vx4,vy4,vz4,
77 . x5,y5,z5,vx5,vy5,vz5,
78 . x6,y6,z6,vx6,vy6,vz6,
79 . x7,y7,z7,vx7,vy7,vz7,
80 . x8,y8,z8,vx8,vy8,vz8,
81 . x17,x28,x35,x46,y17,y28,y35,y46,z17,z28
82 . vx17,vx28,vx35,vx46,vy17,vy28,vy35,vy46,vz17,vz28
83 . aj1,aj2,aj3,aj4,aj5,aj6,aj7,aj8,aj9,
84 . aji1,aji2,aji3,aji4,aji5,aji6,aji7,aji8,aji9,
85 . jac_59_68,jac_67_49,jac_48_57,aj12,aj45,aj78,
86 . px1, px2, px3, px4,
87 . py1, py2, py3, py4,
88 . pz1, pz2, pz3, pz4,
89 . a17,a28,b17,b28,c17,c28,dt1d2,
90 . dett
91
92 dt1d2=half*dt1
93 DO i=1,nel
94 ii=i+nft
95
96 iad2 = ale_connect%ee_connect%iad_connect(ii)
97 DO j=1,6
98 ivoi=ale_connect%ee_connect%connected(iad2 + j - 1)
99 ml = 11
100 iflg = 6
101 IF(ivoi/=0)ml=nint(pm(19,ixs(1,ivoi)))
102 IF(ml/=11)EXIT
103 IF(ml==51)THEN
104 iadbuf = ipm(27,ixs(1,ivoi))
105 iflg = nint(bufmat(31+iadbuf-1))
106 IF(iflg<=1)EXIT
107 ENDIF
108 ENDDO
109
110 IF(ml==11 .OR. (ml==51.AND.(iflg==6.OR.iflg==3)))THEN
111 dxx(i)=zero
112 dyy(i)=zero
113 dzz(i)=zero
114 dxy(i)=zero
115 dxz(i)=zero
116 dyx(i)=zero
117 dyz(i)=zero
118 dzx(i)=zero
119 dzy(i)=zero
120 d4(i) =zero
121 d5(i) =zero
122 d6(i) =zero
123 wzz(i)=zero
124 wyy(i)=zero
125 wxx(i)=zero
126 ELSE
127 nc1=ixs(2,ivoi)
128 nc2=ixs(3,ivoi)
129 nc3=ixs(4,ivoi)
130 nc4=ixs(5,ivoi)
131 nc5=ixs(6,ivoi)
132 nc6=ixs(7,ivoi)
133 nc7=ixs(8,ivoi)
134 nc8=ixs(9,ivoi)
135 x1 =x(1,nc1)
136 y1 =x(2,nc1)
137 z1 =x(3,nc1)
138 vx1=v(1,nc1)
139 vy1=v(2,nc1)
140 vz1=v(3,nc1)
141 x2 =x(1,nc2)
142 y2 =x(2,nc2)
143 z2 =x(3,nc2)
144 vx2=v(1,nc2)
145 vy2=v(2,nc2)
146 vz2=v(3,nc2)
147 x3 =x(1,nc3)
148 y3 =x(2,nc3)
149 z3 =x(3,nc3)
150 vx3=v(1,nc3)
151 vy3=v(2,nc3)
152 vz3=v(3,nc3)
153 x4 =x(1,nc4)
154 y4 =x(2,nc4)
155 z4 =x(3,nc4)
156 vx4=v(1,nc4)
157 vy4=v(2,nc4)
158 vz4=v(3,nc4)
159 x5 =x(1,nc5)
160 y5 =x(2,nc5)
161 z5 =x(3,nc5)
162 vx5=v(1,nc5)
163 vy5=v(2,nc5)
164 vz5=v(3,nc5)
165 x6 =x(1,nc6)
166 y6 =x(2,nc6)
167 z6 =x(3,nc6)
168 vx6=v(1,nc6)
169 vy6=v(2,nc6)
170 vz6=v(3,nc6)
171 x7 =x(1,nc7)
172 y7 =x(2,nc7)
173 z7 =x(3,nc7)
174 vx7=v(1,nc7)
175 vy7=v(2,nc7)
176 vz7=v(3,nc7)
177 x8 =x(1,nc8)
178 y8 =x(2,nc8)
179 z8 =x(3,nc8)
180 vx8 =v(1,nc8)
181 vy8 =v(2,nc8)
182 vz8 =v(3,nc8)
183 x17=x7-x1
184 x28=x8-x2
185 x35=x5-x3
186 x46=x6-x4
187 y17=y7-y1
188 y28=y8-y2
189 y35=y5-y3
190 y46=y6-y4
191 z17=z7-z1
192 z28=z8-z2
193 z35=z5-z3
194 z46=z6-z4
195 aj1=x17+x28-x35-x46
196 aj2=y17+y28-y35-y46
197 aj3=z17+z28-z35-z46
198 a17=x17+x46
199 a28=x28+x35
200 b17=y17+y46
201 b28=y28+y35
202 c17=z17+z46
203 c28=z28+z35
204 aj4=a17+a28
205 aj5=b17+b28
206 aj6=c17+c28
207 aj7=a17-a28
208 aj8=b17-b28
209 aj9=c17-c28
210 jac_59_68=aj5*aj9-aj6*aj8
211 jac_67_49=aj6*aj7-aj4*aj9
212 jac_48_57=aj4*aj8-aj5*aj7
213 dett=one/(aj1*jac_59_68+aj2*jac_67_49+aj3*jac_48_57)
214 aji1=dett*jac_59_68
215 aji4=dett*jac_67_49
216 aji7=dett*jac_48_57
217 aji2=dett*(-aj2*aj9+aj3*aj8)
218 aji5=dett*( aj1*aj9-aj3*aj7)
219 aji8=dett*(-aj1*aj8+aj2*aj7)
220 aji3=dett*( aj2*aj6-aj3*aj5)
221 aji6=dett*(-aj1*aj6+aj3*aj4)
222 aji9=dett*( aj1*aj5-aj2*aj4)
223 aj12=aji1-aji2
224 aj45=aji4-aji5
225 aj78=aji7-aji8
226 px3= aj12+aji3
227 py3= aj45+aji6
228 pz3= aj78+aji9
229 px4= aj12-aji3
230 py4= aj45-aji6
231 pz4= aj78-aji9
232 aj12=aji1+aji2
233 aj45=aji4+aji5
234 aj78=aji7+aji8
235 px1=-aj12-aji3
236 py1=-aj45-aji6
237 pz1=-aj78-aji9
238 px2=-aj12+aji3
239 py2=-aj45+aji6
240 pz2=-aj78+aji9
241 vx17=vx1-vx7
242 vx28=vx2-vx8
243 vx35=vx3-vx5
244 vx46=vx4-vx6
245 vy17=vy1-vy7
246 vy28=vy2-vy8
247 vy35=vy3-vy5
248 vy46=vy4-vy6
249 vz17=vz1-vz7
250 vz28=vz2-vz8
251 vz35=vz3-vz5
252 vz46=vz4-vz6
253 dxx(i)=px1*vx17+px2*vx28+px3*vx35+px4*vx46
254 dyy(i)=py1*vy17+py2*vy28+py3*vy35+py4*vy46
255 dzz(i)=pz1*vz17+pz2*vz28+pz3*vz35+pz4*vz46
256 dxy(i)=py1*vx17+py2*vx28+py3*vx35+py4*vx46
257 dxz(i)=pz1*vx17+pz2*vx28+pz3*vx35+pz4*vx46
258 dyx(i)=px1*vy17+px2*vy28+px3*vy35+px4*vy46
259 dyz(i)=pz1*vy17+pz2*vy28+pz3*vy35+pz4*vy46
260 dzx(i)=px1*vz17+px2*vz28+px3*vz35+px4*vz46
261 dzy(i)=py1*vz17+py2*vz28+py3*vz35+py4*vz46
262 d4(i) =dxy(i)+dyx(i)
263 d5(i) =dyz(i)+dzy(i)
264 d6(i) =dxz(i)+dzx(i)
265 wzz(i)=dt1d2*(dyx(i)-dxy(i))
266 wyy(i)=dt1d2*(dxz(i)-dzx(i))
267 wxx(i)=dt1d2*(dzy(i)-dyz(i))
268 ENDIF
269 ENDDO
270
271 RETURN