Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/MCCI/mcci

Monte Carlo Configuration Interaction program
https://github.com/MCCI/mcci

Last synced: about 2 months ago
JSON representation

Monte Carlo Configuration Interaction program

Awesome Lists containing this project

README

        

# Monte Carlo Configuration Interaction

Monte Carlo Configuration Interaction (MCCI) is a computer program that
calculates electronic structure of molecular systems using a
method based on Configuration Interaction (CI). In conventional CI, all
configurations (usually spin-projected Slater Determinants, or Configuration
State Functions (CSFs)) up to a given excitation level are included in the wave
function. While this produces a highly accurate wave function, the number of
CSFs to include (and thus also the dimensions of the matrix to be
diagonalized) increases combinatorially with the truncation level. In addition,
the fixed truncation level of conventional CI causes the method to be
non-size-consistent.

MCCI is based on the observation that in a given vector from a truncated CI
run, only a small fraction of the CSFs produce a significant contribution to
the wave function, i.e. the absolute value of their coefficient in the
expansion is small. It follows that the wave functions (and their energies)
can be described to a satisfactory level of accuracy by omitting these
insignificant CSFs from the expansion, which keeps the problem computationally
tractable. In MCCI, the truncation of the expansion is determined solely by
the contributions to the wave function of the individual CSFs; in an iterative
procedure, new CSFs are generated from the CSFs in the current vector, and
either kept or discarded depending on their coefficient in the wave function.
Note that in this fashion, arbitrarily highly excited CSFs will be included (as
long as their coefficient remains above the threshold), so in principle, size
consistency is achieved.
For more background information on the formalism behind MCCI, please see the
first two papers in the section "Publications".

As its input data, MCCI requires a list of molecular orbital (MO) operator
integrals of the Hamiltonian's one- and two-body operators. Any electronic
structure program that can output these integrals can in principle be used.

Since the mcci algorithm relies on random sampling of the CSF space and retains
CSFs based on their contribution to the wave function, it encounters no
problems describing systems with significant multireference (i.e. more than one
significant CSF) character. Even with a large significance threshold (e.g.
cmin=5.0 E-3), the algorithm will reliably find the most significant CSFs, at a
significantly reduced computational cost compared to other multi-configuration
methods.

Also of note is the scaling behaviour of the code; the figure below shows a
graphical interpretation of the CI matrix obtained from a run of mcci. The
stronger interactions (in red) all involve a limited set of CSFs, which we call
the reference set. This implies that once this reference space is captured in
the exapansion, different nodes can sample the extended space independently
(since those CSFs won't interact strongly with each other), producing
near-linear scaling.

## Contributors

* Jim Greer
* Werner Gyorffy
* Thomas Kelly
* Mark Szepieniec
* Jeremy Coe

## Contact

For questions, comments or troubleshooting assistance, please email [email protected]

## Compile Instructions

The provided Makefile assumes the availability of an MPI-enabled
Fortran 90 compiler under the name 'mpif90'. This can be changed
manually, but the user needs to check that all the flags used in
the Makefile are supported by the other compiler.

If the compiler is changed, please note that the system clock
called in the subroutine gen_seed.f90 may also need to be
changed, depending on the behaviour of the system_clock standard
subroutine on the platform used.

## Preparing input files

To do an mcci calculation you need two input files: mcci.in contains
the program's configuration settings, and moints.TM contains a list of
one- and two-electron integrals for the previously obtained Hartree-Fock
molecular orbitals (it is also possible to use DFT MOs).
Users will need to configure their respective mean-field codes to
output these integrals, and then format them into a file that mcci can
understand; an example moints.TM file can be found in
tests/N2/moints.TM.

An optional input file is civ_in, which contains a CI vector from a previous
calculation. All mcci runs will produce a civ_out file in the same format, so
these can simply be renamed to civ_in and used as starting vectors in the next
mcci run.

### Keywords for the mcci.in file

ieig = Eigenvalue to be calculated. Each eigenvalue in each irrep begins with ieig=1
i.e. ieig=1 is lowest energy eigenvalue in an irrep, ieig=2 is first excitation in an irrep, ...
n_up = Number of spin up (alpha) electrons
n_dn = Number of spin down (beta) electrons
cmin = Coefficient threshold: Defines the minimum value of CSF's coefficient to be kept following
a matrix diagonalization, i.e. the "pruning threshold"
s = Spin ( units of h_bar ) (principle case M_s=S)
maxtry = The maximum number of cycles (branch, diagonalization, prune) that should be performed
mo_up(:) = Molecular orbital indices for up (alpha) electrons
mo_dn(:) = Molecular orbital indices for down (beta) electrons
lmin = Minimum vector length- branch will always generate lmin CSFs
npfull = A "full prune" step will be performed every npfull cycles
lkeep = Configurations to keep throughout a calculation. The first lkeep CSFs will not be pruned.
hmin = H matrix threshold- elements of the H matrix with absolute values below hmin are not stored
davidson_stop = Maximum number of iterations before stopping for convergence in the Davidson algorithm
bmin = Minimum vector boost (used to adjust Monte Carlo sample size in early stages of a calculation)
bmax = Maximum vector boost (used to adjust Monte Carlo sample size in early stages of a calculation)
frac = Branching ratio: number of new CSFs / number of CSFs in current CI vector
conv_thresh_e = Energy convergence: change in energy between npfull cycles is less that conv_thresh_e after ncheck tests
conv_thresh_l = Vector convergencer: change in vector length between npfull cycles is less than conv_thresh_l for ncheck tests
(Note, the number of tests, n, is defined by the keyword conv_history)
restart = .TRUE. or .FALSE. If this is set to true, then, a calculation will be
restarted from a previous calculation and civ_in must be present (i.e. previous runs civ_out file
should be renamed to civ_in). If set to false, a calculation will begin from the CSF with
occupations define in mcci.in
test = .TRUE. or .FALSE. Debugging flag
time = .TRUE. or .FALSE. Timing information, general
time_all = .TRUE. or .FALSE. Timing information, detailed
nobrnch_first = .TRUE. or .FALSE. No branching in the first step
nodiag = .TRUE. or .FALSE. Used for collecting CSFs only (No matrix diagonalisation is peformed during cycles)
i_want_conv = .TRUE. or .FALSE. Stop mcci by using convergence criteria.
npfull_conv = .TRUE. or .FALSE. Convergence test only in npfull steps
conv_average = Number of npfull steps to be averaged for convergence
conv_history = Window of npfull steps to be include in convergence checking
frozen_doubly = Indices of orbitals to be frozen (i.e. no excitations are allowed from these molecular orbitals
during the CI calculation). Note frozen orbitals must be doubly occupied.
mo_active = Orbital lists of active orbitals, includes all occupied and (initially) unoccupied orbitals to include
in the CI calculations. Note excludes frozen_doubly and all inactive virtual orbitals
lref = Branch (i.e. generate new CSFs) relative to only the first lref CSFs in a CI vector

## Performing a Calculation

When all input files have been set up correctly and put into the same
directory, mcci is started simply by entering "mcci" into a command
prompt, or submitting a script containing an invocation of mcci to the queue
system.

The main output files are e_summary, which contains the energy and CI
vector length for each iteration, plus additional data, and civ_out,
which contains the final CI vector.

## Publications

### Method

* Estimating Full Configuration Interaction Limits from a Monte Carlo Selection of the Expansion Space, J.C. Greer, Journal of Chemical Physics, 103 pp. 1821-1828 (1995)

* Monte Carlo Configuration Interaction, J. C. Greer, Journal of Computational Physics, 146 pp. 181-202 (1998)

* A Parallelization Model for Successive Approximations to the Rayleigh-Ritz Linear Variational Problem, J.C. Greer, IEEE Transactions on Parallel and Distributed Systems, 9 pp. 938-951 (1998)

* A Monte Carlo Configuration Generation Computer Program for the Calculation of Electronic States of Atoms, Molecules and Quantum Dots, L. Tong, M. Nolan, T. Cheng and J. C. Greer, Computer Physics Communications, 131 pp. 142-163 (2000)

### Applications

* Consistent Treatment of Correlation Effects in Molecular Dissociation Studies Using Randomly Chosen Configurations, J. C. Greer, Journal of Chemical Physics, 103 pp. 7996-8003 (1995)

* Electronic Correlation Energy in Linear and Cyclic Carbon Tetramers, J. C. Greer, Chemical Physics Letters, 306 pp. 197-201 (1999)

* Monte Carlo Configuration Interaction Predictions for the Electronic Spectra of Ne, CH2, C2, N2, and H2O Compared to Full Configuration Interaction Calculations, W. Gyoffry, R. J. Bartlett and J. C. Greer, Journal of Chemical Physics 129, 064103 (2008)

* Spin-polarisation Mechanisms of the Nitrogen-Vacancy Center in Diamond, P. Delaney, J.C. Greer, and J.A. Larsson, Nano Letters, 10, 610-614 (2010)

### Miscellaneous

* Impact of Electron-Electron Cusp on Configuration Interaction Energies, D. Prendergast, M. Nolan, C. Filippi, S. Fahy, and J. C. Greer, Journal of Chemical Physics, 115 pp. 1626-1634 (2001)

* Tools for Analysing Configuration Interaction Wavefunctions, P. Delaney and J. C. Greer, Computational Materials Science, 28 pp. 240-249 (2003)

* Statistical Estimates of Electron Correlations, W. Gyoffry, T. M. Henderson and J. C. Greer, Journal of Chemical Physics, 125, 054104 (2006)

* Determining Complex Absorbing Potentials from Electron Self Energies, T. M. Henderson, G. Fagas, E. Hyde, and J. C. Greer, Journal of Chemical Physics, 125, 244104 (2006)

### Applications in Molecular Electronics (with the program VICI)

* Correlated Electron Transport in Molecular Electronics, P. Delaney and J. C. Greer, Physical Review Letters, 93 pp. 036805-036808 (2004)

* Quantum Electronic Transport in a Configuration Interaction Basis, P. Delaney and J. C. Greer, International Journal of Quantum Chemistry, 100 pp.1163-1169 (2004)

* Independent Particle Descriptions of Tunneling Using the Many-body Quantum Transport Approach, G. Fagas, P. Delaney and J. C. Greer, Physical Review B, 73, 241314(R) (2006).

* Tunnelling in Alkanes Anchored to Gold Electrodes via Amine Groups, G. Fagas and J. C. Greer, Nanotechnology, 18 424010 (2007)

* A Comparative Study for the Calculation of Tunnel Currents Across Silane Diamines/Dithiols and Alkane Diamines/Dithiols, Shane McDermott, Chris George, Giorgos Fagas, J. C. Greer, and M. A. Ratner, Journal of Physical Chemistry C, 113, pp. 744-750 (2009)