-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Welcome to the official documentation for Fanpy, a free, open-source, cross-platform Python 3 library for ab initio electronic structure calculations. Fanpy is a tool designed for researchers and developers exploring novel wavefunction-based approaches to solve chemical problems.
Visit our group website: Miranda Quintana Group.
Fanpy is built upon the mathematical framework of the Flexible Ansatz for N-electron Configuration Interaction (FANCI):
Here:
-
$\mathbf{S_m}$ is a set of allowed Slater determinants. -
$f\left( \mathbf{m}, \vec{P} \right)$ determines the weight of each Slater determinant$\mathbf{m}$ , parameterized by$\vec{P}$ .
The FANCI ansatz provides a flexible wavefunction structure applicable to various electronic structure methods, including:
- Configuration Interaction (CI)
- Coupled-Cluster (CC)
- Tensor Product States (TPS)
- Antisymmetrized Product of Interacting Geminals (APIG)
Fanpy empowers researchers to develop, implement, and test novel electronic structure methods. Unlike traditional quantum chemistry software designed for well-established methods, Fanpy offers:
- Customizability: Design and experiment with new wavefunctions to tackle unique chemical problems.
- Research Support: Transition seamlessly from theoretical formulation to practical implementation.
Fanpy's design is inspired by the FANCI framework, featuring a modular structure with six key components:
- Hamiltonian Module: Defines the system's energy and properties.
- Wavefunction Module: Manages various wavefunction ansatz.
- Objective Module: Constructs optimization objectives for parameter fitting.
- Solver Module: Solves the defined optimization problems.
- Tools Module: Provides general utility functions to build new wavefunctions.
- Analysis Module: Contains post-processing tools, such as extracting data from results and properties.
Figure: Overview of Fanpy's Modular Structure.
This modularity offers two key benefits:
- Flexibility: Combine wavefunction ansatz and methods in a "sandbox-like" environment.
- Ease of Development: Streamline the process of implementing new theories and algorithms.
Additionally, Fanpy offers an Interface Module that enables seamless integration with other quantum chemistry packages. This integration facilitates the import of various quantities, including one- and two-electron integrals, molecular orbitals, and electronic energies.
An usual Fanpy calculation involves the following steps:
-
Prepare Input Data: Provide the one- and two-electron integrals, which define the quantum system of interest.
-
Define Core Components: Use the Wavefunction and Hamiltonian modules to specify the wavefunction ansatz and system properties.
-
Set Up the Objective: Combine the wavefunction and Hamiltonian to define the Objective, which encapsulates the optimization problem.
-
Solve the Problem: Employ the Solver module to optimize the Objective and obtain results, including the FANCI parameters and energies.
-
Analyze Results: Use the Analysis tools to extract, organize, and interpret the results, facilitating a deeper understanding of the computed properties.
This structured workflow ensures a seamless transition from input preparation to data analysis.
Figure: General Fanpy Workflow for Quantum Chemistry Calculations.
For detailed insights into Fanpy's mathematical and theoretical foundations, refer to the following publications:
Feel free to open an issue on our GitHub repository or contact us directly through the Miranda Quintana Group.
Fanpy is developed by the Miranda Quintana Group.