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

Go to the source code of this file.

Functions/Subroutines

subroutine s6fraca (x, ix1, ix2, ix3, ix4, ix5, ix6, ptg, nel, imas_ds)

Function/Subroutine Documentation

◆ s6fraca()

subroutine s6fraca ( intent(in) x,
integer, dimension(mvsiz), intent(in) ix1,
integer, dimension(mvsiz), intent(in) ix2,
integer, dimension(mvsiz), intent(in) ix3,
integer, dimension(mvsiz), intent(in) ix4,
integer, dimension(mvsiz), intent(in) ix5,
integer, dimension(mvsiz), intent(in) ix6,
intent(out) ptg,
integer, intent(in) nel,
integer, intent(in) imas_ds )

Definition at line 28 of file s6fraca3.F.

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
#define my_real
Definition cppsort.cpp:32