Source code for kliff.transforms.configuration_transforms.utils

[docs] def get_bs_size(twojmax: int, diagonal: int) -> int: """ Return the size of bispectrum descriptor. Args: twojmax: 2x Maximum angular momentum for bispectrum. diagonal: 0, 1, 2, or 3. 0: full, 1: lower triangle, 2: diagonal, 3: upper triangle. """ N = 0 for j1 in range(0, twojmax + 1): if diagonal == 2: N += 1 elif diagonal == 1: for j in range(0, min(twojmax, 2 * j1) + 1, 2): N += 1 elif diagonal == 0: for j2 in range(0, j1 + 1): for j in range(j1 - j2, min(twojmax, j1 + j2) + 1, 2): N += 1 elif diagonal == 3: for j2 in range(0, j1 + 1): for j in range(j1 - j2, min(twojmax, j1 + j2) + 1, 2): if j >= j1: N += 1 return N
[docs] def get_soap_size(nmax: int, lmax: int, n_species: int) -> int: """ Return the size of SOAP descriptor. Args: nmax: Maximum radial quantum number. lmax: Maximum angular momentum. n_species: Number of species. """ return int(((n_species + 1) * n_species) / 2 * (nmax * (nmax + 1)) * (lmax + 1) / 2)