Documentation
Installers
Source
Release Notes
Advertised Version: 1.2 Continuous Version: 1.2 Release Date: 4 July 2018 Documentation: http://psicode.org/psi4manual/1.2/ Availability: Public, GitHub source, CMake build, Conda binary installers
Major Points of Interest
- The DFT kernels were migrated to use LibXC, Psi4 now has 400+ functionals including modern functionals such as wB97M-V.
- The DFT code was optimized leading up to a 4x speed enhancement on 6 cores.
- A new Density-Fitted JK backend was written, DF-SCF is now up to 2x as fast.
- Dozens of additional methods, bug fixes, and performance enhancements.
Obtaining
- Binary installers:
- Python Anaconda:
conda install psi4 -c psi4
.- If you’re working from Psi4 v1.1 (psi4conda) or any conda Psi4 from 2017, do not update. Instead, create a new environment for a new Psi4. You may need to conda update conda beforehand.
New Methods
- SNS-MP2
- Hundreds of new DFT Functionals
- VV10 non-local dispersion
- Dispersion Corrected Spin-Component Scaled Double Hybrid (DSD) Functionals
- Second-Order SCF Convergence of Density Functional Theory
- Coupled Perturbed Self-Consistent Field (HF and DFT)
- Second-Order Electron Propagator Theory (EP2)
- SAPT0 with S^Infinity Induction and Induction Exchange
- DF Gradients for range-separated and CAM functionals
- Support for the MolSSI QC Schema interface v1
New Methods (beta)
- SAPT(DFT)
- Effective Core Potenitals (ECP’s)
New External Libraries
- Gau2Grid - Very fast gaussian to grid collocation matrices
- OpenFermion-Psi4 - Quantum computer interface
- SNS-MP2 - Spin-Network-Scaled MP2 theory
- GeomeTRIC - Geometry optimizations in the TRIC coordinate system.
First Time Contributors
- Peter Kraus (@PeterKraus) - #949, #937, #922, #904
- Holger Kruse (@hokru) - #877, #912, #914
- Shannon Houk(@shannonhouck) - #850, #876
- Johnathan Waldrop (@jwaldrop107) - #921
- Marvin Lechner (@mhlechner) - #698
- Jonathon Misiewicz (@JonathonMisiewicz) - #895, #882, #873, #849, #825
- Adam Abbott (@adabbott) - #761
- Thomas Sexton (@tsexton) - #780
- Tianyuan Zhang (@tyzhang1993) - #743
- Dom Sirianni (@dsirianni) - #776, #952
- Asim Alenaizan (@alenaizan) - #956
Performance Optimizations
- Density Fitted 3-index AO->MO transformation significantly improved.
- MemDFJK module up to 2x as fast as original DFJK for in-core operations.
- DFT XC kenels threaded with a more efficient vectorization.
- DFT collocation matrix generation vectorized and exploits cache-level localization.
- All matrix and vector operations threaded for MIC and large Xeon/EPYC nodes to avoid bottlenecks.
Psi Developer Upgrade Guide
- The driver method
property(...)
has moved toproperties(...)
to avoid python namespace conflicts. - If you have a (non-py-only) plugin,
- Add
PSI_API
to your plugin code in this pattern - If, upon rebuilding against psi4, you get symbol not found errors, run
c++filt
on the mangled symbol name, then addPSI_API
to the psi4 repo to make sure thecore.so
you’re linking against is exporting the symbol you need. See example here. Or just file an issue with your lost symbol.
- Add
- Note that anyone wanting to re-use an objdir will need to thoroughly remove the old pybind11 v2.0.0 from detectability. This means:
<objdir> rm -rf stage/<TAB-TAB-...-TAB>/includes/pybind11
<objdir> rm -rf stage/<TAB-TAB-...-TAB>/share/cmake/pybind11
<objdir> rm -rf external/upstream/pybind11
- Intel 2016 is no longer a valid compiler (doesn’t work with py11 >=2.2.1)
Developer Interests
- Now uses LibXC for DFT XC kernels (#698)
- Reworked the building of superfunctionals to use dictionaries (#922)
- SCF Wavefunctions can now do Hessian-Vector builds see
RHF.Hx
andRHF.solve
for examples. (#760) - The DFT V Potential object now has Hessian-Vector functionality. (#698)
- DFT Functionals now takes advantage of polarized vs unpolarized DFT kernels.
- Added generalized solvers in p4util/solvers.py. These include DIIS and conjugate gradient
- New density-fitted AO->MO transform object. More efficient than previous objects and has multiple modes depending on the type of computation (direct or AO storage).
- ECP SCF energies.
- ECP gradients by finite differences in Python.
- DFT is now has several hundred tests against Psi4 and other implementations
- Shared pointers were rewritten to use
std::make_shared
. (#836) - One-electron integrals from LibMints now properly apply external potentials so that external potentials are now applied evenly throughout the code base (#844).
- Psi4 is now buildable with Ninja (#794)
- Begins to deprecate
char *
from Psi4 (#780) - Pragma header for diagnostics and API’s (#774)
- Improved C++/Python binding docstrings (#761)
- Clang and YAPF configuration files (#753)
- Improved parallel and routine timing information in Psi4 (#743)
- SCF can now be run in symmetry for post-SCF modules that do not use symmetry (#737)
- Psi4 now compiles much faster (~3 minutes with LLVM on 4 cores) (#736)
- NumPy views of Psi4 objects are now correctly reference tracked in cases where C++ returns a new matrix.
arr = wfn.Ca_subset("AO", "OCC").nph
now no longer give noise. (#736) - Basis PyParsing is now simpler and code duplication has been removed (#734 )
- Update cc-pVXZ and add cc-pwCVXZ for Li, Be, Na, Mg (#728)
- MCSCF orbital semicanonicalization (#722)
- C++ Options are now exposed to Python (#720)
- Intermediate sub-system and partial-basis energies from
nbody
wrapped exported as psivars (#952) - Better start/stop/elapsed time printing
Documentation
- Additional Documentation Information (#787)
Miscellaneous
- Added N to ANO0 basis set (#825)
Bug Fixes
- Accidental signed integer overflow when using extremely low memory in DFJK
- wB97X had an incorrect range-seperation parameter. This is now fixed. Note that this did not effect wB97X-D.
- Restricted-irrep finite-difference Hessians were only returning the totally symmetric portion of the Hessian (in #834)
- Analytic HF Hessians were wrong under particular circumstances (#903)
- A bug causing IRCs to converge to the initial transition state was fixed (#882)
Conda changes since v1.1
- MKL linked dynamically through free Anaconda-provided
mkl_rt.so
rather than statically linked. This saves size (since NumPy also usesmkl_rt
) and eliminates incorrect results and threading damping associated with multiple programs accessing BLAS/LAPACK from multiple sources (#748, #755). - Psi4 no longer installs a non-standard gcc5.2 alongside Psi4 on Linux (or gcc feature on Mac). This was necessary when conda’s default 4.8.5 was too low for Psi4’s c++11 requirements, but since conda’s default has leaped to 7.2.0, we use default again. Note that only libraries (e.g.,
libstdc++
) are installed alongside Psi4 now, not compilers (e.g.,g++
). - (generic, not psi4, conda)
conda activate env
works multishell, not just onbash
. Since conda 4.4 c. Dec 2017
Known Bugs
- PCM-ROHF is broken. See #999
- ERD interface is broken and disabled