Calculate total number of fragments for given system size and max level
Computes the sum of binomial coefficients C(n,k) for k=1 to max_level, representing all possible fragments from monomers to max_level-mers. Uses int64 to handle large fragment counts that overflow int32.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=default_int), | intent(in) | :: | n_monomers |
Number of monomers in system |
||
| integer(kind=default_int), | intent(in) | :: | max_level |
Maximum fragment size |
Total fragment count
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=default_int), | private | :: | i |
Loop counter |
pure function get_nfrags(n_monomers, max_level) result(n_expected_fragments) !! Calculate total number of fragments for given system size and max level !! !! Computes the sum of binomial coefficients C(n,k) for k=1 to max_level, !! representing all possible fragments from monomers to max_level-mers. !! Uses int64 to handle large fragment counts that overflow int32. integer(default_int), intent(in) :: n_monomers !! Number of monomers in system integer(default_int), intent(in) :: max_level !! Maximum fragment size integer(int64) :: n_expected_fragments !! Total fragment count integer(default_int) :: i !! Loop counter n_expected_fragments = 0_int64 do i = 1, max_level n_expected_fragments = n_expected_fragments + binomial(n_monomers, i) end do end function get_nfrags