Differences
This shows you the differences between two versions of the page.
documentation:tutorials:model_examples_from_physics:hubbard_model_on_a_dimer [2016/10/07 21:12] – created Maurits W. Haverkort | documentation:tutorials:model_examples_from_physics:hubbard_model_on_a_dimer [2016/10/10 09:41] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | {{indexmenu_n> | ||
+ | ====== Hubbard model on a dimer ====== | ||
+ | ### | ||
+ | This example shows the effect of inter-site correlations in a two site Hubbard model, aka a H$_2$ molecule on the smallest basis possible. The solution of this problem is analytically known. The large $U$ limit is known as the Heither-London approximation. | ||
+ | ### | ||
+ | |||
+ | ### | ||
+ | The input code is: | ||
+ | <code Quanty H2.Quanty> | ||
+ | Verbosity(0) | ||
+ | |||
+ | -- This example calculates the PES and IPES of a H2 molecule in the Hubbard model | ||
+ | -- approximation | ||
+ | |||
+ | -- we have two s-shells one centered around atom A, one around atom B | ||
+ | -- in total there are thus 4 spin-orbitals | ||
+ | |||
+ | NF=4 | ||
+ | NB=0 | ||
+ | |||
+ | IndexADn={0} | ||
+ | IndexAUp={1} | ||
+ | IndexBDn={2} | ||
+ | IndexBUp={3} | ||
+ | |||
+ | -- The Hamiltonian is given by a hopping from site A to B that conserves spin | ||
+ | -- A Coulomb repulsion if the two electrons are on the same site | ||
+ | -- A chemical potential that gives an onsite energy of -U/2 | ||
+ | |||
+ | OppNAdn = NewOperator(" | ||
+ | OppNAup = NewOperator(" | ||
+ | OppNBdn = NewOperator(" | ||
+ | OppNBup = NewOperator(" | ||
+ | |||
+ | OppNA = OppNAup + OppNAdn | ||
+ | OppNB = OppNBup + OppNBdn | ||
+ | |||
+ | Oppt = NewOperator(" | ||
+ | OppU = OppNAup * OppNAdn + OppNBup * OppNBdn | ||
+ | |||
+ | -- PES and IPES are electron annihilation and creation operators | ||
+ | |||
+ | TPes = NewOperator(" | ||
+ | TIPes = NewOperator(" | ||
+ | |||
+ | -- the total number of states is 6. | ||
+ | |||
+ | Npsi=6; | ||
+ | StartRestrictions = {NF, NB, {" | ||
+ | psiList = Eigensystem(Oppt, | ||
+ | |||
+ | -- a loop creates U dependent spectra | ||
+ | |||
+ | for i=0, 20 do | ||
+ | U = 0.5*i | ||
+ | Hamiltonian=Oppt + U * OppU - U/2 * (OppNA+OppNB) | ||
+ | Eigensystem(Hamiltonian, | ||
+ | PESIPES= CreateSpectra(Hamiltonian, | ||
+ | PESIPES.Print({{" | ||
+ | end | ||
+ | |||
+ | gnuplotInput = [[ | ||
+ | set autoscale | ||
+ | set xtic auto | ||
+ | set ytic auto | ||
+ | set style line 1 lt 1 lw 1 lc rgb "# | ||
+ | set style line 2 lt 1 lw 1 lc rgb "# | ||
+ | |||
+ | set xlabel "E (eV)" font " | ||
+ | set ylabel " | ||
+ | |||
+ | set out ' | ||
+ | set size 1.0, 1.0 | ||
+ | set terminal postscript portrait enhanced color " | ||
+ | |||
+ | |||
+ | plot for [i=0:20] ' | ||
+ | for [i=0:20] ' | ||
+ | ]] | ||
+ | |||
+ | -- write the gnuplot script to a file | ||
+ | file = io.open(" | ||
+ | file: | ||
+ | file: | ||
+ | |||
+ | -- call gnuplot to execute the script | ||
+ | os.execute(" | ||
+ | </ | ||
+ | ### | ||
+ | |||
+ | ### | ||
+ | The example produces a picture of the spectral function as output: | ||
+ | |||
+ | {{: | ||
+ | ### | ||
+ | ===== Table of contents ===== | ||
+ | {{indexmenu> |