Documentation
Installers
Source
Release Notes
Advertised Version: 1.8 Continuous Version: 1.8 Release Date: 11 May 2023 Documentation: Use https://psicode.org/psi4manual/master/index.html for now. Use https://github.com/psi4/psi4/issues/2965 for build documentation. Availability: Public, GitHub source, CMake build, Conda binary installers, Docker Span: 78 PRs
Required Dependency Changes
- See External Libraries below for dependency bumps.
- Boost header-only libraries for compiling against Libint2. This isn’t a change to Psi4 or to Libint2; it’s just a change to how Libint2 was packaged.
New Methods
- Stability analysis is now supported for unrestricted GGAs. (#2849)
- TDDFT is now supported for unrestricted GGAs. (#2849)
- Triplet TDDFT excitations from RKS are now supported for LDA and GGA functionals. (#2885)
- Implementation of new linker functionalities in intramolecular SAPT (ISAPT) as published in https://doi.org/10.1021/acs.jpca.2c06465 . (#2899, #2950, #2956)
External Libraries
- QCFractal/QCArchive: Continue supporting last official release of QCFractal v0.15.8 and the imminent “next” branch v0.50b10 (available from
-c qcarchive/label/next
). Demonstrateget_psi_results
to make QCFractal runs behave more like serial runs. (#2835, #2929, #2939) - BSE: Add capability to use basis sets from the Basis Set Exchange when new optional dependency
basis_set_exchange
present. Basis sets can be specified with version or without (latest):bse:def2-tzvp
orbse:def2-tzvp:0
and inset
orassign
statements,set basis bse:sto-3g
. Note that at the moment, you should specify any aux basis sets or Psi4 will fall back to the universal def2-qz aux. (#2905) - DDX: The interface for the pyddx library for continuum solvation is extended by support for the linearized Poisson-Boltzmann model (LPB). NOTE: There is a bug in this as of 1.8.0, but it’s already fixed in master (#2963 and pyddx v0.4.3) and will be released in 1.8.1. (#2918, #2952, #2940, #2921)
- ADCC: After bugfixes upstream, use >=0.15.16 and reconcile ref data. (#2944, #2942)
- PCMSolver: Update to v1.2.3 (#2903)
- Libint2: Psi4 now uses a Libint configured to entirely standard CCA orderings (sss) but that can switch to Psi4’s usual order (gss) at runtime, so no change in internal ordering. This isn’t in upstream Libint, so we’re still on a branch and binary packages need
-c conda-forge/label/libint_dev
. If you build from source, you’ll get an AM5-generated Libint, but if you specify CMakeMAX_AM_ERI=6
(or higher), you’ll get an AM7-generated Libint. (#2861)
Contributors to v1.8
@AlexHeide, @andyj10224, @bennybp, @davpoolechem, @dluu12, @hmacdope, @JonathonMisiewicz, @konpat, @loriab, @lukekurfman, @maxscheurer, @mfherbst, @philipmnel, @q-posev, @TiborGY
Breaking Changes
- Replace
SCF_TYPE=COSX
byDFDIRJ+COSX
. (#2833) - Replace
SCF_TYPE=LINK
byDFDIRJ+LINK
. (#2833)
Performance Optimizations
- Enable UKS gradient threading. (#2839, #2941, #2945, #2941)
- Significant acceleration of the calculation of ESP over grid in memory, now without a race condition. (#2891)
Details of Interest
- Better document DFT code. LSDA gradient (#2839). compute_V, compute_Vx up to GGA and compute_gradient up to LDA (#2863).
- Alpha and beta densities now screened together, so RKS and closed-shell UKS now screen out the same points. The Hermiticity of the UKS energy Hessian should now be restored. (#2834)
- The screen-summed density cutoff for the second derivative is no longer independent DFT_V2_RHO_CUTOFF but now defaults to DFT_DENSITY_TOLERANCE which in turn defaults to the Libxc value. (#2834)
- For memory safety, return integrals as
unique_ptr
s, not raw pointers. (#2775, #2493, #2855) - Remove deprecated code:
- Old c-side NBOWriter. (#2856)
Matrix.diagonalize
overloads. (#2837, #2693)- Function
rsp
diagonalizer and supporting functions tqli and tred2. (#2838) - Selections from libqt/ras_set.cc and declarations of int* get_frzcpi() and int* get_frzvpi() from qt.h. (#2814)
- Fortran, C and C++ style wrappers for DGEGS, DGEGV, DGELSX, DGEQPF, DGGSVD, DGGSVP and DTZRQF are removed. (#2823)
- Psi4 now requires the LAPACK library to provide DGGSVD3 and DGGSVP3. (#2823)
- Remove unused diagonalizers and linear solvers from dfocc. (#2684)
- Remove unused Davidson solver from detci. (#2925)
- Remove unused
normalize
andschmidt_add
from libqt. (#2927) - Remove unused
sq_rsp
(after much work replacing its dependents. (#2928)
- Improve ECP testing and enable MP2 ECP gradients. (#2836)
- Provided a more informative error message when SAD crashes due to an atom having more core electrons than basis functions. (#2859, #2853)
- Rename for clarification
build_disp_functor
->build_functional_and_disp
. (#2874) - Add DAXPBY blas call and Vector method. For BLAS implementations that don’t have it (i.e., Apple Accelerate), reroute through DAXPY. (#2887, #2895)
- Add
build_polarized
function to create a polarized (UKS) version of an unpolarized (RKS) functional. Needed for triplet derivatives. (#2888) - The HF base class has been weakened from having a std::shared_ptr potential_ to having an accessor method, get_potential(). (#2889)
- The COSX method uses a grid, and some grids have points with negative weights. Suggest the user change the grid rather than segfaulting. (#2890)
- Usually SCF_TYPE=DF selects the best algorithm between MemDF and DiskDF and the best subalgorithm for each between incore and out-of-core. Users have always been able to specify the algorithm with SCF_TYPE. Now they can specify the subalgorithm with SCF_SUBTYPE (useful for profiling). For SCF_TYPE=PK, SCF_SUBTYPE also allows specifying incore or two out-of-core subalgorithms (replacing removed keywords PK_INCORE and PK_ALGO). (#2848, #2924, #2926)
- If you call
psi4.set_output_file()
(note that this is the usual fancy one, not the low-levelpsi4.core.set_output_file()
), that file will now have a psi4 header so suitable for cclib parsing. (#2932, #2893) - If you don’t want psi4 managing the logging,
psi4 --inherit-loglevel
orpsi4.set_output_file(..., inherit_loglevel=True)
prevents psi4 from resetting the log level, even to default. (#2932) - Add CMake options
psi4_SKIP_ENABLE_FORTRAN
andpsi4_INSTALL_CMAKEDIR
to sidestep Fortran compiler detection when linking Fortran addons and to specify the psi4Config.cmake install location, respectively. (#2946) - Deprecate ERISieve. (#2935)
- Implement
CompositeJK
class such that J or K algorithms can live in their own class and be combined at runtime. Users call with “+”. (#2833, #2954) - Conventional (non-DF) ccsd(t) gradients will now proceed as finite-difference calculations, which are much more memory efficient. If you still want to access the analytic gradients, add
set qc_module ccenergy
. (#2943, #2913) - Add CMake option
psi4_SHGAUSS_ORDERING
to use sss (all CCA standard orderings) internally. Expert only! See notes at PR. (#2949, #2537) - Psi4 works with next-gen Intel compilers icpx and now uses c++17 standard throughout. (#2861)
Bug Fixes
- Fixes obvious bug in UV::compute_X. (#2832)
- Fixes orbital read for finite difference Hessian by only passing
write_orbitals=True
for the reference geometry. (#2827) - Fixes DLPNO-MP2 segfault with Cartesian basis sets by fixing bug in
PointsFunction
class. (#2840) - Fixes a bug causing crashes upon linearly dependent basis sets for some correlated methods. (#2857)
- Fixes a bug disabling non-orbital optimized DCT with spin restriction. (#2860)
- Fixes
Atom not in list
bug with geometric optimizer when using 2-letter elements. (#2872, #2871) - Fixes very minor bug where functionals created by dictionary weren’t printing the Libxc citation. (#2877, #2867)
- Fixes bug where optimize(…, engine=“geometric”, molecule=mol) would not run. (#2929)
- Fixes bug where FSAPT with an external potential and without no_com/no_reorient set would return wrong answer. (#2934)
- Fixes obscure case (i.e., Windows normal or Unix elaborate use of CMAKE_INSTALL_*DIR) where the buildsystem install layout was more flexible than the paths glue in
bin/psi4
orpsi4.__init__.py
. (#2948) - Fixes a difference in definitions so that
wfn.Fa_subset
andwfn.Fb_subset
now return the correct matrices in the MO basis. (#2958, #1989)
Known Bugs
Search 2918 above. Otherwise, find them and tell us.