37 class(*),
pointer :: p
39 call this%consumers%Add(p)
50 integer(I4B) :: i, per, stp
52 class(*),
pointer :: p
61 if (particle%ttrack ==
totimc .and. (per > 1 .or. stp > 1))
then
64 else if (per > 1)
then
74 call particle%get_model_coords(x, y, z)
78 event%imdl = particle%imdl
79 event%iprp = particle%iprp
80 event%irpt = particle%irpt
81 event%ilay = particle%ilay
82 event%icu = particle%icu
83 event%izone = particle%izone
84 event%trelease = particle%trelease
85 event%ttrack = particle%ttrack
89 event%istatus = particle%istatus
91 do i = 1, this%consumers%Count()
92 p => this%consumers%GetItem(i)
93 select type (consumer => p)
95 call consumer%handle_event(particle, event)
103 call this%consumers%Clear()
This module defines variable data types.
subroutine subscribe(this, consumer)
Subscribe a consumer to the dispatcher.
subroutine dispatch(this, particle, event)
Dispatch an event.
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
A generic heterogeneous doubly-linked list.
Base type for particle events.
Particle tracked by the PRT model.