25 procedure,
public :: pass =>
pass_mcp
41 method%name => method%cell%type
42 method%delegates = .true.
44 method%subcell => subcell
53 deallocate (this%name)
56 call this%method_subcell_plck%deallocate()
57 deallocate (this%method_subcell_plck)
61 subroutine load_mcp(this, particle, next_level, submethod)
67 integer,
intent(in) :: next_level
68 class(
methodtype),
pointer,
intent(inout) :: submethod
70 select type (subcell => this%subcell)
72 call this%load_subcell(particle, subcell)
74 call this%method_subcell_plck%init( &
77 subcell=this%subcell, &
79 tracktimes=this%tracktimes)
80 submethod => this%method_subcell_plck
81 particle%itrdomain(next_level) = 1
91 integer(I4B) :: exitface
92 integer(I4B) :: entryface
96 select case (exitface)
112 if (entryface .eq. -1)
then
115 if ((entryface .ge. 1) .and. (entryface .le. 4))
then
117 select type (cell => this%cell)
119 entryface = entryface + cell%ipvOrigin - 1
121 if (entryface .gt. 4) entryface = entryface - 4
132 real(DP),
intent(in) :: tmax
140 select type (cell => this%cell)
142 call this%assess(particle, this%cell%defn, tmax)
143 if (.not. particle%advancing)
return
148 xorigin = cell%xOrigin
149 yorigin = cell%yOrigin
150 zorigin = cell%zOrigin
153 call particle%transform(xorigin, yorigin, zorigin, &
155 call this%track(particle, 2, tmax)
156 call particle%transform(xorigin, yorigin, zorigin, &
157 sinrot, cosrot, invert=.true.)
158 call particle%reset_transform()
169 select type (cell => this%cell)
172 subcell%icell = cell%defn%icell
179 subcell%sinrot =
dzero
180 subcell%cosrot =
done
181 subcell%xOrigin =
dzero
182 subcell%yOrigin =
dzero
183 subcell%zOrigin =
dzero
186 subcell%vx1 = cell%vx1
187 subcell%vx2 = cell%vx2
188 subcell%vy1 = cell%vy1
189 subcell%vy2 = cell%vy2
190 subcell%vz1 = cell%vz1
191 subcell%vz2 = cell%vz2
subroutine, public create_cell_rect(cell)
Create a new rectangular cell.
This module contains simulation constants.
real(dp), parameter dzero
real constant zero
real(dp), parameter done
real constant 1
This module defines variable data types.
subroutine pass_mcp(this, particle)
Having exited the lone subcell, pass the particle to the cell face In this case the lone subcell is t...
procedure subroutine, public create_method_cell_pollock(method)
Create a tracking method.
subroutine load_subcell(this, particle, subcell)
Loads the lone rectangular subcell from the rectangular cell.
subroutine destroy_mcp(this)
Destroy the tracking method.
subroutine load_mcp(this, particle, next_level, submethod)
Load subcell tracking method.
subroutine apply_mcp(this, particle, tmax)
Apply Pollock's method to a rectangular cell.
Particle tracking strategies.
@, public level_subfeature
subroutine, public create_method_subcell_pollock(method)
Create a new Pollock's subcell method.
subroutine, public create_subcell_rect(subcell)
Create a new rectangular subcell.
Base type for particle tracking methods.
Rectangular subcell tracking method.
Particle tracked by the PRT model.