30 SUBROUTINE aniskew(ELBUF_TAB,SKEW ,IPARG ,X , IXT,
31 . IXP ,IXR ,GEO ,BUFL)
36 use element_mod ,
only : nixt,nixp,nixr
40#include "implicit_f.inc"
51 . x(3,*), skew(lskew,*), geo(npropg,*)
52 INTEGER IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),IPARG(NPARG,*),
55 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
59 INTEGER I,J,ISK(6),JJ,NEL,LFT,LLT,NG,
60 . ity,mlw,nft,n,ii,len,iprop,igtyp,wa(bufl)
62 . ex(9),s3000,x1,y1,z1,x2,y2,z2,s
64 TYPE(g_bufel_) ,
POINTER :: GBUF
71 isk(1)=nint(skew(1,i)*s3000)
72 isk(2)=nint(skew(2,i)*s3000)
73 isk(3)=nint(skew(3,i)*s3000)
74 isk(4)=nint(skew(4,i)*s3000)
75 isk(5)=nint(skew(5,i)*s3000)
76 isk(6)=nint(skew(6,i)*s3000)
90 gbuf => elbuf_tab(ng)%GBUF
97 x1=x(1,ixt(3,i))-x(1,ixt(2,i))
98 y1=x(2,ixt(3,i))-x(2,ixt(2,i))
99 z1=x(3,ixt(3,i))-x(3,ixt(2,i))
100 s=one/
max(em20,sqrt(x1*x1+y1*y1+z1*z1))
105 IF (abs(z1) < half)
THEN
114 s=s3000/sqrt(x2*x2+y2*y2+z2*z2)
115 isk(1)=nint(x1*s3000)
116 isk(2)=nint(y1*s3000)
117 isk(3)=nint(z1*s3000)
126 ELSEIF (ity == 5)
THEN
130 x1=x(1,ixp(3,n))-x(1,ixp(2,n))
131 y1=x(2,ixp(3,n))-x(2,ixp(2,n))
132 z1=x(3,ixp(3,n))-x(3,ixp(2,n))
133 s=s3000/
max(em20,sqrt(x1*x1+y1*y1+z1*z1))
134 x2 = gbuf%SKEW(jj + 1)
135 y2 = gbuf%SKEW(jj + 2)
136 z2 = gbuf%SKEW(jj + 3)
143 isk(4)=nint(x2*s3000)
144 isk(5)=nint(y2*s3000)
145 isk(6)=nint(z2*s3000)
151 ELSEIF (ity == 6)
THEN
153 igtyp = nint(geo(12,iprop))
158 x1=x(1,ixr(3,n))-x(1,ixr(2,n))
159 y1=x(2,ixr(3,n))-x(2,ixr(2,n))
160 z1=x(3,ixr(3,n))-x(3,ixr(2,n))
172 IF (abs(z1) < half)
THEN
182 s=s3000/
max(em20,sqrt(s))
183 isk(1)=nint(x1*s3000)
184 isk(2)=nint(y1*s3000)
185 isk(3)=nint(z1*s3000)
192 ELSEIF (igtyp == 12)
THEN
195 x1=x(1,ixr(3,n))-x(1,ixr(2,n))
196 y1=x(2,ixr(3,n))-x(2,ixr(2,n))
197 z1=x(3,ixr(3,n))-x(3,ixr(2,n))
198 s=one/
max(em20,sqrt(x1*x1+y1*y1+z1*z1))
202 IF (abs(z1) < half)
THEN
211 s=s3000/
max(em20,sqrt(x2*x2+y2*y2+z2*z2))
212 isk(1)=nint(x1*s3000)
213 isk(2)=nint(y1*s3000)
214 isk(3)=nint(z1*s3000)
219 x1=x(1,ixr(4,n))-x(1,ixr(3,n))
220 y1=x(2,ixr(4,n))-x(2,ixr(3,n))
221 z1=x(3,ixr(4,n))-x(3,ixr(3,n))
222 s=one/
max(em20,sqrt(x1*x1+y1*y1+z1*z1))
235 s=s3000/
max(em20,sqrt(x2*x2+y2*y2+z2*z2))
236 isk(1)=nint(x1*s3000)
237 isk(2)=nint(y1*s3000)
238 isk(3)=nint(z1*s3000)
245 ELSEIF (igtyp == 13 .OR. igtyp == 23)
THEN
249 x1=x(1,ixr(3,n))-x(1,ixr(2,n))
250 y1=x(2,ixr(3,n))-x(2,ixr(2,n))
251 z1=x(3,ixr(3,n))-x(3,ixr(2,n))
252 s=s3000/
max(em20,sqrt(x1*x1+y1*y1+z1*z1))
253 x2 = gbuf%SKEW(jj + 1)
254 y2 = gbuf%SKEW(jj + 2)
255 z2 = gbuf%SKEW(jj + 3)
262 isk(4)=nint(x2*s3000)
263 isk(5)=nint(y2*s3000)
264 isk(6)=nint(z2*s3000)
267 ELSEIF (igtyp == 25)
THEN
272 x1=x(1,ixr(3,n))-x(1,ixr(2,n))
273 y1=x(2,ixr(3,n))-x(2,ixr(2,n))
274 z1=x(3,ixr(3,n))-x(3,ixr(2,n))
275 s=s3000/
max(em20,sqrt(x1*x1+y1*y1+z1*z1))
276 x2 = gbuf%SKEW(jj + 1)
277 y2 = gbuf%SKEW(jj + 2)
278 z2 = gbuf%SKEW(jj + 3)
285 isk(4)=nint(x2*s3000)
286 isk(5)=nint(y2*s3000)
287 isk(6)=nint(z2*s3000)
291 ELSEIF (igtyp >= 29 .AND. igtyp <= 32)
THEN
296 x1=x(1,ixr(3,n))-x(1,ixr(2,n))
297 y1=x(2,ixr(3,n))-x(2,ixr(2,n))
298 z1=x(3,ixr(3,n))-x(3,ixr(2,n))
299 s=s3000/
max(em20,sqrt(x1*x1+y1*y1+z1*z1))
300 x2 = gbuf%SKEW(jj + 1)
301 y2 = gbuf%SKEW(jj + 2)
302 z2 = gbuf%SKEW(jj + 3)
309 isk(4)=nint(x2*s3000)
310 isk(5)=nint(y2*s3000)
311 isk(6)=nint(z2*s3000)
315 ELSEIF (igtyp == 33 .OR. igtyp == 45)
THEN
319 ex(1) = gbuf%VAR(jj + 1)
320 ex(2) = gbuf%VAR(jj + 2)
321 ex(3) = gbuf%VAR(jj + 3)
322 ex(4) = gbuf%VAR(jj + 4)
323 ex(5) = gbuf%VAR(jj + 5)
324 ex(6) = gbuf%VAR(jj + 6)
331 isk(1)=nint(ex(1)*s3000)
332 isk(2)=nint(ex(2)*s3000)
333 isk(3)=nint(ex(3)*s3000)
334 isk(4)=nint(ex(4)*s3000)
335 isk(5)=nint(ex(5)*s3000)
336 isk(6)=nint(ex(6)*s3000)