Chemistry - Developing Computational Chemistry Software

Solution 1:

How do I get into method development?

As was said in the comments, one would join a group that works in this field and learn from them. From up close, there is some derivation from previous results and some trial and error involved. And yes, a PhD-sized investment is typically required.

How do I get into method implementation?

It depends on how deep you wish to go. There are open-source projects to look at and contribute to. There are publicly available exercises on implementing HF and beyond. I would not advise to implement DFT from scratch because the numerical integration grid is both critical and difficult. Same is true for the integrals, use a library for them.

How do I learn to use Program X?

It is helpful to learn one program suite well and learn others later. The reason is that many concepts are similar between the programs. Learning one program comes down to locating good worked examples, reading the manual, attending a workshop if possible. One may for instance attempt to reproduce data from a DFT benchmark, since the supporting material usually has a detailed listing, possibly down to absolute energies.

Solution 2:

The Psi4 project recently published a set of Python notebooks and tutorials on a wide variety of methods, called Psi4NumPy- J. Chem. Theory Comput. 2018 14(7) 3504-3511 -

All the code is available as open source on Psi4NumPy GitHub:

  • Hartree Fock including RHF vs. UHF, DIIS, etc.
  • Density Functional - including grids
  • Properties
  • Geometry Optimization

Generally these are well-written and give significant extra details. Moreover, they're live code with Psi4, so you can test out the actual implementation.

Beyond the tutorials, there are scripts indicating implementations of coupled cluster, MP2, response theory, etc.

I think anyone starting out or who wants more details with a readable introduction should take a look.