triqs_dft_tools.converters.plovasp.proj_group.ProjectorGroup.get_block_matrix_map
- ProjectorGroup.get_block_matrix_map()[source]
Generates a map from a set of projectors belonging to different shells and ions onto a set of block projector matrices, each of which is orthonormalized.
Returns the map and the maximum orbital dimension of the block projector matrix.
Mapping is defined as a list of ‘block_maps’ corresponding to subsets of projectors to be orthogonalized. Each subset corresponds to a subset of sites and spans all orbital indices. defined by ‘bl_map’ as
- bl_map = [((i1_start, i1_end), (i1_shell, i1_ion)),
((i2_start, i2_end), (i2_shell, i2_ion)), …],
where iX_start, iX_end is the range of indices of the block matrix (in Python convention iX_end = iX_last + 1, with iX_last being the last index of the range), iX_shell and iX_ion the shell and site indices. The length of the range should be consistent with ‘nlm’ dimensions of a corresponding shell, i.e., iX_end - iX_start = nlm[iX_shell].
- Consider particular cases:
Orthogonality is ensured on each site (NORMION = True). For each site ‘ion’ we have the following mapping:
- block_maps = [bl_map[ion] for ion in range(shell.nion)
for shell in shells]
- bl_map = [((i1_start, i1_end), (i1_shell, ion)),
((i2_start, i2_end), (i2_shell, ion)), …],
Orthogonality is ensured on all sites within the group (NORMION = False). The mapping:
block_maps = [bl_map]
- bl_map = [((i1_start, i1_end), (i1_shell, i1_shell.ion1)),
((i1_start, i1_end), (i1_shell, i1_shell.ion2)), … ((i2_start, i2_end), (i2_shell, i2_shell.ion1)), ((i2_start, i2_end), (i2_shell, i2_shell.ion2)), …],