These tips are intended for beginners. They may save inexperienced users a lot of time. Please let us know if you find a better/easier solution to any of the problems, or if you spot anything that is wrong/incomplete.

My calculation keeps failing, what should I check?

Usually the outputs of calculations give the clue about what went wrong. The most common things that may be wrong are:

  • input mistake: check if the charge and multiplicity are correct;
  • insufficient memory: the program may immediately realize that the machine does not have the amount of memory you requested, or it may fail later on when it does the actual calculation. Memory control and allocation are often very approximate, so a little know-how is requiredi.

My calculation is much slower than what I expect. What may be wrong?

There are many things that can cause that. Here are some:

  • You may have forgotten to give the program enough memory, so the program decided to use a slower algorithm, such as writing/reading a lot of data to the harddisk. However, when dealing with this problem, a frequently made mistake is to give too much memory to the program. Sometimes it pays off to spend a little extra time estimating how much memory is needed for your calculation. Since different programs use different algorithms and tricks, the best thing is to check their manuals for advice on estimating the amount of memory needed in terms of number of atoms, number of basis functions, etc.
  • Analytical vs. numerical derivatives. Maybe the program you are using does not have analytical derivatives for that particular method, so it is doing numerical differentiation, which can take a lot longer.
  • Symmetry. Maybe the program could not recognize that the structure is symmetric. See the next two questions and answers.
  • Slow network. This may be a problem with computer clusters where the calculation is done on a particular node but the output is stored on the server. If you believe this may be the problem, you should contact your system administrator.

Why is symmetry so important in a calculation?

It speeds up your calculation and improves the convergence. If the program realizes that it is dealing with a symmetric molecule, it will not calculate some integrals, because their values are zero or the same as the values of some integrals that were already calculated. This helps you not only with time but also with memory issues. For example, if you are doing a calculation that fails due to insufficient disk space, it may work well if there is symmetry, so that the scratch files are smaller. The SCF and Davidson algorithms are usually more robust when symmetry is employed.

My molecule looks symmetric but my program tells me it is C1 symmetry, why is that?

Usually the tolerances that programs allow for determining symmetry are much smaller than what we can see visually. You may frequently have such a problem if you are drawing the molecule yourself in your molecular builder, or if you got XYZ coordinates that do not have enough significant figures. The best solution is to write a z-matrix, or to use some “symmetrizing” program that lets you save your structure with enough significant figures. (Also see notes on symmetry converting)

I compared my results with two different programs, but the results are different even though I use the same methods and basis sets. What can be the problem?

The first thing to check is the nuclear repulsion energies, which will tell you whether your geometry is the same in both outputs. If the nuclear repulsion energies are different check the units in your inputs. Some programs use atomic units for geometry specifications by default, whereas others use angstroms. You should be able to see such an inconsistency immediately, looking at the bond lengths, rotational constants, etc.

If this was not the problem, check whether you are really using the same basis sets. Check the actual number of basis functions in your outputs, rather than the names of the basis sets. This is because different programs may be using different types of d- and f-functions. For example, the default settings in one program may be such that it uses spherical d-functions (5 functions), whereas another program may be using cartesian d-functions (6 functions). Sometimes even the exponents may be different.

If the clues above do not help, check the cut-offs for energy and gradient in SCF calculations. These can vary from program to program. If they are the same, check what type of a guess each program is using for the initial wavefunction. Although most of the time the initial guess is not very crucial for the accuracy of the final result, in some cases different guesses may lead to different SCF solutions, especially for open- shell or multi-configurational wavefunctions. (Click here for a short video presentation about converging SCF calculations)

If the HF energies are almost the same, but the MP2 energies vary, it may be that one of the programs is using all of the electrons in the perturbation treatment, while the other program has the core electrons frozen.

Programs often differ in their DFT codes. The DFT methods employ numerical integration and different programs may be using different number of points in space (grids) to do the job. Check what the default grids are in each program.

Which program should I use?

There is no “ultimate program” that is the best for everything. Ask around to see if people have done calculations with different programs and know which one is better for certain types of calculations. You can also check the online manuals of the programs that are available to you. Look for things such as which program has analytical gradients for the particular method you are interested in, whenever you do geometry optimizations. Analytical derivatives are even more important when you calculate frequencies, because the energy is differentiated two times, instead of only once as in usual geometry optimizations.

Investing time in learning how to use a new program may save you a lot of time if it does certain type of calculations much faster than your favorite program.

My geometry optimization takes forever... What is wrong?

Perhaps you requested convergence thresholds that are too tight. You may also be dealing with a tricky potential energy surface, where the geometry maybe oscillating between two points. Check the energy at each optimization cycle to see if it is still going down. Also check the optimization convergence thresholds. If you have approached these values and your energy curve looks almost leveled off, you can probably stop the calculation and use the numbers you need from the last step.

I do a frequency calculation, but I get one or more negative numbers. Why is that?

Your geometry is not a minimum on the potential energy surface. Frequency analysis is usually valid only at a global or local minimum. Optimize your geometry with the method and basis set that you intend to use for evaluating the frequencies.

I optimized my molecule, why do I get a negative frequency when I calculate thermodynamic properties?

The optimization may have ended up in a transition state structure. This is common when one does not know how the minimum energy structure looks like and starts with a poor guess for the initial structure. If that initial structure is symmetric, but the true minimum is not, then the calculation will be stuck in the initial symmetry, preventing it from going down the hill. Solution: break the symmetry or start with another initial geometry.

I want to calculate activation energies for a certain chemical reaction. For that I calculated the transition state and I got one imaginary (negative) frequency. Can I be sure that this is the real transition state?

Not until you check that the imaginary frequency mode actually connects the reactants and products. For example if you are studying a reaction where one bond is being broken, the transition state will have an imaginary frequency for the normal mode that looks like is trying to break that particular bond.

Can I always trust my results from a very sophisticated method such as CCSD(T) with a large basis set?

No! You should know in general terms, what kind of approximations are. For, example CCSD(T) is one of the most accurate methods that can be used for everyday calculations and it has proven to be consistently very good for many properties, however there are approximations in it. For example you may be dealing with a case where electron correlation from higher excitations is very important, or a with a case where the Born-Oppenheimer approximation fails. Its performance can also be affected by Hartree-Fock instabilities and near instabilities.

I need to use a high level of theory and a large basis set for my problem. How do I know approximately how long it will take?

The following estimate will work for a single point calculation: do a calculation with a small basis set and check how much time it takes to complete. Check the output to see how many basis functions you have. Then start another calculation with the large basis set (and preferably a less expensive method, such as Hartree-Fock) you intend to use and stop your job after a few seconds. Check how many basis functions are there. Take the ratio for the basis functions in both outputs and scale the timing from the small calculation accordingly. Important: different methods scale differently. For example the traditional MP2 scales as N5 whereas CCSD scales as N6, where N is the number of basis functions. That means, if your small basis set calculation (say 50 basis functions) took 1 hour to complete with MP2, it will take 25=32 hours with a basis set that has twice as many basis functions.

Note that there are other ways of estimating timings, in terms of the number of basis functions, the number of atoms, etc. Check the manual of the program you intend to use for such tips.

I estimated the time for my calculation, but it looks like it will take too long. What can I do?

First think about whether you really need a high level of theory/ large basis set. This is one of the most difficult choices involved in setting up a calculation. You will develop a feeling for the type of theory and basis set you need to use with time. Searching the literature for similar calculations and doing smaller tests, such as starting with a smaller basis set and enlarging it gradually to check whether the property you are interested in converges, may help. You can also get an idea about how important things like electron correlation are by checking HF, MP2, and CCSD results, before rushing into CCSD(T) calculations.

The high computational expense of many methods has triggered a lot of work on approximated and reduced-scaling algorithms. For example, if you cannot afford doing an MP2 calculation, you can check out RI-MP2.

Also, a common practice is to use several steps in your computational projects. If the molecular geometry is not extremely crucial for the property you are interested in, you can optimize your molecule with a less expensive method such as MP2 and then use these geometries for single point calculations at a higher level, such as CCSD(T). You can also apply a similar trick for basis sets. Most of the time we are interested in relative numbers, such as the difference in energy between two isomers. In such cases, you can even add zero point energies obtained at lower level of theory as long as you are treating both isomers consistently.