29
30
31
32#include "implicit_f.inc"
33
34
35
36
38 . x(3,*),d(3,*),xnorm(3,*),cdg(*)
39 INTEGER II(4),INVERT
40
42 . x0(4),y0(4),z0(4),nx,ny,nz,xc,yc,zc,s
43 INTEGER I,I1,I2,I3,I4
44
45
46
47 DO 100 i = 1,4
48 x0(i) = x(1,ii(i))-d(1,ii(i))
49 y0(i) = x(2,ii(i))-d(2,ii(i))
50 z0(i) = x(3,ii(i))-d(3,ii(i))
51 100 CONTINUE
52
53 nx = (y0(3) - y0(1)) * (z0(4) - z0(2)) -
54 . (z0(3) - z0(1)) * (y0(4) - y0(2))
55 ny = (z0(3) - z0(1)) * (x0(4) - x0(2)) -
56 . (x0(3) - x0(1)) * (z0(4) - z0(2))
57 nz = (x0(3) - x0(1)) * (y0(4) - y0(2)) -
58 . (y0(3) - y0(1)) * (x0(4) - x0(2))
59
60 xc = .25*(x0(1) + x0(2) + x0(3) + x0(4))
61 yc = .25*(y0(1) + y0(2) + y0(3) + y0(4))
62 zc = .25*(z0(1) + z0(2) + z0(3) + z0(4))
63 xc = xc - cdg(1)
64 yc = yc - cdg(2)
65 zc = zc - cdg(3)
66 s = nx * xc + ny * yc + nz * zc
68
69
70
71
72
73
74
75
76
77
78
79
80 DO 200 i = 1,4
81 x0(i) = x(1,ii(i))
82 y0(i) = x(2,ii(i))
83 z0(i) = x(3,ii(i))
84 200 CONTINUE
85
86 nx = (y0(3) - y0(1)) * (z0(4) -
87 .
88 ny = (z0(3) - z0(1)) * (x0(4) - x0(2)) -
89 . (x0(3) - x0(1)) * (z0(4) - z0(2))
90 nz = (x0(3) - x0(1)) * (y0(4) - y0(2)) -
91 . (y0(3) - y0(1)) * (x0(4) - x0(2))
92
93 DO 300 i = 1,4
94 xnorm(1,ii(i)) = xnorm(1,ii(i)) + nx
95 xnorm(2,ii(i)) = xnorm(2,ii(i)) + ny
96 xnorm(3,ii(i)) = xnorm(3,ii(i)) + nz
97 300 CONTINUE
98
99
100 RETURN
subroutine invert(matrix, inverse, n, errorflag)