29
30
31
32#include "implicit_f.inc"
33
34
35
36#include "mvsiz_p.inc"
37
38
39
40#include "com04_c.inc"
41
42
43
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
49
50
51
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
56
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
87
88 RETURN