33 SUBROUTINE snorm3t (NEL, NFT, JALE, IXS, XGRID, WGRID,
35 use element_mod ,
only : nixs
44#include "implicit_f.inc"
52 INTEGER,
INTENT(IN) :: NEL, NFT, JALE, IXS(NIXS, *)
54 . xgrid(3, *), wgrid(*)
55 my_real,
INTENT(OUT) :: wfac(3, 6, nel), surf
60 INTEGER :: II, NODE1, NODE2, NODE3, NODE4, KFACE
62 . x1(3), x2(3), x3(3), x4(3),
63 . w1(3), w2(3), w3(3), w4(3), xc(3), xf(3)
68 node1 = ixs(2, ii + nft)
69 node2 = ixs(4, ii + nft)
70 node3 = ixs(7, ii + nft)
71 node4 = ixs(6, ii + nft)
73 x1(1:3) = xgrid(1:3, node1)
74 x2(1:3) = xgrid(1:3, node2)
75 x3(1:3) = xgrid(1:3, node3)
76 x4(1:3) = xgrid(1:3, node4)
78 xc(1:3) = fourth * (x1(1:3) + x2(1:3) + x3(1:3) + x4(1
81 w1(1:3) = wgrid(3 * (node1 - 1) + 1 : 3 * (node1 - 1) + 3)
82 w2(1:3) = wgrid(3 * (node2 - 1) + 1 : 3 * (node2 - 1) + 3)
83 w3(1:3) = wgrid(3 * (node3 - 1) + 1 : 3 * (node3 - 1) + 3)
84 w4(1:3) = wgrid(3 * (node4 - 1) + 1 : 3 * (node4 - 1) + 3)
95 norm(1, kface, ii) = half * ((x3(2) - x1(2)) * (x2(3) - x1(3)) -
96 . (x3(3) - x1(3)) * (x2(2) - x1(2)))
97 norm(2, kface, ii) = half * ((x3(3) - x1(3)) * (x2
98 . (x3(1) - x1(1)) * (x2(3) - x1(3)))
99 norm(3, kface, ii) = half * ((x3(1) - x1(1)) * (x2(2) - x1(2)) -
100 . (x3(2) - x1(2)) * (x2(1) - x1(1)))
101 nx =>
norm(1, kface, ii)
102 ny =>
norm(2, kface, ii)
103 nz =>
norm(3, kface, ii)
104 surf(kface, ii) = sqrt(nx * nx + ny * ny + nz * nz)
105 nx = -nx / surf(kface, ii)
106 ny = -ny / surf(kface, ii)
107 nz = -nz / surf(kface, ii)
108 xf(1:3) = third * (x1 + x2 + x3)
109 IF ((xf(1) - xc(1)) * nx + (xf(2) - xc(2)) * ny + (xf(3) - xc(3)) * nz < zero)
THEN
114 norm(1, kface, ii) = half * ((x1(2) - x4(2)) * (x2(3) - x4(3)) -
115 . (x1(3) - x4(3)) * (x2(2) - x4(2)))
116 norm(2, kface, ii) = half * ((x1(3) - x4(3)) * (x2(1) - x4(1)) -
117 . (x1(1) - x4(1)) * (x2(3) - x4(3)))
118 norm(3, kface, ii) = half * ((x1(1) - x4(1)) * (x2(2) - x4(2)) -
119 . (x1(2) - x4(2)) * (x2(1) - x4(1)))
120 nx =>
norm(1, kface, ii)
121 ny =>
norm(2, kface, ii)
122 nz =>
norm(3, kface, ii)
123 surf(kface, ii) = sqrt(nx * nx + ny * ny + nz * nz)
124 nx = -nx / surf(kface, ii)
125 ny = -ny / surf(kface, ii)
126 nz = -nz / surf(kface, ii)
127 xf(1:3) = third * (x1 + x2 + x4)
128 IF ((xf(1) - xc(1)) * nx + (xf(2) - xc(2)) * ny + (xf(3) - xc(3)) * nz < zero)
THEN
133 norm(1, kface, ii) = half * ((x2(2) - x4(2)) * (x3(3) - x4(3)) -
134 . (x2(3) - x4(3)) * (x3(2) - x4(2)))
135 norm(2, kface, ii) = half * ((x2(3) - x4(3)) * (x3(1) - x4(1)) -
136 . (x2(1) - x4(1)) * (x3(3) - x4(3)))
137 norm(3, kface, ii) = half * ((x2(1) - x4(1)) * (x3(2) - x4(2)) -
138 . (x2(2) - x4(2)) * (x3(1) - x4(1)))
139 nx =>
norm(1, kface, ii)
140 ny =>
norm(2, kface, ii)
141 nz =>
norm(3, kface, ii)
142 surf(kface, ii) = sqrt(nx * nx + ny * ny + nz * nz)
143 nx = -nx / surf(kface, ii)
144 ny = -ny / surf(kface, ii)
145 nz = -nz / surf(kface, ii)
146 xf(1:3) = third * (x4 + x2 + x3)
147 IF ((xf(1) - xc(1)) * nx + (xf(2) - xc(2)) * ny + (xf(3) - xc(3)) * nz < zero)
THEN
152 norm(1, kface, ii) = half * ((x3(2) - x4(2)) * (x1(3) - x4(3)) -
153 . (x3(3) - x4(3)) * (x1(2) - x4(2)))
154 norm(2, kface, ii) = half * ((x3(3) - x4(3)) * (x1(1) - x4(1)) -
155 . (x3(1) - x4(1)) * (x1(3) - x4(3)))
156 norm(3, kface, ii) = half * ((x3(1) - x4(1)) * (x1(2) - x4(2)) -
157 . (x3(2) - x4(2)) * (x1(1) - x4(1)))
158 nx =>
norm(1, kface, ii)
159 ny =>
norm(2, kface, ii)
160 nz =>
norm(3, kface, ii)
161 surf(kface, ii) = sqrt(nx * nx + ny * ny + nz * nz)
162 nx = -nx / surf(kface, ii)
163 ny = -ny / surf(kface, ii)
164 nz = -nz / surf(kface, ii)
165 xf(1:3) = third * (x1 + x4 + x3)
166 IF ((xf(1) - xc(1)) * nx + (xf(2) - xc(2)) * ny + (xf(3) - xc(3)) * nz < zero)
THEN
170 wfac(1:3, 5, ii) = third * (w1(1:3) + w2(1:3) + w3(1:3))
172 wfac(1:3, 6, ii) = third * (w1(1:3) + w4(1:3) + w2(1:3))
174 wfac(1:3, 2, ii) = third * (w2(1:3) + w4(1:3) + w3(1:3))
176 wfac(1:3, 4, ii) = third * (w1(1:3) + w3(1:3) + w4(1:3))
178 wfac(1:3, 1, ii) = zero
179 wfac(1:3, 3, ii) = zero
182 norm(1:3, 1, ii) = zero
183 norm(1:3, 3, ii) = zero
subroutine multi_fvm2fem(timestep, elbuf_tab, itask, ixs, ixq, iparg, xgrid, accele, vel, wgrid, ms, msnf, veul, stifn, fsky, iads, fskym, condn, condnsky, multi_fvm, nodadt_therm)