tJDistributed
A block in a \(t-J\) type Hilbert space, i.e. fermions with \(\uparrow, \downarrow\) spin excluding doubly occupied sites with distributed computing capabilities.
Sources: tj_distributed.hpp · tj_distributed.cpp
Constructors
| Name | Description | Default |
|---|---|---|
| nsites | number of sites (integer) | |
| nup | number of "up" electrons (integer) | |
| ndn | number of "dn" electrons (integer) |
Local configurations and operators
A tJDistributed block describes the same local Hilbert space as the shared-memory tJ block, only the basis states are distributed across MPI processes. The local configuration encoding (0 = empty, 1 = ↑, 2 = ↓) is therefore identical to the tJ block.
Unlike the shared-memory block, the distributed block only supports the operators that have a dedicated distributed kernel. These are:
Cdagup, Cup, Cdagdn, Cdn, Hopup, Hopdn, HopupAsym, HopdnAsym, Nup, Ndn, NtotNtot, SzSz, tJSzSz, Exchange, ExchangeAsym, and Id.
Their definitions are given in the tJ operators table.
Iteration
An tJDistributed block can be iterated over, where at each iteration a ProductState representing the corresponding basis state is returned.
Methods
index
Returns the index of a given ProductState in the basis of the tJDistributed block.
nsites
Returns the number of sites of the block.
size
Returns the size of the block on a local process.
dim
Returns the dimension of the block, i.e. the sum of all sizes across all processes.
isreal
Returns whether the block can be used with real arithmetic. Complex arithmetic is needed when a Representation is genuinely complex.