ALPS 2 Tutorials:DWA-01 Revisiting MC05

From ALPS
Revision as of 14:03, 13 September 2013 by Tamama (talk | contribs) (Preparing and running the simulation using Python)

Jump to: navigation, search

Quantum phase transitions in the Bose-Hubbard model

As an example of the dwa QMC code we will study a quantum phase transition in the Bose-Hubbard mode.

Superfluid density in the Bose Hubbard model

Preparing and running the simulation from the command line

The parameter file parm1a sets up Monte Carlo simulations of the quantum Bose Hubbard model on a square lattice with 4x4 sites for a couple of hopping parameters (t=0.01, 0.02, ..., 0.1) using the dwa code.

 LATTICE="square lattice";
 L=4;
 
 MODEL="boson Hubbard";
 Nmax = 2;
 U    = 1.0;
 mu   = 0.5;
 
 T    = 0.1;
 
 SWEEPS=5000000;
 THERMALIZATION=100000;
 SKIP=5000;
 
 MEASURE[Winding Number]=1
 
 { t=0.01; }
 { t=0.02; }
 { t=0.03; }
 { t=0.04; }
 { t=0.05; }
 { t=0.06; }
 { t=0.07; }
 { t=0.08; }
 { t=0.09; }
 { t=0.1;  }

Using the standard sequence of commands you can run the simulation using the quantum dwa code

parameter2xml parm1a
dwa --Tmin 5 --write-xml parm1a.in.xml

Preparing and running the simulation using Python

To set up and run the simulation in Python we use the script tutorial1a.py. The first parts of this script imports the required modules and then prepares the input files as a list of Python dictionaries:

import pyalps

parms = []
for t in [0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1]:
   parms.append(
       { 
         'LATTICE'                 : "square lattice", 
         'MODEL'                   : "boson Hubbard",
         'T'                       : 0.1,
         'L'                       : 4 ,
         't'                       : t ,
         'mu'                      : 0.5,
         'U'                       : 1.0 ,
         'Nmax'                    : 2 ,
         'THERMALIZATION'          : 100000,
         'SWEEPS'                  : 5000000,
         'SKIP'                    : 5000,
         'MEASURE[Winding Number]' : 1
       }
   )

We next convert this into a job file in XML format and run the worm simulation:

input_file = pyalps.writeInputFiles('parm1a', parms)
res = pyalps.runApplication('dwa', input_file, Tmin=5, writexml=True)

We now have the same output files as in the command line version.

Evaluating the simulation and preparing plots using Python

To load the results and prepare plots we load the results from the output files and collect the magntization density as a function of magnetic field from all output files starting with parm1a. The script is again in tutorial1a.py

import matplotlib.pyplot as plt
import pyalps.pyplot as aplt
data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm1a'),'Stiffness')
magnetization = pyalps.collectXY(data,x='t',y='Stiffness')


To make plots we call the pyalps.plot.plot and then set some nice labels, a title, and a range of y-values:

plt.figure()
aplt.plot(rhos)
plt.xlabel('Hopping $t/U$')
plt.ylabel('Superfluid density $\\rho _s$')
plt.show()