246 class(MethodCellPollockQuadType),
intent(inout) :: this
247 type(ParticleType),
pointer,
intent(inout) :: particle
248 class(SubcellRectType),
intent(inout) :: subcell
250 real(DP) :: dx, dy, dz, areax, areay, areaz
251 real(DP) :: dxprel, dyprel
252 integer(I4B) :: isc, npolyverts, m1, m2
253 real(DP) :: qextl1, qextl2, qintl1, qintl2
254 real(DP) :: factor, term
256 select type (cell => this%cell)
257 type is (cellrectquadtype)
258 factor = done / cell%defn%retfactor
259 factor = factor / cell%defn%porosity
260 npolyverts = cell%defn%npolyverts
262 isc = particle%idomain(3)
270 dxprel = particle%x / dx
271 dyprel = particle%y / dy
273 if (dyprel .ge. 5d-1)
then
274 if (dxprel .le. 5d-1)
then
280 if (dxprel .le. 5d-1)
then
287 subcell%isubcell = isc
288 particle%idomain(3) = isc
292 dz = cell%defn%top - &
297 qintl1 = cell%qintl(isc)
299 qintl2 = cell%qintl(isc + 1)
300 qextl1 = cell%qextl1(isc)
301 qextl2 = cell%qextl2(isc)
306 subcell%sinrot = dzero
307 subcell%cosrot = done
308 subcell%zOrigin = dzero
313 term = factor / areax
314 subcell%vx1 = qintl1 * term
315 subcell%vx2 = -qextl2 * term
316 term = factor / areay
317 subcell%vy1 = -qintl2 * term
318 subcell%vy2 = -qextl1 * term
321 subcell%yOrigin = dzero
322 term = factor / areax
323 subcell%vx1 = -qintl2 * term
324 subcell%vx2 = -qextl1 * term
325 term = factor / areay
326 subcell%vy1 = qextl2 * term
327 subcell%vy2 = -qintl1 * term
329 subcell%xOrigin = dzero
330 subcell%yOrigin = dzero
331 term = factor / areax
332 subcell%vx1 = qextl2 * term
333 subcell%vx2 = -qintl1 * term
334 term = factor / areay
335 subcell%vy1 = qextl1 * term
336 subcell%vy2 = qintl2 * term
338 subcell%xOrigin = dzero
340 term = factor / areax
341 subcell%vx1 = qextl1 * term
342 subcell%vx2 = qintl2 * term
343 term = factor / areay
344 subcell%vy1 = qintl1 * term
345 subcell%vy2 = -qextl2 * term
349 term = factor / areaz
350 subcell%vz1 = 2.5d-1 * cell%defn%faceflow(m1) * term
351 subcell%vz2 = -2.5d-1 * cell%defn%faceflow(m2) * term