31 SUBROUTINE snorm3t (NEL, NFT, JALE, IXS, XGRID, WGRID,
41#include "implicit_f.inc"
49 INTEGER,
INTENT(IN) :: NEL
51 . xgrid(3, *), wgrid(*)
52 my_real,
INTENT(OUT) :: wfac(3, 6, nel), surf(6, nel)
57 INTEGER :: II, NODE1, NODE2, NODE3, NODE4, KFACE
59 . x1(3), x2(3), x3(3), x4(3),
60 . w1(3), w2(3), w3(3), w4(3), xc(3), xf(3)
65 node1 = ixs(2, ii + nft)
66 node2 = ixs(4, ii + nft)
67 node3 = ixs(7, ii + nft)
68 node4 = ixs(6, ii + nft)
70 x1(1:3) = xgrid(1:3, node1)
71 x2(1:3) = xgrid(1:3, node2)
72 x3(1:3) = xgrid(1:3, node3)
73 x4(1:3) = xgrid(1:3, node4)
75 xc(1:3) = fourth * (x1(1:3) + x2(1:3) + x3(1:3) + x4(1:3))
78 w1(1:3) = wgrid(3 * (node1 - 1) + 1 : 3 * (node1 - 1) + 3)
79 w2(1:3) = wgrid(3 * (node2 - 1) + 1 : 3 * (node2 - 1) + 3)
80 w3(1:3) = wgrid(3 * (node3 - 1) + 1 : 3 * (node3 - 1) + 3)
81 w4(1:3) = wgrid(3 * (node4 - 1) + 1 : 3 * (node4 - 1) + 3)
92 norm(1, kface, ii) = half * ((x3(2) - x1(2)) * (x2(3)
93 . (x3(3) - x1(3)) * (x2(2) - x1(2)))
94 norm(2, kface, ii) = half * ((x3(3) - x1(3)) * (x2(1) - x1(1)) -
95 . (x3(1) - x1(1)) * (x2(3) - x1(3)))
96 norm(3, kface, ii) = half * ((x3(1) - x1(1)) * (x2(2) - x1(2)) -
97 . (x3(2) - x1(2)) * (x2(1) - x1(1)))
98 nx =>
norm(1, kface, ii)
99 ny =>
norm(2, kface, ii)
100 nz =>
norm(3, kface, ii)
101 surf(kface, ii) = sqrt(nx * nx + ny * ny + nz * nz)
102 nx = -nx / surf(kface, ii)
103 ny = -ny / surf(kface, ii)
104 nz = -nz / surf(kface, ii)
105 xf(1:3) = third * (x1 + x2 + x3)
106 IF ((xf(1) - xc(1)) * nx + (xf(2) - xc(2)) * ny + (xf(3) - xc(3)) * nz < zero)
THEN
111 norm(1, kface, ii) = half * ((x1(2) - x4(2
112 . (x1(3) - x4(3)) * (x2(2) - x4(2)))
113 norm(2, kface, ii) = half * ((x1(3) - x4(3)) * (x2(1) - x4(1)) -
114 . (x1(1) - x4(1)) * (x2(3) - x4(3)))
115 norm(3, kface, ii) = half * ((x1(1) - x4(1)) * (x2(2) - x4(2)) -
116 . (x1(2) - x4(2)) * (x2(1) - x4(1)))
117 nx =>
norm(1, kface, ii)
118 ny =>
norm(2, kface, ii)
119 nz =>
norm(3, kface, ii)
120 surf(kface, ii) = sqrt(nx * nx + ny * ny + nz * nz)
121 nx = -nx / surf(kface, ii)
122 ny = -ny / surf(kface, ii)
123 nz = -nz / surf(kface, ii)
124 xf(1:3) = third * (x1 + x2 + x4)
125 IF ((xf(1) - xc(1)) * nx + (xf(2) - xc(2)) * ny + (xf(3) - xc(3)) * nz < zero)
THEN
130 norm(1, kface, ii) = half * ((x2(2) - x4(2)) * (x3(3) - x4(3)) -
131 . (x2(3) - x4(3)) * (x3(2) - x4(2)))
132 norm(2, kface, ii) = half * ((x2(3) - x4(3)) * (x3(1) - x4(1)) -
133 . (x2(1) - x4(1)) * (x3(3) - x4(3)))
134 norm(3, kface, ii) = half * ((x2(1) - x4(1)) * (x3(2) - x4(2))
135 . (x2(2) - x4(2)) * (x3(1) - x4(1)))
136 nx =>
norm(1, kface, ii)
137 ny =>
norm(2, kface, ii)
138 nz =>
norm(3, kface, ii)
139 surf(kface, ii) = sqrt(nx * nx + ny * ny + nz * nz)
140 nx = -nx / surf(kface, ii)
141 ny = -ny / surf(kface, ii)
142 nz = -nz / surf(kface, ii)
143 xf(1:3) = third * (x4 + x2 + x3)
144 IF ((xf(1) - xc(1)) * nx + (xf(2) - xc(2)) * ny + (xf(3) - xc(3)) * nz < zero)
THEN
149 norm(1, kface, ii) = half * ((x3(2) - x4(2)) * (x1(3) - x4(3)) -
150 . (x3(3) - x4(3)) * (x1(2) - x4(2)))
151 norm(2, kface, ii) = half * ((x3(3) - x4(3)) * (x1(1) - x4(1)) -
152 . (x3(1) - x4(1)) * (x1(3) - x4(3)))
153 norm(3, kface, ii) = half * ((x3(1
154 . (x3(2) - x4(2)) * (x1(1) - x4(1)))
155 nx =>
norm(1, kface, ii)
156 ny =>
norm(2, kface, ii)
157 nz =>
norm(3, kface, ii)
158 surf(kface, ii) = sqrt(nx * nx + ny * ny + nz * nz)
159 nx = -nx / surf(kface, ii)
160 ny = -ny / surf(kface, ii)
161 nz = -nz / surf(kface, ii)
162 xf(1:3) = third * (x1 + x4 + x3)
163 IF ((xf(1) - xc(1)) * nx + (xf(2) - xc(2)) * ny + (xf(3) - xc(3)) * nz < zero)
THEN
167 wfac(1:3, 5, ii) = third * (w1(1:3) + w2(1:3) + w3(1:3))
169 wfac(1:3, 6, ii) = third * (w1(1:3) + w4(1:3) + w2(1:3))
171 wfac(1:3, 2, ii) = third * (w2(1:3) + w4(1:3) + w3(1:3))
173 wfac(1:3, 4, ii) = third * (w1(1:3) + w3(1:3) + w4(1:3))
175 wfac(1:3, 1, ii) = zero
176 wfac(1:3, 3, ii) = zero
179 norm(1:3, 1, ii) = zero
180 norm(1:3, 3, ii) = zero