tree_populate_farnear_lists_safe Subroutine

public subroutine tree_populate_farnear_lists_safe(t, min_dist_thr)

Uses

  • proc~~tree_populate_farnear_lists_safe~~UsesGraph proc~tree_populate_farnear_lists_safe tree_populate_farnear_lists_safe module~mod_adjacency_mat mod_adjacency_mat proc~tree_populate_farnear_lists_safe->module~mod_adjacency_mat module~mod_memory mod_memory module~mod_adjacency_mat->module~mod_memory module~mod_io mod_io module~mod_memory->module~mod_io module~mod_constants mod_constants module~mod_memory->module~mod_constants iso_c_binding iso_c_binding module~mod_memory->iso_c_binding module~mod_io->module~mod_constants module~mod_constants->iso_c_binding

Just for testing, creates far and near list using a double loop algorithm, it is basically just the application of the following definition: 1. Two nodes are near IF they are both leaves and if the distance is below [min_dist_thr] 2. Two nodes are far IF none of their discendent are near 3. Descendent of two far nodes are not present in any list

Now compress in yale sparse format and delete the uncompressed lists

Arguments

Type IntentOptional Attributes Name
type(fmm_tree_type), intent(inout) :: t

Tree data structure to populate

real(kind=rp), intent(in), optional :: min_dist_thr

Minimum threshold for two nodes to be near, every nodes within this threshold are guaranteed to be near


Calls

proc~~tree_populate_farnear_lists_safe~~CallsGraph proc~tree_populate_farnear_lists_safe tree_populate_farnear_lists_safe proc~aggregative_pass aggregative_pass proc~tree_populate_farnear_lists_safe->proc~aggregative_pass proc~compress_list compress_list proc~tree_populate_farnear_lists_safe->proc~compress_list interface~mfree mfree proc~compress_list->interface~mfree interface~mallocate mallocate proc~compress_list->interface~mallocate proc~r_free1 r_free1 interface~mfree->proc~r_free1 proc~i_free2 i_free2 interface~mfree->proc~i_free2 proc~i_free1 i_free1 interface~mfree->proc~i_free1 proc~r_free2 r_free2 interface~mfree->proc~r_free2 proc~r_free3 r_free3 interface~mfree->proc~r_free3 proc~i_free3 i_free3 interface~mfree->proc~i_free3 proc~l_free1 l_free1 interface~mfree->proc~l_free1 proc~l_free2 l_free2 interface~mfree->proc~l_free2 proc~r_alloc3 r_alloc3 interface~mallocate->proc~r_alloc3 proc~i_alloc1 i_alloc1 interface~mallocate->proc~i_alloc1 proc~l_alloc2 l_alloc2 interface~mallocate->proc~l_alloc2 proc~i_alloc3 i_alloc3 interface~mallocate->proc~i_alloc3 proc~r_alloc2 r_alloc2 interface~mallocate->proc~r_alloc2 proc~r_alloc1 r_alloc1 interface~mallocate->proc~r_alloc1 proc~i_alloc2 i_alloc2 interface~mallocate->proc~i_alloc2 proc~l_alloc1 l_alloc1 interface~mallocate->proc~l_alloc1 proc~memory_init memory_init proc~r_alloc3->proc~memory_init proc~chk_alloc chk_alloc proc~r_alloc3->proc~chk_alloc proc~i_alloc1->proc~memory_init proc~i_alloc1->proc~chk_alloc proc~l_alloc2->proc~memory_init proc~l_alloc2->proc~chk_alloc proc~i_alloc3->proc~memory_init proc~i_alloc3->proc~chk_alloc proc~r_alloc2->proc~memory_init proc~r_alloc2->proc~chk_alloc proc~chk_free chk_free proc~r_free1->proc~chk_free proc~i_free2->proc~chk_free proc~i_free1->proc~chk_free proc~r_free2->proc~chk_free proc~r_free3->proc~chk_free proc~i_free3->proc~chk_free proc~l_free1->proc~chk_free proc~l_free2->proc~chk_free proc~r_alloc1->proc~memory_init proc~r_alloc1->proc~chk_alloc proc~i_alloc2->proc~memory_init proc~i_alloc2->proc~chk_alloc proc~l_alloc1->proc~memory_init proc~l_alloc1->proc~chk_alloc proc~fatal_error fatal_error proc~chk_alloc->proc~fatal_error proc~chk_free->proc~fatal_error proc~ommp_message ommp_message proc~fatal_error->proc~ommp_message proc~close_output close_output proc~fatal_error->proc~close_output proc~close_output->proc~ommp_message

Contents