238 class(MethodCellPollockQuadType),
intent(inout) :: this
239 type(ParticleType),
pointer,
intent(inout) :: particle
240 class(SubcellRectType),
intent(inout) :: subcell
242 real(DP) :: dx, dy, dz, areax, areay, areaz
243 real(DP) :: dxprel, dyprel
244 integer(I4B) :: isc, npolyverts, m1, m2
245 real(DP) :: qextl1, qextl2, qintl1, qintl2
246 real(DP) :: factor, term
248 select type (cell => this%cell)
249 type is (cellrectquadtype)
250 factor = done / cell%defn%retfactor
251 factor = factor / cell%defn%porosity
252 npolyverts = cell%defn%npolyverts
254 isc = particle%idomain(3)
262 dxprel = particle%x / dx
263 dyprel = particle%y / dy
265 if (dyprel .ge. 5d-1)
then
266 if (dxprel .le. 5d-1)
then
272 if (dxprel .le. 5d-1)
then
279 subcell%isubcell = isc
280 particle%idomain(3) = isc
284 dz = cell%defn%top - &
289 qintl1 = cell%qintl(isc)
291 qintl2 = cell%qintl(isc + 1)
292 qextl1 = cell%qextl1(isc)
293 qextl2 = cell%qextl2(isc)
298 subcell%sinrot = dzero
299 subcell%cosrot = done
300 subcell%zOrigin = dzero
305 term = factor / areax
306 subcell%vx1 = qintl1 * term
307 subcell%vx2 = -qextl2 * term
308 term = factor / areay
309 subcell%vy1 = -qintl2 * term
310 subcell%vy2 = -qextl1 * term
313 subcell%yOrigin = dzero
314 term = factor / areax
315 subcell%vx1 = -qintl2 * term
316 subcell%vx2 = -qextl1 * term
317 term = factor / areay
318 subcell%vy1 = qextl2 * term
319 subcell%vy2 = -qintl1 * term
321 subcell%xOrigin = dzero
322 subcell%yOrigin = dzero
323 term = factor / areax
324 subcell%vx1 = qextl2 * term
325 subcell%vx2 = -qintl1 * term
326 term = factor / areay
327 subcell%vy1 = qextl1 * term
328 subcell%vy2 = qintl2 * term
330 subcell%xOrigin = dzero
332 term = factor / areax
333 subcell%vx1 = qextl1 * term
334 subcell%vx2 = qintl2 * term
335 term = factor / areay
336 subcell%vy1 = qintl1 * term
337 subcell%vy2 = -qextl2 * term
341 term = factor / areaz
342 subcell%vz1 = 2.5d-1 * cell%defn%faceflow(m1) * term
343 subcell%vz2 = -2.5d-1 * cell%defn%faceflow(m2) * term