50 this%consumer => consumer
56 if (
associated(this%consumer))
then
57 deallocate (this%consumer)
58 this%consumer => null()
70 integer(I4B) :: per, stp
80 if (particle%ttrack ==
totimc .and. (per > 1 .or. stp > 1))
then
83 else if (per > 1)
then
89 event%particle => particle
90 event%time = particle%ttrack
93 call this%consumer%handle_event(particle, event)
100 if (
associated(this%consumer)) &
101 deallocate (this%consumer)
111 call this%dispatch(particle, event)
121 call this%dispatch(particle, event)
128 integer(I4B),
intent(in),
optional :: status
131 particle%advancing = .false.
132 if (
present(status)) particle%istatus = status
134 call this%dispatch(particle, event)
144 call this%dispatch(particle, event)
154 call this%dispatch(particle, event)
164 call this%dispatch(particle, event)
This module defines variable data types.
subroutine usertime(this, particle)
User-defined tracking time occurs.
subroutine weaksink(this, particle)
Particle leaves a weak sink.
subroutine subscribe(this, consumer)
Subscribe a consumer to the dispatcher.
subroutine unsubscribe(this)
Unsubscribe the consumer from the dispatcher.
subroutine terminate(this, particle, status)
Particle terminates.
subroutine release(this, particle)
Particle is released.
subroutine cellexit(this, particle)
Particle exits a cell.
subroutine dispatch(this, particle, event)
Dispatch an event. Internal use only.
subroutine timestep(this, particle)
Time step ends.
subroutine destroy(this)
Destroy the dispatcher.
real(dp), pointer, public totimc
simulation time at start of time step
integer(i4b), pointer, public kstp
current time step number
integer(i4b), pointer, public kper
current stress period number
Base type for particle events.
Particle tracked by the PRT model.