schrodinger.application.jaguar.nmr_basis module¶
- exception schrodinger.application.jaguar.nmr_basis.BasisSizeException¶
Bases:
Exception
- class schrodinger.application.jaguar.nmr_basis.Basis(conmatrix: ndarray[Any, dtype[float64]], mults: ndarray[Any, dtype[int]], nspins: int, max_subgraph_size: int, sym_groups: list[str] | None = None, sym_spins: list[list[int]] | None = None, use_symmetry: bool = False, use_Sz_conservation_filter: bool = True)¶
Bases:
objectBasis class for spin simulation
- Parameters:
conmatrix – Connectivity matrix
mults – Spins multiplicity
nspins – Number of spins
max_subgraph_size – Maximum allowed subgraph size
sym_groups – List of symmetry groups
sym_spins – List of spins belonging to each symmetry group
use_symmetry – Whether to use symmetry
use_Sz_conservation_filter – Whether to use Sz conservation filter
- __init__(conmatrix: ndarray[Any, dtype[float64]], mults: ndarray[Any, dtype[int]], nspins: int, max_subgraph_size: int, sym_groups: list[str] | None = None, sym_spins: list[list[int]] | None = None, use_symmetry: bool = False, use_Sz_conservation_filter: bool = True)¶
- build_irreps(nspins: int)¶
Destructive workflow for reducing the basis by removing states identical by permutational symmetry. Then generate the respective projectors for later manipulation.
This function builds and populates self.irrep_projector and self.irrep_dimension.
NOTE: This algorithm works by building every permutation then screening duplicate states. This is both wasteful in runtime and its memory use explodes with system size and symmetry order. As such, we cannot use it in production and it remains here for reference.
If required, we should implement a constructive algorithm instead that builds the symmetry-unique states directly, avoiding the wasteful create-and-filter.
- Parameters:
nspins – Number of spins in the system.
- static remove_subset_clusters(mat: csr_array) csr_array¶
Remove clusters that are subsets of other clusters.
If a cluster is purely a subset of another cluster, it does not add any value to the simulation.
- Parameters:
mat – matrix with rows that may be subsets
- Returns:
matrix with subset rows removed
- static lin2lm(indices: list[int] | numpy.ndarray[Any, numpy.dtype[int]])¶
Converts linear indexing of spin states into L,M indexing. In the linear indexing convention, spin states are listed in the order of increasing L rank, and, within ranks, in the order of decreasing M projection:
I=0 -> (L=0,M=0) I=1 -> (L=1,M=1) I=2 -> (L=1,M=0) …
- Parameters:
indices – Linear indices of spin states
- Returns:
[L,M] where L is the ranks of the spin states and M the projections of the spin states
- apply_Sz_conservation_filter(basis: ndarray[Any, dtype[int]]) ndarray[Any, dtype[int]]¶
Eliminate states not consistent with M=+1 from the basis
- Param:
NDArray with basis states
- Returns:
NDArray with basis states with M=+1