24 procedure,
public :: pass =>
pass_mcp
40 method%type => method%cell%type
41 method%delegates = .true.
43 method%subcell => subcell
49 deallocate (this%type)
53 subroutine load_mcp(this, particle, next_level, submethod)
59 integer,
intent(in) :: next_level
60 class(
methodtype),
pointer,
intent(inout) :: submethod
62 select type (subcell => this%subcell)
64 call this%load_subcell(particle, subcell)
68 subcell=this%subcell, &
69 trackfilectl=this%trackfilectl, &
70 tracktimes=this%tracktimes)
72 particle%idomain(next_level) = 1
82 integer(I4B) :: exitface
83 integer(I4B) :: entryface
85 exitface = particle%iboundary(3)
87 select case (exitface)
103 if (entryface .eq. -1)
then
104 particle%iboundary(2) = 0
106 if ((entryface .ge. 1) .and. (entryface .le. 4))
then
108 select type (cell => this%cell)
110 entryface = entryface + cell%ipvOrigin - 1
112 if (entryface .gt. 4) entryface = entryface - 4
114 particle%iboundary(2) = entryface
123 real(DP),
intent(in) :: tmax
131 select type (cell => this%cell)
135 call this%update(particle, cell%defn)
138 if (.not. particle%advancing)
return
144 if (particle%z > cell%defn%top)
then
145 particle%z = cell%defn%top
146 call this%save(particle, reason=1)
153 xorigin = cell%xOrigin
154 yorigin = cell%yOrigin
155 zorigin = cell%zOrigin
158 call particle%transform(xorigin, yorigin, zorigin, &
160 call this%track(particle, 2, tmax)
161 call particle%transform(xorigin, yorigin, zorigin, &
162 sinrot, cosrot, invert=.true.)
163 call particle%transform(reset=.true.)
175 select type (cell => this%cell)
186 subcell%xOrigin = 0d0
187 subcell%yOrigin = 0d0
188 subcell%zOrigin = 0d0
191 subcell%vx1 = cell%vx1
192 subcell%vx2 = cell%vx2
193 subcell%vy1 = cell%vy1
194 subcell%vy2 = cell%vy2
195 subcell%vz1 = cell%vz1
196 subcell%vz2 = cell%vz2
subroutine, public create_cell_rect(cell)
Create a new rectangular cell.
This module contains simulation constants.
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 kluge note: is levelNext needed here and...
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.
Subcell-level tracking methods.
type(methodsubcellpollocktype), pointer, public method_subcell_plck
type(methodsubcellternarytype), pointer, public method_subcell_tern
subroutine, public create_subcell_rect(subcell)
Create a new rectangular subcell.
Base type for particle tracking methods.
A particle tracked by the PRT model.
Manages particle track (i.e. pathline) files.