Documentation
Installers
Source
Release Notes
Advertised Version: 1.8 Continuous Version: 1.8 Release Date: 11 May 2023 Documentation: https://psicode.org/psi4manual/1.8.x/ . 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_resultsto 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_exchangepresent. Basis sets can be specified with version or without (latest):bse:def2-tzvporbse:def2-tzvp:0and insetorassignstatements,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=COSXbyDFDIRJ+COSX. (#2833) - Replace
SCF_TYPE=LINKbyDFDIRJ+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_ptrs, not raw pointers. (#2775, #2493, #2855) - Remove deprecated code:
- Old c-side NBOWriter. (#2856)
Matrix.diagonalizeoverloads. (#2837, #2693)- Function
rspdiagonalizer 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
normalizeandschmidt_addfrom 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_polarizedfunction 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-loglevelorpsi4.set_output_file(..., inherit_loglevel=True)prevents psi4 from resetting the log level, even to default. (#2932) - Add CMake options
psi4_SKIP_ENABLE_FORTRANandpsi4_INSTALL_CMAKEDIRto sidestep Fortran compiler detection when linking Fortran addons and to specify the psi4Config.cmake install location, respectively. (#2946) - Deprecate ERISieve. (#2935)
- Implement
CompositeJKclass 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_ORDERINGto 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=Truefor the reference geometry. (#2827) - Fixes DLPNO-MP2 segfault with Cartesian basis sets by fixing bug in
PointsFunctionclass. (#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 listbug 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/psi4orpsi4.__init__.py. (#2948) - Fixes a difference in definitions so that
wfn.Fa_subsetandwfn.Fb_subsetnow return the correct matrices in the MO basis. (#2958, #1989)
Known Bugs
Search 2918 above. Otherwise, find them and tell us.