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!||--- uses -----------------------------------------------------
30!|| element_mod ../common_source/modules/elements/element_mod.F90
31!||====================================================================
32 SUBROUTINE s8scoork_imp(X,IXS,
33 . X1, X2, X3, X4, X5, X6, X7, X8,
34 . Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8,
35 . Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8,
36 . OFFG,OFF,SAV, R,
37 . V1, V2, V3, V4, V5, V6, V7, V8,
38 . NC1,NC2,NC3,NC4,NC5,NC6,NC7,NC8,NGL,MXT,NGEO,
39 . K11,K12,K13,K14,K15,K16,K17,K18,K22,K23,
40 . K24,K25,K26,K27,K28,K33,K34,K35,K36,K37,
41 . K38,K44,K45,K46,K47,K48,K55,K56,K57,K58,
42 . K66,K67,K68,K77,K78,K88,KHBE,GAMA0 ,GAMA,
43 . NEL,TRM,KL)
44 use element_mod , only : nixs !
45C-----------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49C-----------------------------------------------
50C G l o b a l P a r a m e t e r s
51C-----------------------------------------------
52#include "mvsiz_p.inc"
53C-----------------------------------------------
54C C o m m o n B l o c k s
55C-----------------------------------------------
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER NEL
60C REAL
61 my_real
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)
68 my_real
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)
84C-----------------------------------------------
85C L o c a l V a r i a b l e s
86C-----------------------------------------------
87 INTEGER I,J, MXT_1
88C REAL
89 my_real
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)
96 my_real
97 . xl,yl,zl
98 my_real
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),DETM1,DETJ0
104C-----------------------------------------------
105C
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
120C----------------------------
121C NODAL COORDINATES |
122C----------------------------
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
149C-----------
150C Local system
151C-----------
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
202 CALL crtrans_imp(
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)
213C-----------
214C
215C-----------
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
250C-----------
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
297C-----------
298 RETURN
299 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:44