v1.9 — December 2023

  • Wednesday, Dec 6, 2023
blog-image

Documentation

Installers

Source

Release Notes

WIP

Advertised Version: 1.9.0 Continuous Version: 1.9.0 Release Date: 6 Dec 2023 TODO Documentation: https://psicode.org/psi4manual/1.9.x/ . Use #2965 for build documentation. Availability: Public, GitHub source, CMake build, DNE Conda binary installers, DNE Docker Span: 76 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 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 and B97-3c, and new density functionals r2SCAN0, r2SCANh, and r2SCAN50

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

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)

#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: Adds support for implicit solvation in linear response and time-dependent SCF calculations via the DDX library

Bug Fixes (19 PRs)

#2963: fixes correctness bug in LPB routine with pyddx; now requires >= v0.4.2 9 (backported to v1.8.1) #2984: avoids segfaulting in DFHelper if molecule given a name with a slash in it (backported to v1.8.1) #2988: adjusts wavefunction plugin template for new doccpi syntax (backported to v1.8.1) #2972: adjusts file handling so PCMSolver can work on Windows (backported to v1.8.1) #3007: adjusts threading test for libomp/libiomp5 equivalence on c-f (backported to v1.8.1) #3008: avoids requiring pytest for DFT dispersion calcs (backported to v1.8.1) #2997: prints full PSIO error messages to cerr, too (backported to v1.8.1) #3037: fixes BasisSet.n_prim_per_shell_ never populated and refactors shell formation in BasisSet. (backported to v1.8.2) #3043 / #3044 - fixes bug resulting in UnicodeDecodeError and corrupted timer.dat files, especially on systems with long hostnames. (backported to v1.8.2) #3048: fixes links to QCElemental and QCEngine functions in documentation. (backported to v1.8.2) #2931: Fixes Issue #2890, causing COSX to crash when grids with negative weights were used #3033: Fixes multiple circular import issues and generally cleans up Psi4 import calls #2986 : Fixes Issue #2985, where one-electron integrals would be returned to the user in different formats (e.g., full symmetric matrix vs. lower triangular representation) depending on function and input parameters #2977: Fixes Issue #2976, where DF-MP2 would crash for very small systems #3086: Fixes Issue #3085, where the “mbis_volume_ratios” keyword as an input to oeprop() was case-sensitive, leading to different behavior based on the case of the argument #3082: Fixes Psi4 forum issue #2979, where printout of dispersion gradients was not labeled properly #3023: Fixes issues with redirects in documentation hosted on Psicode.org, and updates WIndows build dependencies #3089: Fixes issue in build introduced by CMake policy 0144 for old versions of CMake

Contributors to v1.9

@andyj10224, @Awallace3, @carolinesargent, @CDSherrill, @davpoolechem, @EricaCMitchell, @fevangelista, @hokru, @johnppederson, @JonathanMisiewicz, @loriab, @lukekurfman, @mfherbst, @phillipmnel, @susilehtola, @TiborGY, @zachglick