32 SUBROUTINE qnorm2t (NEL, NFT, JALE, SYM, IXTG, XGRID, WGRID,
34 use element_mod ,
only : nixtg
43#include "implicit_f.inc"
51 INTEGER,
INTENT(IN) :: NEL, NFT, JALE, SYM, IXTG(, *)
53 . xgrid(3, *), wgrid(*)
54 my_real,
INTENT(OUT) :: wfac(3, 3, nel), surf(3, nel)
59 INTEGER :: II, NODE1, NODE2, NODE3, KFACE
61 . x1(3), x2(3), x3(3), xk(3), xf(1:3),
66 node1 = ixtg(2, ii + nft)
67 node2 = ixtg(3, ii + nft)
68 node3 = ixtg(4, ii + nft)
69 x1(1:3) = xgrid(1:3, node1)
70 x2(1:3) = xgrid(1:3, node2)
71 x3(1:3) = xgrid(1:3, node3)
72 xk(1:3) = third * (x1(1:3) + x2(1:3) + x3(1:3))
75 w1(1:3) = wgrid(3 * (node1 - 1) + 1 : 3 * (node1 - 1) + 3)
76 w2(1:3) = wgrid(3 * (node2 - 1) + 1 : 3 * (node2 - 1) + 3)
77 w3(1:3) = wgrid(3 * (node3 - 1) + 1 : 3 * (node3 - 1) + 3)
86 norm(1, kface, ii) = zero
87 norm(2, kface, ii) = x2(3) - x1(3)
88 norm(3, kface, ii) = -(x2(2) - x1(2))
89 nx =>
norm(1, kface, ii)
90 ny =>
norm(2, kface, ii)
91 nz =>
norm(3, kface, ii)
92 surf(kface, ii) = sqrt(ny * ny + nz * nz)
93 ny = ny / surf(kface, ii)
94 nz = nz / surf(kface, ii)
96 surf(kface, ii) = surf(kface, ii) * half * (x1(2) + x2(2))
98 xf(1:3) = half * (x1(1:3) + x2(1:3))
99 IF (nx * (xf(1) - xk(1)) + ny * (xf(2) - xk(2)) + nz * (xf(3) - xk(3)) <= zero)
THEN
104 norm(1, kface, ii) = zero
105 norm(2, kface, ii) = x3(3) - x2(3)
106 norm(3, kface, ii) = -(x3(2) - x2(2))
107 nx =>
norm(1, kface, ii)
108 ny =>
norm(2, kface, ii)
109 nz =>
norm(3, kface, ii)
110 surf(kface, ii) = sqrt(ny * ny + nz * nz)
111 ny = ny / surf(kface, ii)
112 nz = nz / surf(kface, ii)
116 xf(1:3) = half * (x2(1:3) + x3(1:3))
117 IF (nx * (xf(1) - xk(1)) + ny * (xf(2) - xk(2)) + nz * (xf(3) - xk(3)) <= zero
THEN
122 norm(1, kface, ii) = zero
123 norm(2, kface, ii) = x1(3) - x3(3)
124 norm(3, kface, ii) = -(x1(2) - x3(2))
125 nx =>
norm(1, kface, ii)
126 ny =>
norm(2, kface, ii)
127 nz =>
norm(3, kface, ii)
128 surf(kface, ii) = sqrt(ny * ny + nz * nz)
129 ny = ny / surf(kface, ii)
130 nz = nz / surf(kface, ii)
132 surf(kface, ii) = surf(kface, ii) * half * (x3(2) + x1(2))
134 xf(1:3) = half * (x3(1:3) + x1(1:3))
135 IF (nx * (xf(1) - xk(1)) + ny * (xf(2) - xk(2)) + nz * (xf(3) - xk(3)) <= zero)
THEN
139 wfac(1:3, 1, ii) = half * (w1(1:3) + w2(1:3))
141 wfac(1:3, 2, ii) = half * (w2(1:3) + w3(1:3))
143 wfac(1:3, 3, ii) = half * (w3(1:3) + w1(1:3))