Transition States and Computational Chemistry

I was reading this paper on the mechanism of a set of organometallic hydrosilylations when I realized that I know next to nothing about how to determine reaction pathways and transition states using Gaussian (or any other computational chemistry software, for that matter). It seems like a pretty important thing for any self-respecting p-chemist to know, so I thought I’d chronicle my findings a little.

It’s possible to glean a few mathematical conditions for transition states just from their definition: because they’re defined as peaks on reaction coordinate diagrams, their first derivatives of energy with respect to all normal modes of vibration are zero. Their second derivatives of energy must be negative W.R.T. all normal modes of vibration except one, in order to establish their energy as a maximum. Difficulties can arise because near a maximum the energy curve tends to flatten out, leading to states with very different geometries but similar energy.

Gaussian approximates the peak of an energy curve using a quadratic function via the STQN (synchronous transit-guided quasi-Newton) method. This process is basically the opposite of optimizations for conventional molecules, which rely on the variational principle and energy minimization. A so-called “synchronous transit” function guides the reaction coordinate and molecular energy close to the transition state, then an optimization (i.e. maximization) algorithm takes over. In fact, if you specify Opt=QST2, Gaussian doesn’t even need an initial guess of the transition state structure to approximate it–the reactant and product structures can serve as input. In this case the guess is just “halfway between” the reactants and products.

Once you’ve determined the transition state, it’s possible to follow the reaction pathway using the IRC (intrinsic reaction coordinate) option. IRC=CalcFC tells Gaussian to calculate force constants of the system, which describe the extent of the forces at work in the molecule, for the first point and use these for all points in the reaction path. You can also grab force constants from a frequency calculation of the transition state using IRC=RCFC. Based on this data Gaussian steps through the reaction path (step size and number of steps can be specified) and optimizes the geometry at each point. Using Results->IRC in GaussView, you can even watch a video of the reaction proceeding! I might try this sometime and post the results.



  1. cute! i’d always wondered a little about that.

    but what the hell are you doing with this? classes don’t even start yet!



  2. Haha guilty as charged…I love this stuff man! If Gaussian didn’t force me to take out a freakin’ loan, I’d have it on my laptop. The open source alternatives just don’t stack up…


  3. I’ve wondered about the fact open source computational chemistry software is lame. I do a lot of programming, and am a huge fan of open source stuff. But you are completely on the mark. It might be the culture of the field, I dunno.

    For some solid calcs, there is a package called YAEHMOP (yet another extended huckel molecular orbital program) that one of Roald Hoffman’s students wrote. I used it a little to do band calculations, but never had occasion to really dig in because back when I cared, Bossman had some big guns doing it for him. But it is pretty good, and useful if you like the idea of seeing how solid state properties emerge from orbitals.

    Where I work we have an old-school quantum chemist on staff (meaning he wrote tons of FORTRAN back in the INDO and MNDO days). Guys like him sort of sneer at GUIs. And everything but FORTRAN, which I think is totally fucking crazy.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s