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).
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_POL, QMEFP_POL, EFP_POL_DAMPING, all POL –> IND
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() –> 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_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).