This is Fennek, Quantum Chemistry as a Service.
You can post calculations from here, get info about them, or generate a token to use the API!
API documentation: Open Swagger UI
Fennek is a decentralized system consisting of a Java Spring Boot API service
and a Java worker using BLAS and the fintl library.
Layered design with strict bottom-up dependencies:
C Interface (iso_c_binding)
│
Drivers (OpenMP shell-pair/quartet loops)
│
Integral Kernels (Obara-Saika VRR/HRR)
│
Basis / Boys Fn / Utilities
│
Precision (kinds, constants, thresholds)
| Directory | Modules | Role |
|---|---|---|
core/ |
precision, util |
Numeric constants, Cartesian indexing tables |
special/ |
boys |
Boys function F_m(x) via erf + upward recurrence |
ints/ |
overlap_kinetic, nuclear, eri_{4c,3c,2c}2e
|
Shell-level integral kernels (OS recurrence) |
driver/ |
one_electron_driver, two_electron_driver
|
Full-matrix assembly with symmetry, parallelization and Schwartz screening |
interface/ |
integrals, integrals_shells
|
C-binding API (driver-level and block-level) |
Wave function \(\Psi(\vec{r}_1, \vec{r}_2, ..., \vec{r}_N)\), abbreviated \(\Psi(\vec{r})\) from now on,
describes
the quantum state of a molecular
system.
Hamilton Operator \(\hat{H}\) describes energy contributions on molecular system.
Nuclear-nuclear repulsion for fixed nuclei is a constant in the BO approximation and not included in the (electronic) Hamiltonian.
Energy of the molecular system is calculated by evaluating the wave function with the Hamilton Operator
\(\hat{H}\Psi = E\Psi\).
For a general trial wave function, the expected
energy is calculated by \(E[\Psi] = \frac{\langle \Psi \mid \hat{H} \mid \Psi \rangle}{\langle \Psi \mid
\Psi\rangle}\).
Energy minimization \(E_0 = \min_{\Psi} E[\Psi]\) is done using the variational principle:
It states that the energy calculated by a trial wave function is always greater or equal to the true
ground-state energy \(E[\Psi] \geq E_0\).
The goal is to find the wave function to minimize the energy:
In simple terms, we are trying to find the lowest point in a landscape that's defined by the wave function parameters.
HF approximates the molecular wave function as a single Slater determinant that is constructed from
molecular
orbitals.
This approximates the influence of all other electrons on one electron (the electron-electron correlation)
with an average field, Hartree-Fock is therefore a mean-field theory.
The procedure is then to find optimal molecular orbital coefficients that minimize the energy.
A molecular integral kernel using contracted GTO written in Fortran with a C interface and an included python API wrapper.
Source code under fintl repository
Fintl and the SCF worker use a shell-based basis format.
A shell is a contracted GTO.
In Fennek, a Shell is defined as:
ContractedGTO(Integer L, List<PrimitiveGTO> primitives)
where
PrimitiveGTO(double exponent, double coefficient)
In Fintl a shell is defined as:
type :: shell_t
real(dp) :: center(3)
integer :: L !(S: 0, P: 1, D: 2, ...)
integer :: n_prim !number primitives
integer :: n_cart !number cartesians
real(dp),allocatable :: expo(:), coeff(:), norm_coeff(:,:)
end type shell_t
The compatibility layer uses AOShell from the worker as
AOShell(Integer L, Integer nPrim, Integer nCart, Coordinate center, List<Double> coefficients,
List<Double> exponent)
and a parser into the fintl shell lists. Since all primitives in one shell have the same L, all have the
same number of cartesians.
| UUID | Basis Name | Auxbasis Name | E_SCF | E_Elec | E_Nuc | n_iter | properties | configuration | |
|---|---|---|---|---|---|---|---|---|---|
| 5df84753-b3a8-4267-9684-eab3f996c1c5 | def2-QZVP | def2-universal-JKFIT | -76.0673994555878 | -85.36815854030233 | 9.300759084714525 | 40 | {} | {diis=true, rijk=true, fermi=false, enConv=1.0E-6, dampFac=0.5, maxIter=100, scfMethod=HF} |