Code Monkey home page Code Monkey logo

fanpy's Introduction

Fanpy: A Python library for prototyping multideterminant methods in ab initio Electronic Structure Calculations

Web: Miranda Quintana Group

Fanpy is a free, open-source, and cross-platform Python 3 library designed for ab initio electronic structure calculations. The Fanpy implementation is based on the mathematical framework called Flexible Ansatz for N-electron Configuration Interaction (FANCI). The adoption of the FANCI framework gives a highly modular structure to Fanpy resulting in 5 modules - Hamiltonian, Wavefunction, Objective, Solver, and Tools. The modular structure offers two greatest virtues, The first is its 'sandbox-like' ability to handle any combinations of wavefunction ansatz and different methods, and the second is the ease of transition from the formal conception of a method to its working implementation.

1. Wavefunctions

The following wavefunctions are already implemented in Fanpy.

Configuration Interaction

  • Configuration Interaction with singles and doubles (CISD)
  • Doubly-occupied Configuration Interaction (DOCI)
  • Full CI
  • Selected CI wavefunctions with a user-specified set of Slater determinants

Coupled-Cluster

  • Standard Coupled Cluster (CCSD, CCSDT, ...)
  • CC with seniority-specific excitations
  • Seniority-restricted CC

Geminal wavefunctions

  • Antisymmetrized Product of Geminals (APG)
  • Antisymmetrized Product of Interacting Geminals (APIG)
  • Antisymmetrized Product of rank-two Interacting Geminals (APr2G)
  • Matrix Product States (MPS)

Coupled Cluster-Inspired Geminal Wavefunctions

  • The following 1-reference orbital geminal wavefunctions are implemented incorporating single-like excitations.
  • Antisymmetrized Product of 1-reference Orbital Interacting Geminals (AP1roG)
  • Antisymmetrized Product of Set-separated 1-reference Orbital Geminals (APset1roG)
  • Antisymmetrized Product of Geminals with 1-reference Orbital (APG1ro)

2. Hamiltonians

The following Hamiltonians are implemented:
Electronic Hamiltonian - restricted, unrestricted, and generalized basis

3. Objective

The Objective module combines the wavefunction and Hamiltonian to represent the following forms of Schrodinger Equations.

  • Variational (solving for the expectation value of the energy)
  • Projected (solving for the system of equations generated)

4. Solver

The Solver module supports the following optimizers to optimize/solve the equations from the Objective module.

  • For CI, it supports brute-force eigenvalue decomposition.
  • Optimizers from SciPy
  • Covariance Matrix Adaptation Evolution Strategy (CMA-ES) algorithm from pycma
  • Decision trees and Bayesian optimization algorithms from scikit-optimize

5. Tool

The Tool module provides different utility functions used throughout the Fanpy package—for example, tools for generating and manipulating Slater determinants.

Publications

For detailed information about the mathematical formulation, please take a look at the FANCI publication. The official notes of the Fanpy library can be found in this article.

fanpy's People

Contributors

kimt33 avatar msricher avatar q-pratz-chem avatar crisely09 avatar tczorro avatar rugwed-lokhande avatar sfias avatar clanssens avatar carlosevmoura avatar farnazh avatar ramirandaq avatar

Stargazers

Clinch Leatherwood avatar  avatar Oliver Backhouse avatar Pierre-Francois Loos avatar Prateek Vaish avatar Brian Zhao avatar Karthik Gururangan avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.