Provides combinatorial functions and algorithms for generating molecular fragments, managing fragment lists, and performing many-body expansion calculations.
This module re-exports functionality from specialized modules: - mqc_combinatorics: Pure combinatorial mathematics - mqc_fragment_lookup: Hash-based fragment index lookup - mqc_gmbe_utils: GMBE intersection and PIE enumeration
Check if a fragment should be screened out based on distance cutoffs. Returns true if the fragment itself OR any of its k-subsets (k >= 2) exceeds the corresponding k-mer cutoff. This ensures MBE subset consistency.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | fragment(:) | |||
| integer, | intent(in) | :: | n | |||
| type(system_geometry_t), | intent(in) | :: | sys_geom | |||
| type(driver_config_t), | intent(in) | :: | driver_config |
Apply distance-based screening to filter out fragments that exceed cutoff distances Modifies polymers array in-place and updates total_fragments count
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(inout) | :: | polymers(:,:) | |||
| integer(kind=int64), | intent(inout) | :: | total_fragments | |||
| type(system_geometry_t), | intent(in) | :: | sys_geom | |||
| type(driver_config_t), | intent(in) | :: | driver_config | |||
| integer, | intent(in) | :: | max_level |
Sort fragments by size (largest first) for better load balancing Uses in-place sorting to reorder the polymers array Larger fragments (e.g., tetramers) are computed before smaller ones (e.g., dimers)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(inout) | :: | polymers(:,:) | |||
| integer(kind=int64), | intent(in) | :: | total_fragments | |||
| integer, | intent(in) | :: | max_level |