OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
srcoork_imp.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!|| s8scoork_imp ../engine/source/elements/solid/solide8s/srcoork_imp.F
25!||--- called by ------------------------------------------------------
26!|| s8ske3 ../engine/source/elements/solid/solide8s/s8ske3.F
27!||--- calls -----------------------------------------------------
28!|| crtrans_imp ../engine/source/elements/solid/solide8s/crtrans_imp.F
29!||====================================================================
30 SUBROUTINE s8scoork_imp(X,IXS,
31 . X1, X2, X3, X4, X5, X6, X7, X8,
32 . Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8,
33 . Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8,
34 . OFFG,OFF,SAV, R,
35 . V1, V2, V3, V4, V5, V6, V7, V8,
36 . NC1,NC2,NC3,NC4,NC5,NC6,NC7,NC8,NGL,MXT,NGEO,
37 . K11,K12,K13,K14,K15,K16,K17,K18,K22,K23,
38 . K24,K25,K26,K27,K28,K33,K34,K35,K36,K37,
39 . K38,K44,K45,K46,K47,K48,K55,K56,K57,K58,
40 . K66,K67,K68,K77,K78,K88,KHBE,GAMA0 ,GAMA,
41 . NEL,TRM,KL) !
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C G l o b a l P a r a m e t e r s
48C-----------------------------------------------
49#include "mvsiz_p.inc"
50C-----------------------------------------------
51C C o m m o n B l o c k s
52C-----------------------------------------------
53C-----------------------------------------------
54C D u m m y A r g u m e n t s
55C-----------------------------------------------
56 INTEGER NEL
57C REAL
58 my_real
59 . X(3,*),
60 . X1(*), X2(*), X3(*), X4(*), X5(*), X6(*), X7(*), X8(*),
61 . Y1(*), Y2(*), Y3(*), Y4(*), Y5(*), Y6(*), Y7(*), Y8(*),
62 . Z1(*), Z2(*), Z3(*), Z4(*), Z5(*), Z6(*), Z7(*), Z8(*),
63 . OFFG(*), OFF(*), SAV(NEL,21), GAMA0(NEL,6),GAMA(MVSIZ,6),
64 . R(3,3,MVSIZ)
65 my_real
66 . K11(9,*) ,K12(9,*) ,K13(9,*) ,K14(9,*) ,K15(9,*) ,
67 . k16(9,*) ,k17(9,*) ,k18(9,*) ,k22(9,*) ,k23(9,*) ,
68 . k24(9,*) ,k25(9,*) ,k26(9,*) ,k27(9,*) ,k28(9,*) ,
69 . k33(9,*) ,k34(9,*) ,k35(9,*) ,k36(9,*) ,k37(9,*) ,
70 . k38(9,*) ,k44(9,*) ,k45(9,*) ,k46(9,*) ,k47(9,*) ,
71 . k48(9,*) ,k55(9,*) ,k56(9,*) ,k57(9,*) ,k58(9,*) ,
72 . k66(9,*) ,k67(9,*) ,k68(9,*) ,k77(9,*) ,k78(9,*) ,
73 . k88(9,*)
74 INTEGER NC1(*), NC2(*), NC3(*), NC4(*),
75 . NC5(*), NC6(*), NC7(*), NC8(*), MXT(*), NGL(*),NGEO(*)
76 INTEGER IXS(NIXS,*),KHBE
77 DOUBLE PRECISION
78 . TRM(NEL,24,24),INVJ(MVSIZ,3,3),KL(576,NEL),
79 . V1(MVSIZ,9), V2(MVSIZ,9), V3(MVSIZ,9), V4(MVSIZ,9),
80 . V5(MVSIZ,9), V6(MVSIZ,9), V7(MVSIZ,9), V8(MVSIZ,9)
81C-----------------------------------------------
82C L o c a l V a r i a b l e s
83C-----------------------------------------------
84 INTEGER I,J, MXT_1
85C REAL
86 my_real
87 . g11(mvsiz),g12(mvsiz),g13(mvsiz),
88 . g21(mvsiz),g22(mvsiz),g23(mvsiz),
89 . g31(mvsiz),g32(mvsiz),g33(mvsiz),
90 . t11(mvsiz),t12(mvsiz),t13(mvsiz),
91 . t21(mvsiz),t22(mvsiz),t23(mvsiz),
92 . t31(mvsiz),t32(mvsiz),t33(mvsiz)
93 my_real
94 . xl,yl,zl
95 my_real
96 . rx(mvsiz) , ry(mvsiz) , rz(mvsiz) ,
97 . sx(mvsiz) , sy(mvsiz) , sz(mvsiz) ,
98 . tx(mvsiz) , ty(mvsiz) , tz(mvsiz)
99 DOUBLE PRECISION DX_DR,DX_DS,DX_DT,DY_DR,DY_DS,DY_DT,DZ_DR,DZ_DS,DZ_DT
100 DOUBLE PRECISION X0(8),Y0(8),Z0(8),DETM1,DETJ0
101C-----------------------------------------------
102C
103 MXT_1 = ixs(1,1)
104 DO i=1,nel
105 ngeo(i)=ixs(10,i)
106 ngl(i)=ixs(11,i)
107 mxt(i)=mxt_1
108 nc1(i)=ixs(2,i)
109 nc2(i)=ixs(3,i)
110 nc3(i)=ixs(4,i)
111 nc4(i)=ixs(5,i)
112 nc5(i)=ixs(6,i)
113 nc6(i)=ixs(7,i)
114 nc7(i)=ixs(8,i)
115 nc8(i)=ixs(9,i)
116 ENDDO
117C----------------------------
118C NODAL COORDINATES |
119C----------------------------
120 DO i=1,nel
121 x1(i)=x(1,nc1(i))
122 y1(i)=x(2,nc1(i))
123 z1(i)=x(3,nc1(i))
124 x2(i)=x(1,nc2(i))
125 y2(i)=x(2,nc2(i))
126 z2(i)=x(3,nc2(i))
127 x3(i)=x(1,nc3(i))
128 y3(i)=x(2,nc3(i))
129 z3(i)=x(3,nc3(i))
130 x4(i)=x(1,nc4(i))
131 y4(i)=x(2,nc4(i))
132 z4(i)=x(3,nc4(i))
133 x5(i)=x(1,nc5(i))
134 y5(i)=x(2,nc5(i))
135 z5(i)=x(3,nc5(i))
136 x6(i)=x(1,nc6(i))
137 y6(i)=x(2,nc6(i))
138 z6(i)=x(3,nc6(i))
139 x7(i)=x(1,nc7(i))
140 y7(i)=x(2,nc7(i))
141 z7(i)=x(3,nc7(i))
142 x8(i)=x(1,nc8(i))
143 y8(i)=x(2,nc8(i))
144 z8(i)=x(3,nc8(i))
145 ENDDO
146C-----------
147C Local system
148C-----------
149 DO i=1,nel
150 x0(1) = zero
151 y0(1) = zero
152 z0(1) = zero
153 x0(2) = sav(i,1)
154 y0(2) = sav(i,2)
155 z0(2) = sav(i,3)
156 x0(3) = sav(i,4)
157 y0(3) = sav(i,5)
158 z0(3) = sav(i,6)
159 x0(4) = sav(i,7)
160 y0(4) = sav(i,8)
161 z0(4) = sav(i,9)
162 x0(5) = sav(i,10)
163 y0(5) = sav(i,11)
164 z0(5) = sav(i,12)
165 x0(6) = sav(i,13)
166 y0(6) = sav(i,14)
167 z0(6) = sav(i,15)
168 x0(7) = sav(i,16)
169 y0(7) = sav(i,17)
170 z0(7) = sav(i,18)
171 x0(8) = sav(i,19)
172 y0(8) = sav(i,20)
173 z0(8) = sav(i,21)
174
175 dx_dr = (x0(3)+x0(4)+x0(7)+x0(8))-(x0(1)+x0(2)+x0(5)+x0(6))
176 dy_dr = (y0(3)+y0(4)+y0(7)+y0(8))-(y0(1)+y0(2)+y0(5)+y0(6))
177 dz_dr = (z0(3)+z0(4)+z0(7)+z0(8))-(z0(1)+z0(2)+z0(5)+z0(6))
178 dx_ds = (x0(5)+x0(6)+x0(7)+x0(8))-(x0(1)+x0(2)+x0(3)+x0(4))
179 dy_ds = (y0(5)+y0(6)+y0(7)+y0(8))-(y0(1)+y0(2)+y0(3)+y0(4))
180 dz_ds = (z0(5)+z0(6)+z0(7)+z0(8))-(z0(1)+z0(2)+z0(3)+z0(4))
181 dx_dt = (x0(2)+x0(3)+x0(6)+x0(7))-(x0(1)+x0(4)+x0(5)+x0(8))
182 dy_dt = (y0(2)+y0(3)+y0(6)+y0(7))-(y0(1)+y0(4)+y0(5)+y0(8))
183 dz_dt = (z0(2)+z0(3)+z0(6)+z0(7))-(z0(1)+z0(4)+z0(5)+z0(8))
184 detj0 =(dx_dr*(dy_ds*dz_dt-dz_ds*dy_dt)
185 . -dx_ds*(dy_dr*dz_dt-dy_dt*dz_dr)
186 . +dx_dt*(dy_dr*dz_ds-dy_ds*dz_dr))
187 detm1 = one/detj0
188 detm1 = eight*detm1
189 invj(i,1,1) = (dy_ds*dz_dt-dz_ds*dy_dt)*detm1
190 invj(i,2,1) = (dz_dr*dy_dt-dy_dr*dz_dt)*detm1
191 invj(i,3,1) = (dy_dr*dz_ds-dy_ds*dz_dr)*detm1
192 invj(i,1,2) = (dx_dt*dz_ds-dx_ds*dz_dt)*detm1
193 invj(i,2,2) = (dx_dr*dz_dt-dx_dt*dz_dr)*detm1
194 invj(i,3,2) = (dx_ds*dz_dr-dx_dr*dz_ds)*detm1
195 invj(i,1,3) = (dx_ds*dy_dt-dx_dt*dy_ds)*detm1
196 invj(i,2,3) = (dx_dt*dy_dr-dx_dr*dy_dt)*detm1
197 invj(i,3,3) = (dx_dr*dy_ds-dx_ds*dy_dr)*detm1
198 ENDDO
199 CALL crtrans_imp(
200 1 sav, invj, x1, x2,
201 2 x3, x4, x5, x6,
202 3 x7, x8, y1, y2,
203 4 y3, y4, y5, y6,
204 5 y7, y8, z1, z2,
205 6 z3, z4, z5, z6,
206 7 z7, z8, v1, v2,
207 8 v3, v4, v5, v6,
208 9 v7, v8, r, trm,
209 a nel)
210C-----------
211C
212C-----------
213 DO i = 1,nel
214 x1(i) = zero
215 y1(i) = zero
216 z1(i) = zero
217 x2(i) = sav(i,1)
218 y2(i) = sav(i,2)
219 z2(i) = sav(i,3)
220 x3(i) = sav(i,4)
221 y3(i) = sav(i,5)
222 z3(i) = sav(i,6)
223 x4(i) = sav(i,7)
224 y4(i) = sav(i,8)
225 z4(i) = sav(i,9)
226 x5(i) = sav(i,10)
227 y5(i) = sav(i,11)
228 z5(i) = sav(i,12)
229 x6(i) = sav(i,13)
230 y6(i) = sav(i,14)
231 z6(i) = sav(i,15)
232 x7(i) = sav(i,16)
233 y7(i) = sav(i,17)
234 z7(i) = sav(i,18)
235 x8(i) = sav(i,19)
236 y8(i) = sav(i,20)
237 z8(i) = sav(i,21)
238 ENDDO
239 DO i=1,nel
240 IF(offg(i)>one)THEN
241 off(i) = offg(i)-one
242 ENDIF
243 ENDDO
244 DO i=1,nel
245 off(i) = min(one,offg(i))
246 ENDDO
247C-----------
248 DO j=1,9
249 DO i=1,nel
250 k11(j,i)=zero
251 k12(j,i)=zero
252 k13(j,i)=zero
253 k14(j,i)=zero
254 k15(j,i)=zero
255 k16(j,i)=zero
256 k17(j,i)=zero
257 k18(j,i)=zero
258 k22(j,i)=zero
259 k23(j,i)=zero
260 k24(j,i)=zero
261 k25(j,i)=zero
262 k26(j,i)=zero
263 k27(j,i)=zero
264 k28(j,i)=zero
265 k33(j,i)=zero
266 k34(j,i)=zero
267 k35(j,i)=zero
268 k36(j,i)=zero
269 k37(j,i)=zero
270 k38(j,i)=zero
271 k44(j,i)=zero
272 k45(j,i)=zero
273 k46(j,i)=zero
274 k47(j,i)=zero
275 k48(j,i)=zero
276 k55(j,i)=zero
277 k56(j,i)=zero
278 k57(j,i)=zero
279 k58(j,i)=zero
280 k66(j,i)=zero
281 k67(j,i)=zero
282 k68(j,i)=zero
283 k77(j,i)=zero
284 k78(j,i)=zero
285 k88(j,i)=zero
286 ENDDO
287 ENDDO
288
289 DO j=1,nel
290 DO i=1,576
291 kl(i,j)=zero
292 ENDDO
293 ENDDO
294C-----------
295 RETURN
296 END
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)
Definition crtrans_imp.F:41
#define min(a, b)
Definition macros.h:20
subroutine s8scoork_imp(x, ixs, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, offg, off, sav, r, v1, v2, v3, v4, v5, v6, v7, v8, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, ngl, mxt, ngeo, k11, k12, k13, k14, k15, k16, k17, k18, k22, k23, k24, k25, k26, k27, k28, k33, k34, k35, k36, k37, k38, k44, k45, k46, k47, k48, k55, k56, k57, k58, k66, k67, k68, k77, k78, k88, khbe, gama0, gama, nel, trm, kl)
Definition srcoork_imp.F:42