Psi4 Versions Save

Open-Source Quantum Chemistry – an electronic structure package in C++ driven by Python

v1.9.1

2 months ago

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

  • #3130 fixes symbols list for AM>=12
  • #3127 fixes import when $HOME directory is symlinked
  • #3097 Fix Python3 compatibility in vmd_cube.py

v1.9

4 months ago

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 #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 https://github.com/psi4/psi4/issues/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: 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

Known Bugs

  • Find them and tell us
  • Watch out for deep periodic table ECP, as there's errors suspected

Contributors to v1.9

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

v1.8.2

6 months ago

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, and priority to QCArchive-enabled runs in the distributed driver. Works with qcfractal>=0.50.

Bug Fixes

  • #3037 fixes BasisSet.n_prim_per_shell_ never populated and refactors shell formation in BasisSet.
  • #3043/#3044 fixes bug resulting in UnicodeDecodeError and corrupted timer.dat files, especially on systems with long hostnames.
  • #3048 fixes links to QCElemental and QCEngine functions in documentation.

v1.8.1

9 months ago

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

11 months ago

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). Demonstrate get_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 or bse:def2-tzvp:0 and in set or assign 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 CMake MAX_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 by DFDIRJ+COSX. (#2833)
  • Replace SCF_TYPE=LINK by DFDIRJ+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.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 and schmidt_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<VBase> 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-level psi4.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 or psi4.set_output_file(..., inherit_loglevel=True) prevents psi4 from resetting the log level, even to default. (#2932)
  • Add CMake options psi4_SKIP_ENABLE_FORTRAN and psi4_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 "<Jalg>+<Kalg>". (#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 or psi4.__init__.py. (#2948)
  • Fixes a difference in definitions so that wfn.Fa_subset and wfn.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

1 year ago

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 (replacing COSX_INCFOCK), able to recompute the full Fock matrix every n iterations controlled by INCFOCK_FULL_FOCK_EVERY, and able to disable incfock at a certain INCFOCK_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 plain ValidationError 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 through SCF_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. Deprecate rsp() and sq_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 explicitly disallow 3-body as a tweakable parameter (internally, s9:=0.0). When s-dftd3 is the engine, another set of new extensions, e.g., -d3atm alias of -d3zeroatm turns on 3-body (s9=1.0) and allows user tweaks. This latter is the same behavior as -D4, which turns on 3-body by default. If this seems confusing, state what calc you want — e.g., energy("b3lyp-d3atm") — and Psi4 will figure out if you have the right engine to do the job. (#2791)
  • psi4.core.Molecule.run_dftd3 and qcdb.Molecule.run_dftd3 don't work with s-dftd3. Please file an issue if you really want this capability. run_gcp will use classic gcp or mctc-gcp interchangeably, whichever you have available. (#2791)

Bug Fixes

  • Fixed memory estimates for larger systems in dfocc module by deploying long ints. (#2354, #2669)
  • Fixed OO ROHF printing and setting wrong plain MP2 energies. Fixed wrong Wfn.energy_ for OMP3 & OMP2.5. (#2653)
  • Worked around Intel compiler bug. (#2625)
  • Fixed memory estimation bug in DFTensor that affects fno-df-cc. (#2673)
  • Fixed c1_deep_copy which sent nsopi_ to Wavefunction::epsilon_subset_helper in place of the number of occupied orbitals. When nsopi_[h] > nmopi_[h] for some h, this led to accessing out-of-bounds memory. (#2692)
  • Fixed Mulliken charges used qualitatively in DLPNO-MP2. (#2707)
  • Fixed SCF gradient segfault from serialized Wavefunction. (#2712, #2714)
  • Fixed insidious bug in Lebedev initialization that fails approximately once-in-a-thousand in parallel DFT runs. (#2743)
  • Fixed segfaults in Matrix::transpose and Matrix::transpose_this for matrices that are not totally symmetric. Now performs the transpose or raises an error messages, respectively. (#2740)
  • Fixed arbitrary order methods and MRCC methods to work with distributed driver. (#2731)
  • Fixed CBS extrapolated finite-difference Hessians crashing on molecules with zero dipole moment. (#2759)
  • Fixed so basis_relativistic <name> {...} now works. (#2764)
  • Fixed using multithreading with PK algorithm and small basis sets. (#2760, #2763)
  • Fixed a segfault caused by Libint2's engine.h being indirectly imported into mintshelper.cc. (#2770)
  • Raise an error when a user requests more roots of detci than there are determinants. (#2779, #2780)
  • Fixed a bug where UHF-CCSD properties were incorrect when some orbitals were singly occupied (#2818)
  • Previous to QCEngine v0.26.0 (now required), the pairwise dispersion analysis returned by executable/classic/psi4-channel dftd3 was scaled differently from that by s-dftd3 and dftd4 (any channel). This has been fixed. However, one must be consistent about QCEngine/Psi4/fsapt.py versions. A consistent set are QCEngine >=0.26.0 and Empirical_Disp.dat file generated in the course of energy("fisapt0-d") by v1.7 or later Psi4 and script fsapt.py released with Psi4 v1.7 or later. This is semi-enforced since v1.7 requires v0.26 (fsapt.py is a free agent). Another consistent set is QCEngine <0.26.0 and Psi4 and fsapt.py <v1.7. Mixing old Psi4 or fsapt.py with new QCEngine and classic dftd3 can yield wrong fisapt analysis, and this isn't trapped. (#2791)

Known Bugs

Find them and tell us

v1.6.1

1 year ago

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 along dft_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

1 year ago

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 a register_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 to sherrill_gold_standard must be referred to as strings and registered with register_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 matches energy("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 or set findif fd_project T/F explicitly to control. (#2575)
  • Previously, the CBS wrapper issued a clean() btwn calcs. Plain "string modelchem" calcs like energy('hf/cc-pvdz') were getting caught and also being cleaned, meaning their behavior was slightly different than set 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 of cbs-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. Keywords ONEPDM, OPDM_ONLY, ONEPDM_GRID_DUMP, and OPDM_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; #2575)
  • Allow JK screening to be SCF-iteration-dependent. Make derived JK classes responsible for zeroing their matrices. (#2529)
  • Add option to locate path to Python module from Psi4 executable: psi4 --module. (#2530)
  • Add QCVariables FINDIF NUMBER, CBS NUMBER, NBODY NUMBER to check how many jobs the wrappers are running. (#2544)
  • Use better driver-targeted (e.g., energy vs. findif freq) convergence criteria and determination of what analytic derivatives available. (#2536)
  • Standardize pair energy arrays across CC modules and save them as QCVariables. (#2551, #2568)
  • Add dipole derivative by finite difference of dipoles. IR intensities available. (#2552; #2575)
  • Add means of saving CCSD amplitudes in QCSchema through extras["psi4:tamps"]. (#2328)
  • Various n-body QCVariables have been renamed. Old ones will work for a while. (#2575)
    # from: to
    "CP-CORRECTED {nb}-BODY INTERACTION ENERGY": ("CP-CORRECTED INTERACTION ENERGY THROUGH {nb}-BODY", 1.7),
    "NOCP-CORRECTED {nb}-BODY INTERACTION ENERGY": ("NOCP-CORRECTED INTERACTION ENERGY THROUGH {nb}-BODY", 1.7),
    "VMFC-CORRECTED {nb}-BODY INTERACTION ENERGY": ("VMFC-CORRECTED INTERACTION ENERGY THROUGH {nb}-BODY", 1.7),
    "COUNTERPOISE CORRECTED TOTAL ENERGY": ("CP-CORRECTED TOTAL ENERGY", 1.7),
    "COUNTERPOISE CORRECTED INTERACTION ENERGY": ("CP-CORRECTED INTERACTION ENERGY", 1.7),
    "NON-COUNTERPOISE CORRECTED TOTAL ENERGY": ("NOCP-CORRECTED TOTAL ENERGY", 1.7),
    "NON-COUNTERPOISE CORRECTED INTERACTION ENERGY": ("NOCP-CORRECTED INTERACTION ENERGY", 1.7),
    "VALIRON-MAYER FUNCTION COUTERPOISE TOTAL ENERGY": ("VALIRON-MAYER FUNCTION COUNTERPOISE TOTAL ENERGY", 1.7),  # note misspelling
    "VALIRON-MAYER FUNCTION COUTERPOISE INTERACTION ENERGY": ("VMFC-CORRECTED INTERACTION ENERGY", 1.7),
  • The output generated from wrappers (cbs/composite, findif/finite difference, manybody/nbody) now writes the single-point calc to the output file after completion, not in real-time. Ordinary analytic single-point calcs continue to write to output in real-time. (#2575)

Bug Fixes

  • Allow MBIS volume ratios to be called from set scf_properties ['MBIS_VOLUME_RATIOS']. This is equivalent to the already-working oeprop(...,'MBIS_VOLUME_RATIOS') but now can be used with a QCSchema call. (#2299, #2370)
  • Fixes error in MBE VMFC Hessian. (#2389)
  • Fixes bug in compare_recursive() (#2397)
  • Fixes bug where fchk() couldn't be run on a Wavefunction deserialized from file (#2400, #2408)
  • Fixes bug in MemDFJK affecting TD-DFT excitation spectra with range-separated functionals in asymmetric case. (#2431, #2435)
  • Avert segfault for non-RHF CC response properties. (#2310, #2450)
  • Fixes export of left eigenvector beta in TDSCF scf_response.py. (#2452, #2453)
  • Fixes parallel scaling of Libint2 one-electron integrals by using new Libint2. (#2491, #2413)
  • Fixes finding ambit when specialty ambit path given. (#2500)
  • Fixes bug with Karton 2-point SCF extrapolation. (#2526)
  • Fixes bug where allen_focal_point wasn't working because higher deltas were getting lopped off. (#2532)
  • Fixes CC properties naming bug by making OEProp names flexible. (#2534)
  • Fixes fcidump.py handling of frozen orbitals. (#2545)
  • Fixes incremental Fock convergence bug. (#2550)
  • Fixes bug where non-physical masses couldn't run through QCSchema. (#2557)
  • Fixes testing bug where pytest psi4/ would pick up unconfigured tests so one had to use pytest psi4/tests/. (#2549)
  • Fixes dftd3/gcp/mp2d on single cpu job. (#2548, #2549)
  • Fixes single-atom Hessian by finite difference. (#1683, #2552)
  • Fixes bad performance where SCF gradients took longer with more threads. (#2559, #2581)

Known Bugs

Find them and tell us

v1.5

2 years ago

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 via conda install dftd4 -c psi4. It is also available as conda 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 by AtomicInput.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

2 years ago

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. The mbis_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.