4
$\begingroup$

I want to learn to develop novel methods in computational chemistry (e.g. Grimme's empirical dispersion, DFTB, new DFT functionals, etc.) What is the ideal way to learn this by oneself?

I have read books on the Hartree-Fock theory and I understand it to some degree. However, there seems to always be a large amount of details which are left unsaid and brushed under the carpet. I am looking for quite practical ressources which would teach me how to actually translate the theory into code. Is there a way to learn this other than just reading books until it sinks in?

$\endgroup$
  • 8
    $\begingroup$ At risk of being labelled as rude, I'll say that I think you are not likely to make much headway by yourself, unless you are some kind of once-in-a-generation genius. The obvious answer to your question is to do a PhD on it. That is not typically something you can do by yourself. $\endgroup$ – orthocresol Jul 4 at 12:53
  • 2
    $\begingroup$ I understand your point. I have not mentioned it, but I am studying chemistry at the graduate level and use computational chemistry on a daily basis. What lacks in my education is an understanding of the code I use and how I can improve/extend it. $\endgroup$ – Raphaël Jul 4 at 12:57
  • 6
    $\begingroup$ Developing methods and developing code are two different things, sometimes related. For the former you will have to have a firm grasp of theoretical chemistry, quantum mechanics, and related subjects. That means reading a lot of books, and when you are done with that reading plenty of papers. I guess the best way to learn these things is to join a group that actually does development (like Grimme's group). Developing code is then translating the methods for a computer to execute, it needs training and interest in writing code. It helps having a course on it. $\endgroup$ – Martin - マーチン Jul 4 at 14:57
  • 4
    $\begingroup$ If you want to improve on your coding, there are plenty of open-source projects available on GitHub (and similar platforms), many of them offer the possibility to contribute. Psi4 is one of them! This is probably the best way to get into the process extending/improving. $\endgroup$ – Martin - マーチン Jul 4 at 15:03
  • 2
    $\begingroup$ In addition to @Martin-マーチン's excellent points, I would separate numerical methods from 'coding' and all the chemistry stuff. Developing efficient and effective algorithms is different than implementing them in some language. $\endgroup$ – Jon Custer Jul 5 at 15:01
6
$\begingroup$

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.

$\endgroup$
5
$\begingroup$

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:

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.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.