collision_obj_ComputeCollisions Subroutine

private pure subroutine collision_obj_ComputeCollisions(this)

Computes collisions between all added objects.

Type Bound

collision_obj

Arguments

Type IntentOptional Attributes Name
class(collision_obj), intent(inout) :: this

Collision utility


Calls

proc~~collision_obj_computecollisions~~CallsGraph proc~collision_obj_computecollisions collision_obj%collision_obj_ComputeCollisions center center proc~collision_obj_computecollisions->center particle particle proc~collision_obj_computecollisions->particle proc~collision_obj_computecollisionsppvpp collision_obj%collision_obj_ComputeCollisionsPPvPP proc~collision_obj_computecollisions->proc~collision_obj_computecollisionsppvpp proc~collision_obj_computecollisionsppvwall collision_obj%collision_obj_ComputeCollisionsPPvWALL proc~collision_obj_computecollisions->proc~collision_obj_computecollisionsppvwall proc~collision_obj_computecollisionsrpvib collision_obj%collision_obj_ComputeCollisionsRPvIB proc~collision_obj_computecollisions->proc~collision_obj_computecollisionsrpvib proc~collision_obj_computecollisionsrpvpp collision_obj%collision_obj_ComputeCollisionsRPvPP proc~collision_obj_computecollisions->proc~collision_obj_computecollisionsrpvpp proc~collision_obj_computecollisionsrpvrp collision_obj%collision_obj_ComputeCollisionsRPvRP proc~collision_obj_computecollisions->proc~collision_obj_computecollisionsrpvrp proc~collision_obj_computecollisionsrpvwall collision_obj%collision_obj_ComputeCollisionsRPvWALL proc~collision_obj_computecollisions->proc~collision_obj_computecollisionsrpvwall proc~collision_obj_computecollisionsppvpp->center none~get~2 sllist_obj%Get proc~collision_obj_computecollisionsppvpp->none~get~2 proc~cross_product~3 cross_product proc~collision_obj_computecollisionsppvpp->proc~cross_product~3 proc~dem_col DEM_col proc~collision_obj_computecollisionsppvpp->proc~dem_col proc~collision_obj_computecollisionsppvwall->center proc~collision_obj_computecollisionsppvwall->proc~cross_product~3 proc~collision_obj_computecollisionsppvwall->proc~dem_col proc~collision_obj_computecollisionsrpvib->center proc~collision_obj_computecollisionsrpvib->none~get~2 proc~collision_obj_computecollisionsrpvib->proc~cross_product~3 proc~collision_obj_computecollisionsrpvib->proc~dem_col triangle triangle proc~collision_obj_computecollisionsrpvib->triangle proc~collision_obj_computecollisionsrpvpp->none~get~2 proc~collision_obj_computecollisionsrpvpp->proc~cross_product~3 proc~collision_obj_computecollisionsrpvpp->proc~dem_col type1 type1 proc~collision_obj_computecollisionsrpvpp->type1 type2 type2 proc~collision_obj_computecollisionsrpvpp->type2 proc~collision_obj_computecollisionsrpvrp->center proc~collision_obj_computecollisionsrpvrp->none~get~2 proc~collision_obj_computecollisionsrpvrp->proc~cross_product~3 proc~collision_obj_computecollisionsrpvrp->proc~dem_col proc~collision_obj_computecollisionsrpvwall->center proc~collision_obj_computecollisionsrpvwall->proc~cross_product~3 proc~collision_obj_computecollisionsrpvwall->proc~dem_col proc~sllist_obj_get_int4 sllist_obj%sllist_obj_Get_int4 none~get~2->proc~sllist_obj_get_int4 proc~sllist_obj_get_int8 sllist_obj%sllist_obj_Get_int8 none~get~2->proc~sllist_obj_get_int8 proc~sllist_obj_get_real_dp sllist_obj%sllist_obj_Get_real_dp none~get~2->proc~sllist_obj_get_real_dp proc~sllist_obj_get_real_sp sllist_obj%sllist_obj_Get_real_sp none~get~2->proc~sllist_obj_get_real_sp proc~dem_col->proc~cross_product~3 proc~sllist_obj_get_int4->proc~sllist_obj_get_int4 proc~sllist_obj_get_int8->proc~sllist_obj_get_int8 proc~sllist_obj_get_real_dp->proc~sllist_obj_get_real_dp proc~sllist_obj_get_real_sp->proc~sllist_obj_get_real_sp

Called by

proc~~collision_obj_computecollisions~~CalledByGraph proc~collision_obj_computecollisions collision_obj%collision_obj_ComputeCollisions proc~cdifs_obj_updatecollisions cdifs_obj_UpdateCollisions proc~cdifs_obj_updatecollisions->proc~collision_obj_computecollisions proc~grans_obj_advancesolution_computecollisionforces grans_obj_AdvanceSolution_ComputeCollisionForces proc~grans_obj_advancesolution_computecollisionforces->proc~collision_obj_computecollisions proc~cdifs_obj_advancesolutionrp cdifs_obj_AdvanceSolutionRP proc~cdifs_obj_advancesolutionrp->proc~cdifs_obj_updatecollisions proc~grans_obj_advancesolution grans_obj_AdvanceSolution proc~grans_obj_advancesolution->proc~grans_obj_advancesolution_computecollisionforces interface~grans_obj_advancesolution grans_obj%grans_obj_AdvanceSolution interface~grans_obj_advancesolution->proc~grans_obj_advancesolution proc~cdifs_obj_advancesolution cdifs_obj_AdvanceSolution proc~cdifs_obj_advancesolution->proc~cdifs_obj_advancesolutionrp interface~cdifs_obj_advancesolution cdifs_obj%cdifs_obj_AdvanceSolution interface~cdifs_obj_advancesolution->proc~cdifs_obj_advancesolution

Source Code

    pure subroutine collision_obj_ComputeCollisions(this)
      !> Computes collisions between all added objects.
      implicit none
      class(collision_obj), intent(inout) :: this                              !! Collision utility
      ! Work variable
      integer :: n

      ! Initialize collision force and torque
      if (associated(this%RP)) then
        select type (center=>this%RP%p)
        type is (ResPart_obj)
          do n=1,this%RP%count_
            center(n)%Fc = 0.0_wp
            center(n)%Tc = 0.0_wp
          end do
        end select
      end if
      if (associated(this%PP)) then
        select type (particle=>this%PP%p)
        type is (particle_obj)
          do n=1,this%PP%count_
            particle(n)%Fc = 0.0_wp
            particle(n)%Tc = 0.0_wp
          end do
        end select
      end if

      if (associated(this%RP)) call collision_obj_ComputeCollisionsRPvRP(this)

      if (associated(this%RP).and.associated(this%IB)) &
                               call collision_obj_ComputeCollisionsRPvIB(this)

      if (associated(this%RP).and.this%use_wall) &
                               call collision_obj_ComputeCollisionsRPvWALL(this)

      if (associated(this%PP)) call collision_obj_ComputeCollisionsPPvPP(this)

      if (associated(this%PP).and.associated(this%RP)) &
                               call collision_obj_ComputeCollisionsRPvPP(this)

      if (associated(this%PP).and.this%use_wall) &
                               call collision_obj_ComputeCollisionsPPvWALL(this)

      if (associated(this%RP).and.associated(this%PP)) &
                               call collision_obj_ComputeCollisionsRPvPP(this)

      return
    end subroutine collision_obj_ComputeCollisions