30
31
32
33
34
35
36#include "implicit_f.inc"
37
38
39
40 INTEGER, INTENT(IN) :: IS, M1, M2, M3, LSEG
41 INTEGER, INTENT(OUT) :: LSEG_NEW
45
46
47
48
49
50
51 my_real n(3), u(3), v(3), w(3), uw(3), wv(3)
53
54 u(1)=x(1,m2)-x(1,m1)
55 u(2)=x(2,m2)-x(2,m1)
56 u(3)=x(3,m2)-x(3,m1)
57
58 v(1)=x(1,m3)-x(1,m1)
59 v(2)=x(2,m3)-x(2,m1)
60 v(3)=x(3,m3)-x(3,m1)
61
62 n(1)=u(2)*v(3)-u(3)*v(2)
63 n(2)=u(3)*v(1)-u(1)*v(3)
64 n(3)=u(1)*v(2)-u(2)*v(1)
65
66 w(1)=x(1,is)-x(1,m1)
67 w(2)=x(2,is)-x(2,m1)
68 w(3)=x(3,is)-x(3,m1)
69
70 uw(1)=u(2)*w(3)-u(3)*w(2)
71 uw(2)=u(3)*w(1)-u(1)*w(3)
72 uw(3)=u(1)*w(2)-u(2)*w(1)
73
74 wv(1)=w(2)*v(3)-w(3)*v(2)
75 wv(2)=w(3)*v(1)-w(1)*v(3)
76 wv(3)=w(1)*v(2)-w(2)*v(1)
77
78 fac=one/(n(1)*n(1)+n(2)*n(2)+n(3)*n(3))
79 b2 =(uw(1)*n(1)+uw(2)*n(2)+uw(3)*n(3))*fac
80 b1 =(wv(1)*n(1)+wv(2)*n(2)+wv(3)*n(3))*fac
81 b0 = one - b1 - b2
83
84
85
86 IF(bmin > bmax) THEN
87 lseg_new=lseg
88 bmax=bmin
89 ENDIF
90 RETURN