A library for quantum chemistry
Project description
Open Computational Chemistry (OCC)
A next generation quantum chemistry and crystallography program and library.
Note: occ is in early development, and is undergoing substantial changes regularly - it is not stable, and features are being added & developed rapidly.
Features
Quantum chemistry
Occ is already a fairly fully featured program for ground-state single point calculations in quantum chemistry, including:
- Hartree-Fock (Restricted, Unrestricted and General Spinorbitals)
- Density-Functional Theory (Restricted & Unrestricted Spinorbitals)
- The LDA, GGA and meta-GGA approximations are supported
- Global hybrid functionals (range-separated will be added in the future)
- Density fitting (RI-JK) using an auxiliary basis for all above methods
- Implicit solvation via SMD
Seminumerical exchange (i.e. chain of spheres/COSX) has been implemented, but the performance is not yet good enough to be useful.
Property calculations that are currently available
- Molecular and atomic multipole moments up to hexadecapole (only Mulliken partitioning is implemented)
- Electrostatic potential calculations
- Electron density (of course)
- CHELPG charges
I've recently added an implementation of the XDM dispersion model, which will be properly interfaced and made convenient to use in the future.
Not yet implemented:
- Gradients (and optimization of geometries)
- Perturbation theory (e.g. MP2)
- Coupled-cluster methods
Crystal structures
- Reading CIF files (via gemmi)
- Fast periodic bond detection, generation of symmetry unique molecules, dimers and more...
- CrystalExplorer model energies
- Automatic direct space summation of lattice energies for neutral molecular crystals including Wolf summation.
- Hirshfeld surfaces, and promolecule surfaces
Misc
- Spherical harmonic transforms using FFTs
- Molecular point group detection/determination
- Reading/writing Gaussian fchk files (including MO normalization and reordering of basis functions)
- Reading molden files (including MO normalization and reordering of basis functions)
- Writing numpy
.npy
arrays - Reading QCSchema formatted JSON files.
- Reading basic Gaussian input files
- Marching cubes
- Morton codes for linear-hashed octrees
- Electronegativity equilibration method for charges
First steps have been taken, with a proof of concept python interface for convenience & scripting using pybind11.
Compilation
occ requires a compliant C++17 compiler e.g. GCC-10 or newer.
Dependencies
occ makes use of the the following open source libraries:
- cxxopts
- Eigen3(
eigen3-dev
) - fmt
- gau2grid
- gemmi
- LBFGS++
- libcint
- libxc
- nanoflann
- nlohmann/json
- pocketFFT
- scnlib
- spdlog
And for the library tests/benchmarks:
Getting the source code
First clone the repository:
git clone https://github.com/peterspackman/occ.git
Getting dependencies
Most of the dependencies can be downloaded and compiled via CPM,
but you may wish to use system installed dependencies for libxc
and eigen3
which will be searched for by default.
Note occ
requires eigen version 3.4 or newer, which most operating systems do not package by default.
Caching dependency downloads
If you wish to download and compile all dependencies, but you're a developer or want to avoid downloading
the dependencies every new build, I'd recommend setting up a source cache for CPM
via the environment variable CPM_SOURCE_CACHE
e.g. adding the following to your environment.
export CPM_SOURCE_CACHE="$HOME/.cache/cpm"
For building the repository I highly recommend using ninja rather than make.
Once the dependencies are installed, start an out-of-source build e.g.
mkdir build && cd build
cmake .. -GNinja
OR, if you'd rather download all dependencies you could call cmake with:
cmake .. -GNinja \
-DUSE_SYSTEM_LIBXC=OFF \
-DUSE_SYSTEM_EIGEN=OFF
Generally, speedups can be achieved by allowing the compiler to optimize for your platform using -march=native
or similar flags.
Finally, to build the binary occ
, running
ninja occ
will result in the binary being built under the bin
directory wherever
your build directory is located
Usage
All following usage is a work in progress, expect significant changes constantly for the time-being while the exact input format is decided.
occ
By default occ -h
will print out its usage options, but basic usage
given a geometry e.g. h2o.xyz
format would be:
occ scf h2o.xyz b3lyp 6-31g
Basis set locations
note The path the occ
will use to search for basis sets can be configured with the OCC_DATA_PATH
environment variable,
or you can simply make the basis set available in your working directory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for occpy-0.6.2-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6998dde89846d86d8eaaec70679b3a37ca60f10d0f0db70579e52e1018c2fe94 |
|
MD5 | fb0f3f5f9c17ed91ded0c15b9a1adfc3 |
|
BLAKE2b-256 | b84919306df40e5b1157d44187810f8a4c233c272353ce6410d063dc33de56d7 |
Hashes for occpy-0.6.2-cp312-abi3-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aad0bbd87d22f010d9b8f0569679762d0089a35cf79b0cdc55a5be0abfc41827 |
|
MD5 | 020ae4230712a16a8a51500ded633380 |
|
BLAKE2b-256 | f6ee0d3fd2575bd7155252fb3fdd78c15256bf26bf4917d3b02f6a1e32e0d502 |
Hashes for occpy-0.6.2-cp312-abi3-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9093984225f12238d0ceaa59df333eb02a25ded2ea1693292bf073440e383a17 |
|
MD5 | 2d0fe9642af2bd36b9f80dc9b33a6f5b |
|
BLAKE2b-256 | 9c8e5c0b8cbb9f97df99e76b6554aefb16876b3d198a38fd785328e1fbb1f544 |
Hashes for occpy-0.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52f6a15c7385ab9c4787639d7ec638fded2adb639eae44afc7e7ef5f0ba2ead6 |
|
MD5 | ea64db5c43435b943d6b914368050e46 |
|
BLAKE2b-256 | 15cddb090d64d8a027e6896d261e29f1f83fa341041eebff2030c4cb52ee9ee1 |
Hashes for occpy-0.6.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ec71463aa3df77a3aa3351e57ab2d5f15711b951a8d65576f46f61aac299158 |
|
MD5 | 7257ac271572735b13d48afd0c526d5e |
|
BLAKE2b-256 | 23180ca10a7ea69e12e8ce13cc34895427895f0e658f653498f5ce50aaac512c |
Hashes for occpy-0.6.2-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40c9f4df70e0b809fd47a190295e41b627a99a0f0f8f9919317684709b187fc2 |
|
MD5 | a0751ec1ffe8f898837cc655a46063b3 |
|
BLAKE2b-256 | 0f85f22cb81dc4b83f39b955d7f9a55fccf9ad8e6d2227ad3c33d171bc100491 |
Hashes for occpy-0.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e2e31230a81a8b236e64843447624e521d34d268be22d2ecd94252ed92deb459 |
|
MD5 | bd8a205f1659a054054abb2995722736 |
|
BLAKE2b-256 | 734de8599a28cc399394c6e8ca35bc113f80fea438d230a2bd1a79f3d2a18ce8 |
Hashes for occpy-0.6.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fea3a7e2b0c364e87fdf2b803a63ba794670d506051ba9c609cc16b5917af60 |
|
MD5 | d0d1d3380a7d38f24d4cf5d93912348e |
|
BLAKE2b-256 | d8b02675be70177826e6d342827a1b82ecd7d6f790a8af0ccab509a1aa463c4a |
Hashes for occpy-0.6.2-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 61af8cbe702f812527406ac4296d2f128079808b666bcc3cdb4eeadfad8e830f |
|
MD5 | bdf0829c9adeaef8c746ba4cf0f263e8 |
|
BLAKE2b-256 | 77d25b6f7a6e4e4a1f8f49a4629a613c8a3151fb060ad191fb8ca131167a432d |
Hashes for occpy-0.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df8fc9f59272c043d4e50e920d98fb7974ef91df728807bf40857c9b6547f497 |
|
MD5 | 4be84bd682f51bc980c21a0d57642336 |
|
BLAKE2b-256 | aeb16c0d1b438f869b82acb7b2556153d04341755d449edb6fa6d07da887dae7 |
Hashes for occpy-0.6.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6c0ab942ea231285126d2ec75750b6cd13dfe7b40473d9162f45641c2d0b2e4 |
|
MD5 | 36faa6c9c0a90272e3e42f78821f7809 |
|
BLAKE2b-256 | 64ab550bdf84a8303eee39da95c7bd23c3e543a3054e9c5ef170b32ce6aa8662 |
Hashes for occpy-0.6.2-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 61f45fec736468e1b0e8399b64bd4228e6efc66cbc11b0de126015b09b232c33 |
|
MD5 | ad3bc970ba1d6b8edcf653cec907c5c1 |
|
BLAKE2b-256 | 000ffab98e7d26cbace6c5b4fe97fdd4581289fad003a0621f32427948f62db5 |