OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i7pen3.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!|| i7pen3 ../starter/source/interfaces/inter3d1/i7pen3.F
25!||--- called by ------------------------------------------------------
26!|| i20ini3 ../starter/source/interfaces/inter3d1/i20ini3.F
27!|| i21buc1 ../starter/source/interfaces/inter3d1/i21buc3.F
28!|| i21tri ../starter/source/interfaces/inter3d1/i21tri.F
29!|| i23buc1 ../starter/source/interfaces/inter3d1/i23buc3.F
30!|| i23tri ../starter/source/interfaces/inter3d1/i23tri.F
31!|| i24buc1 ../starter/source/interfaces/inter3d1/i24buc1.F
32!|| i24tri ../starter/source/interfaces/inter3d1/i24tri.F
33!|| i7buc1 ../starter/source/interfaces/inter3d1/i7buc1.F
34!|| i7tri ../starter/source/interfaces/inter3d1/i7tri.F
35!|| i7trivox1 ../starter/source/interfaces/inter3d1/i7trivox1.F
36!|| inint3 ../starter/source/interfaces/inter3d1/inint3.F
37!||====================================================================
38 SUBROUTINE i7pen3(MARGE,GAPV,N1 ,N2 ,N3 ,
39 1 PENE ,NX1 ,NY1,NZ1,NX2,
40 2 NY2 ,NZ2 ,NX3,NY3,NZ3,
41 3 NX4 ,NY4 ,NZ4,P1 ,P2 ,
42 4 P3 ,P4,LAST)
43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47C-----------------------------------------------
48C G l o b a l P a r a m e t e r s
49C-----------------------------------------------
50#include "mvsiz_p.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54 INTEGER, INTENT(IN) :: LAST !< last candidat
55C REAL
56 my_real
57 . MARGE, GAPV(*)
58 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: n1,n2,n3,pene
59 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: nx1,ny1,nz1
60 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: nx2,ny2,nz2
61 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: nx3,ny3,nz3
62 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: nx4,ny4,nz4
63 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: p1,p2,p3,p4
64C-----------------------------------------------
65C L o c a l V a r i a b l e s
66C-----------------------------------------------
67 INTEGER I
68C REAL
69 my_real
70 . D1,D2,D3,D4,S2
71C-----------------------------------------------
72 DO i=1,last
73 d1 = sqrt(p1(i))
74 p1(i) = max(zero, gapv(i) + marge - d1)
75C
76 d2 = sqrt(p2(i))
77 p2(i) = max(zero, gapv(i) + marge - d2)
78C
79 d3 = sqrt(p3(i))
80 p3(i) = max(zero, gapv(i) + marge - d3)
81C
82 d4 = sqrt(p4(i))
83 p4(i) = max(zero, gapv(i) + marge - d4)
84 ENDDO
85C
86 DO i=1,last
87 pene(i) = max(p1(i),p2(i),p3(i),p4(i))
88 if(p1(i)==pene(i))then
89 n1(i) = nx1(i)
90 n2(i) = ny1(i)
91 n3(i) = nz1(i)
92 elseif(p2(i)==pene(i))then
93 n1(i) = nx2(i)
94 n2(i) = ny2(i)
95 n3(i) = nz2(i)
96 elseif(p3(i)==pene(i))then
97 n1(i) = nx3(i)
98 n2(i) = ny3(i)
99 n3(i) = nz3(i)
100 elseif(p4(i)==pene(i))then
101 n1(i) = nx4(i)
102 n2(i) = ny4(i)
103 n3(i) = nz4(i)
104 endif
105 ENDDO
106 DO i=1,last
107 s2 = one/max(em30,sqrt(n1(i)**2 + n2(i)**2 + n3(i)**2))
108 n1(i) = n1(i)*s2
109 n2(i) = n2(i)*s2
110 n3(i) = n3(i)*s2
111 ENDDO
112C
113 RETURN
114 END
#define max(a, b)
Definition macros.h:21
subroutine i7pen3(marge, gapv, n1, n2, n3, pene, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, last)
Definition i7pen3.F:43