netket.symmetry.TranslationRepresentation#
- class netket.symmetry.TranslationRepresentation[source]#
Bases:
LabeledRepresentationA
Representationfor the translation group of aLattice, with Bloch-momentum indexing.Extends
LabeledRepresentationwith:k_points()โ(n_irreps, n_active_axes)array of Bloch momenta.irrep_labelsโ"k=vฯ"(1D) or"k=(v0ฯ, v1ฯ)"(nD) labels.projector()accepting ak=argument in addition tolabel=and the integercharacter_index.
The projection operator for a given k is built directly from
momentum_irrep(), without consulting the character table.- K-vector convention
kis the Bloch momentum:k=ฯis the zone boundary,k=0is ฮ. Valid values are \(k = 2\pi m/L\) for \(m = 0, 1, \ldots, L-1\). Values lie in the half-open interval(-\pi, \pi].
Examples
lattice = nk.graph.Square(4, pbc=True) hi = nk.hilbert.Spin(0.5, lattice.n_nodes) rep = nk.symmetry.canonical_representation(hi, lattice.translation_group()) print(rep.irrep_labels) # ['k=(0, 0)', 'k=(0.5ฯ, 0)', 'k=(0, 0.5ฯ)', ...] proj_gamma = rep.projector(k=(0.0, 0.0)) proj_x = rep.projector(k=(np.pi / 2, 0.0)) proj_label = rep.projector(label="k=(0.5ฯ, 0)") proj_index = rep.projector(0) # backward compat
- Inheritance

- __init__(group, representation_dict)[source]#
- Parameters:
group โ A
TranslationGroup.representation_dict โ Mapping from group elements to operators.
- Attributes
- active_axes#
Indices of lattice axes with more than one translation step.
- character#
The vector storing the character of the representation.
Corresponds to
[op.trace() for (_, op) in self].Requires that each operator of the representation implements the trace method.
- irrep_labels#
"k=vฯ"(1D) or"k=(v0ฯ, v1ฯ, ...)"(nD) labels for every irrep.Zero components are formatted as
"0"(no ฯ suffix).
- k_points#
Bloch momenta for all irreps.
Returns an array of shape
(n_irreps, n_active_axes).Values are consistent with
momentum_irrep(): the m-th irrep corresponds to k such thatto_reciprocal_lattice(k) == m(integer).For a strided group (
strides > 1), the BZ boundary is atฯ / stride, not atฯ; this method accounts for that via the actual lattice dimensions.
- representation_dict#
Dictionary associating every group element to a representation
Equivalent to {el: rep for (el, rep) in (self.group.elems, self.operators)}
- Methods
- coset_filter(subgroup)[source]#
Build the coset Fourier filter for this group
Gmodulo a subgroupH.Returns a
TranslationCosetFilterstoring thelen(G)/len(H)coset-representative operators.The filter satisfies:
F_C(k) @ sub_rep.projector(k) == full_rep.projector(k)
for any full-lattice momentum k.
- Parameters:
subgroup (
TranslationRepresentation) โTranslationRepresentationfor H <= G. Must have strides that are component-wise multiples of selfโs strides.- Return type:
- Returns:
TranslationCosetFilterwithlen(G)/len(H)coset operators.
Example โ single level:
lattice = nk.graph.Chain(8, pbc=True) hi = nk.hilbert.Spin(0.5, 8) T_full = nk.symmetry.canonical_representation(hi, lattice.translation_group()) T_half = nk.symmetry.canonical_representation(hi, lattice.translation_group(strides=2)) C = T_full.coset_filter(T_half) # C has 2 coset representatives: {T^0, T^1} # 2-term refinement filter (apply on top of a T_half-symmetrised state): F = C.projector_refinement(k=np.pi/2) # F_C @ T_half.projector(k=np.pi/2) == T_full.projector(k=np.pi/2)
- irrep_subspace_dims()[source]#
Return the dimension of the subspace associated to each irreducible representation.
Requires that each operator of the representation implements the trace method.
- Return type:
- project(state, character_index=None, *, atol=1e-15, **kwargs)[source]#
Return the state projected onto the subspace associated to the irreducible representation specified by character_index.
Additional keyword arguments are forwarded to
projector(), so subclasses that acceptlabel=,k=, etc. can be used here too.
- projector(character_index=None, *, k=None, label=None, atol=1e-15)[source]#
Build the projection operator onto a momentum sector.
Exactly one of
character_index,k, orlabelmust be provided.When
korlabelis given the projector is built directly frommomentum_irrep(), bypassing the character table entirely. When onlycharacter_indexis given it falls back to the character-table path of the base class.- Parameters:
character_index โ Integer index into the character table (0-based). Provided for backward compatibility with
Representation.k โ Bloch momentum as a scalar (1D) or sequence (nD), one component per active translation axis.
k=0is the ฮ point,k=ฯis the zone boundary. Valid values are \(k = 2\pi m / L\) for integer \(m\).label โ Irrep label string from
irrep_labels, e.g."k=0.5ฯ"(1D) or"k=(0.5ฯ, 0)"(2D).atol โ Absolute tolerance for dropping near-zero projector terms.
- Return type:
- Returns:
A
SumOperatorrepresenting the projection operator \(P_k = \frac{1}{|G|} \sum_g \chi_k(g)^* \, T_g\) onto the momentum-ksector.- Raises:
TypeError โ If not exactly one of the three selector arguments is given.
InvalidWaveVectorError โ If
kis not a valid Brillouin-zone momentum for this lattice.ValueError โ If
labelis not inirrep_labels.
- symmetry_adapted_basis()[source]#
Return a tuple (mat, irrep_dims), where mat is the change of basis matrix associated to a symmetry adapted basis, and irrep_dims is an array giving the dimension of the subspace associated to each irreducible representation.
The basis vectors of mat are ordered by the index of their irreducible representation.