select_active_particles Subroutine

public subroutine select_active_particles(end_time)

Uses

  • proc~~select_active_particles~~UsesGraph proc~select_active_particles select_active_particles module~mod_global_parameters mod_global_parameters proc~select_active_particles->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: end_time

Calls

proc~~select_active_particles~~CallsGraph proc~select_active_particles select_active_particles mpi_allreduce mpi_allreduce proc~select_active_particles->mpi_allreduce

Called by

proc~~select_active_particles~~CalledByGraph proc~select_active_particles select_active_particles proc~advance_particles advance_particles proc~advance_particles->proc~select_active_particles proc~handle_particles handle_particles proc~handle_particles->proc~advance_particles proc~advance advance proc~advance->proc~handle_particles proc~main main proc~main->proc~handle_particles proc~timeintegration timeintegration proc~main->proc~timeintegration proc~timeintegration->proc~advance program~agile agile program~agile->proc~main

Source Code

  subroutine select_active_particles(end_time)
    use mod_global_parameters
    double precision, intent(in) :: end_time

    integer          :: ipart, iipart
    logical          :: activate
    double precision :: t_min_mype

    t_min_mype = bigdouble
    nparticles_active_on_mype = 0

    do iipart = 1, nparticles_on_mype
      ipart      = particles_on_mype(iipart);
      activate   = (particle(ipart)%self%time < end_time)
      t_min_mype = min(t_min_mype, particle(ipart)%self%time)

      if (activate) then
        nparticles_active_on_mype = nparticles_active_on_mype + 1
        particles_active_on_mype(nparticles_active_on_mype) = ipart
      end if
    end do

    call MPI_ALLREDUCE(t_min_mype, min_particle_time, 1, MPI_DOUBLE_PRECISION,&
        MPI_MIN, icomm, ierrmpi)

  end subroutine select_active_particles