10
1
mirror of https://gitlab.com/scemama/qmcchem.git synced 2024-12-21 11:53:30 +01:00
Quantum Monte Carlo program http://qmcchem.ups-tlse.fr
Go to file
2015-12-18 22:53:27 +01:00
install Improved install scripts 2015-12-18 22:53:27 +01:00
configure.sh Improved install scripts 2015-12-18 22:53:27 +01:00
LICENSE Initial commit 2015-12-18 21:23:12 +01:00
README.md Install scripts 2015-12-18 22:27:18 +01:00

QMC=Chem : Quantum Monte Carlo for Chemistry

QMC=Chem is the quantum Monte Carlo program of the Toulouse group. It is meant to be used in the post-Full-CI context : a quasi-Full-CI calculation is done with the quantum package, and this wave function is used as a trial wave function for the fixed-node diffusion Monte Carlo algorithm.

  • Parallel efficiency of 98.3% on 16_000 cores
  • The load balancing is optimal: the workers always work 100% of the time, independently of their respective CPU speeds
  • Efficient: 0.96 Pflops/s on 76_800 cores of Curie in 2011
  • All network communications are non-blocking, with the ZeroMQ library
  • All the implemented algorithms are CPU-bound : the only limit is the available CPU time
  • The number of simultaneous worker nodes can be variable during a calculation
  • Fully fault-tolerant (crashing nodes dont stop the running calculation)
  • QMC=Chem has been used in grid environments (EGI european grid) and in Cloud environments (rance Grilles) coupled to supercomputers

Warning: QMC=Chem is under the GPLv2 license. Any modifications to or software including (via compiler) GPL-licensed code must also be made available under the GPL along with build & install instructions.

Requirements

  • Ninja building system (replacement for GNU make)
  • EZFIO library generator
  • ZeroMQ library
  • ZeroMQ Fortran77 binding
  • IRPF90 Fortran code generator
  • OCaml compiler
  • Fortran compiler (Intel Fortran recommended)

All the dependencies will be downloaded automatically

Example of a QMC=Chem calculation

Calculation with the quantum package ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  1. Create the xyz file containing the nuclear coordinates of the system
$ cat > h2o.xyz << EOF
3
Water molecule
O 0. 0. 0.
H 0.9572 0. 0.
H -0.239987 0.926627 0.
EOF
  1. Choose a suitable basis set and create the EZFIO database
$ qp_create_ezfio_from_xyz -b cc-pvdz h2o.xyz -o h2o
  1. Run the SCF calculation
$ qp_run SCF h2o
  1. Run the CIPSI calculation
$ qp_run full_ci h2o
  1. Transform the input for use in QMC=Chem
$ qp_run save_for_qmcchem h2o

FN-DMC calculation with QMC=Chem ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Before using QMC=Chem, you need to load the environment variables:

$ source qmcchem.rc

In QMC=Chem, everything goes through the use of the qmcchem command. When a command is run with no arguments, it prints a help message. This is mainly the manual of QMC=Chem. For example:

$ qmcchem 
QMC=Chem command

  qmcchem SUBCOMMAND

=== subcommands ===

  debug    Debug ZeroMQ communications
  edit     Edit input data
  md5      Manipulate input MD5 keys
  result   Displays the results computed in an EZFIO directory.
  run      Run a calculation
  stop     Stop a running calculation
  version  print version information
  help     explain a given subcommand (perhaps recursively)

missing subcommand for command qmcchem

$ qmcchem edit
Run a calculation

  qmcchem run EZFIO_FILE


Run QMC=Chem
      

=== flags ===

  [-a]                    Add more resources to a running calculation.
  [-d]                    Start a dataserver process on the local host.
  [-q <dataserver_addr>]  Start a qmc process on the local host.
  [-s <host>]             Start a qmc process on <host>.
  [-help]                 print this help text and exit
                          (alias: -?)

missing anonymous argument: EZFIO_FILE
  1. Set the parameters for a VMC calculation to create initial walker positions
$ qmcchem edit -h
Edit input data

  qmcchem edit EZFIO_FILE [INPUT]


Edit input data
      

=== flags ===

  [-c]                Clear blocks
  [-e energy]         Fixed reference energy to normalize DMC weights
  [-f 0|1]            Correct wave function to verify electron-nucleus cusp
                      condition
  [-j jastrow_type]   Type of Jastrow factor [ None | Core | Simple ]
  [-l seconds]        Length (seconds) of a block
  [-m method]         QMC Method : [ VMC | DMC ]
  [-n norm]           Truncation t of the wave function : Remove determinants
                      with a
                      contribution to the norm less than t
  [-s sampling]       Sampling algorithm : [ Langevin | Brownian ]
  [-t seconds]        Requested simulation time (seconds)
  [-ts time_step]     Simulation time step
  [-w walk_num]       Number of walkers per CPU core
  [-wt walk_num_tot]  Total number of stored walkers for restart
  [-help]             print this help text and exit
                      (alias: -?)

$ qmcchem edit h2o -f 1 -m VMC -n 1.e-5 -s Langevin -t 300 -l 10
  1. Get info on the wave function
$ qmcchem info h2o
  1. Run the VMC calculation
$ qmcchem run h2o
  1. Set the correct parameters for FN-DMC
$ qmcchem edit h2o -e -76.438 -m DMC -s Brownian -ts 3.e-4 -t 3600 -l 30
  1. Run the FN-DMC calculation
$ qmcchem run h2o
  1. Print the result
$ qmcchem result h2o

References

Quantum Monte Carlo for large chemical systems: Implementing efficient strategies for petascale platforms and beyond > Anthony Scemama , Michel Caffarel , Emmanuel Oseret and William Jalby (2013), in: Journal of Computational Chemistry, 34:11(938951)

Quantum Monte Carlo with very large multideterminant wavefunctions > Anthony Scemama , Thomas Applencourt , Emmanuel Giner and Michel Caffarel (2015), in: ArXiv ePrints:arXiv:1510.00730 [physics.chem-ph]