(redirected from NCCU.SpinChargeSeparation)
In this tutorial, we will perform simuations of some particle dynamics in the Hubbard model.
Obtaining the groundstate
Firstly, we need a groundstate. Use the program hubbard-u1u1
to construct a lattice file for a 40-site lattice:
hubbard-u1u1 40 hubbardlattice
Now we construct an initial state for the DMRG. Choose a particle number that is close to half-filling, for example 36 particles, spin 0.
mp-random -l hubbardlattice -q 36,0 -o psi
and run the DMRG program until the groundstate is converged, with say m=200
states kept, using the Hubbard model at fairly strong coupling, say U=5. You might get faster convergence if you start with a smaller number of states kept, and gradually increase throughout the calculation.
mp-dmrg -w psi -H hubbardlattice:"H_t + 5*H_U" -m 50
Check that the variance and truncation error are both small before continuing.
Inserting a particle
Now we want to add one additional particle to the wavefunction, to simulate injecting a particle at the edge of the chain. To to this, we use the tool mp-apply
, which acts on the wavefunction with some operator. Lets add a spin up particle, which will be represented by the operator CHup(1)
.
mp-apply hubbardlattice:"CHup(1)" psi excitedpsi
Use mp-info
to verify that excitedpsi
is a wavefunction with 37 particles and spin +1/2.
Calculating the evolution
The main tool for calculating time evolution is mp-evolve-krylov
. This algorithm can use a much larger timestep than typical 2nd or 4th order Suzuki-Trotter algorithms. A timestep of t=0.1 should be no problem for this model. By default, the mp-evolve-krylov program will save the wavefunction every timestep with a different filename, by adding the timestep to the end of the filename. This behaviour can be controlled by the -s
option.
By default, mp-evolve-krylov
doesn't normalize the wavefunctions before saving them. This is sometimes useful, because the norm of the wavefunction then determines the accumulated truncation error of the time evolution. But for our purposes, we want them normalized so add the --normalize
option. (If you forget, you can normalize the wavefunctions later with the mp-normalize
command.)
Lets choose a maximum of m=200 states, and calculate a few timesteps of evolution/
mp-evolve-krylov -H hubbardlattice:"H_t + 5*H_U" -m 200 -t 0.1 -n 20 \
--normalize --verbose -w excitedpsi -o evolved
This will take some time to run. You should end up with a series of wavefunctions evolved.t0.1
up to evolved.t2
, represnting times from t=0.1, 0.2, up to t=2. Plot the local density of charge and spin (using mp-expectation or mp-localexpectation) and see if you can determine the velocities of the spin and charge excitations.
For example, to obtain the local density at all sites from 1 to 40, of the wavefunction evolved.t0.1, try
mp-localexpectation hubbardlattice evolved.t0.1 N 1 40