Lily Carlson and Dr. Daniel Ess, Department of Chemistry and Biochemistry
Computational studies are critical to the field of organometallic chemistry since many highly reactive and unstable compounds cannot be isolated or observed experimentally. It is well-known that many organometallic reaction mechanisms involve spin intersystem crossing, e.g. singlet to triplet conversion. To estimate the rate of intersystem crossing it is useful to calculate electronic structures where spin states and their energies are degenerate, which is called a “minimum energy crossing point (MECP).” In previous years there was only one program capable of interfacing with the Gaussian 09 electronic structure package for the calculation of minimum energy, but it was written in Fortran 77 and difficult to modify. Previous researchers in the Ess Lab worked on creating a new software package called MECPro written in Python based on the Fortran code. While the MECPro was more user-friendly it was incomplete, and the purpose of this project was to continue developing and testing MECPro.
Our Python code will be modeled after the Harvey algorithm. In essence, this algorithm starts by performing a force calculation using Gaussian ’09 in order to obtain second derivatives of position. Basic linear algebra is applied to obtain an orthogonal component of a gradient vector, which is then used to optimize toward an MECP using the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm.
The MECPro was written to be run from the command line on the Fulton Supercomputer (FSL) at Brigham Young University, but can also be modified to run on any supercomputer with Python 2.7 and Gaussian 09 installed. The software is available as open source code under the MIT license. We have already used a beta version to calculate MECPs in a manuscript that was just accepted for publication in the journal Organometallics. This year we have also assisted chemists at Emory University and Dow Chemical to use the MECPro software suite in their own research.
This project also included extending the MECPro beyond the command line. We wanted to build a graphical user interface (GUI) to improve the user experience. The GUI was a considerable programming challenge because I had never built a GUI before. While it is not perfect, I am proud of the progress we made. The GUI is also written in Python but is designed to run on a Windows machine by using secure shell (SSH) to access a user’s remote supercomputing account. The GUI allows users to create new jobs in addition to monitoring the outcome of previously submitted jobs. Some challenges included designing an interface that was usable, and learning how to use the model-view-controller pattern in a scripting language such as Python. We also needed to the design the GUI for backwards compatibility with older versions of the MECPro.
Overall this undergraduate research project has been successful in producing user-friendly software to calculate MECPs at Brigham Young University and other organizations. It has also been successful in allowing me to strengthen my skills as a computer scientist by practicing software development and exploring new technologies.