3.17.5. Task update sequence

When a sink particle task (data type sink_patch_t) reaches the head of the ready queue and is taken by one of the threads, its call to the normal task_list_t%update() procedure results in calls to these procedures (indentation indicates call level, and the name of the file containing the procedure is obtained with the substituttion _t -> _mod.f90):

experiment_t%dnload                                          ! generic download call
  sink_task_t%dnload                                         ! sink patch download
    download_t%download_link (..., all_cells=.true., ...)    ! values for accretion
task%update                                                  ! generic update call
  sink_task%update                                           ! sink patch update
    particle_solver_t%force_field                            ! fall through
      particle_list_t%force_field                            ! compute forces
        hash_table%get                                       ! get patch_forces
    sink_task_t%accrete                                      ! accrete mass
      sink_task_t%courant_condition                          ! set timestep
    sink_task_t%move                                         ! organize particle move
      particle_solver_t%update                               ! particle solver update
        particle_solver_t%courant_time                       ! particle courant time
patch_t%rotate                                               ! patch periodicty etc
  task_t%rotate                                              ! rotate time slots
list_t%send_to_vnbors [ if the task is a boundary task ]     ! send boundary tasks