OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i6main.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!|| i6main ../engine/source/interfaces/inter3d/i6main.F
25!||--- called by ------------------------------------------------------
26!|| intfop1 ../engine/source/interfaces/interf/intfop1.F
27!||--- calls -----------------------------------------------------
28!|| i3cor3 ../engine/source/interfaces/inter3d/i3cor3.F
29!|| i3cst3 ../engine/source/interfaces/inter3d/i3cst3.F
30!|| i3dis3 ../engine/source/interfaces/inter3d/i3dis3.F
31!|| i3gap3 ../engine/source/interfaces/inter3d/i3gap3.F
32!|| i3loc3 ../engine/source/interfaces/inter3d/i3loc3.F
33!|| i3msr3 ../engine/source/interfaces/inter3d/i3msr3.F
34!|| i6ass3 ../engine/source/interfaces/inter3d/i6ass3.F
35!|| i6damp ../engine/source/interfaces/inter3d/i6damp.F
36!|| i6for3 ../engine/source/interfaces/inter3d/i6for3.F
37!|| i6fri3 ../engine/source/interfaces/inter3d/i6fri3.F
38!|| i6ini3 ../engine/source/interfaces/inter3d/i6ini3.F
39!|| i6ipmact ../engine/source/interfaces/inter3d/i6impact.F
40!||--- uses -----------------------------------------------------
41!|| h3d_mod ../engine/share/modules/h3d_mod.F
42!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
43!||====================================================================
44 SUBROUTINE i6main(IPARI,X ,A ,
45 2 ICODT,NPC ,TF ,V ,FSAV,
46 3 DT2T ,NELTST,ITYPTST,FSKYI ,ISKY,
47 4 FCONT,MS,INTBUF_TAB,H3D_DATA)
48C-----------------------------------------------
49C M o d u l e s
50C-----------------------------------------------
51 USE intbufdef_mod
52 USE h3d_mod
53C-----------------------------------------------
54C I m p l i c i t T y p e s
55C-----------------------------------------------
56#include "implicit_f.inc"
57C-----------------------------------------------
58C C o m m o n B l o c k s
59C-----------------------------------------------
60#include "com08_c.inc"
61#include "param_c.inc"
62#include "parit_c.inc"
63#include "mvsiz_p.inc"
64C-----------------------------------------------
65C D u m m y A r g u m e n t s
66C-----------------------------------------------
67 INTEGER NELTST,ITYPTST
68 INTEGER IPARI(*), ICODT(*), NPC(*), ISKY(*)
69C REAL
70 my_real dt2t,
71 . x(*),a(*),tf(*),v(*),fsav(*),fskyi(lskyi,nfskyi),
72 . fcont(3,*),ms(*)
73
74 TYPE(intbuf_struct_) INTBUF_TAB
75 TYPE(H3D_DATABASE) :: H3D_DATA
76C-----------------------------------------------
77C L o c a l V a r i a b l e s
78C-----------------------------------------------
79 INTEGER KD(50), JD(50), KFI, JFI,
80 . INACTI,NOINT, NGROUS, NGROUM, NG, IGIMP,INTY,IFRICF,IFRICV,
81 . IDAMPV,IDAMPF
82 INTEGER LOLD(MVSIZ)
83 INTEGER, DIMENSION(MVSIZ) :: IX1,IX2,IX3,IX4
84 my_real, DIMENSION(MVSIZ) :: X1,X2,X3,X4,XI
85 my_real, DIMENSION(MVSIZ) :: y1,y2,y3,y4,yi
86 my_real, DIMENSION(MVSIZ) :: z1,z2,z3,z4,zi
87 my_real, DIMENSION(MVSIZ) :: xface,n1,n2,n3
88 my_real, DIMENSION(MVSIZ) :: ssc,ttc,area,thk,alp
89 my_real, DIMENSION(MVSIZ) :: x0,y0,z0,ans
90 my_real, DIMENSION(MVSIZ) :: xx1,xx2,xx3,xx4
91 my_real, DIMENSION(MVSIZ) :: yy1,yy2,yy3,yy4
92 my_real, DIMENSION(MVSIZ) :: zz1,zz2,zz3,zz4
93 my_real, DIMENSION(MVSIZ) :: xi1,xi2,xi3,xi4
94 my_real, DIMENSION(MVSIZ) :: yi1,yi2,yi3,yi4
95 my_real, DIMENSION(MVSIZ) :: zi1,zi2,zi3,zi4
96 my_real, DIMENSION(MVSIZ) :: xn1,xn2,xn3,xn4
97 my_real, DIMENSION(MVSIZ) :: yn1,yn2,yn3,yn4
98 my_real, DIMENSION(MVSIZ) :: zn1,zn2,zn3,zn4
99 my_real, DIMENSION(MVSIZ) :: xp,yp,zp
100 my_real, DIMENSION(MVSIZ) :: h1,h2,h3,h4
101 my_real
102 . vni(mvsiz),vnt(mvsiz)
103 my_real
104 . ansmx,ascalv,ascalf,fscalv,fmx,fmy,fmz,startt,fric,sfric,visc,
105 . stiff, gap, stopt,dist
106 INTEGER :: NSN,NMN
107 INTEGER :: NFT,LLT,LFT
108C=======================================================================
109 nsn = ipari(5)
110 nmn = ipari(6)
111 inty = ipari(7)
112 noint = ipari(15)
113 inacti= ipari(22)
114 ifricf = ipari(51)
115 idampv = ipari(52)
116 idampf = ipari(53)
117 ifricv = ipari(54)
118C
119 ansmx =ep15
120 fmx=zero
121 fmy=zero
122 fmz=zero
123C
124 ngrous=1+(nsn-1)/nvsiz
125 ngroum=1+(nmn-1)/nvsiz
126C----
127 startt=intbuf_tab%VARIABLES(3)
128 IF(startt > tt) RETURN
129 stopt =intbuf_tab%VARIABLES(11)
130 IF(tt > stopt) RETURN
131c
132 fric = intbuf_tab%VARIABLES(1)
133 gap = intbuf_tab%VARIABLES(2)
134 sfric = intbuf_tab%VARIABLES(5)
135 visc = intbuf_tab%VARIABLES(14)
136 stiff = intbuf_tab%VARIABLES(21)
137 ascalf= intbuf_tab%VARIABLES(22)
138 ascalv= intbuf_tab%VARIABLES(23)
139 fscalv= intbuf_tab%VARIABLES(24)
140c
141 CALL i6ini3(intbuf_tab%FS,intbuf_tab%FM,nsn,nmn)
142c
143c--- Loop over secnd group
144c
145 DO ng=1,ngrous
146 nft=(ng-1)*nvsiz
147 lft=1
148 llt=min0(nvsiz,nsn-nft)
149 CALL i3loc3(
150 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
151 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%NSEGM, xi,
152 3 yi, zi, xface, lft,
153 4 llt, nft)
154 CALL i3msr3(
155 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
156 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%IRTLM, intbuf_tab%NSEGM,
157 3 xface, lft, llt, nft)
158 CALL i3cor3(
159 1 x, intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV,
160 2 intbuf_tab%IRTLM, ix1, ix2, ix3,
161 3 ix4, x1, x2, x3,
162 4 x4, y1, y2, y3,
163 5 y4, z1, z2, z3,
164 6 z4, lft, llt, nft)
165 CALL i3cst3(
166 1 x1, x2, x3, x4,
167 2 xi, y1, y2, y3,
168 3 y4, yi, z1, z2,
169 4 z3, z4, zi, xface,
170 5 n1, n2, n3, ssc,
171 6 ttc, x0, y0, z0,
172 7 xx1, xx2, xx3, xx4,
173 8 yy1, yy2, yy3, yy4,
174 9 zz1, zz2, zz3, zz4,
175 a xi1, xi2, xi3, xi4,
176 b yi1, yi2, yi3, yi4,
177 c zi1, zi2, zi3, zi4,
178 d xn1, xn2, xn3, xn4,
179 e yn1, yn2, yn3, yn4,
180 f zn1, zn2, zn3, zn4,
181 g area, lft, llt)
182 CALL i3gap3(
183 1 gap, area, thk, alp,
184 2 lft, llt)
185 CALL i3dis3(
186 1 igimp, inty, dist, x1,
187 2 x2, x3, x4, xi,
188 3 y1, y2, y3, y4,
189 4 yi, z1, z2, z3,
190 5 z4, zi, xface, n1,
191 6 n2, n3, ssc, ttc,
192 7 alp, ans, xp, yp,
193 8 zp, h1, h2, h3,
194 9 h4, lft, llt)
195 IF(igimp == 0)cycle
196
197 CALL i6for3(
198 1 intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV, intbuf_tab%IRTLM,
199 2 intbuf_tab%STFM, intbuf_tab%STFNS, igimp, intbuf_tab%FS,
200 3 intbuf_tab%FM, ansmx, fmx, fmy,
201 4 fmz, intbuf_tab%FCONT, n1, n2,
202 5 n3, xface, ans, h1,
203 6 h2, h3, h4, thk,
204 7 xx3, yy3, zz3, xx4,
205 8 yy4, yi1, yi2, yi3,
206 9 zz4, zi1, zi2, zi3,
207 a xi1, xi2, xi3, xi4,
208 b lft, llt, nft)
209c
210 IF (visc > zero .or. idampv > 0 .or. fric > zero)
211 . CALL i6ipmact(
212 1 lold, intbuf_tab%IRTLM, intbuf_tab%IRTLOM,intbuf_tab%CSTS,
213 2 intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV, v,
214 3 vni, vnt, n1, n2,
215 4 n3, ssc, ttc, h1,
216 5 h2, h3, h4, xface,
217 6 lft, llt, nft)
218
219 IF (visc > zero .or. idampv > 0)
220 . CALL i6damp(
221 1 v, npc, tf, intbuf_tab%IRECTM,
222 2 intbuf_tab%MSR, intbuf_tab%NSV, intbuf_tab%IRTLM, intbuf_tab%IRTLOM,
223 3 intbuf_tab%CSTS, intbuf_tab%FS, intbuf_tab%FM, visc,
224 4 idampv, idampf, lold, ms,
225 5 vni, ascalf, ascalv, fscalv,
226 6 h1, h2, h3, h4,
227 7 xx3, yy3, zz3, xx4,
228 8 yy4, yi1, yi2, yi3,
229 9 zz4, zi1, zi2, zi3,
230 a xi1, xi2, xi3, xi4,
231 b lft, llt, nft)
232c
233 IF (fric > zero)
234 . CALL i6fri3(
235 1 x, intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV,
236 2 intbuf_tab%IRTLM, intbuf_tab%CSTS, intbuf_tab%IRTLOM,intbuf_tab%FRICOS,
237 3 fric, intbuf_tab%FS, intbuf_tab%FM, sfric,
238 4 ifricf, npc, tf, lold,
239 5 ifricv, vnt, ascalf, ascalv,
240 6 stiff, n1, n2, n3,
241 7 ssc, ttc, xface, xp,
242 8 yp, zp, h1, h2,
243 9 h3, h4, xx3, yy3,
244 a zz3, xx4, yy4, yi1,
245 b yi2, yi3, zz4, zi1,
246 c zi2, zi3, xi1, xi2,
247 d xi3, xi4, lft, llt,
248 e nft)
249c
250
251 ENDDO
252c------------------
253C INVERSION DES FM (PASSAGE SECND/MAIN)
254c
255 fmx=-fmx
256 fmy=-fmy
257 fmz=-fmz
258c
259c--- Loop over main group
260c
261 DO ng=1,ngroum
262 nft=(ng-1)*nvsiz
263 lft=1
264 llt=min0(nvsiz,nmn-nft)
265 CALL i3loc3(
266 1 x, intbuf_tab%IRECTS,intbuf_tab%LNSV, intbuf_tab%NSV,
267 2 intbuf_tab%MSR, intbuf_tab%ILOCM, intbuf_tab%NSEGS, xi,
268 3 yi, zi, xface, lft,
269 4 llt, nft)
270 CALL i3msr3(
271 1 x, intbuf_tab%IRECTS,intbuf_tab%LNSV, intbuf_tab%NSV,
272 2 intbuf_tab%MSR, intbuf_tab%ILOCM, intbuf_tab%IRTLS, intbuf_tab%NSEGS,
273 3 xface, lft, llt, nft)
274 CALL i3cor3(
275 1 x, intbuf_tab%IRECTS,intbuf_tab%NSV, intbuf_tab%MSR,
276 2 intbuf_tab%IRTLS, ix1, ix2, ix3,
277 3 ix4, x1, x2, x3,
278 4 x4, y1, y2, y3,
279 5 y4, z1, z2, z3,
280 6 z4, lft, llt, nft)
281
282 CALL i3cst3(
283 1 x1, x2, x3, x4,
284 2 xi, y1, y2, y3,
285 3 y4, yi, z1, z2,
286 4 z3, z4, zi, xface,
287 5 n1, n2, n3, ssc,
288 6 ttc, x0, y0, z0,
289 7 xx1, xx2, xx3, xx4,
290 8 yy1, yy2, yy3, yy4,
291 9 zz1, zz2, zz3, zz4,
292 a xi1, xi2, xi3, xi4,
293 b yi1, yi2, yi3, yi4,
294 c zi1, zi2, zi3, zi4,
295 d xn1, xn2, xn3, xn4,
296 e yn1, yn2, yn3, yn4,
297 f zn1, zn2, zn3, zn4,
298 g area, lft, llt)
299 CALL i3gap3(
300 1 gap, area, thk, alp,
301 2 lft, llt)
302 CALL i3dis3(
303 1 igimp, inty, dist, x1,
304 2 x2, x3, x4, xi,
305 3 y1, y2, y3, y4,
306 4 yi, z1, z2, z3,
307 5 z4, zi, xface, n1,
308 6 n2, n3, ssc, ttc,
309 7 alp, ans, xp, yp,
310 8 zp, h1, h2, h3,
311 9 h4, lft, llt)
312
313 IF (igimp == 0) cycle
314c
315 CALL i6for3(
316 1 intbuf_tab%IRECTS,intbuf_tab%NSV, intbuf_tab%MSR, intbuf_tab%IRTLS,
317 2 intbuf_tab%STFS, intbuf_tab%STFNM, igimp, intbuf_tab%FM,
318 3 intbuf_tab%FS, ansmx, fmx, fmy,
319 4 fmz, intbuf_tab%FCONT, n1, n2,
320 5 n3, xface, ans, h1,
321 6 h2, h3, h4, thk,
322 7 xx3, yy3, zz3, xx4,
323 8 yy4, yi1, yi2, yi3,
324 9 zz4, zi1, zi2, zi3,
325 a xi1, xi2, xi3, xi4,
326 b lft, llt, nft)
327c
328 IF (visc > zero .or. idampv > 0 .or. fric > zero)
329 . CALL i6ipmact(
330 1 lold, intbuf_tab%IRTLS, intbuf_tab%IRTLOS,intbuf_tab%CSTM,
331 2 intbuf_tab%IRECTS,intbuf_tab%NSV, intbuf_tab%MSR, v,
332 3 vni, vnt, n1, n2,
333 4 n3, ssc, ttc, h1,
334 5 h2, h3, h4, xface,
335 6 lft, llt, nft)
336
337 IF (visc > zero .or. idampv > 0)
338 . CALL i6damp(
339 1 v, npc, tf, intbuf_tab%IRECTS,
340 2 intbuf_tab%NSV, intbuf_tab%MSR, intbuf_tab%IRTLS, intbuf_tab%IRTLOS,
341 3 intbuf_tab%CSTM, intbuf_tab%FM, intbuf_tab%FS, visc,
342 4 idampv, idampf, lold, ms,
343 5 vni, ascalf, ascalv, fscalv,
344 6 h1, h2, h3, h4,
345 7 xx3, yy3, zz3, xx4,
346 8 yy4, yi1, yi2, yi3,
347 9 zz4, zi1, zi2, zi3,
348 a xi1, xi2, xi3, xi4,
349 b lft, llt, nft)
350c
351 IF (fric > zero)
352 . CALL i6fri3(
353 1 x, intbuf_tab%IRECTS,intbuf_tab%NSV, intbuf_tab%MSR,
354 2 intbuf_tab%IRTLS, intbuf_tab%CSTM, intbuf_tab%IRTLOS,intbuf_tab%FRICOM,
355 3 fric, intbuf_tab%FM, intbuf_tab%FS, sfric,
356 4 ifricf, npc, tf, lold,
357 5 ifricv, vnt, ascalf, ascalv,
358 6 stiff, n1, n2, n3,
359 7 ssc, ttc, xface, xp,
360 8 yp, zp, h1, h2,
361 9 h3, h4, xx3, yy3,
362 a zz3, xx4, yy4, yi1,
363 b yi2, yi3, zz4, zi1,
364 c zi2, zi3, xi1, xi2,
365 d xi3, xi4, lft, llt,
366 e nft)
367 ENDDO
368C-----------
369 CALL i6ass3(
370 1 a ,intbuf_tab%MSR ,intbuf_tab%NSV ,intbuf_tab%FS ,
371 2 intbuf_tab%FM ,npc ,tf ,ansmx ,
372 3 fmx ,fmy ,fmz ,intbuf_tab%VARIABLES(4),
373 4 ipari(11) ,v ,noint ,nsn ,
374 5 nmn ,fsav ,dt2t ,neltst ,
375 6 ityptst ,intbuf_tab%STFAC(1) ,fskyi ,isky ,
376 7 fcont,intbuf_tab%VARIABLES(19),intbuf_tab%VARIABLES(20),stiff ,
377 8 ipari(47) ,ipari(49) ,ipari(58) ,intbuf_tab%FCONT ,
378 9 intbuf_tab%ANSMX0(1) ,intbuf_tab%ANSMX0(2),h3d_data )
379C-----------
380 RETURN
381 END
#define my_real
Definition cppsort.cpp:32
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine i3cor3(x, irect, msr, nsv, irtl, ix1, ix2, ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, lft, llt, nft)
Definition i3cor3.F:36
subroutine i3cst3(x1, x2, x3, x4, xi, y1, y2, y3, y4, yi, z1, z2, z3, z4, zi, xface, n1, n2, n3, ssc, ttc, x0, y0, z0, xx1, xx2, xx3, xx4, yy1, yy2, yy3, yy4, zz1, zz2, zz3, zz4, xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4, zi1, zi2, zi3, zi4, xn1, xn2, xn3, xn4, yn1, yn2, yn3, yn4, zn1, zn2, zn3, zn4, area, lft, llt)
Definition i3cst3.F:50
subroutine i3dis3(igimp, nty, dist, x1, x2, x3, x4, xi, y1, y2, y3, y4, yi, z1, z2, z3, z4, zi, xface, n1, n2, n3, ssc, ttc, alp, ans, xp, yp, zp, h1, h2, h3, h4, lft, llt)
Definition i3dis3.F:42
subroutine i3gap3(gap, area, thk, alp, lft, llt)
Definition i3gap3.F:35
subroutine i3loc3(x, irect, lmsr, msr, nsv, iloc, nseg, xi, yi, zi, xface, lft, llt, nft)
Definition i3loc3.F:35
subroutine i3msr3(x, irect, lmsr, msr, nsv, iloc, irtl, nseg, xface, lft, llt, nft)
Definition i3msr3.F:36
subroutine i6ass3(e, msr, nsv, es, em, npc, tf, ansmx, fmx, fmy, fmz, xmas, ifunc, v, noint, nsn, nmn, fsav, dt2t, neltst, ityptst, ffac, fskyi, isky, fcont, facx, fac2, stiff, hflag, ifun2, icor, peni, ansmx0, ff0, h3d_data)
Definition i6ass3.F:42
subroutine i6damp(v, npc, tf, irect, msr, nsv, irtl, irtlo, cst, es, em, visc, ndamp1, ndamp2, lold, mass, vni, ascalf, ascalv, fscalv, h1, h2, h3, h4, fni, fxi, fyi, fzi, fx1, fx2, fx3, fx4, fy1, fy2, fy3, fy4, fz1, fz2, fz3, fz4, lft, llt, nft)
Definition i6damp.F:42
subroutine i6for3(irect, msr, nsv, irtl, stf, stfn, igimp, es, em, ansmx, fmx, fmy, fmz, peni, n1, n2, n3, xface, ans, h1, h2, h3, h4, thk, fni, fxi, fyi, fzi, fx1, fx2, fx3, fx4, fy1, fy2, fy3, fy4, fz1, fz2, fz3, fz4, lft, llt, nft)
Definition i6for3.F:40
subroutine i6fri3(x, irect, msr, nsv, irtl, cst, irtlo, fric0, fric, es, em, sfric, ifricf, npc, tf, lold, ifricv, vnt, ascalf, ascalv, stiff, n1, n2, n3, ssc, ttc, xface, xp, yp, zp, h1, h2, h3, h4, fni, fxi, fyi, fzi, fx1, fx2, fx3, fx4, fy1, fy2, fy3, fy4, fz1, fz2, fz3, fz4, lft, llt, nft)
Definition i6fri3.F:45
subroutine i6ipmact(lold, irtl, irtlo, cst, irect, msr, nsv, v, vni, vnt, n1, n2, n3, ssc, ttc, h1, h2, h3, h4, xface, lft, llt, nft)
Definition i6impact.F:35
subroutine i6ini3(es, em, nsn, nmn)
Definition i6ini3.F:29
subroutine i6main(ipari, x, a, icodt, npc, tf, v, fsav, dt2t, neltst, ityptst, fskyi, isky, fcont, ms, intbuf_tab, h3d_data)
Definition i6main.F:48