OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
intanl_tg.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine intanl_tg (x1, y1, z1, x2, y2, z2, x3, y3, z3, xp, yp, zp, nrx, nry, nrz, area, rvlh, rvlg, jel, iel)

Function/Subroutine Documentation

◆ intanl_tg()

subroutine intanl_tg ( x1,
y1,
z1,
x2,
y2,
z2,
x3,
y3,
z3,
xp,
yp,
zp,
nrx,
nry,
nrz,
area,
rvlh,
rvlg,
integer jel,
integer iel )

Definition at line 29 of file intanl_tg.F.

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
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
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
#define my_real
Definition cppsort.cpp:32
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define max(a, b)
Definition macros.h:21