Skip to content

@loriab loriab released this Mar 1, 2019 · 435 commits to master since this release

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 ).


  • 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

Additional Non-Core Contributors to v1.3

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.
  • outright cbs(...) calls --> energy(cbs, ...)
  • doublet, triplet, create, horzcat, vertcat 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() --> 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_string, from_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).

Known Bugs

  • Find them and tell us
Assets 2
You can’t perform that action at this time.