0.6.0
Loading...
Searching...
No Matches
mod_mof_filaments Module Reference

Data Types

type  t_mof_filament_combination
 Structure used to create filaments from the best combination of connected component. More...
 
type  t_mof_filament_list
 Structure used to detect filaments. More...
 

Functions/Subroutines

subroutine mof_initialize_filament_list (filament_list, nb_filament)
 Initialize the filament list.
 
elemental subroutine mof_finalize_filament_list (filament_list)
 Finalize the filament list.
 
subroutine mof_initialize_filament_combination (filament_combination, nb_filament)
 Initialize the filament combination structure.
 
elemental subroutine mof_finalize_filament_combination (filament_combination)
 Finalize the filament combination structure.
 
subroutine mof_find_connected_components (filament_list)
 Find the connected components among the polygon/polyherons.
 
recursive subroutine mof_depth_first_search (filament_list, i)
 Depth-first search algorithm to find the connected components.
 
subroutine mof_find_best_filament_groups (combination)
 Find the best filament group by testing all the possible combinations.
 
recursive subroutine mof_find_best_filament_groups_forward (combination, code, m, n, sigma)
 Ruskey's algorithm forward routine.
 
recursive subroutine mof_find_best_filament_groups_backward (combination, code, m, n, sigma)
 Ruskey's algorithm backward routine.
 
subroutine mof_compute_combination_cost (combination, code)
 Compute the cost of the given combination.
 

Function/Subroutine Documentation

◆ mof_compute_combination_cost()

subroutine mod_mof_filaments::mof_compute_combination_cost ( type(t_mof_filament_combination), intent(inout) combination,
integer, dimension(:), intent(in) code )

Compute the cost of the given combination.

◆ mof_depth_first_search()

recursive subroutine mod_mof_filaments::mof_depth_first_search ( type(t_mof_filament_list), intent(inout) filament_list,
integer, intent(in) i )

Depth-first search algorithm to find the connected components.

◆ mof_finalize_filament_combination()

elemental subroutine mod_mof_filaments::mof_finalize_filament_combination ( type(t_mof_filament_combination), intent(out) filament_combination)

Finalize the filament combination structure.

◆ mof_finalize_filament_list()

elemental subroutine mod_mof_filaments::mof_finalize_filament_list ( type(t_mof_filament_list), intent(inout) filament_list)

Finalize the filament list.

◆ mof_find_best_filament_groups()

subroutine mod_mof_filaments::mof_find_best_filament_groups ( type(t_mof_filament_combination), intent(inout) combination)

Find the best filament group by testing all the possible combinations.

The filament problem consists in finding the best combination of n polygons/polyhedrons in m subsets.

    items:      {1, 2, 3, ... , n}
  subsets:      { S1 } { S2 } ... { Sm }      m ≤ n

The Ruskey's algorithm is used to generate all the combinations of n items in m subsets. The combination that minimize a given cost function is kept.

This routine works with to other routines:

  • mof_find_best_filament_groups_forward
  • mof_find_best_filament_groups_backward

Reference:

Frank Ruskey. Simple combinatorial Gray codes constructed by reversing sublists. International Symposium on Algorithms and Computation. Springer, Berlin, Heidelberg, 1993. pp. 201-208.

◆ mof_find_best_filament_groups_backward()

recursive subroutine mod_mof_filaments::mof_find_best_filament_groups_backward ( type(t_mof_filament_combination), intent(inout) combination,
integer, dimension(:), intent(inout) code,
integer, intent(in) m,
integer, intent(in) n,
integer, intent(in) sigma )

Ruskey's algorithm backward routine.

◆ mof_find_best_filament_groups_forward()

recursive subroutine mod_mof_filaments::mof_find_best_filament_groups_forward ( type(t_mof_filament_combination), intent(inout) combination,
integer, dimension(:), intent(inout) code,
integer, intent(in) m,
integer, intent(in) n,
integer, intent(in) sigma )

Ruskey's algorithm forward routine.

◆ mof_find_connected_components()

subroutine mod_mof_filaments::mof_find_connected_components ( type(t_mof_filament_list), intent(inout) filament_list)

Find the connected components among the polygon/polyherons.

◆ mof_initialize_filament_combination()

subroutine mod_mof_filaments::mof_initialize_filament_combination ( type(t_mof_filament_combination), intent(out) filament_combination,
integer, intent(in) nb_filament )

Initialize the filament combination structure.

◆ mof_initialize_filament_list()

subroutine mod_mof_filaments::mof_initialize_filament_list ( type(t_mof_filament_list), intent(out) filament_list,
integer, intent(in) nb_filament )

Initialize the filament list.