PSI4

PSI4 utilizes modern density-fitting techniques and is designed for efficient multi-core implementation of DFT, MP2, SAPT, and coupled-cluster calculations.

Our Software Ecosystem is expanding with the help of PSI4, a powerful C++/Python core that can seamlessly integrate with and be enhanced by independent community projects.

PSI4 is freely available and distributed under the open-source LGPL3 license, with the aim of promoting use in academia, industry, and research.

PSI4, a powerful computational chemistry software, offers a user-friendly interface with straightforward input files that facilitate ease of use. Additionally, it streamlines various routine tasks such as basis set extrapolation and counterpoise correction, saving valuable time and effort for researchers. By automating these common procedures, PSI4 enhances the efficiency of computational chemistry calculations, allowing scientists to focus on their scientific inquiries and analysis.

PSI4 diligently ensures the accuracy of code modifications through the utilization of continuous integration and code coverage tools. By seamlessly integrating these tools, PSI4 effectively evaluates code changes and guarantees the maintenance of up-to-date documentation.

PSI4 can be integrated into your workflow as a Python module. The use of plugins allows for convenient expansion of the software's capabilities.

v1.8.2 — October 2023

Advertised Version 1.8.2 was released on October 3, 2023, along with Continuous Version 1.8.2. Detailed documentation can be found at https://psicode.org/psi4manual/1.8.x/, and build documentation is available using #2965. Public, GitHub source, CMake build, DNE Conda binary installers, DNE Docker Span: 7 PRs.

v1.8.1 — July 2023

The advertised version of the software is 1.8.1, and it is continuously updated to the same version. The release date for this version is 13 July 2023. Detailed documentation for this software can be found at https://psicode.org/psi4manual/1.8.x/. For build documentation, please use #2965. This software is publicly available and can be accessed through GitHub source, CMake build, DNE Conda binary installers, and DNE Docker. The span of this software covers 7 PRs.

v1.8 — May 2023

Advertised Version 1.8 Continuous Version 1.8 Release Date: May 11, 2023. For documentation purposes, please refer to https://psicode.org/psi4manual/master/index.html in the meantime, and check https://github.com/psi4/psi4/issues/2965 for build documentation. Public, GitHub source, CMake build, Conda binary installers, Docker Span: 78 PRs.

v1.7 — December 2022

The advertised version of the software is 1.7, and it is continuously being updated to the same version. The release date for this version is 6 Dec 2022. The software documentation can be found at the provided link: https://psicode.org/psi4manual/1.7.0/. The software is publicly available and can be accessed through GitHub source and CMake build. However, the availability of NYI Conda binary installers is not yet confirmed. The software has a span of 141 PRs.

v1.6.1 — July 2022

  • Advertised Version: 1.6.1
  • Continuous Version: 1.6.1
  • Release Date: 8 July 2022
  • Documentation: https://psicode.org/psi4manual/1.6.1/
  • Availability: Public, GitHub source, CMake build, Conda binary installers
  • Span: 6 PRs

Bug Fixes

  • #2616 corrected syntax for spherical basis sets in Molden files.
  • #2615 allows Psi4/Cfour interface to work again after distributed driver caused basis set detection and cbs QCVariable storage to break.
  • #2595 allows Forte to work again after distributed driver interrupted options handling.
  • #2590 allows variables(include_deprecated_keys=True) to work again without error.
  • #2590 allows energy(..., bsse_type=..., dft_functional=my_functional) to work again for string functionals after distributed driver didn't pass along dft_functional to many-body routine.
  • #2590 allows composite inputs that errored as ‘<’ not supported between instances of ‘dict’ and ‘dict’ to work again.
  • #2624 allows passing NumPy location to CMake Python detection.
  • #2620 removed debug printing in coupled-cluster properties.

v1.6 — May 2022

The advertised version of the software is 1.6, and this version is also the continuous version. The release date for this version is 19 May 2022. The NYI documentation for this software can be found at https://psicode.org/psi4manual/1.6.0/. The software is publicly available and can be accessed through GitHub source, CMake build, and Conda binary installers. The software has a span of 138 PRs.

v1.5 — November 2021

Release Notes

  • Advertised Version: 1.5
  • Continuous Version: 1.5
  • Release Date: 27 November 2021
  • Documentation: https://psicode.org/psi4manual/1.5.0/
  • Availability: Public, GitHub source, CMake build, Conda binary installers
  • Span: 60 PRs, roughly 2247-2366

Obtaining

  • Binary installers: see link above
  • Python Anaconda: conda install psi4 -c psi4.
  • Windows conda packages available (#1560)
  • Dropped dependencies: none
  • Added dependencies: none

New Methods

  • Domain-based local pair natural orbital MP2 implemented! Accessible through energy("dlpno-mp2") (#2093, #2313).

External Libraries

  • DFTD4 has been interfaced, so functional calls like energy("b3lyp-d4") run through QCEngine if the upstream software is available (#2142). Note that it’s not the dftd4 executable that’s needed but the dftd4 Python module. For linux, this is distributed via conda install dftd4 -c psi4. It is also available as conda install dftd4-python -c conda-forge, but that’s trickier to get it and Psi4 dependencies installed together happily.
  • QCSchema runs now return the input and other selected text files in the AtomicResult.native_files field, controllable by AtomicInput.protocols.native_files setting (#2361).

Performance Optimizations

  • Direct SCF jobs can now use density screening and incremental Fock build (#2155).
  • DIIS routines have been vectorized in preparation for their refactoring to Python (#2355).

Details of Interest

  • Linear response enabled for UHF references (#2266).
  • Fix SCF memory leak and Vector::dgemv error. Not an correctness issue (#2347).
  • MBIS charges and volume ratios separated as OEProp tasks (#2273).
  • Save gradient and Hessian results from finite difference more thoroughly in QCVars (#2293).
  • Add DFTensor class for better recording and manipulating density cummulant theory (DCT) (#2250).
  • Fix some memory leaks or memory mangement: DFT integration coordinates (#2352), qcdb.BasisSet (#2349), libmints (#2346), cubeprop (#2345).
  • Prepare DIIS for moving to Python (#2298, #2327, #2350, #2325).

Bug Fixes

  • The performance improvement for exchange in range-separated functionals added in #1911 in v1.4 has been found to have correctness issues discussed in #2279. An internal library call was fixed in v1.4.1 with #2283, but some runtime conditions and BLAS calls still lead to errors, so the controlling wcombine option is disabled while under investigation in #2362.
  • Fix mapping for DFT functional names for BrianQC jobs (#2357).
  • Allow UHF gradients to be run on systems without beta electrons (#2344).
  • Fix external potential + FISAPT results when moledule specified with units Bohr (#2331).
  • Fix MCSCF final energy mismatch (#2259)
  • Fix SCF initialization so that linear dependencies get fed properly to FNOCC (#2302).
  • Make Windows conda build more broadly runnable by altering ENABLE_XHOST option (#2292).
  • Fix fractional occupation with symmetry (#2280, #2290).
  • Fix print spacing in FCIDUMP files for 1e and 0e (#2277).
  • Fix a bug where MOM could clear all electrons (#2270).
  • Fix handling of frozen core orbitals in SAPT between monomer and dimer parts. Common case is when one monomer is an alkali cation (#2271).

v1.4.1 — October 2021

Release Notes

  • Advertised Version: 1.4.1
  • Continuous Version: 1.4.1
  • Release Date: 7 October 2021
  • Documentation: https://psicode.org/psi4manual/1.4.0/
  • Availability: Public, GitHub source, CMake build, Conda binary installers
  • Span: 3 PRs

Bug Fixes

  • #2283 largely fixes blatantly wrong SCF energies for omega functionals, especially with threading. Report any persisting discrepancies between set omega_combine true/false to #2279, please.
  • #2273 allows the set scf_properties mbis_charges; energy("scf") route to MBIS charges to run again without failing for missing data. The mbis_volume_ratios property must now be requested separately (properties were combined in v1.4).
  • #2292 lowers the instruction set requirements to run the Windows conda package from AVX2 to AVX. Appears to solve problems in the wild.

v1.4 — August 2021

Release Notes

  • Advertised Version: 1.4
  • Continuous Version: 1.4
  • Release Date: 3 August 2021
  • Documentation: https://psicode.org/psi4manual/1.4.0/
  • Availability: Public, GitHub source, CMake build, Conda binary installers
  • Span: 437 PRs, roughly 1559-2264

Obtaining

  • Binary installers: see link above
  • Python Anaconda: conda install psi4 -c psi4.
  • Windows conda packages available (#1560)
  • Dropped dependencies: deepdiff, Libint1
  • Added dependencies: QCEngine, Libint2

New Methods

  • Add ability to call Axilrod-Teller-Muto (ATM) 3-body dispersion correction from Grimme’s DFTD3. Note that this is for dftd3 call, not energy call (#1491)
  • MP2D energies and gradients with help of external program (#1661)
  • SCAN functionals – SCAN0, revSCAN0, SCAN, revSCAN, BMK, revM06-L (#1597)
  • hybrid LDA functionals – CAM-LDA0, LDA0 (when Libxc puts them in a release) (#1645)
  • FISAPT-D (#1670)
  • Superposition of atomic potentials (SAP) guess (#1665, #1700)
  • Implementation of partial Cholesky orthogonalization (#1760, #1817, #1824 #1842)
  • Overlap half-derivative integrals (#1895)
  • TDDFT for HF, LDA, and GGA SCF wave functions (#1349, #1885, #1814, #2156)
  • UHF Hessians and gradients (#842)
  • LIBxc density screening (#1860)
  • Add MBIS charge partitioning (#1961, #2035, #2056, #2127)
  • External potentials to CP-SCF solver (#2006)
  • FMM and PE(ECP) (#2025)
  • SAPT(DFT) supports hybrid XC kernel in dispersion (#1865)
  • SAPT0-D routines, includes interface (#2081)
  • Electrostatic embedding to FSAPT (#2131)
  • Implement level shifts in RHF, UHF, CUHF, ROHF (#2225, #2237)

New External Libraries

  • QCEngine - A QCSchema runner is now a required dependency since we use it for several interfaces (#1577)
    • DFTD3
    • MP2D
    • gCP
  • CPPE - Polarizable embedding with environment modeled by multi-center multipole expansion with dipole-dipole polarizabilities at the expansion sites (#1401)
  • ADC from ADCC callable from Psi (#1744, #1827, #1848, #1892, #1914)
  • Enables use of GeomeTRIC optimizer in Psi (#1813)
  • Interoperability via Molssi Driver (#1676, #1929, #2163)
  • Psi4fockci (#1855)
  • CCT3 (#1934)
  • Interface to i-pi (#1057)
  • BrianQC GPU module (#1893)
  • Upgrade to Libint2 (#1721)
  • Update RESP and PSIXAS (#2065)
  • Move to Libxc5 (#1101, #2113, #2169, #2191)

Additional Non-Core Contributors to v1.4

@ramis, @jwaldrop107, @obrien951, @dsirianni, @Dpgibney, @derekmetcalf, @alenaizan, @susilehtola, @tovestra, @jeffschriber, @zachglick, @maxscheurer, @chapincavender, @PhillCli, @mdamer, @katrinleinweber, @mfherbst, @edeprince3, @konpat, @kcpearce, @Icyyork, @timostrunk, @shivupa, @taylor-a-barnes, @shannonhouck, @bennybp, @tomspur, @jgonthier, @sjrl, @kis-gergely-dzsi, @ferchault, @andyj10224, @psi-rking, @SimonBoothroyd, @yxie326, @VHchavez, @nlk36701, @edeustua, @leeping, @mquevill, @lazaroid, @sgoodlett

Performance Optimizations

  • omega exchange can now be computed with MemJK algorithm. By not having to shunt range-separated functionals to DiskJK even when they’d fit in memory, 30-40% performance improvements seen (#1749)
  • Big performance improvement to DF SCF Hessian (#1805)
  • Omega combine algorithm for computing exchange terms (#1911)
  • Optimize linalg::triplet (#2053)
  • Thread external charge potential (#1946)

Details of Interest

See section at https://github.com/psi4/psi4/issues/1562#issue-416040173 that won’t fit here.

Bug Fixes

See section at https://github.com/psi4/psi4/issues/1562#issue-416040173 that won’t fit here.

v1.3.2 — May 2019

Release Notes

  • Advertised Version: 1.3.2
  • Continuous Version: 1.3.2
  • Release Date: 17 May 2019
  • Documentation: http://psicode.org/psi4manual/1.3.2/
  • Availability: Public, GitHub source, CMake build, Conda binary installers
  • Span: 3 PRs

Enhancements

  • #1576 regularize MP2 correlation QCSchema variable and move psi4 --json output to tmpfile.

Bug Fixes

  • #1602 fixes multiple bugs in NBOWriter that make all previous Psi-generated NBO files suspect.
  • #1607 explicitly allow loading pickles in np.read in psi4.core.Wavefunction deserialization. This is needed for Psi4 to work with NumPy >=1.16.3, when the pickle-loading-default changed.

v1.3.1 — April 2019

Release Notes

  • Advertised Version: 1.3.1
  • Continuous Version: 1.3.1
  • Release Date: 15 April 2019
  • Documentation: http://psicode.org/psi4manual/1.3.1/
  • Availability: Public, GitHub source, CMake build, Conda binary installers
  • Span: 5 + 4 partial PRs

Enhancements

  • #1570 (partial) better format exception when run_json encounters error. set_options can be used for local options, e.g., set_options({'scf__d_convergence': 8}).
  • #1578 (1st commit) update schema name to qcschema_[in|out]put, use dtype=2 Molecule in schema, move psi4:qcvars to extras/qcvars.
  • #1592 print the IR intensities for analytic RHF Hessians, not just compute, test, and export them.

Building

  • Now requires QCElemental v0.3.3, which brings in Pydantic.
  • #1560 add Windows package building.
  • #1571 update Windows MKL/OpenMP build for MKL 2019.
  • #1572 expect libderiv/libderiv.h like everyone else, not libint/libderiv.h.

Bug Fixes

  • #1577 (partial) fix CFOUR ERROR CODE and DROPMO formatting for Cfour interface.
  • #1587 no change to code itself, but the conda dftd3 package has been rebuilt (conda update dftd3 -c psi4) to not segfault on Windows WSL and some Linux architectures.
  • #1585 (1st & 3rd commits) Per-stage options handling in cbs() previously wasn’t stashing options correctly.
  • #1592 restore keyword cphf_tasks needed for psi4numpy polarizability.

ACS Spring 2019 — Orlando

Psi4 developers and group members had the opportunity to showcase their expertise and contributions at the MolSSI Sustainable Software Symposium, as well as various other symposia within the PHYS and COMP divisions. During these events, several enlightening talks were delivered, two of which are highlighted below.

Roberto Di Remigio delivered a talk on the topic of "Reusable Components for Quantum Chemistry Software." His presentation shed light on the importance of developing components that can be utilized across different quantum chemistry software, emphasizing the significance of collaboration and sharing within the scientific community.

Lori Burns, on the other hand, presented her insights on "Composing and Decomposing Quantum Chemistry Software: Adventures with the Psi4 Ecosystem." Her talk explored the intricacies of the Psi4 Ecosystem and the challenges and successes encountered in the process of composing and decomposing quantum chemistry software. By sharing her experiences, Lori Burns provided valuable knowledge to the audience, fostering a deeper understanding of the subject matter.

These talks, among others, served as a platform for the Psi4 developers and group members to contribute to the advancement of sustainable software in the field of quantum chemistry.

v1.3 — February 2019

Release Notes

  • Advertised Version: 1.3
  • Continuous Version: 1.3
  • Release Date: 28 February 2019
  • Documentation: http://psicode.org/psi4manual/1.3/
  • Availability: Public, GitHub source, CMake build, Conda binary installers
  • Span: 335 PRs, roughly 1065-1558

Major Points of Interest

  • Added native Windows compatibility without the WSL requirement.
  • DFT collocation grids can now be cache in-memory to avoid extra computation and lowering the total cost of DFT by up to a factor of two (#1233).
  • Wavefunctions can now be serialized to disk and back using Wavefunction.to_file/from_file (#1304).
  • Psi4 is now Python 3.6+ only.
  • Physical Constants updated to CODATA 2014 (#1213)
  • SCF iterations are py-side for easier access and logic (#953)
  • RHF analytic dipole derivatives. This means IR intensities when using analytic second deriv (#1382 ).

Obtaining

  • Binary installers: see link above
  • Python Anaconda: conda install psi4 -c psi4.
  • All Linux (and Windows WSL) binaries now built with AM=8 libint.
  • To obtain v1.2, use conda install psi4=1.2 libint=1.2.1=h87b9b30_4 -c psi4 (#1533)

New Methods

  • Improved support for the MolSSI QC Schema interface v1
  • VV10 dispersion is now available for UKS references.
  • Cubeprop can now compute the FRONTIER_ORBITALS and DUAL_DESCRIPTOR quantities.
  • nZaPa-NR basis sets have been added (#1346 ).
  • The recursive driver can now compute N-body gradients and Hessians.
  • CBS composite calculations can now use arbitrary options (frozen core, relativistic effects) or basis sets for different stages (e.g., scf, correlation, delta) (#1235)
  • Rework of SAD guess (#1451, #1452, #1456, #1458, #1477, #1479, #1481, #1438), fixing issues with fractional occupations, ECPs, and ghost atoms. Sad with spin-averaged fractional occupations is now the default guess in Psi4, yielding performance improvements, especially significant for unrestricted and restricted open-shell methods, for which the former default guess was GWH.
  • Implemented the on-the-fly extended Huckel guess (#1498, #1529), which is based on the SAD solver.
  • molecule {...} will take xyz (element symbol or atomic number) or psi4 formats. docs
  • overall chgmult now specifiable through 1 3\n-- before any fragments.
  • can specify atomic number, mass number, mass, ghosting, extra-label in mol spec.
  • Frozen core now aware of charged fragments and implements “previous shells” freezing, using e.g. freeze_core {1,2,...} (#1350).
  • Finite difference properly handles user-specific symmetry (#1424).

New Methods (beta)

  • TDDFT for HF, LDA, and GGA SCF wave functions (#1349). Guts are ready; interface is not.

New External Libraries

  • QCElemental - A library for CODATA, molecule manipulation routines, and periodic table information.
  • RESP - A restrained electrostatic potential fitting plugin.
  • PylibEFP - A Python API for I. Kaliman’s libefp.
  • Libxc - Libxc isn’t new, but we’re finally using directly from upstream (#1502).

First Time Contributors

  • @raimis - #1399, #1185, #1183, +70 more!
  • @obrien951 #1359, #1222, #1130, #1140, #1100, #1097
  • @zachglick #1453, #1304, #1291
  • @tovrstra #1510, #1506, #1500
  • @timostrunk #1133, #1128, #1127
  • @mdav2 #1374, #1142
  • @chapincavender #1364
  • @janisozaur #1321
  • @rainli323 #1131
  • @yxie326 #1083

Additional Non-Core Contributors to v1.3

  • @JonathonMisiewicz #1518, #1487, #1379, #1424, #1435, #1378, #1352, #1337, #1336, #1289, #1310, #1299, #1214, #1150, #1024, #1139, #1108
  • @susilehtola #1475, #1493, #1481, #1479, #1472, #1458, #1460, #1468, #1456, #1452, #1451, #1260
  • @PeterKraus #1470, #1350, #1405, #1235, #1303, #1262, #1232, #1138, #1123, #1119, #1109
  • @hokru #1320, #1377, #1346, #1300, #1244, #1241
  • @alenaizan #1365, #1042, #1294
  • @tyzhang1993 #1437
  • @tomspur #1257

Performance Optimizations

  • DFT grid generation is now threaded (#1291).
  • DFT collocation grids can now be cache in-memory to avoid extra computation and lowering the total cost of DFT by up to a factor of two (#1233).

Psi Developer Upgrade Guide

  • Psi4 now requires C++14 (up from C++11)
  • The C++ code base was reformatted using clang-format and the provided format file (many PRs). Also clang-tidy was run for several transformations.
  • EFP_POLQMEFP_POLEFP_POL_DAMPING, all POL –> IND
  • outright cbs(...) calls –> energy(cbs, ...)
  • doublettripletcreatehorzcatvertcat and the blocked matrix “new” and “delete” are now free functions, rather than static methods in Matrix. Also, create for Vector a free function now (#1447).
  • Wavefunction.reference_energy() –> Wavefunction.energy() in keeping with grad/hess (#1445).
  • Deprecate the c-side Wavefunction.frequencies member data and getter/setter. getter now reads off the py-side member data. setter will go away entirely (#1445). More deprecations in (#1394).
  • Non-Grimme B97 is now B97-0 (#1436, #1403 ).
  • Can run pytest in parallel with pytest-xdist. Known that final exit won’t be clean.
  • Regularize Wfn and P::e psivar access for scalars and arrays (#1393) in accordance with (#1375). Mostly get_variable.
  • Deprecated LAPACK routines removed (#1314 ).

Developer Interests

  • Cleans up the Matrix class for non-totally symmetric irreps (#1383).
  • Psi4 is now C++17 compatible (#1345).
  • DFT grid generation is now threaded (#1291).
  • findif is now “metadata”-based to allow for greater serialization (#1289).
  • Additional documentation and notes on alpha/beta for DFT functionals (#1260).
  • dpd.gbl has been removed (#1254).
  • The CC* modules are moving to a CCWavefunction based solution (#1253).
  • CBS has been reworked to be dictionary based to allow for greater flexibility (#1235).
  • Updated conversion factors to CODATA 2014 (#1213).
  • pthreads has been removed from Psi4 (shall not return, #1199).
  • Empirical Dispersion has been refactored to a new unified interface (#1151).
  • OEProp has been split into many small modules allowing greater flexibility (#1133).
  • SCF now throws a SCFConverenceError upon reaching maximum iterations (#1130).
  • Standardizes memory printing to [GiB] (#1097, …)
  • DIIS maximum absolute error criterion for SCF, instead of the default RMS error (#1460).
  • EFP/EFP and SCF/EFP accessed at driver layer, not multiple places in C-layer. EFP object now core.Molecule.EFP, not Process::environment.EFP (#953).
  • All molecule parsing and validation moved py-side. So chg/mult physics checked upon creation, not upon SCF. Form mols from_stringfrom_arrays, or from_dict (#953).
  • Read access to T1/T2 amplitudes py-side (#1344).
  • More functions added to PSI_API for plugins (#1400).

Bug Fixes

  • Fixes an error where the CBS extrapolation technology was not comparable with FNO-CC* methods (#1377)
  • Fixes an issue where relativistic basis sets were not compatible with SCF stability analysis (#1374).
  • Fixes an issue where JSON called from the command line did not correctly write an output (#1369).
  • Fixed an error where float options when set as integer were not correctly cast (#1352 ).
  • Correctly throws when Yukawa functionals are called from LibXC (#1260).
  • Fixed a bug where casting from a small basis was incompatible with symmetry-breaking displacements (#1139).
  • Ghost atoms were incorrectly attributing to core electron counts (#1109).
  • Fixes an issue in DFHelper memory estimation (#1100).
  • Fixes range-separate disk gradient paging (backported in v1.2.1, #1096 )
  • Fixed inconsistencies in the passing of DF_FITTING_CONDITION; the default value is now 1e-10 in line with what was actually used by the code before.
  • Fixed inconsistencies and bugs in formatted checkpoint files (#1475). Code assumes that the post-HF wave function contains a correlated density.
  • Fixed dzvp basis set that was malformed from EMSL (#1554).
  • Added full element range to pbeh-3c basis def2-msvp (#1554).
  • Fixed various memory errors (#1520 , #1488, #1489, #1480, #1469, #1476, #1441, #1440, #1432, #1427, #1422 ).
  • Fixed couldn’t switch from ECP basis to non-ECP basis in same input. Prevent non-matching ECP-ness in cast-up basis (#1494).
  • Fix precision and formatting and truncation of Molden output files (#1510).
  • Now big-endian compatible (#1464).
  • Fix irrep ordering in FCIDUMP (#1453).
  • Fix BlockOPoints segfault (#1525).
  • Fix race condition in maximum orbital gradient of parallel ODCT (#1435).
  • Fix previously little-used symmetry operations on core.Matrix (#1383).
  • Fix nasty SAPT double free bug (#1398 ).
  • Fix integer overflow in SAPT (#1364).

Higher-Order SAPT

Methods like SAPT2+/aDZ and SAPT2+(3)+dMP2/aTZ provide a physical decomposition of an interaction energy.

A thorough investigation into the computational cost and precision of Symmetry-Adapted Perturbation Theory (SAPT) for forecasting non-covalent interaction energies is presented. This analysis considers the method (SAPT0, DFT-SAPT, SAPT2, SAPT2+, SAPT2+(3), and SAPT2+3, with and without CCD dispersion for the last three) and basis set (Dunning cc-pVDZ through aug-cc-pV5Z, including truncations of diffuse basis functions wherever computationally feasible). To enhance accuracy for hydrogen-bonded systems, we incorporate two corrections - exchange-scaling (sSAPT0) and the supermolecular MP2 interaction energy (δMP2). Regarding the highest error performance relative to computational effort, we suggest the following SAPT standards: SAPT2+(3)δMP2/aug-cc-pVTZ as the gold standard, SAPT2+/aug-cc-pVDZ as the silver standard, and sSAPT0/jun-cc-pVDZ as the bronze standard. The respective mean absolute errors in interaction energy across the S22, HBC6, NBC10, and HSG databases are 0.15 (62.9), 0.30 (4.4), and 0.49 kilocalories per mole (0.03 h for adenine-thymine complex).

v1.2 — July 2018

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 add PSI_API to the psi4 repo to make sure the core.so you’re linking against is exporting the symbol you need. See example here. Or just file an issue with your lost symbol.
  • 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 and RHF.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 uses mkl_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 on bash. Since conda 4.4 c. Dec 2017

Known Bugs

  • PCM-ROHF is broken. See #999
  • ERD interface is broken and disabled

PsiCon 2018 — GaTech

The conference will take place at the Molecular Science and Engineering (MoSE) building at Georgia Tech, starting from 10 am on Friday, November 9, until noon on Saturday, November 10. For information on nearby lodging options and local travel arrangements, please refer to http://vergil.chemistry.gatech.edu/directions.html.

Light breakfast and coffee will be served on Friday and Saturday mornings, while lunch will be provided on Friday afternoon. Participants should register at http://vergil.chemistry.gatech.edu/cgi-bin/psi-registration.py in order for us to gather a headcount for planning purposes.