Recent Changes - Search:




The mp-evolve-bonds program evolves a wavefunction by applying bond evolution operators. This produces the TEBD/tDMRG algorithm, and variants.

Matrix Product Toolkit version HEAD- (subversion tree rev 855M)
Compiled on Feb 25 2008 at 17:11:44
usage: mp-evolve-bonds [options] timestep1 timestep2 ....
Allowed options:
  --help                    show this help message
  -H [ --Hamiltonian ] arg  operator to use for the Hamiltonian, not an expression! 
                            Valid choices: itf, xyz, xxz-u1, xxx-su2
  -w [ --wavefunction ] arg wavefunction to apply DMRG (required)
  -m [ --max-states ] arg   Maximum number of states to keep [default 100000]
  --min-states arg          Minimum number of states to keep [default 1]
  -r [ --trunc ] arg        Truncation error cutoff [default 0]
  -d [ --eigen-cutoff ] arg Cutoff threshold for density matrix eigenvalues 
                            (alternative to truncation error) [default -1]
  --relative                truncate relative weights, rather than absolute 
                            (for imaginary time evolution you surely want this)
  -a [ --all ]              evolve all bonds at once [PRA 60, 1956 (1999)]
  --spin arg                spin (for xxx,xxz,xyz hamiltonians)
  --jx arg                  J_x (for xyz hamiltonian) [default 1.0]
  --jy arg                  J_y (for xyz hamiltonian) [default 1.0]
  --jz arg                  J_z (for xxz,xyz hamiltonians) [default 1.0]
  --lambda arg              transverse field strength (for itf hamiltonian) [default 1.0])

Unfortunately, the Hamiltonian is specified in a different way to all other tools. There is not yet a way to automatically decompose a Hamiltonian MPO into its bond terms, so instead there are a few Hamiltonian's hard-coded into the program itself. It would be easy to add some more, they are defined in mp/mp-evolve-bonds.cpp.

This program does an arbitrary number of sweeps, evolving a subset of bonds by the given timestep on each sweep. The total number of sweeps must be even (if you need an odd number of sweeps, add one more with a timestep of 0). The timesteps can be real or complex. Complex timesteps correspond to imaginary time evolution.

By default, mp-evolve-bonds applies all odd bonds on a right moving sweep (ie, starting from bond 1 at the left-hand edge) and all even bonds on a left-moving sweep. This gives a Suzuki-Trotter decomposition, and the order of the algorithm can be specified by choosing a sequence of timesteps.

The usual options for specifying the truncations all work. By default the truncations are applied absolute, ie. the density matrix weight is not normalized to 1 before doing the truncation, so if using the --trunc or --eigen-cutoff options the norm of the wavefunction is important.

There is an option --relative, which causes the truncations to be done on a normalized density matrix. For imaginary time evolution with --trunc or --eigen-cutoff, this option will certainly be need. Note however that the wavefunction itself is not normalized by this program so for imaginary time evolution this will need to be done separately to avoid overflow.

The --all option causes all bond operators to be applied on every sweep, but alternating from left-to-right (forwards) and right-to-left (reverse). This gives a variation on the Suzuki-Trotter decomposition, described in A.T. Sornborger and E.D. Stewart, Phys. Rev. A 60, 1956 (1999).


To evolve a wavefunction psi one timestep of {$\Delta t = 0.01$} using a second-order Suzuki-Trotter decomposition with an {$SU(2)$} wavefunction with XXX Hamiltonian, and 100 states kept, use

mp-evolve-bonds -w psi -H xxx-su2 -m 100 0.005 0.01 0.005 0
Edit - History - Print - Recent Changes - Search
Page last modified on December 16, 2010, at 05:54 AM