Recent Releases of 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
- #3130 fixes symbols list for AM>=12
- #3127 fixes import when $HOME directory is symlinked
- #3097 Fix Python3 compatibility in vmd_cube.py
- C++
Published by loriab over 2 years ago
psi4 - v1.9, 2023-12-06
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 SCFTYPE combinations #3001: Composite SCFTYPE 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::printdetailcfour() 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 saptpsivars() docstring in psivardefs.py to more clearly explain the function #3029: Adds clarifying details to the export docstrings for fixorientation and fixcom functions in exportmints.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 quicknotd2ints 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, ownergroup, 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, testcomprehensivejkscreening.py, to thoroughly test different combinations of SCFTYPE, SCFSUBTYPE, and SCREENING keywords #2973: Adds new keyword option for SCREENING, SCREENING=NONE, to disable ERI screening entirely #2981: Adds new keyword, COSXMAXITERFINAL, 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 testscf_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.nprimpershell 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 “mbisvolumeratios” 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
- C++
Published by loriab over 2 years ago
psi4 - 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
_2of 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, andpriorityto QCArchive-enabled runs in the distributed driver. Works withqcfractal>=0.50.
Bug Fixes
- #3037 fixes
BasisSet.n_prim_per_shell_never populated and refactors shell formation inBasisSet. - #3043/#3044 fixes bug resulting in
UnicodeDecodeErrorand corruptedtimer.datfiles, especially on systems with long hostnames. - #3048 fixes links to QCElemental and QCEngine functions in documentation.
- C++
Published by loriab over 2 years ago
psi4 - v1.8.1, 2023-07-13
Advertised Version: 1.8.1 Continuous Version: 1.8.1 Release Date: 13 July 2023 Documentation: DNE https://psicode.org/psi4manual/1.8.1/ Use https://psicode.org/psi4manual/master/index.html for now. 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 (not present for osx-arm64 with py != 3.10)
- includes files so
psi4 --plugin-compilefrom Linux and Mac can work off the conda binary
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
- C++
Published by loriab almost 3 years ago
psi4 - v1.8, 2023-05-11
Advertised Version: 1.8 Continuous Version: 1.8 Release Date: 11 May 2023 Documentation: Use https://psicode.org/psi4manual/master/index.html for now. Use https://github.com/psi4/psi4/issues/2965 for build documentation. Availability: Public, GitHub source, CMake build, Conda binary installers, Docker Span: 78 PRs
Required Dependency Changes
- See External Libraries below for dependency bumps.
- Boost header-only libraries for compiling against Libint2. This isn't a change to Psi4 or to Libint2; it's just a change to how Libint2 was packaged.
New Methods
- Stability analysis is now supported for unrestricted GGAs. (#2849)
- TDDFT is now supported for unrestricted GGAs. (#2849)
- Triplet TDDFT excitations from RKS are now supported for LDA and GGA functionals. (#2885)
- Implementation of new linker functionalities in intramolecular SAPT (ISAPT) as published in https://doi.org/10.1021/acs.jpca.2c06465 . (#2899, #2950, #2956)
External Libraries
- QCFractal/QCArchive: Continue supporting last official release of QCFractal v0.15.8 and the imminent "next" branch v0.50b10 (available from
-c qcarchive/label/next). Demonstrateget_psi_resultsto make QCFractal runs behave more like serial runs. (#2835, #2929, #2939) - BSE: Add capability to use basis sets from the Basis Set Exchange when new optional dependency
basis_set_exchangepresent. Basis sets can be specified with version or without (latest):bse:def2-tzvporbse:def2-tzvp:0and insetorassignstatements,set basis bse:sto-3g. Note that at the moment, you should specify any aux basis sets or Psi4 will fall back to the universal def2-qz aux. (#2905) - DDX: The interface for the pyddx library for continuum solvation is extended by support for the linearized Poisson-Boltzmann model (LPB). NOTE: There is a bug in this as of 1.8.0, but it's already fixed in master (#2963 and pyddx v0.4.3) and will be released in 1.8.1. (#2918, #2952, #2940, #2921)
- ADCC: After bugfixes upstream, use >=0.15.16 and reconcile ref data. (#2944, #2942)
- PCMSolver: Update to v1.2.3 (#2903)
- Libint2: Psi4 now uses a Libint configured to entirely standard CCA orderings (sss) but that can switch to Psi4's usual order (gss) at runtime, so no change in internal ordering. This isn't in upstream Libint, so we're still on a branch and binary packages need
-c conda-forge/label/libint_dev. If you build from source, you'll get an AM5-generated Libint, but if you specify CMakeMAX_AM_ERI=6(or higher), you'll get an AM7-generated Libint. (#2861)
Contributors to v1.8
@AlexHeide, @andyj10224, @bennybp, @davpoolechem, @dluu12, @hmacdope, @JonathonMisiewicz, @konpat, @loriab, @lukekurfman, @maxscheurer, @mfherbst, @philipmnel, @q-posev, @TiborGY
Breaking Changes
- Replace
SCF_TYPE=COSXbyDFDIRJ+COSX. (#2833) - Replace
SCF_TYPE=LINKbyDFDIRJ+LINK. (#2833)
Performance Optimizations
- Enable UKS gradient threading. (#2839, #2941, #2945, #2941)
- Significant acceleration of the calculation of ESP over grid in memory, now without a race condition. (#2891)
Details of Interest
- Better document DFT code. LSDA gradient (#2839). computeV, computeVx 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 DFTV2RHOCUTOFF but now defaults to DFTDENSITY_TOLERANCE which in turn defaults to the Libxc value. (#2834)
- For memory safety, return integrals as
unique_ptrs, not raw pointers. (#2775, #2493, #2855) - Remove deprecated code:
- Old c-side NBOWriter. (#2856)
Matrix.diagonalizeoverloads. (#2837, #2693)- Function
rspdiagonalizer and supporting functions tqli and tred2. (#2838) - Selections from libqt/rasset.cc and declarations of int* getfrzcpi() and int* get_frzvpi() from qt.h. (#2814)
- Fortran, C and C++ style wrappers for DGEGS, DGEGV, DGELSX, DGEQPF, DGGSVD, DGGSVP and DTZRQF are removed. (#2823)
- Psi4 now requires the LAPACK library to provide DGGSVD3 and DGGSVP3. (#2823)
- Remove unused diagonalizers and linear solvers from dfocc. (#2684)
- Remove unused Davidson solver from detci. (#2925)
- Remove unused
normalizeandschmidt_addfrom libqt. (#2927) - Remove unused
sq_rsp(after much work replacing its dependents. (#2928)
- Improve ECP testing and enable MP2 ECP gradients. (#2836)
- Provided a more informative error message when SAD crashes due to an atom having more core electrons than basis functions. (#2859, #2853)
- Rename for clarification
build_disp_functor->build_functional_and_disp. (#2874) - Add DAXPBY blas call and Vector method. For BLAS implementations that don't have it (i.e., Apple Accelerate), reroute through DAXPY. (#2887, #2895)
- Add
build_polarizedfunction to create a polarized (UKS) version of an unpolarized (RKS) functional. Needed for triplet derivatives. (#2888) - The HF base class has been weakened from having a std::sharedptr
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 SCFTYPE=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 SCFTYPE. Now they can specify the subalgorithm with SCFSUBTYPE (useful for profiling). For SCFTYPE=PK, SCFSUBTYPE also allows specifying incore or two out-of-core subalgorithms (replacing removed keywords PKINCORE and PK_ALGO). (#2848, #2924, #2926)
- If you call
psi4.set_output_file()(note that this is the usual fancy one, not the low-levelpsi4.core.set_output_file()), that file will now have a psi4 header so suitable for cclib parsing. (#2932, #2893) - If you don't want psi4 managing the logging,
psi4 --inherit-loglevelorpsi4.set_output_file(..., inherit_loglevel=True)prevents psi4 from resetting the log level, even to default. (#2932) - Add CMake options
psi4_SKIP_ENABLE_FORTRANandpsi4_INSTALL_CMAKEDIRto sidestep Fortran compiler detection when linking Fortran addons and to specify the psi4Config.cmake install location, respectively. (#2946) - Deprecate ERISieve. (#2935)
- Implement
CompositeJKclass such that J or K algorithms can live in their own class and be combined at runtime. Users call with "+ ". (#2833, #2954) - Conventional (non-DF) ccsd(t) gradients will now proceed as finite-difference calculations, which are much more memory efficient. If you still want to access the analytic gradients, add
set qc_module ccenergy. (#2943, #2913) - Add CMake option
psi4_SHGAUSS_ORDERINGto use sss (all CCA standard orderings) internally. Expert only! See notes at PR. (#2949, #2537) - Psi4 works with next-gen Intel compilers icpx and now uses c++17 standard throughout. (#2861)
Bug Fixes
- Fixes obvious bug in UV::compute_X. (#2832)
- Fixes orbital read for finite difference Hessian by only passing
write_orbitals=Truefor the reference geometry. (#2827) - Fixes DLPNO-MP2 segfault with Cartesian basis sets by fixing bug in
PointsFunctionclass. (#2840) - Fixes a bug causing crashes upon linearly dependent basis sets for some correlated methods. (#2857)
- Fixes a bug disabling non-orbital optimized DCT with spin restriction. (#2860)
- Fixes
Atom not in listbug with geometric optimizer when using 2-letter elements. (#2872, #2871) - Fixes very minor bug where functionals created by dictionary weren't printing the Libxc citation. (#2877, #2867)
- Fixes bug where optimize(..., engine="geometric", molecule=mol) would not run. (#2929)
- Fixes bug where FSAPT with an external potential and without nocom/noreorient set would return wrong answer. (#2934)
- Fixes obscure case (i.e., Windows normal or Unix elaborate use of CMAKEINSTALL*DIR) where the buildsystem install layout was more flexible than the paths glue in
bin/psi4orpsi4.__init__.py. (#2948) - Fixes a difference in definitions so that
wfn.Fa_subsetandwfn.Fb_subsetnow return the correct matrices in the MO basis. (#2958, #1989)
Known Bugs
Search 2918 above. Otherwise, find them and tell us.
- C++
Published by loriab about 3 years ago
psi4 - 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 mrccrather 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 rmsmogradconvergence 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 rconvergence default computed from econvergence 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 FREEZECORE called "policy", which enables frozen core settings to be looked up from a list specified in the global variable FREEZECOREPOLICY. This is more flexible than NUMFROZEN_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
INCFOCKkeyword (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_CONVERGENCEthreshold. (#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 ENERGYas the final result but instead set BCCD-specific variables from the final iteration and some other variables from the first iteration. BRUECKNERORBSRCONVERGENCE parameter tightened when defaulting from ECONVERGENCE. (#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_blockcan 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_blockcan 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 plainValidationErrorfrom 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 SCFTYPE=DIRECT (`DOLINK
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 SOLVERROOTSPER_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 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.rundftd3 and qcdb.Molecule.rundftd3 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_copywhich sent nsopi_ toWavefunction::epsilon_subset_helperin 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::transposeandMatrix::transpose_thisfor 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
- C++
Published by loriab over 3 years ago
psi4 - 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_functionalto 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.
- C++
Published by loriab almost 4 years ago
psi4 - 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_potentialskeyword argument. (#2515) - In composite (CBS) methods, extrapolation functions like
corl_xtpl_helgaker_2must 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_functionfunction 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_standardmust 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_gradientarray to test on orset findif fd_project T/Fexplicitly 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-convtest: (#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_chargeskwarg. (#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_XHOSTCMake 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
ccdensitykeywords around OPDM relaxation. KeywordsONEPDM,OPDM_ONLY,ONEPDM_GRID_DUMP, andOPDM_GRID_DUMPaffected. (#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_occupationand 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 NUMBERto 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-workingoeprop(...,'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_pointwasn'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 usepytest 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
- C++
Published by loriab about 4 years ago
psi4 - 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_filesfield, controllable byAtomicInput.protocols.native_filessetting (#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::dgemverror. 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
- C++
Published by loriab over 4 years ago
psi4 - 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/falseto #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_ratiosproperty 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.
- C++
Published by loriab over 4 years ago
psi4 - v1.4, 2021-08-03
- Advertised Version: 1.4
- Continuous Version: 1.4
- Release Date: 3 August 2021
- Documentation: https://psicode.org/psi4manual/1.4.0/
- Availability: Public, GitHub source, CMake build, Conda binary installers
- Span: 437 PRs, roughly 1559-2264
Obtaining
- Binary installers: see link above
- Python Anaconda:
conda install psi4 -c psi4. - Windows conda packages available (#1560)
- Dropped dependencies: deepdiff, Libint1
- Added dependencies: QCEngine, Libint2
New Methods
- Add ability to call Axilrod-Teller-Muto (ATM) 3-body dispersion correction from Grimme's DFTD3. Note that this is for dftd3 call, not energy call (#1491)
- MP2D energies and gradients with help of external program (#1661)
- SCAN functionals – SCAN0, revSCAN0, SCAN, revSCAN, BMK, revM06-L (#1597)
- hybrid LDA functionals – CAM-LDA0, LDA0 (when Libxc puts them in a release) (#1645)
- FISAPT-D (#1670)
- Superposition of atomic potentials (SAP) guess (#1665, #1700)
- Implementation of partial Cholesky orthogonalization (#1760, #1817, #1824 #1842)
- Overlap half-derivative integrals (#1895)
- TDDFT for HF, LDA, and GGA SCF wave functions (#1349, #1885, #1814, #2156)
- UHF Hessians and gradients (#842)
- LIBxc density screening (#1860)
- Add MBIS charge partitioning (#1961, #2035, #2056, #2127)
- External potentials to CP-SCF solver (#2006)
- FMM and PE(ECP) (#2025)
- SAPT(DFT) supports hybrid XC kernel in dispersion (#1865)
- SAPT0-D routines, includes interface (#2081)
- Electrostatic embedding to FSAPT (#2131)
- Implement level shifts in RHF, UHF, CUHF, ROHF (#2225, #2237)
New External Libraries
- QCEngine - A QCSchema runner is now a required dependency since we use it for several interfaces (#1577)
- DFTD3
- MP2D
- gCP
- CPPE - Polarizable embedding with environment modeled by multi-center multipole expansion with dipole-dipole polarizabilities at the expansion sites (#1401)
- ADC from ADCC callable from Psi (#1744, #1827, #1848, #1892, #1914)
- Enables use of GeomeTRIC optimizer in Psi (#1813)
- Interoperability via Molssi Driver (#1676, #1929, #2163)
- Psi4fockci (#1855)
- CCT3 (#1934)
- Interface to i-pi (#1057)
- BrianQC GPU module (#1893)
- Upgrade to Libint2 (#1721)
- Update RESP and PSIXAS (#2065)
- Move to Libxc5 (#1101, #2113, #2169, #2191)
Additional Non-Core Contributors to v1.4
@ramis, @jwaldrop107, @obrien951, @dsirianni, @Dpgibney, @derekmetcalf, @alenaizan, @susilehtola, @tovestra, @jeffschriber, @zachglick, @maxscheurer, @chapincavender, @PhillCli, @mdamer, @katrinleinweber, @mfherbst, @edeprince3, @konpat, @kcpearce, @Icyyork, @timostrunk, @shivupa, @taylor-a-barnes, @shannonhouck, @bennybp, @tomspur, @jgonthier, @sjrl, @kis-gergely-dzsi, @ferchault, @andyj10224, @psi-rking, @SimonBoothroyd, @yxie326, @VHchavez, @nlk36701, @edeustua, @leeping, @mquevill, @lazaroid, @sgoodlett
Performance Optimizations
- omega exchange can now be computed with
MemJKalgorithm. By not having to shunt range-separated functionals toDiskJKeven when they'd fit in memory, 30-40% performance improvements seen (#1749) - Big performance improvement to DF SCF Hessian (#1805)
- Omega combine algorithm for computing exchange terms (#1911)
- Optimize linalg::triplet (#2053)
- Thread external charge potential (#1946)
Details of Interest
See section at https://github.com/psi4/psi4/issues/1562#issue-416040173 that won't fit here.
Bug Fixes
See section at https://github.com/psi4/psi4/issues/1562#issue-416040173 that won't fit here.
- C++
Published by loriab almost 5 years ago
psi4 - v1.3.2, 2019-05-17
- Advertised Version: 1.3.2
- Continuous Version: 1.3.2
- Release Date: 17 May 2019
- Documentation: http://psicode.org/psi4manual/1.3.2/
- Availability: Public, GitHub source, CMake build, Conda binary installers
- Span: 3 PRs
Enhancements
- #1576 regularize MP2 correlation QCSchema variable and move
psi4 --jsonoutput to tmpfile.
Building
Bug Fixes
- #1602 fixes multiple bugs in
NBOWriterthat make all previous Psi-generated NBO files suspect. - #1607 explicitly allow loading pickles in
np.readinpsi4.core.Wavefunctiondeserialization. This is needed for Psi4 to work with NumPy >=1.16.3, when the pickle-loading-default changed.
- C++
Published by loriab about 7 years ago
psi4 - v1.3.1, 2019-04-15
- Advertised Version: 1.3.1
- Continuous Version: 1.3.1
- Release Date: 15 April 2019
- Documentation: http://psicode.org/psi4manual/1.3.1/
- Availability: Public, GitHub source, CMake build, Conda binary installers
- Span: 5 + 4 partial PRs
Enhancements
- #1570 (partial) better format exception when
run_jsonencounters error.set_optionscan be used for local options, e.g.,set_options({'scf__d_convergence': 8}). - #1578 (1st commit) update schema name to
qcschema_[in|out]put, usedtype=2Molecule in schema, movepsi4:qcvarstoextras/qcvars. - #1592 print the IR intensities for analytic RHF Hessians, not just compute, test, and export them.
Building
- Now requires QCElemental v0.3.3, which brings in Pydantic.
- #1560 add Windows package building.
- #1571 update Windows MKL/OpenMP build for MKL 2019.
- #1572 expect
libderiv/libderiv.hlike everyone else, notlibint/libderiv.h.
Bug Fixes
- #1577 (partial) fix
CFOUR ERROR CODEandDROPMOformatting for Cfour interface. - #1587 no change to code itself, but the conda
dftd3package has been rebuilt (conda update dftd3 -c psi4) to not segfault on Windows WSL and some Linux architectures. - #1585 (1st & 3rd commits) Per-stage options handling in
cbs()previously wasn't stashing options correctly. - #1592 restore keyword
cphf_tasksneeded for psi4numpy polarizability.
- C++
Published by loriab about 7 years ago
psi4 - 1.3, 2019-02-28
- Advertised Version: 1.3
- Continuous Version: 1.3
- Release Date: 28 February 2019
- Documentation: http://psicode.org/psi4manual/1.3/
- Availability: Public, GitHub source, CMake build, Conda binary installers
- Span: 335 PRs, roughly 1065-1558
Major Points of Interest
- Added native Windows compatibility without the WSL requirement.
- DFT collocation grids can now be cache in-memory to avoid extra computation and lowering the total cost of DFT by up to a factor of two (#1233).
- Wavefunctions can now be serialized to disk and back using
Wavefunction.to_file/from_file(#1304). - Psi4 is now Python 3.6+ only.
- Physical Constants updated to CODATA 2014 (#1213)
- SCF iterations are py-side for easier access and logic (#953)
- RHF analytic dipole derivatives. This means IR intensities when using analytic second deriv (#1382 ).
Obtaining
- Binary installers: see link above
- Python Anaconda:
conda install psi4 -c psi4. - All Linux (and Windows WSL) binaries now built with AM=8 libint.
- To obtain v1.2, use
conda install psi4=1.2 libint=1.2.1=h87b9b30_4 -c psi4(#1533)
New Methods
- Improved support for the MolSSI QC Schema interface v1
- VV10 dispersion is now available for UKS references.
- Cubeprop can now compute the
FRONTIER_ORBITALSandDUAL_DESCRIPTORquantities. - nZaPa-NR basis sets have been added (#1346 ).
- The recursive driver can now compute N-body gradients and Hessians.
- CBS composite calculations can now use arbitrary options (frozen core, relativistic effects) or basis sets for different stages (e.g., scf, correlation, delta) (#1235)
- Rework of SAD guess (#1451, #1452, #1456, #1458, #1477, #1479, #1481, #1438), fixing issues with fractional occupations, ECPs, and ghost atoms. Sad with spin-averaged fractional occupations is now the default guess in Psi4, yielding performance improvements, especially significant for unrestricted and restricted open-shell methods, for which the former default guess was GWH.
- Implemented the on-the-fly extended Huckel guess (#1498, #1529), which is based on the SAD solver.
molecule {...}will take xyz (element symbol or atomic number) or psi4 formats. docs- overall chgmult now specifiable through
1 3\n--before any fragments. - can specify atomic number, mass number, mass, ghosting, extra-label in mol spec.
- Frozen core now aware of charged fragments and implements "previous shells" freezing, using e.g.
freeze_core {1,2,...}(#1350). - Finite difference properly handles user-specific symmetry (#1424).
New Methods (beta)
- TDDFT for HF, LDA, and GGA SCF wave functions (#1349). Guts are ready; interface is not.
New External Libraries
- QCElemental - A library for CODATA, molecule manipulation routines, and periodic table information.
First Time Contributors
- @raimis - #1399, #1185, #1183, +70 more!
- @obrien951 #1359, #1222, #1130, #1140, #1100, #1097
- @zachglick #1453, #1304, #1291
- @tovrstra #1510, #1506, #1500
- @timostrunk #1133, #1128, #1127
- @mdav2 #1374, #1142
- @chapincavender #1364
- @janisozaur #1321
- @rainli323 #1131
- @yxie326 #1083
Additional Non-Core Contributors to v1.3
- @JonathonMisiewicz #1518, #1487, #1379, #1424, #1435, #1378, #1352, #1337, #1336, #1289, #1310, #1299, #1214, #1150, #1024, #1139, #1108
- @susilehtola #1475, #1493, #1481, #1479, #1472, #1458, #1460, #1468, #1456, #1452, #1451, #1260
- @PeterKraus #1470, #1350, #1405, #1235, #1303, #1262, #1232, #1138, #1123, #1119, #1109
- @hokru #1320, #1377, #1346, #1300, #1244, #1241
- @alenaizan #1365, #1042, #1294
- @tyzhang1993 #1437
- @tomspur #1257
Performance Optimizations
- DFT grid generation is now threaded (#1291).
- DFT collocation grids can now be cache in-memory to avoid extra computation and lowering the total cost of DFT by up to a factor of two (#1233).
Psi Developer Upgrade Guide
- Psi4 now requires C++14 (up from C++11)
- The C++ code base was reformatted using clang-format and the provided format file (many PRs). Also
clang-tidywas run for several transformations. EFP_POL,QMEFP_POL,EFP_POL_DAMPING, allPOL-->IND- outright
cbs(...)calls -->energy(cbs, ...) doublet,triplet,create,horzcat,vertcatand the blocked matrix "new" and "delete" are now free functions, rather than static methods inMatrix. Also,createforVectora free function now (#1447).Wavefunction.reference_energy()-->Wavefunction.energy()in keeping with grad/hess (#1445).- Deprecate the c-side
Wavefunction.frequenciesmember data and getter/setter. getter now reads off the py-side member data. setter will go away entirely (#1445). More deprecations in (#1394). - Non-Grimme B97 is now B97-0 (#1436, #1403 ).
- Can run pytest in parallel with
pytest-xdist. Known that final exit won't be clean. - Regularize Wfn and P::e psivar access for scalars and arrays (#1393) in accordance with (#1375). Mostly
get_variable. - Deprecated LAPACK routines removed (#1314 ).
Developer Interests
- Cleans up the Matrix class for non-totally symmetric irreps (#1383).
- Psi4 is now C++17 compatible (#1345).
- DFT grid generation is now threaded (#1291).
findifis now "metadata"-based to allow for greater serialization (#1289).- Additional documentation and notes on alpha/beta for DFT functionals (#1260).
dpd.gblhas been removed (#1254).- The CC* modules are moving to a CCWavefunction based solution (#1253).
- CBS has been reworked to be dictionary based to allow for greater flexibility (#1235).
- Updated conversion factors to CODATA 2014 (#1213).
pthreadshas been removed from Psi4 (shall not return, #1199).- Empirical Dispersion has been refactored to a new unified interface (#1151).
- OEProp has been split into many small modules allowing greater flexibility (#1133).
- SCF now throws a SCFConverenceError upon reaching maximum iterations (#1130).
- Standardizes memory printing to
[GiB](#1097, ...) - DIIS maximum absolute error criterion for SCF, instead of the default RMS error (#1460).
- EFP/EFP and SCF/EFP accessed at driver layer, not multiple places in C-layer. EFP object now
core.Molecule.EFP, notProcess::environment.EFP(#953). - All molecule parsing and validation moved py-side. So chg/mult physics checked upon creation, not upon SCF. Form mols
from_string,from_arrays, orfrom_dict(#953). - Read access to T1/T2 amplitudes py-side (#1344).
- More functions added to
PSI_APIfor plugins (#1400).
Bug Fixes
- Fixes an error where the CBS extrapolation technology was not comparable with FNO-CC* methods (#1377)
- Fixes an issue where relativistic basis sets were not compatible with SCF stability analysis (#1374).
- Fixes an issue where JSON called from the command line did not correctly write an output (#1369).
- Fixed an error where float options when set as integer were not correctly cast (#1352 ).
- Correctly throws when Yukawa functionals are called from LibXC (#1260).
- Fixed a bug where casting from a small basis was incompatible with symmetry-breaking displacements (#1139).
- Ghost atoms were incorrectly attributing to
coreelectron counts (#1109). - Fixes an issue in DFHelper memory estimation (#1100).
- Fixes range-separate disk gradient paging (backported in v1.2.1, #1096 )
- Fixed inconsistencies in the passing of
DF_FITTING_CONDITION; the default value is now 1e-10 in line with what was actually used by the code before. - Fixed inconsistencies and bugs in formatted checkpoint files (#1475). Code assumes that the post-HF wave function contains a correlated density.
- Fixed dzvp basis set that was malformed from EMSL (#1554).
- Added full element range to pbeh-3c basis def2-msvp (#1554).
- Fixed various memory errors (#1520 , #1488, #1489, #1480, #1469, #1476, #1441, #1440, #1432, #1427, #1422 ).
- Fixed couldn't switch from ECP basis to non-ECP basis in same input. Prevent non-matching ECP-ness in cast-up basis (#1494).
- Fix precision and formatting and truncation of Molden output files (#1510).
- Now big-endian compatible (#1464).
- Fix irrep ordering in FCIDUMP (#1453).
- Fix BlockOPoints segfault (#1525).
- Fix race condition in maximum orbital gradient of parallel ODCT (#1435).
- Fix previously little-used symmetry operations on
core.Matrix(#1383). - Fix nasty SAPT double free bug (#1398 ).
- Fix integer overflow in SAPT (#1364).
Known Bugs
- Find them and tell us
- C++
Published by loriab over 7 years ago
psi4 - 1.2.1, 2018-07-24
Advertised Version: 1.2.1 Continuous Version: 1.2.1 Release Date: 24 July 2018 Documentation: http://psicode.org/psi4manual/1.2/ Availability: Public, GitHub source, CMake build, Conda binary installers
Release Notes
- Fixes a bug in the DFJK gradient algorithm when using disk paging. (#1096)
- Fixes memory estimate in
SCF_TYPE=MEM_DFthat wasn't switching between in-core and disk correctly for SAPT (direct_iaqinAO_coreinDFHelper) (#1100) - Improves memory printing and uses correct GiB units for
SCF_TYPE=MEM_DF(#1103, #1104) - Source right image in README (#1105)
- C++
Published by loriab almost 8 years ago
psi4 - 1.2, 2018-07-04
Advertised Version: 1.2 Continuous Version: 1.2 Release Date: 4 July 2018 Documentation: http://psicode.org/psi4manual/1.2/ Availability: Public, GitHub source, CMake build, Conda binary installers
Major Points of Interest
- The DFT kernels were migrated to use LibXC, Psi4 now has 400+ functionals including modern functionals such as wB97M-V.
- The DFT code was optimized leading up to a 4x speed enhancement on 6 cores.
- A new Density-Fitted JK backend was written, DF-SCF is now up to 2x as fast.
- Dozens of additional methods, bug fixes, and performance enhancements.
Obtaining
- Binary installers:
- Python Anaconda:
conda install psi4 -c psi4.- If you're working from Psi4 v1.1 (psi4conda) or any conda Psi4 from 2017, do not update. Instead, create a new environment for a new Psi4. You may need to conda update conda beforehand.
New Methods
- SNS-MP2
- Hundreds of new DFT Functionals
- VV10 non-local dispersion
- Dispersion Corrected Spin-Component Scaled Double Hybrid (DSD) Functionals
- Second-Order SCF Convergence of Density Functional Theory
- Coupled Perturbed Self-Consistent Field (HF and DFT)
- Second-Order Electron Propagator Theory (EP2)
- SAPT0 with S^Infinity Induction and Induction Exchange
- DF Gradients for range-separated and CAM functionals
- Support for the MolSSI QC Schema interface v1
New Methods (beta)
- SAPT(DFT)
- Effective Core Potenitals (ECP's)
New External Libraries
- Gau2Grid - Very fast gaussian to grid collocation matrices
- OpenFermion-Psi4 - Quantum computer interface
- SNS-MP2 - Spin-Network-Scaled MP2 theory
- GeomeTRIC - Geometry optimizations in the TRIC coordinate system.
First Time Contributors
- Peter Kraus (@PeterKraus) - #949, #937, #922, #904
- Holger Kruse (@hokru) - #877, #912, #914
- Shannon Houk(@shannonhouck) - #850, #876
- Johnathan Waldrop (@jwaldrop107) - #921
- Marvin Lechner (@mhlechner) - #698
- Jonathon Misiewicz (@JonathonMisiewicz) - #895, #882, #873, #849, #825
- Adam Abbott (@adabbott) - #761
- Thomas Sexton (@tsexton) - #780
- Tianyuan Zhang (@tyzhang1993) - #743
- Dom Sirianni (@dsirianni) - #776, #952
- Asim Alenaizan (@alenaizan) - #956
Performance Optimizations
- Density Fitted 3-index AO->MO transformation significantly improved.
- MemDFJK module up to 2x as fast as original DFJK for in-core operations.
- DFT XC kenels threaded with a more efficient vectorization.
- DFT collocation matrix generation vectorized and exploits cache-level localization.
- All matrix and vector operations threaded for MIC and large Xeon/EPYC nodes to avoid bottlenecks.
Psi Developer Upgrade Guide
- The driver method
property(...)has moved toproperties(...)to avoid python namespace conflicts. - If you have a (non-py-only) plugin,
- Add
PSI_APIto your plugin code in this pattern - If, upon rebuilding against psi4, you get symbol not found errors, run
c++filton the mangled symbol name, then addPSI_APIto the psi4 repo to make sure thecore.soyou're linking against is exporting the symbol you need. See example here. Or just file an issue with your lost symbol.
- Add
- Note that anyone wanting to re-use an objdir will need to thoroughly remove the old pybind11 v2.0.0 from detectability. This means:
<objdir> rm -rf stage/<TAB-TAB-...-TAB>/includes/pybind11<objdir> rm -rf stage/<TAB-TAB-...-TAB>/share/cmake/pybind11<objdir> rm -rf external/upstream/pybind11
- Intel 2016 is no longer a valid compiler (doesn't work with py11 >=2.2.1)
Developer Interests
- Now uses LibXC for DFT XC kernels (#698)
- Reworked the building of superfunctionals to use dictionaries (#922)
- SCF Wavefunctions can now do Hessian-Vector builds see
RHF.HxandRHF.solvefor examples. (#760) - The DFT V Potential object now has Hessian-Vector functionality. (#698)
- DFT Functionals now takes advantage of polarized vs unpolarized DFT kernels.
- Added generalized solvers in p4util/solvers.py. These include DIIS and conjugate gradient
- New density-fitted AO->MO transform object. More efficient than previous objects and has multiple modes depending on the type of computation (direct or AO storage).
- ECP SCF energies.
- ECP gradients by finite differences in Python.
- DFT is now has several hundred tests against Psi4 and other implementations
- Shared pointers were rewritten to use
std::make_shared. (#836) - One-electron integrals from LibMints now properly apply external potentials so that external potentials are now applied evenly throughout the code base (#844).
- Psi4 is now buildable with Ninja (#794)
- Begins to deprecate
char *from Psi4 (#780) - Pragma header for diagnostics and API's (#774)
- Improved C++/Python binding docstrings (#761)
- Clang and YAPF configuration files (#753)
- Improved parallel and routine timing information in Psi4 (#743)
- SCF can now be run in symmetry for post-SCF modules that do not use symmetry (#737)
- Psi4 now compiles much faster (~3 minutes with LLVM on 4 cores) (#736)
- NumPy views of Psi4 objects are now correctly reference tracked in cases where C++ returns a new matrix.
arr = wfn.Ca_subset("AO", "OCC").nphnow no longer give noise. (#736) - Basis PyParsing is now simpler and code duplication has been removed (#734 )
- Update cc-pVXZ and add cc-pwCVXZ for Li, Be, Na, Mg (#728)
- MCSCF orbital semicanonicalization (#722)
- C++ Options are now exposed to Python (#720)
- Intermediate sub-system and partial-basis energies from
nbodywrapped exported as psivars (#952) - Better start/stop/elapsed time printing
Documentation
- Additional Documentation Information (#787)
Miscellaneous
- Added N to ANO0 basis set (#825)
Bug Fixes
- Accidental signed integer overflow when using extremely low memory in DFJK
- wB97X had an incorrect range-seperation parameter. This is now fixed. Note that this did not effect wB97X-D.
- Restricted-irrep finite-difference Hessians were only returning the totally symmetric portion of the Hessian (in #834)
- Analytic HF Hessians were wrong under particular circumstances (#903)
- A bug causing IRCs to converge to the initial transition state was fixed (#882)
Conda changes since v1.1
- MKL linked dynamically through free Anaconda-provided
mkl_rt.sorather than statically linked. This saves size (since NumPy also usesmkl_rt) and eliminates incorrect results and threading damping associated with multiple programs accessing BLAS/LAPACK from multiple sources (#748, #755). - Psi4 no longer installs a non-standard gcc5.2 alongside Psi4 on Linux (or gcc feature on Mac). This was necessary when conda's default 4.8.5 was too low for Psi4's c++11 requirements, but since conda's default has leaped to 7.2.0, we use default again. Note that only libraries (e.g.,
libstdc++) are installed alongside Psi4 now, not compilers (e.g.,g++). - (generic, not psi4, conda)
conda activate envworks multishell, not just onbash. Since conda 4.4 c. Dec 2017
Known Bugs
- PCM-ROHF is broken. See #999
- ERD interface is broken and disabled
- C++
Published by loriab almost 8 years ago
psi4 - 1.1, 2017-05-19
Advertised Version: 1.1 Continuous Version: 1.1 Release Date: 19 May 2017 Documentation: http://psicode.org/psi4manual/1.1/ Availability: Public, GitHub source, CMake build, Conda binary installers
New Methods
- Added analytic RHF Hessians, conventional and density fitted.
- Added analytic RHF CCSD(T) gradients (no frozen core).
- Added functional-group and intramolecular symmetry-adapted perturbation theory (F/I-SAPT) capabilities, scripts, and tests. (DOIs: 10.1021/ct500724p, 10.1063/1.4927575)
- Added high-spin open-shell SAPT0. Note that Ind20,r (and exch counterpart) contains unrelaxed induction. (DOI: 10.1063/1.4963385)
- Added analytic RHF-CC2 gradients and building of CC2 UHF and ROHF densities.
- Reworked MCSCF with density-fitting, py driver, augmented Hessian iterations, better printing, and the ability to rotate guess orbitals in MCSCF procedure with
MCSCF_ROTATEkeyword. - Added B86B & PW86 exchange and B86BPBE & PW86PBE exchange-correlation functionals
- Added X2C and (external) DKH relativistic corrections for post-SCF methods.
- (external) Added Grimme's semi-semiempirical HF-3c and PBEh-3c semi-semiempirical energy methods through gCP interface.
- (external) Added ROHF reference for perturbative methods (e.g., ROHF-CCSDT(Q)) in MRCC interface.
- (external) Added PCM in the PTE (perturbation to energy) approximation for implicit solvation to CCSD via PCMSolver.
- (external) Added SIMINT integral interface.
User Improvements
- Fixed interfragment coordinates in geometry optimizer
- Added option to only write occupied orbitals to Molden files.
- Added saving of geometry and normal modes to Molden file after vibrational analysis.
- Added Jensen [aug-]pc[s][seg]-N, N=0–4 basis sets.
- Renamed
rel_basiskeyword tobasis_relativistic. - Added 3c overlap integrals to libmints.
- Switched default auxiliary basis sets for sto-3g and 3-21g to def2-SVP series.
- Enhanced cc* modules to write OPDM back to Wavefunction object if computed and to construct psivars for eom-cc, 0-indexed (ground state = 0).
- Added
psi4.set_options(dict)function, makingpsi4.geometry(),psi4.set_options(), andpsi4.energy(), etc. the mainstays of driving calculations in PsiAPI. - Added AO-based CASSCF.
- Reworked CI root indexing to use 0 as ground-state index, so now CI and CC use so the same indexing for PSI variables.
- Added atom- and AM-labels to printing of molecular orbitals.
- Reworked exiting so that if a geometry optimization exceeds maxiter, it no longer just prints a warning and exits sucessfully (beer) but now exits unsuccessfully (coffee) and raises a
psi4.ConvergenceError. - Reworked
psi4.set_memory()to optionally take a string that includes a memory unit. Added a minimum memory (250MiB) and increase the default memory (500 MiB). - Reworked parallelism control. Environment variables OMPNUMTHREADS and MKLNUMTHREADS now ignored. Control parallelism in PsiAPI with
psi4 -nNor in either mode throughset_num_threads(N). - Reworked Psi variables in dfmp2 module so that duplicated in Wavefunction.getvariables() as well as `psi4.getvariables()`.
- Added printing of file and line origin for basis sets upon loading. Auxiliary basis sets now get a name (basis1 + basis2 for combination) rather than a blank. Auto-selection of auxiliary basis sets for >=5-zeta orbitals basis sets no longer defaults to def2-quad-zeta when an appropriate >=5-zeta auxiliary basis not available.
- Added new complete set of test case reference output files.
- Added BFDb databases.
- Reworked
printin Psithon (input file syntax) to no longer process intoprint_outcommands that redirect to output file. Now it means whatever your python print means. - Added to Numpy integration the ability for
psi4.core.Matrixandpsi4.core.Vectorto be converted to NumPy arrays and back. Please see tests/numpy-array-interface for a full suite of examples. - Reworked the finding of useful text files in /share/psi4/. Environment variable PSI4DATADIR is now defunct. PSIDATADIR remains but should not need to be used unless you want to specify one not adjacent to the built psi4/core.so library. For running psi4 from both staged and installed locations, it should default just fine and not need PSIDATADIR=/path/to/share/psi4 or psi4 -l /path/to/share/psi4.
- Added beginnings of JSON interface.
Infrastructure Improvements
- Relicensed Psi4 from GPL-2.0+ to LGPL-3.0.
- "Inverted" Psi4 from C++ executable with embedded Python to ordinary Python module layout. Added PsiAPI mode for interacting with Psi4 as Python module (i.e.,
python -c "import psi4". Tutorial at http://psicode.org/psi4manual/master/psiapi.html . - Reworked
bin/psi4so now a light script callingimport psi4rather than a hefty C++ executable. No longer linking to libpython.so. - Added Python 3 (3.5 & 3.6) support to existing Python 2.7
- Reorganized directory layout so that Psi4+Addons in
/, Psi4 Python module in/psi4/, and Psi4 C++ library in/psi4/src/. - Rewrote build system into a CMake (min version 3.3) superbuild, evicting all external code and leaving each add-on with only a single-file build footprint in the external/upstream/ folder specifying its build as a CMake External Project.
- Removed
setup.pyas user interface to CMake build. Now one should call CMake directly using options and guidance in the first ~115 lines of top-level CMakeLists.txt. - Switched Python binding of C++ from Boost Python to pybind11. Renamed Py-bound C++ library from "psi4" to "core". A consequence is that Psi4 now requires full C++11 compliance (GCC 4.9+, Clang 3.3+, Apple Clang 6.1+, ICC 2016.0.2+). Note that ICC requires GCC and therefore GCC 4.9+. Note that PyBind11 adheres more to C-style than Python-style when it comes to references and pointer counting. As such, several functions required deep changes as internal references from C-side are no longer manipulatable Python-side.
- Added testing mode to see if Psi4 basically works when you turn it on. From a build directory, using CTest,
ctest -L smoke. On any executable, using pytest,psi4 --test. On the python module, using pytest,psi4.test(). - Reworked plugin system to CMake from GNUMake. Use
psi4 --plugin-compileto generate Makefile rather thanpsi4 --new-plugin-makefileas formerly. Plugin interface has been substantially renovated. - Renamed plugin generation from, for example,
psi4 --new-plugin +wavefunction myplugintopsi4 --plugin-name myplugin --plugin-template wavefunction. - Build performs pre-install to
BuildDir/stage/so python driver not being run from source. Usepsi4 --inplaceto run python driver from source. - Switched versioning (e.g., 15 commits after tag v1.0 before tab v1.1rc1) from 1.0.15 to 1.1rc1.dev15.
- Reworked build documentation into documentation proper (http://psicode.org/psi4manual/master/build_faq.html), making GitHub wiki defunct.
- Switched Python build detection from findpackage(PythonLibs) to findpackage(PythonLibsNew) CMake module used by NumPy and pybind11.
- Reworked ASCII scratch/output file names to incorporate job PID, just as binary scratch files do.
- Adjusts BLAS/LAPACK detection to detect OpenBLAS and to favor unified runtime library mkl_rt.so for MKL.
- Added internal
variables_andarrays_std::maps for double and SharedMatrix types, respectively, to the Wavefunction class. These should be used inside a computation to enable greater localization of variables. - Switched Mac conda binary builds from gnu/libstdc++ to clang/libc++ with implications for mixing conda packages with locally compiled software (e.g., plugins from conda Psi4).
- Rewrote GitHub history of psi4/psi4. All forks prior to 2016-10-19 are no longer valid. Please refork before working on Psi4.
- Reworked
BasisSets to be exclusively built in Python and passed into C-side by the Wavefunction getbasisset and setbasisset calls.
Performance Optimization
- Reworked I/O in UHF CC routines to avoid expensive sorting.
- Reworked fitting algorithm behind diatomic() from hard-wired Lagrange interpolations to weighted least squares that can use an arbitrary number of points.
- Removed ccsort/transqt2 legacy modules from codebase. They can be enabled at build-time for testing.
- Added threading to MintsHelper for one-body integrals for MIC architectures.
Bug Fixes
- Fixed OEProp bug for fields and electrostatic potentials when spherical basis sets were used with a symmetry-breaking origin.
- Fixed CBS syntax bug that produced outrageous HF extrapolations errors for some methods.
- Fixed DF-MP2 to fail gracefully when no virtual orbitals present.
- Fixed bug that prevented freezing a bond angle at 0 degrees during a geometry optimization.
- Fixed CASSCF to return correct variable if state averaging requested.
- Fixed diag_method=rsp in detci module that wasn't working.
- Fixed guess=read for ROHF wavefunctions.
- Fixed integer overflows in SAPT code and libdpd code (for CC2) and dfocc code (for CCSD(T)).
- Fixed DF-MP2 gradients in the presence of external potential.
- Fixed various bugs and useability improvements for calculations in the presence of a dipole field.
- Fixed silent fail for non-Lebedev numbers in dftsphericalpoints.
- Fixed instability of matrix diagonalization that led to anomolous DFT grid generation on Haswell processors.
- Fixed specifying non-default basis-set-extrapolation schemes as a keyword argument to energy(), optimize(), etc.
- Fixed
properties_origin["COM"]that wasn't working. - Fixed bug in ccresponse that led to different polariability values with symmetry on and off.
- Fixed
molden(..., dovirtual)bug so that keyword is honored and unrestricted occupations are returned correctly. - Fixed wB97X-based functionals that were using 0.3 instead of 0.4. This makes no appreciable difference at the cross-database hundredths of a kcal/mol level but in a little wrong.
External Features and Infrastructure
- Reworked Libint integration to pull from upstream repository at 1.2.0 or 1.2.1
- Added new integral library SIMINT by Ben Pritchard for energy integrals, accessed through
cmake -DENABLE_simint. Pinned at 0.7. - Added using ERD for most all energy integrals (previously only direct conventional HF).
- Reworked LIBEFP integration so no longer required for Psi4 and so source built from upstream repository, not code internal to Psi4. Bumped LIBEFP to 1.4.2.
- Bumped CheMPS2 to 1.8.3-12
- Reworked ambit to reenable it and the ambit plugin template. Ambit not presently linked into Psi4 as not used internally.
- Reworked DKH integration so that project obtained from home repository, not from code stored in Psi4. Reworked DKH procedure so that orbital basis decontracted to form the DKH one-electron integrals, then recontracted for further calculation.
- Bumped PCMSolver to 1.1.9 (see also "PTE").
- Added basic gCP interface (see also "3c").
- Maintained GDMA, MRCC (see also "ROHF-CC"), DFTD3 interfaces.
- Bumped v2rdm_casscf plugin to 0.3.
- Switches PubChem to use REST interface.
- Pinned pybind11 version at 2.0.0 (2.0.1 also known to work).
- C++
Published by loriab about 9 years ago