Skip to content

Chemistry-based projects for learning to program (in Rust)

Notifications You must be signed in to change notification settings

ntBre/ProgrammingProjects

Repository files navigation

Programming Tutorial in Chemistry

This is a fork of the Crawford Programming Projects that seeks to place more emphasis on learning to program in Python. The original projects are a great resource, but some of the instructions can be a bit vague, and C++ itself is not the easiest language to begin with. As such, this version will give fuller instructions for the chemistry problems as well as embed more language information directly in the tutorial. One of the difficulties of learning to program is that the best way to learn is by working on a concrete project. The goal of this tutorial then is to offer a substantial, quantum chemistry-flavored project to help people learn Python. I also hope to place some emphasis on a test-driven development style since that should help with the inevitable debugging and on some basics of the shell.

Getting Started

This repository is organized into several projects, each with its own directory. In each one you will find a README.md file like this one with instructions and output for you to check your implementation against. These projects will also require some input files that will be discussed in each project as they become relevant. These input files can be found in the inputs directory. Within input there are directories for several different molecule/basis-set combinations where you will find integrals, molecular geometries and other files to use as input to your programs.

Quantum Chemistry Programming Projects

  • Project #1: Molecular Geometry/rotational constant analysis
  • Project #2: Harmonic Vibrational analysis
  • Project #3: The Hartree-Fock self-consistent field (SCF) procedure.
  • Project #4: The second-order Moller-Plesset perturbation (MP2) energy.
  • Project #5: The coupled cluster singles and doubles (CCSD) energy.
  • Project #6: A perturbative triples correction to CCSD [CCSD(T)].
  • Project #7: Connecting your code to PSI4.
  • Project #8: DIIS extrapolation for the SCF procedure.
  • Project #9: Using symmetry in the SCF procedure.
  • Project #10: DIIS extrapolation for solving the CC amplitude equations.
  • Project #11: An "out of core" SCF procedure.
  • Project #12: Excited Electronic States: CIS and TDHF/RPA

Possible Future Projects

  • Loading basis sets and computing integrals

About

Chemistry-based projects for learning to program (in Rust)

Resources

Stars

Watchers

Forks

Languages

  • Shell 100.0%