UPI Primer


UPI-9 Package

   The Universal Path Integral (UPI) code is a software package written in Fortran77 to perform Path Integral Monte Carlo simulations for boson and fermion systems. The UPI-9 software suite includes a series of programs to set up the simulation (POTGEN SQUARER,OCSET), a program to test the accuracy of the density matrices (FKPIMC), the computational engine (UPI) that executes the Monte Carlo simulation, and a program (REPORT) to post-process the binary files produced by the computational engine.

   The framework of the UPI-9 package is shown schematically in the diagram UPI.png

   The first step to set-up the simulation is to specify the potential energy functions for the system under consideration. In this project, the Hydrogen-Hydrogen and Hydrogen-Carbon interactions require two separate input files for POTGEN (H2_H2.in, H2_C.in). POTGEN processes the input files and generates the potential and grid values in the .dg file, and in an intermediate .dm file.

   The second step is to compute the two-atoms density matrices for Lennard-Jones, and Silvera-Goldman potentials at different temperatures using SQUARER. SQUARER accepts the output of POTGEN(.dm file) and overwrites it generating the two-atoms density matrices at different temperatures (H2_H2.dm, H2_C.dm). The name SQUARER comes from the algorithm to compute the exact two-atoms density matrix. It works by constructing a high temperature semi-classical approximation and then numerically squaring this approximation to get down to low temperature[7]. In fact, SQUARER calculates the two-atoms density matrix and its derivatives, and it tabulates the values in the .dm file. SQUARER uses a partial wave decomposition to represent the angular variables, but for output it converts to a representation in distances only. It is important to test the convergence and accuracy of the actions calculated by SQUARER, that depends mostly on how fine the grid is and accurate the partial wave expansion is. A good way to test the output of SQUARER is to use the program FKPIMC. FKPIMC reads in the output of POTGEN and computes the action at specific points using the integration of Feynman-Kacs formula[7].

   The goal of OCSET is to prepare the input file (H2_C.sy) for the computing engine UPI. OCSET generates the input file with number, mass, spin of the particles, and it sets the number of Monte Carlo steps and kind of moves. In addition, it writes a file with the initial position of particles on a lattice. Because OCSET can only set-up a simulation with one species and provides initial positions of the particles only on a lattice, OCSET has not been used in this project. It has been replaced with nanotube.m that generates the initial conditions for Carbon nano-tube atoms and Hydrogen molecules.

   Once the density matrices and the initial condition for the particles are ready, we can finally start the Path Integral Monte Carlo simulation with UPI. UPI is the computational engine that executes the Path Integral Monte Carlo using multi level sampling with bisection[7]. It has as input three files the .sy file for the information about particles and Monte Carlo moves, the .dm files with the two density matrices at different temperatures for two potentials, and the initial condition files for Carbons in the nano-tube(H2_C.C.ic) and Hydrogen (H2_C.H2.in). UPI outputs the results regarding the pair correlation functions(.grr file), and structure function of the system, and acceptance probability for different moves as text files (.acc file). In addition, UPI outputs a series of binary files that can be opened by post-processing software, such as REPORT that opens the binary file(.bsc file) and writes a report with the average of energies and other scalar properties.


Modified UPI codes

   The POTGEN code was modified to fix a bug in the computation of the Lennard-Jones Potential. The cut-off radius was computed using meters instead of Å.

potgen.f

   The following UPI source codes were modified by Jaron to output useful information for plotting and analysis.

All modifications begins with:
      ! janor add
And ends with:
      ! end janor add

aapimc.f
incom.f
omove.F
upi.cm

   The output was controlled with a new input file: write_configs.input


Jaron Krogel, Stefano Markidis, and Henry Wu