Reference Manual


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 examples/ 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 extension .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 to 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 (cri and cro) are not mandatory. This is also valid:

$ critic2 < file.cri > file.cro

Alternatively, you can use critic2 interactively:

$ critic2

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.

The -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 --prefix location indicated by the user during configuration or via the CRITIC_HOME 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:

CRYSTAL file.struct

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, AUTO (automatic determination of critical points), INTEGRALS (atomic integration), NCIPLOT (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.