OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s6fraca3.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!|| s6fraca ../starter/source/elements/thickshell/solide6c/s6fraca3.F
25!||--- called by ------------------------------------------------------
26!|| s6mass3 ../starter/source/elements/thickshell/solide6c/s6mass3.F
27!||====================================================================
28 SUBROUTINE s6fraca(X,IX1 ,IX2,IX3 ,IX4 ,IX5 ,IX6 ,PTG ,NEL ,IMAS_DS)
29C-----------------------------------------------
30C I m p l i c i t T y p e s
31C-----------------------------------------------
32#include "implicit_f.inc"
33C-----------------------------------------------
34C G l o b a l P a r a m e t e r s
35C-----------------------------------------------
36#include "mvsiz_p.inc"
37C-----------------------------------------------
38C C o m m o n B l o c k s
39C-----------------------------------------------
40#include "com04_c.inc"
41C-----------------------------------------------
42C D u m m y A r g u m e n t s
43C-----------------------------------------------
44 INTEGER ,INTENT(IN) :: NEL,IMAS_DS
45 INTEGER ,DIMENSION(MVSIZ) ,INTENT(IN) ::
46 . IX1, IX2, IX3, IX4, IX5 ,IX6
47 my_real, DIMENSION(MVSIZ,3) , INTENT(OUT) :: ptg
48 my_real, DIMENSION(3,NUMNOD) , INTENT(IN) :: x
49C-----------------------------------------------
50C L o c a l V a r i a b l e s
51C-----------------------------------------------
52 INTEGER I,J
53 my_real, DIMENSION(MVSIZ) :: x1,y1,z1,x2,y2,z2,x3,y3,z3
55 . p1, p2, p3, aa, bb, cc, a2, b2, c2,fac
56C=======================================================================
57 IF (imas_ds>0) THEN
58 DO i=1,nel
59 x1(i) = half*(x(1,ix1(i))+x(1,ix4(i)))
60 y1(i) = half*(x(2,ix1(i))+x(2,ix4(i)))
61 z1(i) = half*(x(3,ix1(i))+x(3,ix4(i)))
62 x2(i) = half*(x(1,ix2(i))+x(1,ix5(i)))
63 y2(i) = half*(x(2,ix2(i))+x(2,ix5(i)))
64 z2(i) = half*(x(3,ix2(i))+x(3,ix5(i)))
65 x3(i) = half*(x(1,ix3(i))+x(1,ix6(i)))
66 y3(i) = half*(x(2,ix3(i))+x(2,ix6(i)))
67 z3(i) = half*(x(3,ix3(i))+x(3,ix6(i)))
68 END DO
69 fac = three/pi
70 DO i=1,nel
71 a2 = (x2(i)-x1(i))**2+(y2(i)-y1(i))**2+(z2(i)-z1(i))**2
72 aa = sqrt(a2)
73 b2 = (x2(i)-x3(i))**2+(y2(i)-y3(i))**2+(z2(i)-z3(i))**2
74 bb = sqrt(b2)
75 c2 = (x3(i)-x1(i))**2+(y3(i)-y1(i))**2+(z3(i)-z1(i))**2
76 cc = sqrt(c2)
77 p1 = acos((a2 + c2 - b2)/(two * aa * cc))
78 p2 = acos((a2 + b2 - c2)/(two * aa * bb))
79 p3 = acos((b2 + c2 - a2)/(two * bb * cc))
80 ptg(i,1)=fac*p1
81 ptg(i,2)=fac*p2
82 ptg(i,3)=fac*p3
83 END DO
84 ELSE
85 ptg(1:nel,1:3)=one
86 END IF
87C-----------
88 RETURN
89 END SUBROUTINE s6fraca
#define my_real
Definition cppsort.cpp:32
subroutine s6fraca(x, ix1, ix2, ix3, ix4, ix5, ix6, ptg, nel, imas_ds)
Definition s6fraca3.F:29