ChargeInfo
full name: tenpy.linalg.charges.ChargeInfo
parent module:
tenpy.linalg.chargestype: class
Inheritance Diagram

Methods
|
|
|
Create a |
|
Change the qmod of a given charge. |
|
Check, if charges has all entries as expected from self.mod. |
|
Remove a charge from a |
|
Load instance from a HDF5 file. |
|
Take charges modulo self.mod. |
|
Export self into a HDF5 file. |
|
Spatial translation acting on charges. |
|
Like |
Sanity check, raises ValueErrors, if something is wrong. |
Class Attributes and Properties
Modulo how much each of the charges is taken. |
|
The number of charges. |
|
|
- class tenpy.linalg.charges.ChargeInfo(mod=[], names=None)[source]
Bases:
objectMeta-data about the charge of a tensor.
Saves info about the nature of the charge of a tensor. Provides
make_valid()for taking modulo m.(This class is implemented in
tenpy.linalg.chargesbut also imported intenpy.linalg.np_conservedfor convenience.)The base class
ChargeInfoassumes that the local conserved charge (the discrete version of a charge density) is unchanged by spatial translations.- Parameters:
- _mask
mask
(mod == 1), to speed up make_valid in pure python.- Type:
1D array bool
- _mod_masked
Equivalent to
self.mod[self._mask]- Type:
1D array QTYPE
Notes
Instances of this class can (should) be shared between different LegCharge and Array’s.
See also
- save_hdf5(hdf5_saver, h5gr, subpath)[source]
Export self into a HDF5 file.
This method saves all the data it needs to reconstruct self with
from_hdf5().It stores the
namesunder the path"names", andmodas dataset"U1_ZN".
- classmethod from_hdf5(hdf5_loader, h5gr, subpath)[source]
Load instance from a HDF5 file.
This method reconstructs a class instance from the data saved with
save_hdf5().The
"U1_ZN"dataset is mandatory,'names'are optional.- Parameters:
hdf5_loader (
Hdf5Loader) – Instance of the loading engine.h5gr (
Group) – HDF5 group which is represent the object to be constructed.subpath (str) – The name of h5gr with a
'/'in the end.
- Returns:
obj – Newly generated class instance containing the required data.
- Return type:
cls
- classmethod add(chinfos)[source]
Create a
ChargeInfocombining multiple charges.- Parameters:
chinfos (iterable of
ChargeInfo) – ChargeInfo instances to be combined into a single one (in the given order).- Returns:
chinfo – ChargeInfo combining all the given charges.
- Return type:
- classmethod drop(chinfo, charge=None)[source]
Remove a charge from a
ChargeInfo.- Parameters:
chinfo (
ChargeInfo) – The ChargeInfo from where to drop/remove a charge.charge (int | str) – Number or name of the charge (within chinfo) which is to be dropped.
Nonemeans dropping all charges.
- Returns:
chinfo – ChargeInfo where the specified charge is dropped.
- Return type:
- classmethod change(chinfo, charge, new_qmod, new_name='')[source]
Change the qmod of a given charge.
- Parameters:
chinfo (
ChargeInfo) – The ChargeInfo for which qmod of charge should be changed.new_qmod (int) – The new qmod to be set.
new_name (str) – The new name of the charge.
- Returns:
chinfo – ChargeInfo where qmod of the specified charge was changed.
- Return type:
- property qnumber
The number of charges.
- property mod
Modulo how much each of the charges is taken.
Entries are 1 for a \(U(1)\) charge, and N for a \(Z_N\) symmetry.
- make_valid(charges=None)[source]
Take charges modulo self.mod.
- Parameters:
charges (array_like or None) – 1D or 2D array of charges, last dimension self.qnumber None defaults to trivial charges
np.zeros(qnumber, dtype=QTYPE).- Returns:
A copy of charges taken modulo mod, but with
x % 1 := x- Return type:
- check_valid(charges)[source]
Check, if charges has all entries as expected from self.mod.
- Parameters:
charges (2D ndarray QTYPE_t) – Charge values to be checked.
- Returns:
res – True, if all 0 <= charges <= self.mod (wherever self.mod != 1)
- Return type:
- shift_charges(charges, dx)[source]
Spatial translation acting on charges.
Some conserved charges, such as e.g. an electric dipole moment, transform non-trivially under spatial translations. This method defines how the charges transform. See the notes on Dipole Conservation. The base class
ChargeInfoonly implements a trivial version, that does not change the charges.As positions are mapped
pos -> pos + dx, the charges are mapped:charges -> shift_charges(charges, dx)
- Parameters:
charges (2D ndarray of dtype QTYPE) – The charges to map.
dx ((dim + 1)D ndarray) – The difference of lattice indices, i.e.
dx == lat_idx_before - lat_idx_after == [dx_0, ..., dx_{D-1}, du]. Note that these are integer values in units of the lattice vectors.
- Returns:
charges – The mapped charges. Note that
- Return type:
2D ndarray of dtype QTYPE
- shift_charges_horizontal(charges, dx_0)[source]
Like
shift_charges(), but restricted to the first dimension.The base class
ChargeInfoonly implements a trivial version, that does not change the charges.- Parameters:
charges (2D ndarray of dtype QTYPE) – The charges to map.
dx_0 (float) – Number of lattice indices of the translation. Horizontal shift is a general shift by
dx=[dx_0] + [0] * dim.