Releases: psi4/psi4
v1.9.1, 2024-02-08
Advertised Version: 1.9.1
Continuous Version: 1.9.1
Release Date: 8 February 2024
Documentation: https://psicode.org/psi4manual/1.9.x
Availability: Public, GitHub source, CMake build, Conda binary installers, Docker
Span: 5 PRs
Conda Package Updates
- use pytest v7, as v8 is broken for psi4
- #3107 prefer libint v2.8 (
conda install libint -c conda-forge
) over development (-c conda-forge/label/libint_dev
) and psi4-stored builds - #3103 refine libxc minimum to v6.1.0
Bug Fixes
v1.9, 2023-12-06
Advertised Version: 1.9.0
Continuous Version: 1.9.0
Release Date: 6 Dec 2023
Documentation: https://psicode.org/psi4manual/1.9.x/ .
Availability: Public, GitHub source, CMake build, Conda binary installers, Docker Span: 79 PRs
Required Dependency Changes (3 PRs)
#3022: Updates QCEngine to v0.28
#2968: Updates gdma to v2.3 and switches gdma usage to be selectable at runtime
#3090: Updates QCFractal to v0.52
#2842 Bump Libxc minimum from v5.1.2 to v6
New Methods (6 PRs)
#2992: Adds support for computation of analytic Hessians when using unrestricted DFT with LDA functionals
#3039: adds fitted SAP guess described in J. Chem. Phys. 152, 144105 (2020) and accessed through set guess sapgau (backported to v1.8.2)
#3002 / #3011: Implements new option for GUESS keyword, MODHUCKEL, using a Huckel guess computed on-the-fly using atomic UHF and a modification to the generalized Wolfsberg-Helmholz formula from doi:10.1021/ja00480a005
#2982: Adds the ability to construct basis sets from combinations of two constituent basis sets, via either a simple combination or through the Complementary Auxiliary Basis Set (CABS) method
#2842: Adds new composite methods r2SCAN-3c, wB97X-3c, and B97-3c, and new density functionals r2SCAN0, r2SCANh, and r2SCAN50 and their -D4 variants. Some of these require recent versions of dftd4-python, dftd3-python (s-dftd3), gcp-correction (aka mctc-gcp), all from the conda-forge channel. The "classic" dftd3 (executable) and gcp from the psi4 channel still work for many methods (e.g., b3lyp-d3) and aren't disabled but are no longer supported.
External Libraries (1 PR)
#3050: Adds Einsums library to build system as an optional dependency
Breaking Changes (1 PR)
#2974: Using the ERISieve class now throws an UpgradeHelper exception: ERISieve.build(orbital_basis, cutoff, do_csam)
--> factory = psi4.core.IntegralFactory(basis); factory.eri(0)
#3095 The old versions of variable
/set_variable
(e.g., get_variable
, arrays
) have been warning-and-forwarding since v1.4 but now raise an UpgradeHelper.
Performance Optimizations (5 PRs)
#3064: Improves performance of call to “psi4 –version”, especially for networked drives
#2851: Improves memory usage of DLPNO-MP2 by better exploiting PAO sparsity during computation of DF integrals
#2994 / #2996: Refactors UHF Hessian code to avoid redundant recomputation of intermediates required in both alpha- and beta-spin components of the calculation
#3080: Disable unnecessary computation of FDDS dispersion for SAPT(DFT) when the DFT functional is set to HF
Details of Interest (30 PRs)
#3095 Allow running a a GRID_ESP or GRID_FIELD property through qcschema. need to pass in grid.dat contents through atin.extras["extra_infiles"] = {"grid.dat": } and be sure to atin.protocols.native_files = "all", then one can retrieve through atres.native_files["grid_esp.dat"] or "grid_field.dat" closes #2307
#2955, #3055: Adds new “SplitJK” backend for composite SCF_TYPE combinations
#3001: Composite SCF_TYPE methods can now be specified using only a J algorithm for non-hybrid DFT calculations
#3024 / #3026: Cleans up multiple libmints classes, including SOBasis and PetiteList, to use std::vector objects instead of manual memory management
#2969: Improves printout of thermochemical property information derived from vibrational analyses
#2937: Changes the BasisSet::print_detail_cfour() function in multiple ways, including using C++-style printout options and string manipulations, using more kocher floating-point comparison methods, and fixing broken URL links
#2995, #3035 : Fixes documentation regarding Hirshfeld volume ratios for one-electron properties and exchange term scaling via the S^2 approximation
#3027: Encapsulates acquisition of physical constants (e.g., Bohr/Angstrom conversion factor) data via QCElemental from a single import in constants.py
#3017: Updates sapt_psivars() docstring in psivardefs.py to more clearly explain the function
#3029: Adds clarifying details to the export docstrings for fix_orientation and fix_com functions in export_mints.cc
#2975: Adds missing LibXC citation to documentation
#3018: Cleans up broken links and deprecated functions in psiapi Jupyter notebook
#3005: Adds clarifying details to cubature.cc code regarding the Chebyshev quadrature implementation
#3078: Refines build process for Libint2 code generator
#2953: Deprecate assignment-from-int* and cast-to-int* operations for the Dimension object, and make multiple significant improvements to the Dimension object under the hood
#2987: Adds capability to acquire more types of F12 integrals Python-side with basis set quadruplets
#2966: Update README display badges and binder demo, and fix bug in serial quick_not_d2ints test
#3056 / #3058: Alters internal handling of documentation building to more effectively handle storage of documentation snapshots of previous code versions
#2961 / #2979: Updates dependencies within Azure CI execution on Windows, and makes general improvements to such execution
#3059: Cleans up documentation regarding management of Psi4 releases
#3088 Removes unnecessary macros kept over from previous usage of Boost, and never removed
#3049: Fixes up code to support Python 3.12 and more modern versions of QCFractal
#3079: Updates documentation regarding usage of composite JK methods and COSX grid defaults
#3081: Sets broken combinations of SCF type and screening method to throw exceptions
#3087: Adds the capability to compute and retrieve gradients with respect to embedded point charges in external potential calculations
#3053: Reworks internal documentation building process to fix broken Psicode redirects and enable capabilities with new Sphinx themes
Conda Package Updates
includes PCMSolver (backported to v1.8.1)
includes libECPInt (build _2 onwards; not present for osx-arm64 with py != 3.10 in build _1 or _0) (backported to v1.8.1)
includes files so psi4 --plugin-compile from Linux and Mac can work off the conda binary compatible with pydantic v1 or v2 in build _2 (backported to v1.8.1)
Features (11 PRs)
#2999 / #3019: still using pydantic v1 API, but now tolerant of a v1 or v2 pydantic environment. (this was already present by patch in build _2 of v1.8.1 on conda-forge.) (backported to v1.8.2)
#3013: allow passing protocols, tag, owner_group, and priority to QCArchive-enabled runs in the distributed driver. Works with qcfractal>=0.50. (backported to v1.8.2)
#2978: Adds new pytest module, test_comprehensive_jk_screening.py, to thoroughly test different combinations of SCF_TYPE, SCF_SUBTYPE, and SCREENING keywords
#2973: Adds new keyword option for SCREENING, SCREENING=NONE, to disable ERI screening entirely
#2981: Adds new keyword, COSX_MAXITER_FINAL, to control how many SCF iterations are performed on the final COSX grid
#3061: Makes Psi4 API compliant with the C++20 standard
#2983: Add clarifying comment to xhost.cmake file
#3052: Fixes Issue #3040 by internally tracking per-iteration SCF energies and adding/modifying tests in test_scf_options.py for testing initial guess energies with different options
#3021: Revamps the psi4-path-advisor build assistant functionality for Psi4 and add yaml file listing Psi4 dependencies in a programmatically accessible fashion
#2967...
v1.8.2, 2023-10-03
Advertised Version: 1.8.2
Continuous Version: 1.8.2
Release Date: 3 October 2023
Documentation: https://psicode.org/psi4manual/1.8.x/ . Use #2965 for build documentation.
Availability: Public, GitHub source, CMake build, DNE Conda binary installers, DNE Docker
Span: 7 PRs
Features
- #3019 still using pydantic v1 API, but now tolerant of a v1 or v2 pydantic environment. (this was already present by patch in build
_2
of v1.8.1 on conda-forge.) - #3039 adds fitted SAP guess described in J. Chem. Phys. 152, 144105 (2020) and accessed through
set guess sapgau
- #3013 allow passing
protocols
,tag
,owner_group
, andpriority
to QCArchive-enabled runs in the distributed driver. Works withqcfractal>=0.50
.
Bug Fixes
v1.8.1, 2023-07-13
Advertised Version: 1.8.1
Continuous Version: 1.8.1
Release Date: 13 July 2023
Documentation: https://psicode.org/psi4manual/1.8.x/ . Use #2965 for build documentation.
Availability: Public, GitHub source, CMake build, DNE Conda binary installers, DNE Docker
Span: 7 PRs
Conda Package Updates
- includes PCMSolver
- includes libECPInt (build
_2
onwards; not present for osx-arm64 with py != 3.10 in build_1
or_0
) - includes files so
psi4 --plugin-compile
from Linux and Mac can work off the conda binary - compatible with pydantic v1 or v2 in build
_2
Bug Fixes
- #2963 fixes correctness bug in LPB routine with pyddx; now requires >= v0.4.2
- #2984 avoids segfaulting in DFHelper if molecule given a name with a slash in it
- #2988 adjusts wavefunction plugin template for new doccpi syntax
- #2972 adjusts file handling so PCMSolver can work on Windows
- #3007 adjusts threading test for libomp/libiomp5 equivalence on c-f
- #3008 avoids requiring pytest for DFT dispersion calcs
- #2997 prints full PSIO error messages to cerr, too
v1.8, 2023-05-11
Advertised Version: 1.8
Continuous Version: 1.8
Release Date: 11 May 2023
Documentation: https://psicode.org/psi4manual/1.8.x/ . Use #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
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.
v1.7, 2022-12-06
Advertised Version: 1.7
Continuous Version: 1.7
Release Date: 6 Dec 2022
NYI Documentation: https://psicode.org/psi4manual/1.7.0/
Availability: Public, GitHub source, CMake build, NYI Conda binary installers
Span: 141 PRs
Required Dependency Changes
New Methods
- Hybrid perturbative methods REMP (https://doi.org/10.1063/1.5086168) and OO-REMP (https://doi.org/10.1021/acs.jctc.1c00280) with
cc_type = CONV/DF/CD
. REMP is essentially a hybrid between MP and CEPA(0) rewritten as perturbation theory (https://doi.org/10.1016/j.cplett.2006.07.081). REMP2 energies and OREMP2 energies and non-CD gradients are available. (#2354, #2653, #2670) - UHF non-orbital-optimized, non-FNO coupled cluster methods: DF/CD energies and DF gradients for UHF CCD/CCSD are available. (#2739)
- Implementation of PCM and COSMO solvation models based on the ddx library. (#2767)
External Libraries
- Works with geomeTRIC v1.0 rather than longstanding v0.9.7. (#2750)
- Internal ADC module removed. External ADCC v0.15.13 module covers its capabilities and more. (#2737, #2785)
- Works with Libxc v5 or v6. (#2815, #2817)
- Replace internal C++ geometry optimizer, optking, with an external Python module. (#2727)
- Most inputs should continue to work as before.
- The fixed_* optimization keywords have been changed to ranged_* options.
- Optimizer output will be changed. Check output.dat for simple convergence/step info and output.log for detailed info.
- IRC convergence behavior different for minima and substep.
- Note that this is a new required dependency.
- Interface to the ddx library for solvation. (#2767)
- Additionally support the next branch of QCArchive with the distributed driver, as well as the longstanding v0.15.8 (#2821)
- Upstream maintained and developed software for Grimme empirical dispersion corrections is now interfaced. The longstanding slight forks maintained by Psi4 folks still work and will be maintained until there's a reason not to. All are still run through QCEngine. Psi4 chooses automatically based on what's detected, so no change to input files needed. Package names and locations are a little different -- see table at PR or in docs. (#2791, #2360)
Contributors to v1.7
@AlexHeide, @andyj10224, @aquaticseatard, @behnle, @bozkaya, @davpoolechem, @JonathonMisiewicz, @JoshRackers, @lazaroid, @loriab, @psi-rking, @maxscheurer, @mfherbst, @philipmnel, @sashashura, @susilehtola, @tallakahath, @TiborGY, @yxie326, @zachglick
Breaking Changes
- MRCC now called with
set qc_module mrcc
rather than "mr" prefix onto method. (#2731) - Arbitrary-order MPn no longer runable with ROHF. Arbitrary-order ZAPTn no longer runable with RHF. Use MPn for RHF and ZAPTn for ROHF. (#2731)
- Downstream plugin users who were still getting wfn from globals will find it has now departed. Please follow the advice it's been issuing for years to do wfn passing. (#2727)
Performance Optimizations
- Improves convergence of DF & CD orbital-optimized methods by implementing coupled DIIS for dfocc module. Can now converge tightly. (#2354, #2669)
- Optimizes the integral transformation step of SAPT(DFT) where the transformed MO is written to disk. (#2481)
- Running wavefunction SAPT0 through the SAPT(DFT) procedure now avoids redundant SCF calculations. (#2481)
- Fixed a bug where UKS was not properly parallelized. (#2824)
Details of Interest
- Migrate density screening from TwoBodyAOInt toward JK objects. (#2547)
- Expanded standard suite testing to check return and QCVariable contracts for remp2, oremp2, omp2, omp2.5, omp3, oremp2, olccd, and filled in some gaps for ccsd, ccsd(t), a-ccsd(t). (#2653, #2632)
- Tightened rms_mograd_convergence default for OO in occ and dfocc modules so that at least small molecules reliably compute energies, gradients, and findif gradients to 1e-6. (#2653, #2669)
- Tightened r_convergence default computed from e_convergence for non-OO in dfocc module. (#2669)
- Syntax modernization and removing unused and clearing memory leaks. (#2610, #2626, #2649, #2663, #2671, #2672, #2654, #2677, #2679, #2666, #2678, #2721, #2772, #2774, #2776, #2805, #2813, )
- Replacing
ERISieve
(#2660, #2657, #2659) - Retire deprecated syntax and machinery. (#2592, #2787, #2809, #2819, #2727)
- Improve docs reliability by turning on strict checking and running at PR time. (#2607)
- Adds contributing excitations to tdscf output for non-C1 symmetry. (#2605)
- If DFT functional returns NaN, throw an error rather than waiting for ADIIS to balk. Note that whether this triggers may depend on the compiler: https://groups.google.com/g/llvm-dev/c/Ys0hpgTFMH8?pli=1 . (#2611)
- Updates LibXC interface so that one can set omega for any functional that contains it, rather than only for a hardcoded list of functionals. (#2643)
- References with more beta than alpha orbitals of a given irrep can now be represented, as docc and socc are computed from alpha and beta rather than the other way around. (#2619)
- Adds an option to FREEZE_CORE called "policy", which enables frozen core settings to be looked up from a list specified in the global variable FREEZE_CORE_POLICY. This is more flexible than NUM_FROZEN_DOCC for situations like SAPT where multiple molecules are run in the same command and may require different individual numbers of frozen cores. (#2667)
- Incremental Fock builds
- Turn off incfock by default for SCF_TYPE=COSX for greater reliability. (#2689)
- Standardizes the incfock implementation of DFJLinK toward the model of DFJCOSK, thereby improving memory usage. (#2792)
- Standardizes the incfock implementation of DirectJK toward the model of DFJCOSK, thereby improving memory usage. (#2808)
- Enhances the incfock implementation of DFJCOSK to be like the others: controlled by
INCFOCK
keyword (replacingCOSX_INCFOCK
), able to recompute the full Fock matrix every n iterations controlled byINCFOCK_FULL_FOCK_EVERY
, and able to disable incfock at a certainINCFOCK_CONVERGENCE
threshold. (#2816)
- Update CC* modules toward internal use of Wavefunction: remove unused code, MOInfo->Wfn data, Libmints for orbital rotation, use Matrix class, Slice notation, orbital indexing management. (#2703, #2696, #2704, #2715, #2719, #2720, #2751, #2753, #2782, #2786, #2812, #2818, #2826)
- Brueckner CC no longer set QCVariable
CCSD TOTAL ENERGY
as the final result but instead set BCCD-specific variables from the final iteration and some other variables from the first iteration. BRUECKNER_ORBS_R_CONVERGENCE parameter tightened when defaulting from E_CONVERGENCE. (#2708) - Renovate PSIO to improve error messaging. (#2711, #2700, #2724, #2741, #2756, #2773)
- Improve Matrix/Vector tech.
- Refactor Vector and IntVector. (#2628, #2705)
- Allow non-symmetric matrix <-> dpdfile2. (#2722)
Matrix::set_block
can be used on matrices that are not totally symmetric. (#2734)- Check Matrix size compatability in gemm(). (#2729)
- Improved
Matrix::transform
's ability to handle edge cases. (#2748) - Improved Matrix::back_transform's ability to handle edge cases. (#2745)
Matrix::get_block
can be used on matrices that are not totally symmetric. (#2752)
- Running DF through CCENERGY (experimental, expert only) may now require set qc_module ccenergy. (#2731)
- Many NYI messages, whether from
ManagedMethodError
,MissingMethodError
, or plainValidationError
from run_* fns have changed their wording and added content. On the whole, this should be helpful, but if you're searching for particular phrasing, you'll likely need to adjust regexes. (#2731) - Capabilities tables in documentation made more detailed and thorough; autogenerated from tests. (#2731)
- Modified the orbital instability following procedure. This should be a minor change for most applications: contact developers if you notice a problem. (#2758)
- LinearK algorithm has been removed as an option to SCF_TYPE=DIRECT (
DO_LINK
is no longer an option). It has been added back throughSCF_TYPE=LINK
that enables integral-direct density-fitted J + Linear Exchange K algorithm combination for JK computations. (#2762, #2768) - Delayed announcement that IR intensities through finite difference Hessians work as of distributed driver in v1.6. (#2469)
- UHF instability analysis is migrated over to use the Python Davidson solver. This adds LDA UKS instability analysis. (#2766)
- The keyword SOLVER_ROOTS_PER_IRREP has been added to allow more fine-tuned control over the roots converged during instability analysis. (#2766)
- Instability keywords have moved from the CPHF module to the SCF module. See the corresponding SCF subsection of the documentation for details. (#2766)
- The LINEQ_SOLVER option for occ has been removed in favor of LAPACK calls. (#2778)
- Kinetic energy, potential energy, and virial energy are added as QCVariables for fully QM HF and CC computations. The variable names are subject to change. (#2769)
- Changed the default scaling scheme of SAPT(DFT) exchange-dispersion energy is now changed from DISP to FIXED which scales the uncoupled Exch-Disp2 by 0.769848. (#2481)
- Added shortcut for SPW92 functional. (#2784)
- Replace
sq_rsp()
function internally with a new wrapper to DSYEV. Deprecatersp()
andsq_rsp()
. (#2686, #2798) - Orbital-optimized occ densities now available on the wavefunction. (#2788)
- DC-06 densities now symmetrized. (#2788)
- Empirical dispersion capabilities changed slightly between dftd3 and s-dftd3. In particular, the former can also do -D2 and the latter can do 3-body -D3 in the same call as 2-body -D3. All Psi4 calls will continue to do only 2-body -D3 as default (regardless of dftd3 or s-dftd3 engine). That is, -d3 is still an alias to -d3zero which is now an alias to a new extension -d3zero2b, which can now be given expl...
v1.6.1, 2022-07-08
- 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 alongdft_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, 2022-05-19
Advertised Version: 1.6
Continuous Version: 1.6
Release Date: 19 May 2022
NYI Documentation: https://psicode.org/psi4manual/1.6.0/
Availability: Public, GitHub source, CMake build, Conda binary installers
Span: 138 PRs
Required Dependency Changes
- SciPy for ADIIS/EDIIS. Can be avoided.
- Python minimum bumped to v3.8.
- No longer need GMP/MPFR to build against Libint2. Better Eigen3, Boost transitive dependency handling. (#2413, #2046)
- Newer Libint2 required (interface change) and need new integrals classes. When in doubt, make a new conda environment to get a suitable Libint2.
- Pytest >=7 is required.
- Perl no longer required for testing. (#2551)
- msgpack-python required to keep numpy arrays serialized when communicating in schema. (#2575)
New Methods
- ADIIS/EDIIS for RHF/UHF. Now the default. (#2320, #2235)
- E(30)exch-ind term in SAPT2+3 without the S^2 approximation. (#2314)
- Linear exchange matrix build (LinK) in Direct SCF algorithm. (#2359)
- "Chain of Spheres" exchange. Used with density-fitted J, this is completely in-core and faster than DF for large system. Access through
SCF_TYPE=COSX
. (#2567)
External Libraries
- libecpint -- switched from internal code to R. Shaw's library. Enable with
-D ENABLE_ecpint=ON
. Analytic gradients and Hessians available (use with caution for post-SCF). Conda packages available for Linux and Mac. (#2368, #2135) - For ADC, the built-in code is deprecated and will only be used if external adcc library is not present. Built-in adc module will be fully removed in v1.7. (#2419)
- adcc, cppe, openfermion, dftd4: some external libraries previously packaged on psi4 conda channel, it is now advisable to obtain from conda-forge. See GitHub Action for details on running with Psi4. (#2454)
- Use of Libint2 is much expanded, including one-electron integrals and F12 integrals. See details below and summary at https://github.com/psi4/psi4/blob/master/doc/sphinxman/source/prog_integrals.rst#one-electron-integral-algorithm-overview. (#2527)
- Ambit >=v0.6 required if ambit enabled. (#2546)
- For CheMPS2, DMRG densities saved to wavefunction to allow natural orbitals. (#2570, #2558)
Contributors to v1.6
@alenaizan, @andyj10224, @brianz98, @carolinesargent, @cgbriggs99, @e-kwsm, @konpat, @lazaroid, @philipmnel, @susilehtola, @TiborGY, @timostrunk, @andysim, @hokru, @jeffschriber, @JonathonMisiewicz, @jturney, @loriab, @maxscheurer, @zachglick
Breaking Changes
- Require adcc 0.15.9 and possible adjustment to environment keyword. (#2393)
- Scalar Debye-based n-pole components QCVariables are retired, replaced by atomic-units arrays (e.g.,
CC DIPOLE X
-->CC DIPOLE
. (#2479) - External charges locations now always specified in Bohr, rather than units of molecule. Also, creation of QMMM object is discouraged. Instead, pass charges and locations through
external_potentials
keyword argument. (#2515) - In composite (CBS) methods, extrapolation functions like
corl_xtpl_helgaker_2
must be referred to as strings, not objects. User-supplied ones use NumPy arrays rather than psi4.core.Matrix objects and must be registered with aregister_xtpl_function
function call. In any inputs where the cbs() function was referred to as an object (e.g.,energy(cbs)
), it must now be referred to by string (e.g.,energy("cbs")
). Functions analogous tosherrill_gold_standard
must be referred to as strings and registered withregister_composite_function
. Running old inputs will trigger update guidance. (#2526, #2532, #2575) - The default
energy("sapt0")
code changed its default density-fitting basis, so it's more physically correct and matchesenergy("fisapt0")
values but no longer matches values reported from high-level SAPT methods. (#2582) - Hessian calculations no longer always evaluate gradient beforehand to test safety of projecting rotations. Instead assuming unsafe. Can pass
ref_gradient
array to test on orset findif fd_project T/F
explicitly to control. (#2575) - Previously, the CBS wrapper issued a
clean()
btwn calcs. Plain "string modelchem" calcs likeenergy('hf/cc-pvdz')
were getting caught and also being cleaned, meaning their behavior was slightly different thanset basis cc-pvdz \n energy('hf')
. Now, string modelchem calcs behave like "set" calcs, so for occasional string modelchem calcs (that is,energy|gradient|hessian("mtd/bas")
only), you may need to add a clean in the input. Signatures of this problem are PSIO errors and, in an obscure case, CC amplitudes being all zeros when called as mtd/bas. An example is shown below, collected by modifying steps 6 & 7 ofcbs-xtpl-energy-conv
test: (#2575)
master (pre-v1.6) | ddd (v1.6) | |
---|---|---|
set basis bas; energy(mtd); clean() | ok | ok |
set basis bas; energy(mtd) | PSIO_ERROR: (Incorrect block end address) |
PSIO_ERROR: (Incorrect block end address) |
energy(mtd/bas); clean() | ok | ok |
energy(mtd/bas) | ok | PSIO_ERROR: (Incorrect block end address) |
- The n-body wrapper can no longer do embedding with internally calculated Mulliken charges. Charges must now be provided with
embedding_charges
kwarg. (#2575) - The Libint2 conda packages for Linux are no longer extra-high angular momentum (AM) compared to Mac and Windows. There isn't a proven Libint2 tarball file for higher AM if requested through
MAX_AM_ERI
.
Performance Optimizations
- Improve performance for the DLPNO-MP2 algorithm on many-core machines by around 20%. (#2378)
Details of Interest
- Modernize
-D ENABLE_XHOST
CMake option for processor tuning to more architectures. (#2377, #2384) - Remove potentially buggy convergence metric in DCT. (#2381)
- Plan memory feasibility correctly for large (~1k nbf) (FNO)-DF-CC computations. (#1372, #2382)
- Memory/const cleanup (DMRG #2383; FittingMetric #2417; SCF #2425; FNOCC #2421, #2444, #2561; CCDENSITY #2438; CCEOM #2466)
MERGE* Move DIIS to Python, and implement ADIIS/EDIIS (#2369, #2387, #2436, #2445, #2449) - Allow C++17 syntax in code (#2392)
- Fix guess mix with SAD and other guesses. (#2411)
- Expose to Python (
Vector.clone()
#2375;FittingMetric
#2420;DIISManager::reset_subspace()
#2437; OEProp #2507) - Add an atomic blocking scheme for quadrature grid points (needed for COSX and ddCOSMO). (#2336)
- Reform
ccdensity
keywords around OPDM relaxation. KeywordsONEPDM
,OPDM_ONLY
,ONEPDM_GRID_DUMP
, andOPDM_GRID_DUMP
affected. (#2432, #2434) - Store cc* modules results in QCVariables and use them in testing. These include energies, left- and right-overlap vectors, dipole polarizability, specific rotation, quadrupole polarizability, oscillator strength, Einstein coefficients, rotatory strength. (#2440, #2443, #2447, #2451, #2456, #2460, #2461, #2508, #2514, #2525, #2541)
- Reconcile excited-state QCVariable names in EOMCC, TDSCF, ADC, ADCC. Remove "EOM-" in some cases. In general, a value is stored in each of the following qcvars. (#2462, #2470, #2475, #2506, #2533, #2513, #2538, #2486, #2569)
"{method} ROOT {global_idx_from} -> ROOT {global_idx_to} {property}"
"{method} ROOT {global_idx_from} -> ROOT {global_idx_to} {property} - {transition_irrep} TRANSITION"
"{method} ROOT {global_idx_from} ({irrep_from}) -> ROOT {global_idx_to} ({irrep_to}) {property}"
"{method} ROOT {within_irrep_idx_from} (IN {irrep_from}) -> ROOT {within_irrep_idx_to} (IN {irrep_to}) {property}"
- Libint2
- Switches one-electron integrals to Libint2. (#2388)
- Convert all double shell loops to use Onebody object's shell pair list instead. (#2388)
- Convert multipole potential ints to use McMurchie-Davidson recursions. (#2414)
- Convert X2C ints to use L2 engines. (#2388)
- Convert AngularMomentum ints to use McMurchie-Davidson recursions. (#2414; #2483)
- Screening of one electron integrals to improve efficiency of PCM, EFP, and embedding methods. (#2388)
- Parallelized PCM integral computations, which are typically rate-limiting for implicit solvent SCF. (#2388)
- Three-center overlap integrals using Libint2. (#2489)
- Arbitrary-order multipole integrals (and gradients) with McMurchie-Davidson. (#2496)
- Multipole Potential Integrals (for EFP/PE) with McMurchie-Davidson. (#2504)
- Remove Obara-Saika recursion code. (#2517)
- Algorithm summary https://github.com/psi4/psi4/blob/master/doc/sphinxman/source/prog_integrals.rst#one-electron-integral-algorithm-overview (#2527)
- F12 integrals. (#2502)
- Cleanup
find_occupation
and add more sanity checks to avoid sudden changes of occupation. (#2488) - Removed specialized dipole and quadrupole code from OEProp, so now that printing looks a little different. (#2485)
- Access Yukawa integrals from Libint2. (#2386)
- Adapt DIIS for ambit (#2505)
- Added CI Testing of add-ons, particularly those now advised to get from conda-forge, not psi4, channel. (#2454)
- All tests runable through Pytest. Those written natively for pytest form subset
-m api
. Those in the usual CTest suite form subset-m cli
. (#2454, #2495) - A new logging file is added and default output file naming simplified at edge cases. Set different log level with
psi4 input.dat --loglevel=10
. The log file is the place to look for composite, finite difference, and manybody output. (#2512...
v1.5, 2021-11-27
- 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 viaconda install dftd4 -c psi4
. It is also available asconda 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 byAtomicInput.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).
Contributors to v1.5
@andyj10224, @maxscheurer, @kis-gergely-dzsi, @alenaizan, @Icyyork, @konpat, @zachglick, @susilehtola, @brianz98, @jeffschriber, @hokru, @loriab, @JonathonMisiewicz, @fevangelista, @andysim
v1.4.1, 2021-10-07
- 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. Thembis_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.