• Stars
    star
    134
  • Rank 270,967 (Top 6 %)
  • Language
    Julia
  • License
    MIT License
  • Created over 4 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fermi quantum chemistry program

Documentation Build Status License Citation

Fermi.jl is a quantum chemistry framework written in pure Julia. This code is developed at the Center for Computational Quantum Chemistry at the University of Georgia under the supervision of Dr. Justin M. Turney and Prof. Henry F. Schaefer.

This work is supported by the U.S. National Science Foundation under grant number CHE-1661604.

For an academic overview of this project, check our paper published in the Journal of Chemical Theory and Computation: Fermi.jl: A Modern Design for Quantum Chemistry

Fermi focuses on post Hartree--Fock methods. Currently, only restricted references are supported. This is intended as a research code with an ever growing collection of methods implemented in the package itself. However, the Fermi API is designed to make high performance pilot implementations of methods achievable.

Currently, we have implementations of:

Method Conv. DF
RHF Y Y
RMP2 Y Y
RCCSD Y Y
RCCSD(T) Y Y

Install

Install Fermi by running,

pkg> add Fermi

To access the package manager (pkg>) start the Julia terminal and hit ]. Alternatively, you can run

julia> using Pkg
julia> Pkg.add("Fermi")

If you would like the latest updates, use instead

pkg> add Fermi#master

Running single point energies

A minimal example of a computation is provided here. For more info check the documentation.

First, define a molecule

@molecule {
  O        1.2091536548      1.7664118189     -0.0171613972
  H        2.1984800075      1.7977100627      0.0121161719
  H        0.9197881882      2.4580185570      0.6297938830
}

Choose a basis set

@set basis sto-3g

Finally, run a computation

@energy ccsd;

Fermi Ecosystem

Molecules.jl: A package that deals with Atom objects. It can parse XYZ files and compute properties related to the position of nuclei.

GaussianBasis.jl: A library for integrals and basis set objects. It can parse .gbs basis set files and create BasisFunction and BasisSet structures. Integrals over Gaussian basis are computed using libcint.

Contribute

PR's, issues, and suggestions are very welcome! You might consider reaching out before starting work so that we can avoid duplication of efforts. Besides browsing our issues for things that needs fixing/enhancement you can check the desired features below for ideas of what you can do! Contact Gustavo Aroeira for any inquiries.

Desired Features

1. New Methods for Energy Computations

  • Unrestricted MP2
  • Unrestricted CC and High order CC methods (e.g. CCSDT, CCSDTQ)
  • Configuration Interaction (CID, CISD, FCI, selective CI, etc)
  • Relativistic Methods
  • Methods beyond Born-Oppenheimer approximation
  • Excited States

2. Properties

  • Dipole Moments
  • Polarizability
  • IR intensities
  • Harmonic Frequencies
  • Anharmonic Frequencies

3. Computational schemes

  • GPU Computations
  • Distributed Computations