OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
intanl_tg.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!|| intanl_tg ../starter/source/fluid/intanl_tg.f
25!||--- called by ------------------------------------------------------
26!|| mass_fluid_qd ../starter/source/fluid/mass-fluid_qd.F
27!|| mass_fluid_tg ../starter/source/fluid/mass-fluid_tg.F
28!||====================================================================
29 SUBROUTINE intanl_tg(X1 , Y1 , Z1 , X2 , Y2 ,
30 . Z2 , X3 , Y3 , Z3 , XP ,
31 . YP , ZP , NRX , NRY, NRZ,
32 . AREA, RVLH, RVLG, JEL, IEL)
33C-----------------------------------------------
34C I m p l i c i t T y p e s
35C-----------------------------------------------
36#include "implicit_f.inc"
37C-----------------------------------------------
38C D u m m y A r g u m e n t s
39C-----------------------------------------------
40 INTEGER IEL, JEL
41 my_real
42 . X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, XP, YP, ZP,
43 . nrx, nry, nrz, area, rvlh, rvlg
44C-----------------------------------------------
45C L o c a l V a r i a b l e s
46C-----------------------------------------------
47 INTEGER I, J
48 my_real
49 . VX1, VY1, VZ1, VX2, VY2, VZ2, S1, S12, S2, NR1, NR2,
50 . x0, y0, z0, ksi(4), eta(4), dksi(3), deta(3), r(4),
51 . xls, yls, zls, s(3), v, fln, arg,
52 . d2, l12, l22, l32, lm2
53 my_real cs(3), sn(3)
54
55C
56 x0=third*(x1+x2+x3)
57 y0=third*(y1+y2+y3)
58 z0=third*(z1+z2+z3)
59C
60C SIMPLIFICATION SI SOURCE LOIN DE L'ELEMENT
61 d2=(x0-xp)**2+(y0-yp)**2+(z0-zp)**2
62 l12=(x2-x1)**2+(y2-y1)**2+(z2-z1)**2
63 l22=(x3-x2)**2+(y3-y2)**2+(z3-z2)**2
64 l32=(x1-x3)**2+(y1-y3)**2+(z1-z3)**2
65 lm2=max(l12,l22,l32)
66
67 IF(d2>twenty5*lm2) THEN
68 rvlg=area/sqrt(d2)
69 rvlh=area*(nrx*(x0-xp)+nry*(y0-yp)+nrz*(z0-zp))/(d2**three_half)
70 ELSE
71C
72C COORDONNEES LOCALES
73 vx1=x2-x1
74 vy1=y2-y1
75 vz1=z2-z1
76 vx2=x3-x1
77 vy2=y3-y1
78 vz2=z3-z1
79C
80 s1=vx1*vx1+vy1*vy1+vz1*vz1
81 s12=vx1*vx2+vy1*vy2+vz1*vz2
82 nr1=sqrt(s1)
83C
84 vx2=vx2-s12/s1*vx1
85 vy2=vy2-s12/s1*vy1
86 vz2=vz2-s12/s1*vz1
87C
88 s2=vx2*vx2+vy2*vy2+vz2*vz2
89 nr2=sqrt(s2)
90 vx1=vx1/nr1
91 vy1=vy1/nr1
92 vz1=vz1/nr1
93 vx2=vx2/nr2
94 vy2=vy2/nr2
95 vz2=vz2/nr2
96C
97 xls=(xp-x0)*vx1+(yp-y0)*vy1+(zp-z0)*vz1
98 yls=(xp-x0)*vx2+(yp-y0)*vy2+(zp-z0)*vz2
99 zls=(xp-x0)*nrx+(yp-y0)*nry+(zp-z0)*nrz
100
101 ksi(1)=(x1-x0)*vx1+(y1-y0)*vy1+(z1-z0)*vz1
102 eta(1)=(x1-x0)*vx2+(y1-y0)*vy2+(z1-z0)*vz2
103 ksi(2)=(x2-x0)*vx1+(y2-y0)*vy1+(z2-z0)*vz1
104 eta(2)=(x2-x0)*vx2+(y2-y0)*vy2+(z2-z0)*vz2
105 ksi(3)=(x3-x0)*vx1+(y3-y0)*vy1+(z3-z0)*vz1
106 eta(3)=(x3-x0)*vx2+(y3-y0)*vy2+(z3-z0)*vz2
107 ksi(4)=ksi(1)
108 eta(4)=eta(1)
109
110 dksi(1)=ksi(2)-ksi(1)
111 dksi(2)=ksi(3)-ksi(2)
112 dksi(3)=ksi(1)-ksi(3)
113 deta(1)=eta(2)-eta(1)
114 deta(2)=eta(3)-eta(2)
115 deta(3)=eta(1)-eta(3)
116 r(1)=sqrt((xp-x1)**2+(yp-y1)**2+(zp-z1)**2)
117 r(2)=sqrt((xp-x2)**2+(yp-y2)**2+(zp-z2)**2)
118 r(3)=sqrt((xp-x3)**2+(yp-y3)**2+(zp-z3)**2)
119 s(1)=sqrt(l12)
120 s(2)=sqrt(l22)
121 s(3)=sqrt(l32)
122 r(4)=r(1)
123
124 DO i=1,3
125 cs(i)=dksi(i)/s(i)
126 sn(i)=deta(i)/s(i)
127 ENDDO
128C
129 rvlh=zero
130C INTEGRALE DOUBLE COUCHE
131 IF (zls/=zero) THEN
132 DO i=1,3
133 j=i+1
134 rvlh=rvlh
135 . +atan((deta(i)*((xls-ksi(i))**2+zls**2)-dksi(i)*(xls-ksi(i))*(yls-eta(i)))/(r(i)*zls*dksi(i)))
136 . -atan((deta(i)*((xls-ksi(j))**2+zls**2)-dksi(i)*(xls-ksi(j))*(yls-eta(j)))/(r(j)*zls*dksi(i)))
137 ENDDO
138 ENDIF
139C
140C INTEGRALE SIMPLE COUCHE
141 rvlg=zero
142 DO i=1,3
143 j=i+1
144 v=(xls-ksi(i))*sn(i)-(yls-eta(i))*cs(i)
145 arg=(r(i)+r(j)-s(i))/(r(i)+r(j)+s(i))
146 IF (arg>zero) THEN
147 fln=-log(arg)
148 rvlg=rvlg+v*fln
149 ENDIF
150 ENDDO
151 rvlg=-rvlg+zls*rvlh
152C
153 ENDIF
154C
155 RETURN
156 END
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine intanl_tg(x1, y1, z1, x2, y2, z2, x3, y3, z3, xp, yp, zp, nrx, nry, nrz, area, rvlh, rvlg, jel, iel)
Definition intanl_tg.F:33
#define max(a, b)
Definition macros.h:21
program starter
Definition starter.F:39