Difference between revisions of "ALPS 2 Tutorials:DWA-02 Density Profile"

From ALPS
Jump to: navigation, search
(Preparing and running the simulation from Python)
(Preparing and running the simulation from Python)
Line 148: Line 148:
 
     'T'  : 1. ,
 
     'T'  : 1. ,
 
   
 
   
     'THERMALIZATION' : 1500000 ,
+
     'THERMALIZATION' : 0 ,
 
     'SWEEPS'        : 3000000 ,
 
     'SWEEPS'        : 3000000 ,
 
     'SKIP'          : 1000 ,  
 
     'SKIP'          : 1000 ,  

Revision as of 21:26, 17 September 2013

Density profile

As a second example of the dwa QMC code, we will study the density profile of an optical lattice in an harmonic trap.

Column integrated density

In this subsection, we want to mimick the experimental setup.

Preparing and running the simulation from the command line

The parameter file parm2a sets up Monte Carlo simulation of a 1203 optical lattice trap that mimicks the experiment:

LATTICE="inhomogeneous simple cubic lattice"
L=120

MODEL='boson Hubbard"
Nmax=20

t=1.
U=8.11
mu="4.05 - (0.0073752*(x-(L-1)/2.)*(x-(L-1)/2.) + 0.0036849*(y-(L-1)/2.)*(y-(L-1)/2.) + 0.0039068155*(z-(L-1)/2.)*(z-(L-1)/2.))"
 
THERMALIZATION=1500
SWEEPS=7000
SKIP=50
 
MEASURE[Local Density]=1

{ T=1. }

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

parameter2xml parm2a
dwa parm2a.in.xml

(This simulation roughly takes 3 hours.)

Preparing and running the simulation from Python

To set up and run the simulation in Python we use the script tutorial2a.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 = [
  {
    'LATTICE' : 'inhomogeneous simple cubic lattice' ,
    'L'       : 120 ,

    'MODEL'   : 'boson Hubbard' ,
    'Nmax'    : 20 ,

    't'  : 1. ,
    'U'  : 8.11 ,
    'mu' : '4.05 - (0.0073752*(x-(L-1)/2.)*(x-(L-1)/2.) + 0.0036849*(y-(L-1)/2.)*(y-(L-1)/2.) + 0.0039068155*(z-(L-1)/2.)*(z-(L-1)/2.))' ,

    'T'  : 1. ,

    'THERMALIZATION' : 1500 ,
    'SWEEPS'         : 7000 ,
    'SKIP'           : 50 , 

    'MEASURE[Local Density]': 1
  }
]

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

input_file = pyalps.writeInputFiles('parm2a', parms)
res = pyalps.runApplication('dwa', input_file)

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

(This simulation roughly takes roughly 3 hours.)

Evaluating the simulation and preparing plots using Python

To load the results and prepare the plot for density profile we load the results from the output files from all output files starting with parm2a. The script is again in tutorial2a.py

import pyalps
data     = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm2a'), 'Local Density');

To visualize the column integrated density:

import pyalps.plot as aplt;
aplt.plot3D(data, centeredAtOrigin=True)

and the cross-section density at the center:

import pyalps.plot as aplt;
aplt.plot3D(data, centeredAtOrigin=True, layer="center")

However, with only 100 measurements, we expect that the cross-section density to be noisy. This can be improved upon having more measurements.

Setting up and running the simulation in Vistrails

To run the simulation in Vistrails open the file dwa-02-density-profile.vt and look at the workflow labeled "Column integrated density". Click on "Execute" to prepare the input file, run the simulation and create the output figure.

Cross section density

We want to observe a Mott plateau.

Preparing and running the simulation from the command line

The parameter file parm2a sets up Monte Carlo simulation of a 1203 optical lattice trap that mimicks the Bloch experiment:

LATTICE="inhomogeneous simple cubic lattice"
L=120

MODEL='boson Hubbard"
Nmax=20

t=1.
U=8.11
mu="4.05 - (0.0073752*(x-(L-1)/2.)*(x-(L-1)/2.) + 0.0036849*(y-(L-1)/2.)*(y-(L-1)/2.) + 0.0039068155*(z-(L-1)/2.)*(z-(L-1)/2.))"
 
THERMALIZATION=1500
SWEEPS=100000
SKIP=50
 
MEASURE[Local Density]=1

{ T=1. }

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

parameter2xml parm2a
dwa parm2a.in.xml


Preparing and running the simulation from Python

To set up and run the simulation in Python we use the script tutorial2b.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 = [
  {
    'LATTICE' : 'inhomogeneous simple cubic lattice' ,
    'L'       : 80 ,

    'MODEL'   : 'boson Hubbard' ,
    'Nmax'    : 20 ,

    't'  : 1. ,
    'U'  : 60. ,
    'mu' : '74. - (0.09416*(x-(L-1)/2.)*(x-(L-1)/2.) + 0.12955*(y-(L-1)/2.)*(y-(L-1)/2.) + 0.11496*(z-(L-1)/2.)*(z-(L-1)/2.))' ,

    'T'  : 1. ,

    'THERMALIZATION' : 0 ,
    'SWEEPS'         : 3000000 ,
    'SKIP'           : 1000 , 

    'MEASURE[Local Density]': 1
  }
]

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

input_file = pyalps.writeInputFiles('parm2b', parms)
res = pyalps.runApplication('dwa', input_file)

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 the plot for density profile we load the results from the output files from all output files starting with parm2b. The script is again in tutorial2b.py

import pyalps
data     = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm2b'), 'Local Density');

To visualize the column integrated density:

import pyalps.plot as aplt;
aplt.plot3D(data, centeredAtOrigin=True)

and the cross-section density at the center:

import pyalps.plot as aplt;
aplt.plot3D(data, centeredAtOrigin=True, layer="center")

However, with only 100 measurements, we expect that the cross-section density to be noisy. This can be improved upon having more measurements.

Setting up and running the simulation in Vistrails

To run the simulation in Vistrails open the file dwa-02-density-profile.vt and look at the workflow labeled "Column integrated density". Click on "Execute" to prepare the input file, run the simulation and create the output figure.