OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i6impact.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!|| i6ipmact ../engine/source/interfaces/inter3d/i6impact.F
25!||--- called by ------------------------------------------------------
26!|| i6main ../engine/source/interfaces/inter3d/i6main.F
27!||====================================================================
28 SUBROUTINE i6ipmact(
29 1 LOLD, IRTL, IRTLO, CST,
30 2 IRECT, MSR, NSV, V,
31 3 VNI, VNT, N1, N2,
32 4 N3, SSC, TTC, H1,
33 5 H2, H3, H4, XFACE,
34 6 LFT, LLT, NFT)
35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40C G l o b a l P a r a m e t e r s
41C-----------------------------------------------
42#include "mvsiz_p.inc"
43C-----------------------------------------------
44C D u m m y A r g u m e n t s
45C-----------------------------------------------
46 INTEGER, INTENT(INOUT) :: LFT
47 INTEGER, INTENT(INOUT) :: LLT
48 INTEGER, INTENT(INOUT) :: NFT
49 INTEGER IRECT(4,*),MSR(*),NSV(*), IRTL(*), IRTLO(*), LOLD(*)
50C REAL
51 my_real
52 . v(3,*),cst(2,*),vni(*),vnt(*)
53 my_real, DIMENSION(MVSIZ), INTENT(IN) :: n1,n2,n3,ssc,ttc,xface
54 my_real, DIMENSION(MVSIZ), INTENT(IN) :: h1,h2,h3,h4
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58C-----------------------------------------------
59C L o c a l V a r i a b l e s
60C-----------------------------------------------
61 INTEGER I,L,IL,IG,NN
62C REAL
63 my_real
64 . VPX(LLT),VPY(LLT),VPZ(LLT),VIX(LLT),VIY(LLT),VIZ(LLT),
65 . VX1(LLT),VY1(LLT),VZ1(LLT),VX2(LLT),VY2(LLT),VZ2(LLT),
66 . VX3(LLT),VY3(LLT),VZ3(LLT),VX4(LLT),VY4(LLT),VZ4(LLT)
67 my_real
68 . dvx,dvy,dvz,vtx,vty,vtz
69C-----------------------------------------------
70 DO i=lft,llt
71 il = i+nft
72c
73 IF (xface(i) == zero) THEN ! no impact
74 irtlo(il) = 0
75 lold(i) = 0
76 ELSE
77 lold(i) = iabs(irtlo(il))
78 IF (lold(i) == 0) THEN ! first time impact
79 irtlo(il) = irtl(il)*xface(i)
80 cst(1,il) = ssc(i)
81 cst(2,il) = ttc(i)
82 ENDIF
83 ENDIF
84 ENDDO
85c-----------------------------
86 DO i=lft,llt
87 il = i+nft
88 IF (lold(i) == 0) THEN ! first time impact
89 vni(i) = zero
90 vnt(i) = zero
91 ELSE
92 ig = nsv(il)
93 l = irtl(il)
94c
95 vix(i) = v(1,ig)
96 viy(i) = v(2,ig)
97 viz(i) = v(2,ig)
98c
99 nn = msr(irect(1,lold(i)))
100 vx1(i) = v(1,nn)
101 vy1(i) = v(2,nn)
102 vz1(i) = v(2,nn)
103 nn = msr(irect(2,lold(i)))
104 vx2(i) = v(1,nn)
105 vy2(i) = v(2,nn)
106 vz2(i) = v(2,nn)
107 nn = msr(irect(3,lold(i)))
108 vx3(i) = v(1,nn)
109 vy3(i) = v(2,nn)
110 vz3(i) = v(2,nn)
111 nn = msr(irect(4,lold(i)))
112 vx4(i) = v(1,nn)
113 vy4(i) = v(2,nn)
114 vz4(i) = v(2,nn)
115c
116 vpx(i) = h1(i)*vx1(i)+h2(i)*vx2(i)+h3(i)*vx3(i)+h4(i)*vx4(i)
117 vpy(i) = h1(i)*vy1(i)+h2(i)*vy2(i)+h3(i)*vy3(i)+h4(i)*vy4(i)
118 vpz(i) = h1(i)*vz1(i)+h2(i)*vz2(i)+h3(i)*vz3(i)+h4(i)*vz4(i)
119 dvx = vix(i)-vpx(i)
120 dvy = viy(i)-vpy(i)
121 dvz = viz(i)-vpz(i)
122c
123 vni(i) = n1(i) * dvx + n2(i) * dvy + n3(i) * dvz
124
125 vtx = dvx - vni(i)*n1(i)
126 vty = dvy - vni(i)*n2(i)
127 vtz = dvz - vni(i)*n3(i)
128 vnt(i) = sqrt(vtx**2 + vty**2 + vtz**2)
129 ENDIF
130 ENDDO
131C-----------
132 RETURN
133 END
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