Skip to content

An optimised, parallelised applet that performs electronic structure calculations up to the CCSD(T) theory level.

Notifications You must be signed in to change notification settings

ajwt/A-Fortran-Electronic-Structure-Programme

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Fortran Electronic Structure Programme (AFESP)

This project is based on the Crawford Group's excellent C++ Programming Tutorial in Chemistry, but written in Fortran. The end goal of this project will be performing HF, MP2, CCSD, and CCSD(T), as per the original tutorial, but with additional support for multicore processors (modern CPUs, GPUs).

Progress / to-do

  • Geometry read-in
  • Integral read-in
  • Nuclear repulsion energy calculation
  • Hartree-Fock without symmetry
  • Pretty printing, time reporting
  • MP2 without symmetry
  • CCSD without symmetry
  • OpenMP parallelisation
  • DIIS acceleration for Hartree-Fock SCF
  • CCSD(T) without symmetry
  • DIIS acceleration for CCSD iterations
  • Loop optimisations - cache
  • User input file: level of theory, tolerances
  • BLAS acceleration of tensor contractions
  • Spin-free CCSD
  • Spin-free CCSD(T)
  • Loop optimisations - using permutational symmetry
  • Adapting Hartree-Fock with symmetry
  • Ditto for MP2
  • Ditto for CCSD
  • Ditto for CCSD(T)
  • MPI parallelisation
  • GPU adaptation for MP2 and CCSD/(T)

Installation guide

To get started, clone this directory by

git clone git@github.com:brianz98/A-Fortran-Electronic-Structure-Programme.git

Dependencies

You need to have:

  • CMake (at least 3.12)
  • A Fortran compiler (gfortran 9.3.0 have been tested)
  • OpenBLAS (see below for instructions)

Installing OpenBLAS

Download the latest OpenBLAS version from their website, and untar, then

make USE_OPENMP=1
make install [PREFIX=/your/directory]

where the PREFIX can be omitted and OpenBLAS will be installed in /opt/OpenBLAS by default, but you'll likely need to prefix sudo to the command.

If you install OpenBLAS in directories other than /opt/OpenBLAS, then you need to edit the last line of CMakeLists.txt to where libopenblas.a actually is.

About

An optimised, parallelised applet that performs electronic structure calculations up to the CCSD(T) theory level.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Fortran 95.6%
  • Python 3.2%
  • Other 1.2%