Crystal to QWalk

Keyword: crystal2qmc

Description: Basic usage:

crystal2qmc -o (outputroot)  (crystal output file)

Note that the current version of crystal2qmc is not tested with versions previous to Crystal2009. It may or may not work properly. There are two main paths to getting CRYSTAL to output the orbitals for crystal2qmc to read.

First option, output by the main crystal program.


in the third section. CRYSTAL2009 has a bug when run in parallel, in which the eigenvec printout is sometimes corrupted, so this option may not work.

Second option, output the orbitals using properties. 1. Make sure that you did not run CRYSTAL with the PRINTOUT section above. 2. Run properties with the following input

4 4 
1 1
67 999

Use the Python script utils/ as follows.

python crystal.d12.o properties.d3.o patched.o

where crystal.d12.o is the output of the crystal run, properties.d3.o is the output of the properties run, and patched.o will be the file you use with crystal2qmc.

Required keywords


Optional keywords

Keyword Type Default Description
-c flag False Read in the complex k-point from CRYSTAL.
-o filename Name of CRYSTAL file QWalk filenames will start with the value of this option
-fort10file filename none (depreciated) Read from the output created by the readcrys10.f utility and match the orbitals to the one in the crystal output file. These are more accurate than the ones in the text output file. To use the fort10file option with Crystal98 or Crystal2003, one must use NOSYMADA in the last section of the Crystal's input file.


Keyword: gamess2qmc

Description: Basic usage:

gamess2qmc -o (outputroot)  (gamess output root)

By default, gamess2qmc will take the last geometry in the .out file and the last set of molecular orbitals in the .dat file. This is usually the right behavior. GVB wavefunctions are automatically read in.

Required keywords


Optional keywords

Keyword Type Default Description
-o filename GAMESS root QWalk filenames will start with the value of this option
-virtual integer 10 Include this number of virtual orbitals into the orb file.
-compare_punch filename do nothing Compares the orbitals in the current punch file to the one specified here. Will print what orbitals have changed/rotated, and if any cannot be mapped between the two wavefunctions.


Keyword: gamessci2qmc

Description: Basic usage:

gamess2qmc -wthresh 0.01 -o qwalk.cidet  ci.out

For CI, one has to be careful that the orbitals used by GAMESS to do the CI expansion are the same ones that QWalk reads in. This is not easy for the converter to detect, so you have to take some care yourself. The thing to remember is that gamess2qmc always reads the last set of orbitals in the punch file. This is almost always the wrong thing to do during a CI calculation. Here is a recipe that generally works.

  • Do a Hartree-Fock/DFT/whatever calculation as normal
  • Use $GUESS to read in the HF orbitals.

  • Use gamess2qmc to convert the Hartree-Fock calculation and gamessci2qmc to read the determinants and their weights from the CI calculation.

  • Replace the single determinant in the slater file with the determinants read from the CI. Make sure to replace NMO with NFZC+NDOC+NALP+NVAL.

An example input for GAMESS could be

   $GUGDIA PRTTOL=0.00001 $END

An example command sequence could be

rungms hf >& hf.out
rungms ci >& ci.out
gamess2qmc -virtual 15 -o qwalk hf
gamessci2qmc -wthresh 0.0001 -o qwalk.cidet ci.out

Then construct the ci file as follows

  INCLUDE c.basis
  NMO 18
  ORBFILE c.orb
include qwalk.cidet

For small enough cutoff of the determinantal weights, the energy with this wave function will match the CI energy. Often, the QMC energy does not need as many determinants to converge, and using OPTIMIZE_DET along with a jastrow will improve the convergence in determinants within QMC.

Required keywords

Keyword Type Description
-wthresh float Include determinants with threshold greater than this amount.
-o filename Output the determinants to this file.

Optional keywords

Keyword Type Default Description
-csf flag False Conserve the configuration state functions from GAMESS.

Generate homogeneous electron gas for QWalk

Keyword: heg2qmc

Description: Basic usage

heg2qmc -o (outputroot)  
heg2qmcc -o (outputroot)

This program guides you into creating a homogeneous electron gas simulation. It takes N_up, N_down, and rs from standard input. 'heg2qmc' will only use real k-points and fixed node, while 'heg2qmcc' will create a k-point mesh. The Jastrow factor outputroot.jast2 contains only the short-range part. outputroot.i.jast2 is k-point dependent with the long-range part expanded in plane waves as PRB 70, 235119 (2004).

For heg2qmc, the k-points and their weights are given by

Index Weight
0 1/8
1 3/8
2 3/8
3 1/8

For heg2qmcc, the parameter D will correspond to various k-point meshes

D Number of k-points
1 4
2 10
3 20
4 35
5 56

The weights are written to the corresponding .sys files as comments.

Required keywords


Optional keywords

Keyword Type Default Description
-bcs flag False Make a BCS wave function.
-o filename Name of CRYSTAL file QWalk filenames will start with the value of this option

NWChem to QWalk

Keyword: nwchem2qmc

Description: Basic usage:

nwchem2qmc -o (outputroot)  (nwchem input root)

Unlike gamess, nwchem prints out orbitals in a binary file called [input].movecs. So there is an additional step to first convert the .movecs to ASCII file. Go to nwchem_directory/contrib/mov2asc/, then make it. We need executable file called "mov2asc".

Then, run mov2asc [large number] [input].movecs [input].nw.vecs. Be sure to name the nwchem output file [input].nw.out. So [input].nw.vecs and [input].nw.out are the two files we need. Now run /qwalk_directory/src/converter/nwchem2qmc [input], this generates all the files needed by qwalk.

The converter only supports the Cartesian representation of the basis; i.e., 6D, 10F, etc.

Required keywords


Optional keywords

Keyword Type Default Description
-o filename NWChem root QWalk filenames will start with the value of this option


Keyword: siesta2qmc

Description: Basic usage:

siesta2qmc (-siesta2) (-molecule)  (-analyze_mo) -o (outputroot)  (siesta output file)

The following options are required for the converter to work:

%block WaveFuncKPoints
0.0 0.0 0.0
%endblock WaveFuncKPoints
LongOutput .true.

You need the lattice constant variable even if you're calculating a molecule, since Siesta apparently doesn't print out the orbital coefficients unless the lattice constant is given explicitly. The converter will attempt to detect an actual molecule automatically, but you can force it with the option -molecule. Be careful that the molecule does not depend on periodic boundary conditions! The converter also supports non-gamma k-points, which can be printed out in the Siesta input file as following:

%block WaveFuncKPoints
0.0 0.0 0.0
2.0 0.0 0.0
0.0 2.0 0.0
0.0 0.0 2.0
2.0 2.0 0.0
0.0 2.0 2.0
2.0 0.0 2.0
2.0 2.0 2.0
%endblock WaveFuncKPoints

for example, for a 2x2x2 Monkhorst Pack grid.

One can use the pseudopotentials written for QMC, although they can be quite a pain to convert for use in Siesta, since they are usually written in a Gaussian expansion. We are developing a converter to do this properly, however, please contact Lucas Wagner if you wish to use Gaussian-based pseudopotentials with SIESTA. Current thought is that PBE psp's are probably your best bet. SIESTA may have exact exchange in the future, in which case hybrid or Hartree-Fock psueudopotentials may be better. To be clear, the pseudopotentials should be tested, by, for example, calculating the binding energy of small molecules.

You may find that you need to use a larger basis set than is typical for Siesta. It appears that a triple-zeta quality with polarization or better is necessary. If the basis set is too small, the variance of the local energy is large, because the basis cannot describe the one-body part of the wave function well enough. For molecules, you may also need to extend the cutoff radius of the basis functions significantly to keep the variance down and the wave function accurate. Experience has shown that the main issue with the Siesta basis is the presence of kinks when a cutoff is applied. To avoid this issue, we suggest that you use the splitgauss basis type with a large cutoff, somewhere around 8.0 Bohr or more. With this basis, it is possible to get results on par with plane waves or quantum chemistry Gaussian type basis functions.

Required keywords


Optional keywords

Keyword Type Default Description
-o filename qwalk QWalk filenames will start with the value of this option
-siesta2 flag siesta3 Interpret the output as coming from SIESTA version 2
-molecule flag autodetect Force open boundary conditions in QWalk
-analyze_mo flag False Print out a summary of the orbitals from SIESTA.