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