Main Page Class Hierarchy Compound List File List Compound Members Related Pages

## Validating MPQC

After you compile MPQC, you should run it through the validation suite. You should also run the validation suite if you upgrade your operating system software, since this could change shared libraries that are linking with MPQC and could affect the results.

The validation suite is in `src/bin/mpqc/validate`. The input files are divided into several categories:

`h2o`
  These are simple tests that exercise many of MPQC's features.

`h2omp2`
  Tests that further exercise MP2.

`h2ofrq`
  Tests of H2O frequencies with a variety of methods.

`mbpt`
  These tests exercise MP2 as well as the open-shell perturbation theory methods. The various available algorithms are tested as well.

`ckpt`
  Tests the checkpoint and restart capabilities.

`symm1`
  Tests of point group symmetry.

`symm2`
  More point group symmetry tests. These use basis sets with higher angular momentum than symm1#.

`symm3`
  Tests automatic point group determination.

`basis1`
  A variety of basis sets are tested for first row atoms along with hydrogen and helium.

`basis2`
  Basis sets test for second row atoms.

`methods`
  Tests the self-consistent-field methods and the density functional theory functionals.

`clscf`
  More tests of methods based on CLSCF.

`hsosscf`
  More tests of methods based on HSOSSCF.

`uscf`
  More tests of methods based on UnrestrictedSCF.

`dft`
  More tests of the CLKS method.

To generate the input files change into the `src/bin/mpqc/validate` subdirectory of your object directory (where you compiled MPQC) and type `make inputs`. This will create a `run` subdirectory containing MPQC input files ending with the `.in` suffix. Files ending with a `.qci` suffix will also be placed in the `run` directory. These contain a description of the calculation that is used by the utility program that checks the results of the validation suite.

Next you need to run the calculations. You might want to start with the `h2o` input files first since they shouldn't take too long to run. For the `ckpt` calculations you should run the calculations alphabetically by input file name. This ensures that the checkpoint files will be created before they are needed.

While the test calculations are running you can begin monitoring the results by typing `make checkrun` in the `src/bin/mpqc/validate` directory. This will first do some consistency checks between pairs of files selected from the `ckpt`, `dft`, `mbpt`, `symm1`, and `symm2` groups of calculations (see below for a discussion of the output for comparison of two files). Then each file is individually checked. An `ok` is printed next the test name, if it looks like the calculation made it to the end. A `missing` means the output file could not be found. A `failed` means that the output file has problems (or the calculation may still be running).

Next you will want to see if your compiled MPQC produces the same answer as ours. Note that our reference validation suite has not been verified relative to an independent code, except for a few spot checks. If you find that MPQC doesn't produce the same answer as another quantum chemistry program that you trust, then please promptly notify us and send all the details. The reference validation suite is distributed separately from MPQC. Obtain it (hopefully it is available where you got the source code) and untar it in the `src/bin/mpqc/validate` subdirectory of your MPQC object code directory. This will create the `ref` subdirectory. Now you can type `make check` and outputs in the `ref` and `run` directories will be pairwise compared.

When files are pairwise compared first the status (`ok`, `missing`, or `failed`) for each file is printed. If both statuses are `ok` then an `E:` is printed followed by the number of digits to which the energies agree. If they agree to all digits `99` is printed. If a gradient was computed, then `Grad:` is printed followed by the number of digits to which the gradients in least agreement agree. Other properties checked in this way include frequencies, diagnostics, and populations.

If two numbers do not agree to the expected accuracy, then an asterisk, `*`, is printed after the number of digits in agreement.

Finally, you can do a detailed comparison of the contents of the `ref` and `run` subdirectories by typing `make diff`.