Home - GaryZ700/CatLab_CompChem GitHub Wiki

CatLab Computational Chemistry Package Documentation

Introduction

Welcome to the CatLab Computational Chemistry Package! The goal of this package is to provide an easy to use and modular framework to develop diatomic quantum mechanical simulations while providing a consistent, clean, and interactive front-end user interface. The purpose of this framework is then twofold, first for pedagogy, and the second for development and testing of quantum mechanical methods and computations.

Development

Building applications to perform computational chemistry research can be very intensive and difficult to do. A major part of this difficulty lies in the fact that there many moving parts required to solve the Schrödinger equation, as well as processing the solution wavefunctions to perform further calculations. Each of the parts performs a similar function from a big-picture viewpoint but do so in very different ways to various degrees of speed and accuracy. As an example, the use of DFT versus Hartree-Fock versus RKR, and within that, there are various methods to implement each method that can further impact performance. Being able to swap out methods at will for testing and research purposes can be very difficult as the new method must be able to communicate information correctly to the other parts of the application in order to produce correct output.

This dilemma led me to develop a consistent Python framework that divides up the task of solving the Schrodinger equation in modular class-based systems to allow different parts and methods to be easily swapped out at ease for research purposes. As well, the front-end interface and builtin-graphing code allows users to rapidly develop new methods, and still leverage seamless graphing capabilities without the need to implement it yourself. In addition, new methods and calculations are coded independently and separately from the backend code, meaning that users do not need to worry about how data will flow into their method or out, simply the programmer will only need to focus on the method's implementation, while the library handles moving the needed data into and out of the method, and to the next portion of the framework for further processing.

Pedagogy

Now that development of computational chemistry code can be done so in a fairly straightforward and simplistic manner while also allowing for interactive user-facing visuals, pedagogical Jupyter Notebooks can be created to leverage this framework. The front-end code structure of the framework allows students to be able to near-directly translate theory into code, preventing confusion between theory and code from arising. As well, the actual graphical front-end can be leveraged to create classroom exercises and virtual experiments to allow students to mathematically admire the code while also providing a concrete visualization of concepts.

The use of LaTex can further be leveraged in Jupyter Notebooks to walk students through the complex details of heavy mathematical calculations, and providing a clearer connection between theory, code, and visual interpretation. Library built methods such as RKR and the harmonic oscillator basis set contains dedicated pedagogical notebooks in this repository to help students learn about the quantum mechanical theory and hopefully provide them with both the knowledge and tools to leverage computational chemistry in their own work.

How can I use this library?

There are two main ways in which this library can currently be used. The first is to click on this button here: Binder Which will launch the entire library online within a Jupyter Notebook environment for you to interact with. The second option is to download the repository onto your personal computer and leverage it from there. I am working on writing local installation process instructions, as well as adding this library to Pip to even further simplify the installation process.