OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i3dis3.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!|| i3dis3 ../engine/source/interfaces/inter3d/i3dis3.F
25!||--- called by ------------------------------------------------------
26!|| i5ke3 ../engine/source/interfaces/inter3d/i5ke3.F
27!|| i6main ../engine/source/interfaces/inter3d/i6main.F
28!|| i9main3 ../engine/source/interfaces/int09/i9main3.F
29!|| intvo3 ../engine/source/interfaces/inter3d/intvo3.F
30!|| ud_int5 ../engine/source/implicit/upd_glob_k.F
31!||====================================================================
32 SUBROUTINE i3dis3(
33 1 IGIMP, NTY, DIST, X1,
34 2 X2, X3, X4, XI,
35 3 Y1, Y2, Y3, Y4,
36 4 YI, Z1, Z2, Z3,
37 5 Z4, ZI, XFACE, N1,
38 6 N2, N3, SSC, TTC,
39 7 ALP, ANS, XP, YP,
40 8 ZP, H1, H2, H3,
41 9 H4, LFT, LLT)
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C G l o b a l P a r a m e t e r s
48C-----------------------------------------------
49#include "mvsiz_p.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER, INTENT(INOUT) :: LFT
54 INTEGER, INTENT(INOUT) :: LLT
55 INTEGER IGIMP,NTY
56 my_real DIST(*)
57 my_real, DIMENSION(MVSIZ), INTENT(IN) :: X1,X2,X3,X4,XI
58 my_real, DIMENSION(MVSIZ), INTENT(IN) :: Y1,Y2,Y3,Y4,YI
59 my_real, DIMENSION(MVSIZ), INTENT(IN) :: Z1,Z2,Z3,Z4,ZI
60 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: XFACE,ANS
61 my_real, DIMENSION(MVSIZ), INTENT(IN) :: N1,N2,N3,ALP
62 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: xp,yp,zp,ssc,ttc
63 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: h1,h2,h3,h4
64C-----------------------------------------------
65C L o c a l V a r i a b l e s
66C-----------------------------------------------
67 INTEGER I
68C-----------------------------------------------
69 DO i=lft,llt
70 IF (xface(i) == zero) cycle
71 IF (abs(ssc(i))>one+alp(i) .OR. abs(ttc(i))>one+alp(i)) THEN
72 xface(i)=zero
73 ELSE
74 IF(abs(ssc(i)) > one) ssc(i)=ssc(i)/abs(ssc(i))
75 IF(abs(ttc(i)) > one) ttc(i)=ttc(i)/abs(ttc(i))
76 ENDIF
77 END DO
78C
79 igimp=0
80 DO i=lft,llt
81 igimp = igimp + abs(xface(i))
82 END DO
83 IF (igimp == 0) RETURN
84C
85 DO i=lft,llt
86 h1(i) = fourth*(one-ttc(i))*(one-ssc(i))
87 h2(i) = fourth*(one-ttc(i))*(one+ssc(i))
88 h3(i) = fourth*(one+ttc(i))*(one+ssc(i))
89 h4(i) = fourth*(one+ttc(i))*(one-ssc(i))
90 END DO
91C
92 DO i=lft,llt
93 xp(i)=h1(i)*x1(i)+h2(i)*x2(i)+h3(i)*x3(i)+h4(i)*x4(i)
94 yp(i)=h1(i)*y1(i)+h2(i)*y2(i)+h3(i)*y3(i)+h4(i)*y4(i)
95 zp(i)=h1(i)*z1(i)+h2(i)*z2(i)+h3(i)*z3(i)+h4(i)*z4(i)
96 END DO
97C
98 DO i=lft,llt
99 ans(i)= n1(i)*(xi(i)-xp(i))
100 . +n2(i)*(yi(i)-yp(i))
101 . +n3(i)*(zi(i)-zp(i))
102 END DO
103 IF (nty == 8) THEN
104 DO i=lft,llt
105 dist(i) = ans(i)
106 ENDDO
107 ENDIF
108C-----------
109 RETURN
110 END
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