Critic2 is a program for the analysis of results from quantum mechanical calculation in molecules and periodic solids. It can read, transform, and analyze structures, electron densities, and other scalar fields generated by many quantum chemistry (and related) programs, including WIEN2k, elk, PI, Quantum ESPRESSO, abinit, VASP, DFTB+, Gaussian, psi4, siesta, cif, SHELX, and more. Critic2 provides an abstraction layer that allows applying common analysis techniques to the data (structures, electron densities, one-electron wavefunctions) calculated by these programs, regardless of their origin.
The original aim of critic2 was to implement the methods in Bader’s Quantum Theory of Atoms in Molecules (QTAIM). Some of critic2’s basic operations, for instance, include finding the critical points of a scalar field (Bader’s topology), or finding the attraction basins of the maxima and integrating quantities in them (e.g. Bader’s atomic charges). In recent versions, however, critic2 has been extended to support related operations, such as manipulating and interconverting structural formats, perform arithmetic operations on scalar fields, calculate related quantities like STM images, calculate NCI plots, and many, many more.
Within the QTAIM framework, critic2 also provides a collection of specialized algorithms: four different atomic basin integration methods as well as a powerful and flexible automatic critical point searching technique. Many scalar fields other than the electron density are amenable to a QTAIM-style analysis (finding the topology and integrating the attractor basins). These techniques (called Quantum Chemical Topology, QCT, by P. Popelier) can be applied to a variety of scalar fields including the ELF and the Laplacian of the electron density. Critic2 can perform all these tasks for any field either provided by the user or calculated inside the program.
Critic2 originally worked only with electron densities for periodic crystals. Support for molecular structures and wavefunctions has been added recently and it is reasonably complete. However, the performance of critic2 in some tasks (e.g. molecular basin integrations) may not be as good as programs that specialize in gas-phase molecules. In particular, you should be aware that critic2 treats all systems—both crystals and molecules—as if they were periodically repeated. Molecules are placed inside a very large repetition cell and surrounded by a “no-go” zone, which is determined by the so-called “molecular cell”. In principle, this is not a problem (programs that work with gas-phase molecules natively use a similar approach), but oddities and bugs may be lurking.
Critic2 is described in Comput. Phys. Commun. 180 (2009), 157–166 and Comput. Phys. Commun. 185 (2014), 1007–1018. Please, cite these references if you find this program useful. The file THANKS contains a complete list of contributors and programs from where parts of critic2 have been adapted.
To download the critic2 code, please visit this page.
More details can be found in the README and INSTALL files included
with the criitc2 distribution. Information regarding the installation
of critic2 can be found here. A complete set
of examples is provided with the code (in the
subdirectory) and in this website. The
examples.txt file provides a
description of the examples.
Command-Line Options and Usage
Critic2 accepts a single input file (usually but not necessarily with
.cri). The command-line syntax is:
$ critic2 [-q] [-h] [-t] [-r /path/to/critic2] [file.cri [file.cro]]
If both input and output files are present, the output is redirected
file.cro. Otherwise, it is written to standard output. If no
file.cri is present, the input is taken from standard input. The
input and output extensions (
cro) are not mandatory. This
is also valid:
$ critic2 < file.cri > file.cro
Alternatively, you can use critic2 interactively:
and enter the commands by hand. The
rlwrap program simplifies using critic2
interactively considerably by providing a history facility and
keyboard shortcuts. If you are using a linux distribution, you can
probably find rlwrap in your software repository. In addition,
depending on the tasks in the input file, auxiliary files may be
generated, usually with the same root as
file.cri (“file”, in this
case) or “stdin” if no input file is given.
-h option (“help”) prints a short help message and exits. The
-t option is for running the tests only. The
-q option (“quiet”)
inhibits the initial and final messages. This is useful when using
critic2 in a pipe command. In addition, If no
-q is given, a copy of
each input line read by critic2 is written to the output, preceded by
a “%%” prefix. This helps identify the different parts of the output
in long runs. The
-r option tells critic2 where to find its data
files. If /path/to/critic2 is given, the data files (wfc, dic, etc.)
should be in /path/to/critic2/dat. Normally, the data directory is
located automatically by critic2 either at the
indicated by the user during configuration or via the
variable (see Installation).
The input file usually start with a specification of the crystal or molecular structure using the CRYSTAL or the MOLECULE keywords. For instance:
After the structure is read, one or more fields can be loaded using the LOAD keyword. For instance:
LOAD file.clmsum file.struct
Unless otherwise stated, the default distance units in critic2, both in input and output, are atomic units (bohr) for crystals and angstrom for molecules. This can be changed using the UNITS keyword. Electron densities are always in atomic units (electrons/bohr^3).
After reading the structure and loading the relevant fields, specific
keywords are used to perform the required tasks. For instance,
(automatic determination of critical points),
(non-covalent interaction index plots), etc. A concise description of
the critic2 keyword syntax is given in the
doc/syntax.txt file and
in this page. If you are
already familiar with critic2, that file will probably be more useful
to you than this guide.