OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fderi3.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!|| fderi3 ../engine/source/elements/solid/solide/fderi3.F
25!||--- called by ------------------------------------------------------
26!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
27!||--- calls -----------------------------------------------------
28!|| schkjab3 ../engine/source/elements/solid/solide/schkjab3.F
29!||====================================================================
30 SUBROUTINE fderi3(
31 1 OFF, DET, NGL, X1,
32 2 X2, X3, X4, X5,
33 3 X6, X7, X8, Y1,
34 4 Y2, Y3, Y4, Y5,
35 5 Y6, Y7, Y8, Z1,
36 6 Z2, Z3, Z4, Z5,
37 7 Z6, Z7, Z8, PX1,
38 8 PX2, PX3, PX4, PY1,
39 9 PY2, PY3, PY4, PZ1,
40 A PZ2, PZ3, PZ4, PX1H1,
41 B PX1H2, PX1H3, PX2H1, PX2H2,
42 C PX2H3, PX3H1, PX3H2, PX3H3,
43 D PX4H1, PX4H2, PX4H3, NEL,
44 E JHBE)
45C-----------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49#include "comlock.inc"
50C-----------------------------------------------
51C G l o b a l P a r a m e t e r s
52C-----------------------------------------------
53#include "mvsiz_p.inc"
54C-----------------------------------------------
55C C o m m o n B l o c k s
56C-----------------------------------------------
57C-----------------------------------------------
58C D u m m y A r g u m e n t s
59C-----------------------------------------------
60 INTEGER, INTENT(IN) :: NEL
61 INTEGER, INTENT(IN) :: JHBE
62 my_real
63 . OFF(*),DET(*),
64 . X1(*), X2(*), X3(*), X4(*), X5(*), X6(*), X7(*), X8(*),
65 . Y1(*), Y2(*), Y3(*), Y4(*), Y5(*), Y6(*), Y7(*), Y8(*),
66 . Z1(*), Z2(*), Z3(*), Z4(*), Z5(*), Z6(*), Z7(*), Z8(*),
67 . PX1(*), PX2(*), PX3(*), PX4(*),
68 . PY1(*), PY2(*), PY3(*), PY4(*),
69 . PZ1(*), PZ2(*), PZ3(*), PZ4(*),
70 . PX1H1(*), PX1H2(*), PX1H3(*),
71 . PX2H1(*), PX2H2(*), PX2H3(*),
72 . PX3H1(*), PX3H2(*), PX3H3(*),
73 . PX4H1(*), PX4H2(*), PX4H3(*)
74C-----------------------------------------------
75C L o c a l V a r i a b l e s
76C-----------------------------------------------
77 INTEGER NGL(*), I, J
78 my_real
79 . DETT(MVSIZ) , AJ7(MVSIZ), AJ8(MVSIZ) , AJ9(MVSIZ),
80 . AJI1(MVSIZ), AJI2(MVSIZ), AJI3(MVSIZ),
81 . AJI4(MVSIZ), AJI5(MVSIZ), AJI6(MVSIZ),
82 . AJI7(MVSIZ), AJI8(MVSIZ), AJI9(MVSIZ),
83 . X17(MVSIZ) , X28(MVSIZ) , X35(MVSIZ) , X46(MVSIZ),
84 . Y17(MVSIZ) , Y28(MVSIZ) , Y35(MVSIZ) , Y46(MVSIZ),
85 . Z17(MVSIZ) , Z28(MVSIZ) , Z35(MVSIZ) , Z46(MVSIZ),
86 . JAC_59_68(MVSIZ), JAC_67_49(MVSIZ), JAC_48_57(MVSIZ),
87 . AJ12(MVSIZ), AJ45(MVSIZ), AJ78(MVSIZ),
88 . A17(MVSIZ) , A28(MVSIZ) ,
89 . B17(MVSIZ) , B28(MVSIZ) ,
90 . C17(MVSIZ) , C28(MVSIZ) , AJ4(MVSIZ),
91 . aj5(mvsiz) , aj6(mvsiz) , aj1(mvsiz),
92 . aj2(mvsiz) , aj3(mvsiz) ,
93 . hx,hy,hz,
94 . icor
95C-----------------------------------------------
96C
97 DO i=1,nel
98 x17(i)=x7(i)-x1(i)
99 x28(i)=x8(i)-x2(i)
100 x35(i)=x5(i)-x3(i)
101 x46(i)=x6(i)-x4(i)
102 y17(i)=y7(i)-y1(i)
103 y28(i)=y8(i)-y2(i)
104 y35(i)=y5(i)-y3(i)
105 y46(i)=y6(i)-y4(i)
106 z17(i)=z7(i)-z1(i)
107 z28(i)=z8(i)-z2(i)
108 z35(i)=z5(i)-z3(i)
109 z46(i)=z6(i)-z4(i)
110 ENDDO
111C
112 DO i=1,nel
113 aj1(i)=x17(i)+x28(i)-x35(i)-x46(i)
114 aj2(i)=y17(i)+y28(i)-y35(i)-y46(i)
115 aj3(i)=z17(i)+z28(i)-z35(i)-z46(i)
116 a17(i)=x17(i)+x46(i)
117 a28(i)=x28(i)+x35(i)
118 b17(i)=y17(i)+y46(i)
119 b28(i)=y28(i)+y35(i)
120 c17(i)=z17(i)+z46(i)
121 c28(i)=z28(i)+z35(i)
122 ENDDO
123
124 DO i=1,nel
125 aj4(i)=a17(i)+a28(i)
126 aj5(i)=b17(i)+b28(i)
127 aj6(i)=c17(i)+c28(i)
128 aj7(i)=a17(i)-a28(i)
129 aj8(i)=b17(i)-b28(i)
130 aj9(i)=c17(i)-c28(i)
131 ENDDO
132C
133C JACOBIAN
134C
135 DO i=1,nel
136 jac_59_68(i)=aj5(i)*aj9(i)-aj6(i)*aj8(i)
137 jac_67_49(i)=aj6(i)*aj7(i)-aj4(i)*aj9(i)
138 jac_48_57(i)=aj4(i)*aj8(i)-aj5(i)*aj7(i)
139 ENDDO
140C
141 DO i=1,nel
142 det(i)=one_over_64*(aj1(i)*jac_59_68(i)+aj2(i)*jac_67_49(i)+aj3(i)*jac_48_57(i))
143 ENDDO
144C
145 CALL schkjab3(
146 1 off, det, ngl, nel)
147C
148 DO i=1,nel
149 dett(i)=one_over_64/det(i)
150 ENDDO
151
152
153C
154C INVERSE DE LA MATRICE JACOBIENNE
155C
156 DO i=1,nel
157 aji1(i)=dett(i)*jac_59_68(i)
158 aji4(i)=dett(i)*jac_67_49(i)
159 aji7(i)=dett(i)*jac_48_57(i)
160 aji2(i)=dett(i)*(-aj2(i)*aj9(i)+aj3(i)*aj8(i))
161 aji5(i)=dett(i)*( aj1(i)*aj9(i)-aj3(i)*aj7(i))
162 aji8(i)=dett(i)*(-aj1(i)*aj8(i)+aj2(i)*aj7(i))
163 aji3(i)=dett(i)*( aj2(i)*aj6(i)-aj3(i)*aj5(i))
164 aji6(i)=dett(i)*(-aj1(i)*aj6(i)+aj3(i)*aj4(i))
165 aji9(i)=dett(i)*( aj1(i)*aj5(i)-aj2(i)*aj4(i))
166 ENDDO
167C
168 DO i=1,nel
169 aj12(i)=aji1(i)-aji2(i)
170 aj45(i)=aji4(i)-aji5(i)
171 aj78(i)=aji7(i)-aji8(i)
172c
173 px3(i)= aj12(i)+aji3(i)
174 py3(i)= aj45(i)+aji6(i)
175 pz3(i)= aj78(i)+aji9(i)
176 px4(i)= aj12(i)-aji3(i)
177 py4(i)= aj45(i)-aji6(i)
178 pz4(i)= aj78(i)-aji9(i)
179C
180 aj12(i)=aji1(i)+aji2(i)
181 aj45(i)=aji4(i)+aji5(i)
182 aj78(i)=aji7(i)+aji8(i)
183C
184 px1(i)=-aj12(i)-aji3(i)
185 py1(i)=-aj45(i)-aji6(i)
186 pz1(i)=-aj78(i)-aji9(i)
187 px2(i)=-aj12(i)+aji3(i)
188 py2(i)=-aj45(i)+aji6(i)
189 pz2(i)=-aj78(i)+aji9(i)
190 ENDDO
191C
192 IF(jhbe/=0)THEN
193 DO i=1,nel
194C 1 -1 1 -1 1 -1 1 -1
195 hx=(x1(i)-x2(i)+x3(i)-x4(i)+x5(i)-x6(i)+x7(i)-x8(i))
196 hy=(y1(i)-y2(i)+y3(i)-y4(i)+y5(i)-y6(i)+y7(i)-y8(i))
197 hz=(z1(i)-z2(i)+z3(i)-z4(i)+z5(i)-z6(i)+z7(i)-z8(i))
198 px1h1(i)=px1(i)*hx+ py1(i)*hy+pz1(i)*hz
199 px2h1(i)=px2(i)*hx+ py2(i)*hy+pz2(i)*hz
200 px3h1(i)=px3(i)*hx+ py3(i)*hy+pz3(i)*hz
201 px4h1(i)=px4(i)*hx+ py4(i)*hy+pz4(i)*hz
202 ENDDO
203C 1 1 -1 -1 -1 -1 1 1
204 DO i=1,nel
205 hx=(x1(i)+x2(i)-x3(i)-x4(i)-x5(i)-x6(i)+x7(i)+x8(i))
206 hy=(y1(i)+y2(i)-y3(i)-y4(i)-y5(i)-y6(i)+y7(i)+y8(i))
207 hz=(z1(i)+z2(i)-z3(i)-z4(i)-z5(i)-z6(i)+z7(i)+z8(i))
208 px1h2(i)=px1(i)*hx+ py1(i)*hy+pz1(i)*hz
209 px2h2(i)=px2(i)*hx+ py2(i)*hy+pz2(i)*hz
210 px3h2(i)=px3(i)*hx+ py3(i)*hy+pz3(i)*hz
211 px4h2(i)=px4(i)*hx+ py4(i)*hy+pz4(i)*hz
212 ENDDO
213
214C 1 -1 -1 1 -1 1 1 -1
215 DO i=1,nel
216 hx=(x1(i)-x2(i)-x3(i)+x4(i)-x5(i)+x6(i)+x7(i)-x8(i))
217 hy=(y1(i)-y2(i)-y3(i)+y4(i)-y5(i)+y6(i)+y7(i)-y8(i))
218 hz=(z1(i)-z2(i)-z3(i)+z4(i)-z5(i)+z6(i)+z7(i)-z8(i))
219 px1h3(i)=px1(i)*hx+ py1(i)*hy+pz1(i)*hz
220 px2h3(i)=px2(i)*hx+ py2(i)*hy+pz2(i)*hz
221 px3h3(i)=px3(i)*hx+ py3(i)*hy+pz3(i)*hz
222 px4h3(i)=px4(i)*hx+ py4(i)*hy+pz4(i)*hz
223 ENDDO
224
225 ENDIF
226 RETURN
227C
228 1000 FORMAT(/' ZERO OR NEGATIVE VOLUME : 3D-ELEMENT NB',i10/)
229 2000 FORMAT(/' ZERO OR NEGATIVE VOLUME : DELETE 3D-ELEMENT NB',i10/)
230 END
subroutine fderi3(off, det, ngl, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, px1h1, px1h2, px1h3, px2h1, px2h2, px2h3, px3h1, px3h2, px3h3, px4h1, px4h2, px4h3, nel, jhbe)
Definition fderi3.F:45
subroutine schkjab3(off, det, ngl, nel)
Definition schkjab3.F:39