combine Subroutine

public recursive subroutine combine(arr, n, r, out_array, count)

Generate all combinations of size r from array arr of size n Uses int64 for count to handle large numbers of combinations that overflow int32.

Arguments

Type IntentOptional Attributes Name
integer(kind=default_int), intent(in) :: arr(:)
integer(kind=default_int), intent(in) :: n
integer(kind=default_int), intent(in) :: r
integer(kind=default_int), intent(inout) :: out_array(:,:)
integer(kind=int64), intent(inout) :: count

Calls

proc~~combine~~CallsGraph proc~combine combine proc~combine_util combine_util proc~combine->proc~combine_util proc~combine_util->proc~combine_util

Called by

proc~~combine~~CalledByGraph proc~combine combine proc~generate_fragment_list generate_fragment_list proc~generate_fragment_list->proc~combine proc~run_fragmented_calculation run_fragmented_calculation proc~run_fragmented_calculation->proc~combine proc~run_fragmented_calculation->proc~generate_fragment_list proc~run_calculation run_calculation proc~run_calculation->proc~run_fragmented_calculation proc~compute_energy_and_forces compute_energy_and_forces proc~compute_energy_and_forces->proc~run_calculation proc~run_multi_molecule_calculations run_multi_molecule_calculations proc~run_multi_molecule_calculations->proc~run_calculation program~main main program~main->proc~run_calculation program~main->proc~run_multi_molecule_calculations

Variables

Type Visibility Attributes Name Initial
integer(kind=default_int), private :: data(r)

Source Code

   recursive subroutine combine(arr, n, r, out_array, count)
      !! Generate all combinations of size r from array arr of size n
      !! Uses int64 for count to handle large numbers of combinations that overflow int32.
      integer(default_int), intent(in) :: arr(:)
      integer(default_int), intent(in) :: n, r
      integer(default_int), intent(inout) :: out_array(:, :)
      integer(int64), intent(inout) :: count
      integer(default_int) :: data(r)
      call combine_util(arr, n, r, 1, data, 1, out_array, count)
   end subroutine combine