OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s8for_distor.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine s8for_distor (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, f11, f12, f13, f14, f15, f16, f17, f18, f21, f22, f23, f24, f25, f26, f27, f28, f31, f32, f33, f34, f35, f36, f37, f38, sti, sti_c, fld, mu, ll, istab, fqmax, nel, e_distor, dt1)

Function/Subroutine Documentation

◆ s8for_distor()

subroutine s8for_distor ( intent(in) x1,
intent(in) x2,
intent(in) x3,
intent(in) x4,
intent(in) x5,
intent(in) x6,
intent(in) x7,
intent(in) x8,
intent(in) y1,
intent(in) y2,
intent(in) y3,
intent(in) y4,
intent(in) y5,
intent(in) y6,
intent(in) y7,
intent(in) y8,
intent(in) z1,
intent(in) z2,
intent(in) z3,
intent(in) z4,
intent(in) z5,
intent(in) z6,
intent(in) z7,
intent(in) z8,
intent(in) vx1,
intent(in) vx2,
intent(in) vx3,
intent(in) vx4,
intent(in) vx5,
intent(in) vx6,
intent(in) vx7,
intent(in) vx8,
intent(in) vy1,
intent(in) vy2,
intent(in) vy3,
intent(in) vy4,
intent(in) vy5,
intent(in) vy6,
intent(in) vy7,
intent(in) vy8,
intent(in) vz1,
intent(in) vz2,
intent(in) vz3,
intent(in) vz4,
intent(in) vz5,
intent(in) vz6,
intent(in) vz7,
intent(in) vz8,
intent(inout) f11,
intent(inout) f12,
intent(inout) f13,
intent(inout) f14,
intent(inout) f15,
intent(inout) f16,
intent(inout) f17,
intent(inout) f18,
intent(inout) f21,
intent(inout) f22,
intent(inout) f23,
intent(inout) f24,
intent(inout) f25,
intent(inout) f26,
intent(inout) f27,
intent(inout) f28,
intent(inout) f31,
intent(inout) f32,
intent(inout) f33,
intent(inout) f34,
intent(inout) f35,
intent(inout) f36,
intent(inout) f37,
intent(inout) f38,
intent(inout) sti,
intent(in) sti_c,
intent(in) fld,
intent(in) mu,
intent(in) ll,
integer, dimension(mvsiz), intent(in) istab,
intent(in) fqmax,
integer, intent(in) nel,
intent(inout) e_distor,
intent(in) dt1 )

Definition at line 38 of file s8for_distor.F.

60C-----------------------------------------------
61C M o d u l e s
62C-----------------------------------------------
63 USE sfor_nsn2seg_mod, ONLY : sfor_4n2s4
64C-----------------------------------------------
65C I m p l i c i t T y p e s
66C-----------------------------------------------
67#include "implicit_f.inc"
68C-----------------------------------------------
69C G l o b a l P a r a m e t e r s
70C-----------------------------------------------
71#include "mvsiz_p.inc"
72C-----------------------------------------------
73C C o m m o n B l o c k s
74C-----------------------------------------------
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 INTEGER, INTENT(IN) :: NEL
79 INTEGER, DIMENSION(MVSIZ), INTENT(IN) :: ISTAB
80 my_real, DIMENSION(NEL), INTENT(IN) :: sti_c
81 my_real, INTENT(IN) :: mu,fqmax,dt1
82 my_real, DIMENSION(MVSIZ), INTENT(IN) :: fld,ll,
83 1 x1, x2, x3, x4,
84 2 x5, x6, x7, x8,
85 3 y1, y2, y3, y4,
86 4 y5, y6, y7, y8,
87 5 z1, z2, z3, z4,
88 6 z5, z6, z7, z8,
89 4 vx1, vx2, vx3, vx4,
90 5 vx5, vx6, vx7, vx8,
91 6 vy1, vy2, vy3, vy4,
92 7 vy5, vy6, vy7, vy8,
93 8 vz1, vz2, vz3, vz4,
94 9 vz5, vz6, vz7, vz8
95 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: sti,
96 4 f11, f12, f13, f14,
97 5 f15, f16, f17, f18,
98 6 f21, f22, f23, f24,
99 7 f25, f26, f27, f28,
100 8 f31, f32, f33, f34,
101 9 f35, f36, f37, f38
102 my_real, DIMENSION(NEL), INTENT(INOUT) :: e_distor
103C-----------------------------------------------
104C L o c a l V a r i a b l e s
105C-----------------------------------------------
106 my_real
107 . xc(mvsiz),yc(mvsiz),zc(mvsiz),stif(mvsiz),
108 . vc(mvsiz,3),forc_n(mvsiz,3),for_t1(mvsiz,3),
109 . for_t2(mvsiz,3),for_t3(mvsiz,3),for_t4(mvsiz,3),
110 . for_t5(mvsiz,3),for_t6(mvsiz,3),for_t7(mvsiz,3),
111 . for_t8(mvsiz,3),fcx,fcy,fcz,fac,gap_max,gap_min,
112 . penmin(mvsiz),penref(mvsiz),marge(mvsiz),
113 . tol_t,tol_c,tol_v
114 INTEGER I,J,NCTL,IFCTL,IFC1(MVSIZ)
115C-----------------------------------------------
116C P r e - C o n d i t i o n s
117C-----------------------------------------------
118C-----------------------------------------------
119C S o u r c e C o d e
120C-----------------------------------------------
121 tol_c= zep2
122 tol_v = ten
123 DO i=1,nel
124 vc(i,1) = one_over_8*(vx1(i)+vx2(i)+vx3(i)+vx4(i)+
125 . vx5(i)+vx6(i)+vx7(i)+vx8(i))
126 vc(i,2) = one_over_8*(vy1(i)+vy2(i)+vy3(i)+vy4(i)+
127 . vy5(i)+vy6(i)+vy7(i)+vy8(i))
128 vc(i,3) = one_over_8*(vz1(i)+vz2(i)+vz3(i)+vz4(i)+
129 . vz5(i)+vz6(i)+vz7(i)+vz8(i))
130 stif(i) = sti_c(i)
131 ifc1(i) = istab(i)
132 ENDDO
133C
134 nctl = 0
135 forc_n = zero
136 for_t1 = zero
137 for_t2 = zero
138 for_t3 = zero
139 for_t4 = zero
140 for_t5 = zero
141 for_t6 = zero
142 for_t7 = zero
143 for_t8 = zero
144 CALL sfor_visn8(vc , fld, tol_v, ifc1,
145 . vx1, vx2, vx3, vx4,
146 . vx5, vx6, vx7, vx8,
147 . vy1, vy2, vy3, vy4,
148 . vy5, vy6, vy7, vy8,
149 . vz1, vz2, vz3, vz4,
150 . vz5, vz6, vz7, vz8,
151 . for_t1, for_t2, for_t3, for_t4,
152 . for_t5, for_t6, for_t7, for_t8,
153 . ifctl, stif , mu , nel ,
154 . e_distor, dt1 )
155 IF (ifctl >0) THEN
156 nctl = nctl + ifctl
157C---- element center
158 DO i=1,nel
159 xc(i) = one_over_8*(x1(i)+x2(i)+x3(i)+x4(i)+
160 . x5(i)+x6(i)+x7(i)+x8(i))
161 yc(i) = one_over_8*(y1(i)+y2(i)+y3(i)+y4(i)+
162 . y5(i)+y6(i)+y7(i)+y8(i))
163 zc(i) = one_over_8*(z1(i)+z2(i)+z3(i)+z4(i)+
164 . z5(i)+z6(i)+z7(i)+z8(i))
165 ENDDO
166! IFC1 is used for contact
167 gap_min = tol_c*em02 !percentage
168 gap_max = five*gap_min
169 penmin(1:nel) = gap_min*ll(1:nel)
170 penref(1:nel) = gap_max*ll(1:nel)
171 marge(1:nel) = two*gap_max*ll(1:nel)
172C---- seg 1 : 2,1,4, 3 normal towards outside like tetra
173 CALL sfor_n2s4( xc, yc, zc, stif,
174 . x2, x1, x4, x3,
175 . y2, y1, y4, y3,
176 . z2, z1, z4, z3,
177 . vx2, vx1, vx4, vx3,
178 . vy2, vy1, vy4, vy3,
179 . vz2, vz1, vz4, vz3,
180 . for_t2, for_t1, for_t4, for_t3,
181 . forc_n, ll , ifctl, ifc1 ,
182 . penmin, penref, marge, fqmax,
183 . sti_c, nel , vc ,e_distor,
184 . dt1)
185 nctl = nctl + ifctl
186C---- seg 2 : 1,2,6,5
187 CALL sfor_n2s4( xc, yc, zc, stif,
188 . x1, x2, x6, x5,
189 . y1, y2, y6, y5,
190 . z1, z2, z6, z5,
191 . vx1, vx2, vx6, vx5,
192 . vy1, vy2, vy6, vy5,
193 . vz1, vz2, vz6, vz5,
194 . for_t1, for_t2, for_t6, for_t5,
195 . forc_n, ll , ifctl, ifc1 ,
196 . penmin, penref, marge, fqmax,
197 . sti_c, nel , vc ,e_distor,
198 . dt1)
199 nctl = nctl + ifctl
200C---- seg 3 : 2,3,7,6
201 CALL sfor_n2s4( xc, yc, zc, stif,
202 . x2, x3, x7, x6,
203 . y2, y3, y7, y6,
204 . z2, z3, z7, z6,
205 . vx2, vx3, vx7, vx6,
206 . vy2, vy3, vy7, vy6,
207 . vz2, vz3, vz7, vz6,
208 . for_t2, for_t3, for_t7, for_t6,
209 . forc_n, ll , ifctl, ifc1 ,
210 . penmin, penref, marge, fqmax,
211 . sti_c, nel , vc ,e_distor,
212 . dt1)
213 nctl = nctl + ifctl
214C---- seg 4 : 1,5,8,4
215 CALL sfor_n2s4( xc, yc, zc, stif,
216 . x1, x5, x8, x4,
217 . y1, y5, y8, y4,
218 . z1, z5, z8, z4,
219 . vx1, vx5, vx8, vx4,
220 . vy1, vy5, vy8, vy4,
221 . vz1, vz5, vz8, vz4,
222 . for_t1, for_t5, for_t8, for_t4,
223 . forc_n, ll , ifctl, ifc1 ,
224 . penmin, penref, marge, fqmax,
225 . sti_c, nel , vc ,e_distor,
226 . dt1)
227 nctl = nctl + ifctl
228C---- seg 5 : 4,8,7,3
229 CALL sfor_n2s4( xc, yc, zc, stif,
230 . x4, x8, x7, x3,
231 . y4, y8, y7, y3,
232 . z4, z8, z7, z3,
233 . vx4, vx8, vx7, vx3,
234 . vy4, vy8, vy7, vy3,
235 . vz4, vz8, vz7, vz3,
236 . for_t4, for_t8, for_t7, for_t3,
237 . forc_n, ll , ifctl, ifc1 ,
238 . penmin, penref, marge, fqmax,
239 . sti_c, nel , vc ,e_distor,
240 . dt1)
241 nctl = nctl + ifctl
242C---- seg 6 : 5,6,7,8
243 CALL sfor_n2s4( xc, yc, zc, stif,
244 . x5, x6, x7, x8,
245 . y5, y6, y7, y8,
246 . z5, z6, z7, z8,
247 . vx5, vx6, vx7, vx8,
248 . vy5, vy6, vy7, vy8,
249 . vz5, vz6, vz7, vz8,
250 . for_t5, for_t6, for_t7, for_t8,
251 . forc_n, ll , ifctl, ifc1 ,
252 . penmin, penref, marge, fqmax,
253 . sti_c, nel , vc ,e_distor,
254 . dt1)
255 nctl = nctl + ifctl
256! add corner nodes as 2nd to self-contact
257!---- 5,8,7,6 to seg 1 : 1,4, 3 2,
258 CALL sfor_4n2s4(
259 . x5, x8, x7, x6,
260 . y5, y8, y7, y6,
261 . z5, z8, z7, z6,
262 . vx5, vx8, vx7, vx6,
263 . vy5, vy8, vy7, vy6,
264 . vz5, vz8, vz7, vz6,
265 . for_t5, for_t8, for_t7, for_t6,
266 . x1, x4, x3, x2,
267 . y1, y4, y3, y2,
268 . z1, z4, z3, z2,
269 . vx1, vx4, vx3, vx2,
270 . vy1, vy4, vy3, vy2,
271 . vz1, vz4, vz3, vz2,
272 . for_t1, for_t4, for_t3, for_t2,
273 . stif, ll , nctl, ifc1 ,
274 . penmin, penref, marge, fqmax,
275 . sti_c,e_distor, dt1, nel )
276!---- 4,3,7,8 to seg 2 : 1,2,6,5
277 CALL sfor_4n2s4(
278 . x4, x3, x7, x8,
279 . y4, y3, y7, y8,
280 . z4, z3, z7, z8,
281 . vx4, vx3, vx7, vx8,
282 . vy4, vy3, vy7, vy8,
283 . vz4, vz3, vz7, vz8,
284 . for_t4, for_t3, for_t7, for_t8,
285 . x1, x2, x6, x5,
286 . y1, y2, y6, y5,
287 . z1, z2, z6, z5,
288 . vx1, vx2, vx6, vx5,
289 . vy1, vy2, vy6, vy5,
290 . vz1, vz2, vz6, vz5,
291 . for_t1, for_t2, for_t6, for_t5,
292 . stif, ll , nctl, ifc1 ,
293 . penmin, penref, marge, fqmax,
294 . sti_c,e_distor, dt1, nel )
295!---- 1,4,8,5 to seg 3 : 2,3,7,6
296 CALL sfor_4n2s4(
297 . x1, x4, x8, x5,
298 . y1, y4, y8, y5,
299 . z1, z4, z8, z5,
300 . vx1, vx4, vx8, vx5,
301 . vy1, vy4, vy8, vy5,
302 . vz1, vz4, vz8, vz5,
303 . for_t1, for_t4, for_t8, for_t5,
304 . x2, x3, x7, x6,
305 . y2, y3, y7, y6,
306 . z2, z3, z7, z6,
307 . vx2, vx3, vx7, vx6,
308 . vy2, vy3, vy7, vy6,
309 . vz2, vz3, vz7, vz6,
310 . for_t2, for_t3, for_t7, for_t6,
311 . stif, ll , nctl, ifc1 ,
312 . penmin, penref, marge, fqmax,
313 . sti_c,e_distor, dt1, nel )
314!---- 2,6,7,3 to seg 4 : 1,5,8,4
315 CALL sfor_4n2s4(
316 . x2, x6, x7, x3,
317 . y2, y6, y7, y3,
318 . z2, z6, z7, z3,
319 . vx2, vx6, vx7, vx3,
320 . vy2, vy6, vy7, vy3,
321 . vz2, vz6, vz7, vz3,
322 . for_t2, for_t6, for_t7, for_t3,
323 . x1, x5, x8, x4,
324 . y1, y5, y8, y4,
325 . z1, z5, z8, z4,
326 . vx1, vx5, vx8, vx4,
327 . vy1, vy5, vy8, vy4,
328 . vz1, vz5, vz8, vz4,
329 . for_t1, for_t5, for_t8, for_t4,
330 . stif, ll , nctl, ifc1 ,
331 . penmin, penref, marge, fqmax,
332 . sti_c,e_distor, dt1, nel )
333!---- 1,5,6,2 to seg 5 : 4,8,7,3
334 CALL sfor_4n2s4(
335 . x1, x5, x6, x2,
336 . y1, y5, y6, y2,
337 . z1, z5, z6, z2,
338 . vx1, vx5, vx6, vx2,
339 . vy1, vy5, vy6, vy2,
340 . vz1, vz5, vz6, vz2,
341 . for_t1, for_t5, for_t6, for_t2,
342 . x4, x8, x7, x3,
343 . y4, y8, y7, y3,
344 . z4, z8, z7, z3,
345 . vx4, vx8, vx7, vx3,
346 . vy4, vy8, vy7, vy3,
347 . vz4, vz8, vz7, vz3,
348 . for_t4, for_t8, for_t7, for_t3,
349 . stif, ll , nctl, ifc1 ,
350 . penmin, penref, marge, fqmax,
351 . sti_c,e_distor, dt1, nel )
352!---- 1,2,3,4 to seg 6 : 5,6,7,8
353 CALL sfor_4n2s4(
354 . x1, x2, x3, x4,
355 . y1, y2, y3, y4,
356 . z1, z2, z3, z4,
357 . vx1, vx2, vx3, vx4,
358 . vy1, vy2, vy3, vy4,
359 . vz1, vz2, vz3, vz4,
360 . for_t1, for_t2, for_t3, for_t4,
361 . x5, x6, x7, x8,
362 . y5, y6, y7, y8,
363 . z5, z6, z7, z8,
364 . vx5, vx6, vx7, vx8,
365 . vy5, vy6, vy7, vy8,
366 . vz5, vz6, vz7, vz8,
367 . for_t5, for_t6, for_t7, for_t8,
368 . stif, ll , nctl, ifc1 ,
369 . penmin, penref, marge, fqmax,
370 . sti_c,e_distor, dt1, nel )
371C---- force assemblage and STI update (dt)
372 DO i=1,nel
373 fcx = one_over_8*forc_n(i,1)
374 fcy = one_over_8*forc_n(i,2)
375 fcz = one_over_8*forc_n(i,3)
376 f11(i)=f11(i) + for_t1(i,1) + fcx
377 f21(i)=f21(i) + for_t1(i,2) + fcy
378 f31(i)=f31(i) + for_t1(i,3) + fcz
379 f12(i)=f12(i) + for_t2(i,1) + fcx
380 f22(i)=f22(i) + for_t2(i,2) + fcy
381 f32(i)=f32(i) + for_t2(i,3) + fcz
382 f13(i)=f13(i) + for_t3(i,1) + fcx
383 f23(i)=f23(i) + for_t3(i,2) + fcy
384 f33(i)=f33(i) + for_t3(i,3) + fcz
385 f14(i)=f14(i) + for_t4(i,1) + fcx
386 f24(i)=f24(i) + for_t4(i,2) + fcy
387 f34(i)=f34(i) + for_t4(i,3) + fcz
388 f15(i)=f15(i) + for_t5(i,1) + fcx
389 f25(i)=f25(i) + for_t5(i,2) + fcy
390 f35(i)=f35(i) + for_t5(i,3) + fcz
391 f16(i)=f16(i) + for_t6(i,1) + fcx
392 f26(i)=f26(i) + for_t6(i,2) + fcy
393 f36(i)=f36(i) + for_t6(i,3) + fcz
394 f17(i)=f17(i) + for_t7(i,1) + fcx
395 f27(i)=f27(i) + for_t7(i,2) + fcy
396 f37(i)=f37(i) + for_t7(i,3) + fcz
397 f18(i)=f18(i) + for_t8(i,1) + fcx
398 f28(i)=f28(i) + for_t8(i,2) + fcy
399 f38(i)=f38(i) + for_t8(i,3) + fcz
400C
401 IF (stif(i)>sti_c(i)) sti(i) = max(sti(i),stif(i))
402 END DO
403 ENDIF !(IFCTL >0) THEN
404
405
406 RETURN
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
subroutine sfor_n2s4(xi, yi, zi, stif, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, vx1, vx2, vx3, vx4, vy1, vy2, vy3, vy4, vz1, vz2, vz3, vz4, for_t1, for_t2, for_t3, for_t4, forc_n, ll, ifctl, ifc1, penmin, penref, marge, fqmax, stif0, nel, vc, e_distor, dt1)
Definition sfor_n2s4.F:43
subroutine sfor_visn8(vc, fld, tol_v, ifc1, vx1, vx2, vx3, vx4, vx5, vx6, vx7, vx8, vy1, vy2, vy3, vy4, vy5, vy6, vy7, vy8, vz1, vz2, vz3, vz4, vz5, vz6, vz7, vz8, for_t1, for_t2, for_t3, for_t4, for_t5, for_t6, for_t7, for_t8, ifctl, stif, mu, nel, e_distor, dt1)
Definition sfor_visn8.F:39