37
39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "mvsiz_p.inc"
47
48
49
50 INTEGER NCP(NIXP,*),NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ),
51 . MXT(MVSIZ), MXG(MVSIZ)
52 INTEGER , INTENT (IN) :: IBEAM_VECTOR(MVSIZ)
53 INTEGER , INTENT (OUT) :: IVECT(MVSIZ)
54 my_real x1(mvsiz), x2(mvsiz), x3(mvsiz),
55 . y1(mvsiz), y2(mvsiz), y3(mvsiz),
56 . z1(mvsiz), z2(mvsiz), z3(mvsiz),x(3,*),deltax(mvsiz)
57 my_real ,
INTENT (IN) :: rbeam_vector(3,mvsiz)
58 my_real ,
INTENT (OUT) :: vect(3,mvsiz)
59
60
61
62#include "vect01_c.inc"
63
64
65
66 INTEGER I
67 my_real xp1, xp2, xp3, xnor1, xp4, xp5, xp6,
68 . xnor2, xnorm, det1, det2, det3, det, xx,yy,zz,tol
69
70
71
72 tol=two*em06
73 DO i=lft,llt
74 mxt(i)=ncp(1,i)
75 nc1(i)=ncp(2,i)
76 nc2(i)=ncp(3,i)
77 nc3(i)=ncp(4,i)
78 mxg(i)=ncp(5,i)
79 ivect(i)=ibeam_vector(i)
80 vect(1:3,i)=rbeam_vector(1:3,i)
81 END DO
82
83
84
85
86 DO i=lft,llt
87 x1(i)=x(1,nc1(i))
88 y1(i)=x(2,nc1(i))
89 z1(i)=x(3,nc1(i))
90 x2(i)=x(1,nc2(i))
91 y2(i)=x(2,nc2(i))
92 z2(i)=x(3,nc2(i))
93 x3(i)=x(1,nc3(i))
94 y3(i)=x(2,nc3(i))
95 z3(i)=x(3,nc3(i))
96 ENDDO
97
98 DO i=lft,llt
99 xx = (x1(i)-x2(i))*(x1(i)-x2(i))
100 yy = (y1(i)-y2(i))*(y1(i)-y2(i))
101 zz = (z1(i)-z2(i))*(z1(i)-z2(i))
102 deltax(i) = sqrt(xx+yy+zz)
103 ENDDO
104
105
106
107 DO i=lft,llt
108 xp1=x2(i)-x1(i)
109 xp2=y2(i)-y1(i)
110 xp3=z2(i)-z1(i)
111 xnor1=sqrt(xp1*xp1+xp2*xp2+xp3*xp3)
112 IF(xnor1<=em20) THEN
114 . msgtype=msgerror,
115 . anmode=aninfo,
116 . i1=ncp(6,i))
117 ENDIF
118
119 IF (ivect(i)>0) THEN
120
121 xp4=vect(1,i)
122 xp5=vect(2,i)
123 xp6=vect(3,i)
124 det1=xp1*xp5-xp2*xp4
125 det2=xp2*xp6-xp3*xp5
126 det3=xp3*xp4-xp1*xp6
127 det= sqrt(det1**2+det2**2+det3**2)
128 IF (det<tol) THEN
129
130 ivect(i) = -1
132 . msgtype=msgwarning,
133 . anmode=aninfo_blind_1,
134 . i1=ncp(6,i),
135 . prmod=msg_cumu)
136 ENDIF
137 ELSE
138
139 IF (nc3(i)==nc2(i)) cycle
140 xp4=x3(i)-x1(i)
141 xp5=y3(i)-y1(i)
142 xp6=z3(i)-z1(i)
143 xnor2=sqrt(xp4*xp4+xp5*xp5+xp6*xp6)
144 IF(xnor2<em20) THEN
146 . msgtype=msgerror,
147 . anmode=aninfo_blind_1,
148 . i1=ncp(6,i))
149 ELSE
150 det1=xp1*xp5-xp2*xp4
151 det2=xp2*xp6-xp3*xp5
152 det3=xp3*xp4-xp1*xp6
153 det= sqrt(det1**2+det2**2+det3**2)
154 IF (det<tol) THEN
156 . msgtype=msgwarning,
157 . anmode=aninfo_blind_1,
158 . i1=ncp(6,i),
159 . prmod=msg_cumu)
160
161 ENDIF
162 ENDIF
163 ENDIF
164 ENDDO
166 . msgtype=msgwarning,
167 . anmode=aninfo_blind_1,
168 . prmod=msg_print)
170 . msgtype=msgwarning,
171 . anmode=aninfo_blind_1,
172 . prmod=msg_print)
173
174 RETURN
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)