39
41 use element_mod , only : nixtg
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "mvsiz_p.inc"
50
51
52
53#include "scr03_c.inc"
54#include "vect01_c.inc"
55
56
57
58 INTEGER (MVSIZ),IXP(NIXTG,*),IX1(MVSIZ),IX2(MVSIZ),IX3(MVSIZ)
60 . x(3,*),xreftg(3,3,*),
61 . x1(mvsiz),x2(mvsiz),x3(mvsiz),
62 . y1(mvsiz),y2(mvsiz),y3(mvsiz),
63 . z1(mvsiz),z2(mvsiz),z3(mvsiz)
64
65
66
67 INTEGER I, TEST0, TEST1, TEST2
69 . xn13, xn23, xn12, x13, y13, z13, x12, y12, z12
70
71
72
73 DO i=lft,llt
74 ngl(i)=ixp(6,i)
75 ix1(i)=ixp(2,i)
76 ix2(i)=ixp(3,i)
77 ix3(i)=ixp(4,i)
78 ENDDO
79
80
81 IF (nxref == 0) THEN
82 DO i=lft,llt
83 x1(i)=x(1,ix1(i))
84 y1(i)=x(2,ix1(i))
85 z1(i)=x(3,ix1(i))
86 x2(i)=x(1,ix2(i))
87 y2(i)=x(2,ix2(i))
88 z2(i)=x(3,ix2(i))
89 x3(i)=x(1,ix3(i))
90 y3(i)=x(2,ix3(i))
91 z3(i)=x(3,ix3(i))
92 ENDDO
93 ELSE
94 DO i=lft,llt
95 x1(i)=xreftg(1,1,i)
96 y1(i)=xreftg(1,2,i)
97 z1(i)=xreftg(1,3,i)
98 x2(i)=xreftg(2,1,i)
99 y2(i)=xreftg(2,2,i)
100 z2(i)=xreftg(2,3,i)
101 x3(i)=xreftg(3,1,i)
102 y3(i)=xreftg(3,2,i)
103 z3(i)=xreftg(3,3,i)
104 ENDDO
105 ENDIF
106
107 DO i=lft,llt
108 xn13=(x1(i)-x3(i))**2+(y1(i)-y3(i))**2+(z1(i)-z3(i))**2
109 xn23=(x2(i)-x3(i))**2+(y2(i)-y3(i))**2+(z2(i)-z3(i))**2
110 xn12=(x1(i)-x2(i))**2+(y1(i)-y2(i))**2+(z1(i)-z2(i))**2
111 x13=x3(i)-x1(i)
112 y13=y3(i)-y1(i)
113 z13=z3(i)-z1(i)
114 x12=x2(i)-x1(i)
115 y12=y2(i)-y1(i)
116 z12=z2(i)-z1(i)
117 e3x=y12*z13-z12*y13
118 e3y=z12*x13-x12*z13
119 e3z=x12*y13-y12*x13
120 surf=half*sqrt(e3x*e3x+e3y*e3y+e3z*e3z)
121
122 test0=0
123 test1=0
124 test2=0
125 IF(xn13+xn12<em20) THEN
127 . msgtype=msgerror,
128 . anmode=aninfo_blind_1,
129 . i1=ixp(nixtg,i))
130 test0=1
131 ELSE IF(surf<=em20) THEN
133 . msgtype=msgerror,
134 . anmode=aninfo_blind_1,
135 . i1=ixp(nixtg,i))
136 test1=1
137 ELSE IF(xn12<=em20.OR.xn23<=em20.OR.xn13<=em20) THEN
139 . msgtype=msgerror,
140 . anmode=aninfo_blind_1,
141 . i1=ixp(nixtg,i))
142 test2=1
143 ENDIF
144 IF(test0==1.OR.test1==1.OR.test2==1) THEN
145 x1(i)=zero
146 y1(i)=zero
147 z1(i)=zero
148 x2(i)=one
149 y2(i)=zero
150 z2(i)=zero
151 x3(i)=one
152 y3(i)=one
153 z3(i)=zero
154 ENDIF
155 ENDDO
156
157 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)