OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
scoor43.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| scoor43 ../engine/source/elements/solid/sconnect/scoor43.F
25!||--- called by ------------------------------------------------------
26!|| suser43 ../engine/source/elements/solid/sconnect/suser43.F
27!||--- calls -----------------------------------------------------
28!|| clskew3 ../engine/source/elements/sh3n/coquedk/cdkcoor3.F
29!|| sdet43 ../engine/source/elements/solid/sconnect/sdet43.F
30!||====================================================================
31 SUBROUTINE scoor43(OFFG ,NEL ,IOUTPRT ,Q ,
32 . X1 ,X2 ,X3 ,X4 ,X5 ,X6 ,X7 ,X8 ,
33 . Y1 ,Y2 ,Y3 ,Y4 ,Y5 ,Y6 ,Y7 ,Y8 ,
34 . Z1 ,Z2 ,Z3 ,Z4 ,Z5 ,Z6 ,Z7 ,Z8 ,
35 . VX1 ,VX2 ,VX3 ,VX4 ,VX5 ,VX6 ,VX7 ,VX8 ,
36 . VY1 ,VY2 ,VY3 ,VY4 ,VY5 ,VY6 ,VY7 ,VY8 ,
37 . VZ1 ,VZ2 ,VZ3 ,VZ4 ,VZ5 ,VZ6 ,VZ7 ,VZ8 ,
38 . R1X ,R2X ,R3X ,R4X ,R5X ,R6X ,R7X ,R8X ,
39 . R1Y ,R2Y ,R3Y ,R4Y ,R5Y ,R6Y ,R7Y ,R8Y ,
40 . R1Z ,R2Z ,R3Z ,R4Z ,R5Z ,R6Z ,R7Z ,R8Z ,
41 . RXX ,RYY ,RZZ ,VXLOC,VYLOC,VZLOC,
42 . E1X ,E1Y ,E1Z ,E2X ,E2Y ,E2Z ,E3X ,E3Y ,E3Z ,
43 . AREAP,TIME ,DT ,SOLID_ID,
44 . VGAX ,VGAY ,VGAZ ,VGA2 ,SYM, IPM, IMAT)
45C-----------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49#include "param_c.inc"
50#include "mvsiz_p.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54 INTEGER NEL,IMAT,IOUTPRT
55 INTEGER IPM(NPROPMI,*),SOLID_ID(*)
56C REAL
57 my_real
58 . TIME,DT,OFFG(NEL),AREAP(MVSIZ,4),Q(NEL,9),
59 . RXX(NEL),RYY(NEL),RZZ(NEL),
60 . X1(NEL) ,X2(NEL),X3(NEL),X4(NEL),
61 . X5(NEL) ,X6(NEL),X7(NEL),X8(NEL),
62 . Y1(NEL) ,Y2(NEL),Y3(NEL),Y4(NEL),
63 . Y5(NEL) ,Y6(NEL),Y7(NEL),Y8(NEL),
64 . Z1(NEL) ,Z2(NEL),Z3(NEL),Z4(NEL),
65 . Z5(NEL) ,Z6(NEL),Z7(NEL),Z8(NEL),
66 . VX1(NEL), VX2(NEL), VX3(NEL), VX4(NEL),
67 . vx5(nel), vx6(nel), vx7(nel), vx8(nel),
68 . vy1(nel), vy2(nel), vy3(nel), vy4(nel),
69 . vy5(nel), vy6(nel), vy7(nel), vy8(nel),
70 . vz1(nel), vz2(nel), vz3(nel), vz4(nel),
71 . vz5(nel), vz6(nel), vz7(nel), vz8(nel),
72 . vxloc(mvsiz,8),vyloc(mvsiz,8),vzloc(mvsiz,8),
73 . r1x(nel),r2x(nel),r3x(nel),r4x(nel),
74 . r5x(nel),r6x(nel),r7x(nel),r8x(nel),
75 . r1y(nel),r2y(nel),r3y(nel),r4y(nel),
76 . r5y(nel),r6y(nel),r7y(nel),r8y(nel),
77 . r1z(nel),r2z(nel),r3z(nel),r4z(nel),
78 . r5z(nel),r6z(nel),r7z(nel),r8z(nel),
79 . vgax(*), vgay(*), vgaz(*), vga2(*),
80 . e1x(*),e2x(*),e3x(*),e1y(*),e2y(*),e3y(*),e1z(*),e2z(*),e3z(*),
81 . xloc(nel,8), yloc(nel,8), zloc(nel,8)
82C-----------------------------------------------
83C L o c a l V a r i a b l e s
84C-----------------------------------------------
85 INTEGER I,IREP1,MTN
86C REAL
87 my_real
88 . OFF_L,CS,SN,KSI,NR,X0,Y0,Z0,VX0,VY0,VZ0,DTI,CC,COSIN
89 my_real
90 . P1X(NEL), P2X(NEL), P3X(NEL), P4X(NEL),
91 . P1Y(NEL), P2Y(NEL), P3Y(NEL), P4Y(NEL),
92 . P1Z(NEL), P2Z(NEL), P3Z(NEL), P4Z(NEL),
93 . RX(NEL),RY(NEL),RZ(NEL),SX(NEL),SY(NEL),SZ(NEL),
94 . AREA(NEL),DET(NEL),RV(3),MROT(9),NORME(NEL),SYM(NEL),
95 . a1x(NEL), a1y(NEL), a1z(NEL), b1x(NEL), b1y(NEL), b1z(NEL),
96 . a2x(NEL), a2y(NEL), a2z(NEL), b2x(NEL), b2y(NEL), b2z(NEL),
97 . N1x(NEL), N1y(NEL), N1z(NEL), N2x(NEL), N2y(NEL), N2z(NEL)
98C=======================================================================
99 off_l = zero
100 dti = one/max(dt,em20)
101 mtn = ipm(2,imat)
102C----------------------------
103C REPERE ISO
104C----------------------------
105 DO i=1,nel
106 ! P milieu des aretes
107 p1x(i)=(x1(i)+x5(i))*half
108 p1y(i)=(y1(i)+y5(i))*half
109 p1z(i)=(z1(i)+z5(i))*half
110 p2x(i)=(x2(i)+x6(i))*half
111 p2y(i)=(y2(i)+y6(i))*half
112 p2z(i)=(z2(i)+z6(i))*half
113 p3x(i)=(x3(i)+x7(i))*half
114 p3y(i)=(y3(i)+y7(i))*half
115 p3z(i)=(z3(i)+z7(i))*half
116 p4x(i)=(x4(i)+x8(i))*half
117 p4y(i)=(y4(i)+y8(i))*half
118 p4z(i)=(z4(i)+z8(i))*half
119 rx(i) = p2x(i) + p3x(i) - p1x(i) - p4x(i)
120 ry(i) = p2y(i) + p3y(i) - p1y(i) - p4y(i)
121 rz(i) = p2z(i) + p3z(i) - p1z(i) - p4z(i)
122 sx(i) = p3x(i) + p4x(i) - p1x(i) - p2x(i)
123 sy(i) = p3y(i) + p4y(i) - p1y(i) - p2y(i)
124 sz(i) = p3z(i) + p4z(i) - p1z(i) - p2z(i)
125 ENDDO
126 IF (mtn==83) THEN
127 DO i=1,nel
128
129 ! N1 and N2 the normal to the surface 1234 and 5678
130 a1x(i) = x6(i) + x7(i) - x5(i) - x8(i)
131 a1y(i) = y6(i) + y7(i) - y5(i) - y8(i)
132 a1z(i) = z6(i) + z7(i) - z5(i) - z8(i)
133 b1x(i) = x7(i) + x8(i) - x6(i) - x5(i)
134 b1y(i) = y7(i) + y8(i) - y6(i) - y5(i)
135 b1z(i) = z7(i) + z8(i) - z6(i) - z5(i)
136 ! A VECTORIEL b PUIS NORMALISER
137 n1x(i) = a1y(i) * b1z(i) - a1z(i) * b1y(i)
138 n1y(i) = a1z(i) * b1x(i) - a1x(i) * b1z(i)
139 n1z(i) = a1x(i) * b1y(i) - a1y(i) * b1x(i)
140 norme(i) = sqrt(n1x(i)*n1x(i) + n1y(i)*n1y(i) + n1z(i)*n1z(i))
141 norme(i)=max(em20,norme(i))
142 cc = one / norme(i)
143 n1x(i) = n1x(i) * cc
144 n1y(i) = n1y(i) * cc
145 n1z(i) = n1z(i) * cc
146
147 a2x(i) = x2(i) + x3(i) - x1(i) - x4(i)
148 a2y(i) = y2(i) + y3(i) - y1(i) - y4(i)
149 a2z(i) = z2(i) + z3(i) - z1(i) - z4(i)
150 b2x(i) = x3(i) + x4(i) - x2(i) - x1(i)
151 b2y(i) = y3(i) + y4(i) - y2(i) - y1(i)
152 b2z(i) = z3(i) + z4(i) - z2(i) - z1(i)
153 ! A VECTORIEL b PUIS NORMALISER
154 n2x(i) = a2y(i) * b2z(i) - a2z(i) * b2y(i)
155 n2y(i) = a2z(i) * b2x(i) - a2x(i) * b2z(i)
156 n2z(i) = a2x(i) * b2y(i) - a2y(i) * b2x(i)
157 norme(i) = sqrt(n2x(i)*n2x(i) + n2y(i)*n2y(i) + n2z(i)*n2z(i))
158 norme(i)=max(em20,norme(i))
159 cc = one / norme(i)
160 n2x(i) = n2x(i) * cc
161 n2y(i) = n2y(i) * cc
162 n2z(i) = n2z(i) * cc
163 ! TETA = ARCOS( N1.N2 ) CAR NORME =1 PAS BESOIN DE DIVISER
164 cosin = n1x(i)*n2x(i) + n1y(i)*n2y(i) + n1z(i)*n2z(i)
165 cosin = max(-one,min(one, cosin))
166 sym(i)= acos(cosin)
167 ENDDO
168 ENDIF
169C----------------------------
170C LOCAL SYSTEM
171C----------------------------
172 irep1 = 0
173 CALL clskew3(1,nel ,irep1,
174 . rx, ry, rz,sx, sy, sz,
175 . e1x,e2x,e3x,e1y,e2y,e3y,e1z,e2z,e3z,det,offg)
176 DO i=1,nel
177 area(i) = fourth*det(i)
178 ENDDO
179C-----------
180C Prepare les sorties par part.
181C-----------
182 IF (ioutprt == 1) THEN
183 DO i=1,nel
184 vgax(i)=vx1(i)+vx2(i)+vx3(i)+vx4(i)+vx5(i)+vx6(i)+vx7(i)+vx8(i)
185 vgay(i)=vy1(i)+vy2(i)+vy3(i)+vy4(i)+vy5(i)+vy6(i)+vy7(i)+vy8(i)
186 vgaz(i)=vz1(i)+vz2(i)+vz3(i)+vz4(i)+vz5(i)+vz6(i)+vz7(i)+vz8(i)
187 vga2(i)=vx1(i)*vx1(i)+vx2(i)*vx2(i)+vx3(i)*vx3(i)+vx4(i)*vx4(i)
188 . +vx5(i)*vx5(i)+vx6(i)*vx6(i)+vx7(i)*vx7(i)+vx8(i)*vx8(i)
189 . +vy1(i)*vy1(i)+vy2(i)*vy2(i)+vy3(i)*vy3(i)+vy4(i)*vy4(i)
190 . +vy5(i)*vy5(i)+vy6(i)*vy6(i)+vy7(i)*vy7(i)+vy8(i)*vy8(i)
191 . +vz1(i)*vz1(i)+vz2(i)*vz2(i)+vz3(i)*vz3(i)+vz4(i)*vz4(i)
192 . +vz5(i)*vz5(i)+vz6(i)*vz6(i)+vz7(i)*vz7(i)+vz8(i)*vz8(i)
193 ENDDO
194 ENDIF
195C-----------
196C PASSAGE AU REPERE CONVECTE
197C-----------
198 DO i=1,nel
199 xloc(i,1) = e1x(i)*x1(i)+e1y(i)*y1(i)+e1z(i)*z1(i)
200 yloc(i,1) = e2x(i)*x1(i)+e2y(i)*y1(i)+e2z(i)*z1(i)
201 zloc(i,1) = e3x(i)*x1(i)+e3y(i)*y1(i)+e3z(i)*z1(i)
202 xloc(i,2) = e1x(i)*x2(i)+e1y(i)*y2(i)+e1z(i)*z2(i)
203 yloc(i,2) = e2x(i)*x2(i)+e2y(i)*y2(i)+e2z(i)*z2(i)
204 zloc(i,2) = e3x(i)*x2(i)+e3y(i)*y2(i)+e3z(i)*z2(i)
205 xloc(i,3) = e1x(i)*x3(i)+e1y(i)*y3(i)+e1z(i)*z3(i)
206 yloc(i,3) = e2x(i)*x3(i)+e2y(i)*y3(i)+e2z(i)*z3(i)
207 zloc(i,3) = e3x(i)*x3(i)+e3y(i)*y3(i)+e3z(i)*z3(i)
208 xloc(i,4) = e1x(i)*x4(i)+e1y(i)*y4(i)+e1z(i)*z4(i)
209 yloc(i,4) = e2x(i)*x4(i)+e2y(i)*y4(i)+e2z(i)*z4(i)
210 zloc(i,4) = e3x(i)*x4(i)+e3y(i)*y4(i)+e3z(i)*z4(i)
211 xloc(i,5) = e1x(i)*x5(i)+e1y(i)*y5(i)+e1z(i)*z5(i)
212 yloc(i,5) = e2x(i)*x5(i)+e2y(i)*y5(i)+e2z(i)*z5(i)
213 zloc(i,5) = e3x(i)*x5(i)+e3y(i)*y5(i)+e3z(i)*z5(i)
214 xloc(i,6) = e1x(i)*x6(i)+e1y(i)*y6(i)+e1z(i)*z6(i)
215 yloc(i,6) = e2x(i)*x6(i)+e2y(i)*y6(i)+e2z(i)*z6(i)
216 zloc(i,6) = e3x(i)*x6(i)+e3y(i)*y6(i)+e3z(i)*z6(i)
217 xloc(i,7) = e1x(i)*x7(i)+e1y(i)*y7(i)+e1z(i)*z7(i)
218 yloc(i,7) = e2x(i)*x7(i)+e2y(i)*y7(i)+e2z(i)*z7(i)
219 zloc(i,7) = e3x(i)*x7(i)+e3y(i)*y7(i)+e3z(i)*z7(i)
220 xloc(i,8) = e1x(i)*x8(i)+e1y(i)*y8(i)+e1z(i)*z8(i)
221 yloc(i,8) = e2x(i)*x8(i)+e2y(i)*y8(i)+e2z(i)*z8(i)
222 zloc(i,8) = e3x(i)*x8(i)+e3y(i)*y8(i)+e3z(i)*z8(i)
223C
224 x0 = (xloc(i,1)+xloc(i,2)+xloc(i,3)+xloc(i,4)+
225 . xloc(i,5)+xloc(i,6)+xloc(i,7)+xloc(i,8))*one_over_8
226 y0 = (yloc(i,1)+yloc(i,2)+yloc(i,3)+yloc(i,4)+
227 . yloc(i,5)+yloc(i,6)+yloc(i,7)+yloc(i,8))*one_over_8
228 z0 = (zloc(i,1)+zloc(i,2)+zloc(i,3)+zloc(i,4)+
229 . zloc(i,5)+zloc(i,6)+zloc(i,7)+zloc(i,8))*one_over_8
230C
231 xloc(i,1) = xloc(i,1) - x0
232 xloc(i,2) = xloc(i,2) - x0
233 xloc(i,3) = xloc(i,3) - x0
234 xloc(i,4) = xloc(i,4) - x0
235 xloc(i,5) = xloc(i,5) - x0
236 xloc(i,6) = xloc(i,6) - x0
237 xloc(i,7) = xloc(i,7) - x0
238 xloc(i,8) = xloc(i,8) - x0
239 yloc(i,1) = yloc(i,1) - y0
240 yloc(i,2) = yloc(i,2) - y0
241 yloc(i,3) = yloc(i,3) - y0
242 yloc(i,4) = yloc(i,4) - y0
243 yloc(i,5) = yloc(i,5) - y0
244 yloc(i,6) = yloc(i,6) - y0
245 yloc(i,7) = yloc(i,7) - y0
246 yloc(i,8) = yloc(i,8) - y0
247 zloc(i,1) = zloc(i,1) - z0
248 zloc(i,2) = zloc(i,2) - z0
249 zloc(i,3) = zloc(i,3) - z0
250 zloc(i,4) = zloc(i,4) - z0
251 zloc(i,5) = zloc(i,5) - z0
252 zloc(i,6) = zloc(i,6) - z0
253 zloc(i,7) = zloc(i,7) - z0
254 zloc(i,8) = zloc(i,8) - z0
255 ENDDO
256C-----------
257C PASSAGE DES VITESSES AU REPERE CONVECTE
258C-----------
259 DO i=1,nel
260 vxloc(i,1) = e1x(i)*vx1(i)+e1y(i)*vy1(i)+e1z(i)*vz1(i)
261 vyloc(i,1) = e2x(i)*vx1(i)+e2y(i)*vy1(i)+e2z(i)*vz1(i)
262 vzloc(i,1) = e3x(i)*vx1(i)+e3y(i)*vy1(i)+e3z(i)*vz1(i)
263 vxloc(i,2) = e1x(i)*vx2(i)+e1y(i)*vy2(i)+e1z(i)*vz2(i)
264 vyloc(i,2) = e2x(i)*vx2(i)+e2y(i)*vy2(i)+e2z(i)*vz2(i)
265 vzloc(i,2) = e3x(i)*vx2(i)+e3y(i)*vy2(i)+e3z(i)*vz2(i)
266 vxloc(i,3) = e1x(i)*vx3(i)+e1y(i)*vy3(i)+e1z(i)*vz3(i)
267 vyloc(i,3) = e2x(i)*vx3(i)+e2y(i)*vy3(i)+e2z(i)*vz3(i)
268 vzloc(i,3) = e3x(i)*vx3(i)+e3y(i)*vy3(i)+e3z(i)*vz3(i)
269 vxloc(i,4) = e1x(i)*vx4(i)+e1y(i)*vy4(i)+e1z(i)*vz4(i)
270 vyloc(i,4) = e2x(i)*vx4(i)+e2y(i)*vy4(i)+e2z(i)*vz4(i)
271 vzloc(i,4) = e3x(i)*vx4(i)+e3y(i)*vy4(i)+e3z(i)*vz4(i)
272 vxloc(i,5) = e1x(i)*vx5(i)+e1y(i)*vy5(i)+e1z(i)*vz5(i)
273 vyloc(i,5) = e2x(i)*vx5(i)+e2y(i)*vy5(i)+e2z(i)*vz5(i)
274 vzloc(i,5) = e3x(i)*vx5(i)+e3y(i)*vy5(i)+e3z(i)*vz5(i)
275 vxloc(i,6) = e1x(i)*vx6(i)+e1y(i)*vy6(i)+e1z(i)*vz6(i)
276 vyloc(i,6) = e2x(i)*vx6(i)+e2y(i)*vy6(i)+e2z(i)*vz6(i)
277 vzloc(i,6) = e3x(i)*vx6(i)+e3y(i)*vy6(i)+e3z(i)*vz6(i)
278 vxloc(i,7) = e1x(i)*vx7(i)+e1y(i)*vy7(i)+e1z(i)*vz7(i)
279 vyloc(i,7) = e2x(i)*vx7(i)+e2y(i)*vy7(i)+e2z(i)*vz7(i)
280 vzloc(i,7) = e3x(i)*vx7(i)+e3y(i)*vy7(i)+e3z(i)*vz7(i)
281 vxloc(i,8) = e1x(i)*vx8(i)+e1y(i)*vy8(i)+e1z(i)*vz8(i)
282 vyloc(i,8) = e2x(i)*vx8(i)+e2y(i)*vy8(i)+e2z(i)*vz8(i)
283 vzloc(i,8) = e3x(i)*vx8(i)+e3y(i)*vy8(i)+e3z(i)*vz8(i)
284 vx0 = (vxloc(i,1)+vxloc(i,2)+vxloc(i,3)+vxloc(i,4)+
285 . vxloc(i,5)+vxloc(i,6)+vxloc(i,7)+vxloc(i,8))*one_over_8
286 vy0 = (vyloc(i,1)+vyloc(i,2)+vyloc(i,3)+vyloc(i,4)+
287 . vyloc(i,5)+vyloc(i,6)+vyloc(i,7)+vyloc(i,8))*one_over_8
288 vz0 = (vzloc(i,1)+vzloc(i,2)+vzloc(i,3)+vzloc(i,4)+
289 . vzloc(i,5)+vzloc(i,6)+vzloc(i,7)+vzloc(i,8))*one_over_8
290 vxloc(i,1) = vxloc(i,1) - vx0
291 vyloc(i,1) = vyloc(i,1) - vy0
292 vzloc(i,1) = vzloc(i,1) - vz0
293 vxloc(i,2) = vxloc(i,2) - vx0
294 vyloc(i,2) = vyloc(i,2) - vy0
295 vzloc(i,2) = vzloc(i,2) - vz0
296 vxloc(i,3) = vxloc(i,3) - vx0
297 vyloc(i,3) = vyloc(i,3) - vy0
298 vzloc(i,3) = vzloc(i,3) - vz0
299 vxloc(i,4) = vxloc(i,4) - vx0
300 vyloc(i,4) = vyloc(i,4) - vy0
301 vzloc(i,4) = vzloc(i,4) - vz0
302 vxloc(i,5) = vxloc(i,5) - vx0
303 vyloc(i,5) = vyloc(i,5) - vy0
304 vzloc(i,5) = vzloc(i,5) - vz0
305 vxloc(i,6) = vxloc(i,6) - vx0
306 vyloc(i,6) = vyloc(i,6) - vy0
307 vzloc(i,6) = vzloc(i,6) - vz0
308 vxloc(i,7) = vxloc(i,7) - vx0
309 vyloc(i,7) = vyloc(i,7) - vy0
310 vzloc(i,7) = vzloc(i,7) - vz0
311 vxloc(i,8) = vxloc(i,8) - vx0
312 vyloc(i,8) = vyloc(i,8) - vy0
313 vzloc(i,8) = vzloc(i,8) - vz0
314 ENDDO
315C
316 DO i=1,nel
317 r1x(i) = xloc(i,1)
318 r2x(i) = xloc(i,2)
319 r3x(i) = xloc(i,3)
320 r4x(i) = xloc(i,4)
321 r5x(i) = xloc(i,5)
322 r6x(i) = xloc(i,6)
323 r7x(i) = xloc(i,7)
324 r8x(i) = xloc(i,8)
325 r1y(i) = yloc(i,1)
326 r2y(i) = yloc(i,2)
327 r3y(i) = yloc(i,3)
328 r4y(i) = yloc(i,4)
329 r5y(i) = yloc(i,5)
330 r6y(i) = yloc(i,6)
331 r7y(i) = yloc(i,7)
332 r8y(i) = yloc(i,8)
333 r1z(i) = zloc(i,1)
334 r2z(i) = zloc(i,2)
335 r3z(i) = zloc(i,3)
336 r4z(i) = zloc(i,4)
337 r5z(i) = zloc(i,5)
338 r6z(i) = zloc(i,6)
339 r7z(i) = zloc(i,7)
340 r8z(i) = zloc(i,8)
341C
342 rxx(i) = r2x(i)+r3x(i)+r6x(i)+r7x(i)-r1x(i)-r4x(i)-r5x(i)-r8x(i)
343 ryy(i) = r3y(i)+r4y(i)+r7y(i)+r8y(i)-r1y(i)-r2y(i)-r5y(i)-r6y(i)
344 rzz(i) = r5z(i)+r6z(i)+r7z(i)+r8z(i)-r1z(i)-r2z(i)-r3z(i)-r4z(i)
345 rxx(i) = abs(rxx(i))
346 ryy(i) = abs(ryy(i))
347 rzz(i) = abs(rzz(i))
348 ENDDO
349C-----------
350 IF (time == zero) THEN
351 DO i=1,nel
352 q(i,1) = e1x(i)
353 q(i,2) = e1y(i)
354 q(i,3) = e1z(i)
355 q(i,4) = e2x(i)
356 q(i,5) = e2y(i)
357 q(i,6) = e2z(i)
358 q(i,7) = e3x(i)
359 q(i,8) = e3y(i)
360 q(i,9) = e3z(i)
361 ENDDO
362 ENDIF
363C-----------
364 DO i=1,nel
365C Matrice rotation E(n) -> E(n+1) : MROT = E(n)T * E(n+1)
366 mrot(1) = q(i,1)*e1x(i) +q(i,2)*e1y(i) +q(i,3)*e1z(i)
367 mrot(2) = q(i,4)*e1x(i) +q(i,5)*e1y(i) +q(i,6)*e1z(i)
368 mrot(3) = q(i,7)*e1x(i) +q(i,8)*e1y(i) +q(i,9)*e1z(i)
369 mrot(4) = q(i,1)*e2x(i) +q(i,2)*e2y(i) +q(i,3)*e2z(i)
370 mrot(5) = q(i,4)*e2x(i) +q(i,5)*e2y(i) +q(i,6)*e2z(i)
371 mrot(6) = q(i,7)*e2x(i) +q(i,8)*e2y(i) +q(i,9)*e2z(i)
372 mrot(7) = q(i,1)*e3x(i) +q(i,2)*e3y(i) +q(i,3)*e3z(i)
373 mrot(8) = q(i,4)*e3x(i) +q(i,5)*e3y(i) +q(i,6)*e3z(i)
374 mrot(9) = q(i,7)*e3x(i) +q(i,8)*e3y(i) +q(i,9)*e3z(i)
375C
376 q(i,1) = e1x(i)
377 q(i,2) = e1y(i)
378 q(i,3) = e1z(i)
379 q(i,4) = e2x(i)
380 q(i,5) = e2y(i)
381 q(i,6) = e2z(i)
382 q(i,7) = e3x(i)
383 q(i,8) = e3y(i)
384 q(i,9) = e3z(i)
385C--------------------
386C Vecteur de la rotation instantanee
387C
388 cs = half * (mrot(1)+mrot(5)+mrot(9)-one)
389 IF (cs >= one) THEN
390 rv(1) = (mrot(6) - mrot(8)) * half
391 rv(2) = (mrot(7) - mrot(3)) * half
392 rv(3) = (mrot(2) - mrot(4)) * half
393 ELSEIF (cs <= -one) THEN
394 rv(1) = pi*sqrt((mrot(1)+one)*half)
395 rv(2) = pi*sqrt((mrot(5)+one)*half)
396 rv(3) = pi*sqrt((mrot(9)+one)*half)
397 IF (mrot(2) < zero .AND. mrot(6) < zero) THEN
398 rv(2) = -rv(2)
399 ELSEIF (mrot(6) < zero .AND. mrot(7) < zero) THEN
400 rv(3) = -rv(3)
401 ELSEIF (mrot(7) < zero .AND. mrot(2) < zero) THEN
402 rv(1) = -rv(1)
403 ELSEIF (mrot(2) < zero) THEN
404 rv(3) = -rv(3)
405 ELSEIF (mrot(6) < zero) THEN
406 rv(1) = -rv(1)
407 ELSEIF (mrot(7) < zero) THEN
408 rv(2) = -rv(2)
409 ENDIF
410 ELSE
411 ksi = acos(cs)
412 sn = half*ksi/sin(ksi)
413 rv(1) = (mrot(6) - mrot(8)) * sn
414 rv(2) = (mrot(7) - mrot(3)) * sn
415 rv(3) = (mrot(2) - mrot(4)) * sn
416 ENDIF
417C--------------------
418c dVr = (RV x R ) / dt
419 vxloc(i,1) = vxloc(i,1) - (rv(2)*r1z(i) - rv(3)*r1y(i))*dti
420 vyloc(i,1) = vyloc(i,1) - (rv(3)*r1x(i) - rv(1)*r1z(i))*dti
421 vzloc(i,1) = vzloc(i,1) - (rv(1)*r1y(i) - rv(2)*r1x(i))*dti
422 vxloc(i,2) = vxloc(i,2) - (rv(2)*r2z(i) - rv(3)*r2y(i))*dti
423 vyloc(i,2) = vyloc(i,2) - (rv(3)*r2x(i) - rv(1)*r2z(i))*dti
424 vzloc(i,2) = vzloc(i,2) - (rv(1)*r2y(i) - rv(2)*r2x(i))*dti
425 vxloc(i,3) = vxloc(i,3) - (rv(2)*r3z(i) - rv(3)*r3y(i))*dti
426 vyloc(i,3) = vyloc(i,3) - (rv(3)*r3x(i) - rv(1)*r3z(i))*dti
427 vzloc(i,3) = vzloc(i,3) - (rv(1)*r3y(i) - rv(2)*r3x(i))*dti
428 vxloc(i,4) = vxloc(i,4) - (rv(2)*r4z(i) - rv(3)*r4y(i))*dti
429 vyloc(i,4) = vyloc(i,4) - (rv(3)*r4x(i) - rv(1)*r4z(i))*dti
430 vzloc(i,4) = vzloc(i,4) - (rv(1)*r4y(i) - rv(2)*r4x(i))*dti
431 vxloc(i,5) = vxloc(i,5) - (rv(2)*r5z(i) - rv(3)*r5y(i))*dti
432 vyloc(i,5) = vyloc(i,5) - (rv(3)*r5x(i) - rv(1)*r5z(i))*dti
433 vzloc(i,5) = vzloc(i,5) - (rv(1)*r5y(i) - rv(2)*r5x(i))*dti
434 vxloc(i,6) = vxloc(i,6) - (rv(2)*r6z(i) - rv(3)*r6y(i))*dti
435 vyloc(i,6) = vyloc(i,6) - (rv(3)*r6x(i) - rv(1)*r6z(i))*dti
436 vzloc(i,6) = vzloc(i,6) - (rv(1)*r6y(i) - rv(2)*r6x(i))*dti
437 vxloc(i,7) = vxloc(i,7) - (rv(2)*r7z(i) - rv(3)*r7y(i))*dti
438 vyloc(i,7) = vyloc(i,7) - (rv(3)*r7x(i) - rv(1)*r7z(i))*dti
439 vzloc(i,7) = vzloc(i,7) - (rv(1)*r7y(i) - rv(2)*r7x(i))*dti
440 vxloc(i,8) = vxloc(i,8) - (rv(2)*r8z(i) - rv(3)*r8y(i))*dti
441 vyloc(i,8) = vyloc(i,8) - (rv(3)*r8x(i) - rv(1)*r8z(i))*dti
442 vzloc(i,8) = vzloc(i,8) - (rv(1)*r8y(i) - rv(2)*r8x(i))*dti
443 ENDDO
444C-----------
445! IF (OFF_L < ZERO)THEN
446! DO I=1,NEL
447! IF (OFFG(I) < ZERO)THEN
448! VXLOC(I,1)=ZERO
449! VYLOC(I,1)=ZERO
450! VZLOC(1,I)=ZERO
451! VXLOC(I,2)=ZERO
452! vyloc(i,2)=zero
453! VZLOC(2,I)=ZERO
454! VXLOC(I,3)=ZERO
455! VYLOC(I,3)=ZERO
456! VZLOC(I,3)=ZERO
457! VXLOC(4,I)=ZERO
458! VYLOC(4,I)=ZERO
459! VZLOC(I,4)=ZERO
460! VXLOC(5,I)=ZERO
461! VYLOC(5,I)=ZERO
462! VZLOC(5,I)=ZERO
463! VXLOC(6,I)=ZERO
464! VYLOC(6,I)=ZERO
465! VZLOC(6,I)=ZERO
466! VXLOC(7,I)=ZERO
467! VYLOC(7,I)=ZERO
468! VZLOC(7,I)=ZERO
469! VXLOC(8,I)=ZERO
470! VYLOC(8,I)=ZERO
471! VZLOC(8,I)=ZERO
472! ENDIF
473! ENDDO
474! ENDIF
475C-----------
476 CALL sdet43(nel ,
477 . xloc ,yloc ,zloc ,area ,areap,offg ,solid_id,
478 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z )
479C-----------
480 RETURN
481 END
subroutine clskew3(jft, jlt, irep, rx, ry, rz, sx, sy, sz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, det)
Definition clskew.F:34
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine scoor43(offg, nel, ioutprt, q, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, vx1, vx2, vx3, vx4, vx5, vx6, vx7, vx8, vy1, vy2, vy3, vy4, vy5, vy6, vy7, vy8, vz1, vz2, vz3, vz4, vz5, vz6, vz7, vz8, r1x, r2x, r3x, r4x, r5x, r6x, r7x, r8x, r1y, r2y, r3y, r4y, r5y, r6y, r7y, r8y, r1z, r2z, r3z, r4z, r5z, r6z, r7z, r8z, rxx, ryy, rzz, vxloc, vyloc, vzloc, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, areap, time, dt, solid_id, vgax, vgay, vgaz, vga2, sym, ipm, imat)
Definition scoor43.F:45
subroutine sdet43(nel, x, y, z, area, areap, off, solid_id, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
Definition sdet43.F:31