Open-Source Quantum Chemistry – an electronic structure package in C++ driven by Python
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 install libint -c conda-forge
) over development (-c conda-forge/label/libint_dev
) and psi4-stored buildsAdvertised 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
#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
#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.
#3050: Adds Einsums library to build system as an optional dependency
#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.
#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
#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":
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)
#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
#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
@andyj10224, @Awallace3, @carolinesargent, @CDSherrill, @davpoolechem, @EricaCMitchell, @fevangelista, @hokru, @johnppederson, @JonathanMisiewicz, @loriab, @lukekurfman, @mfherbst, @phillipmnel, @susilehtola, @TiborGY, @zachglick
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
_2
of v1.8.1 on conda-forge.)set guess sapgau
protocols
, tag
, owner_group
, and priority
to QCArchive-enabled runs in the distributed driver. Works with qcfractal>=0.50
.BasisSet.n_prim_per_shell_
never populated and refactors shell formation in BasisSet.
UnicodeDecodeError
and corrupted timer.dat
files, especially on systems with long hostnames.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
_2
onwards; not present for osx-arm64 with py != 3.10 in build _1
or _0
)psi4 --plugin-compile
from Linux and Mac can work off the conda binary_2
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
-c qcarchive/label/next
). Demonstrate get_psi_results
to make QCFractal runs behave more like serial runs. (#2835, #2929, #2939)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)-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)@AlexHeide, @andyj10224, @bennybp, @davpoolechem, @dluu12, @hmacdope, @JonathonMisiewicz, @konpat, @loriab, @lukekurfman, @maxscheurer, @mfherbst, @philipmnel, @q-posev, @TiborGY
SCF_TYPE=COSX
by DFDIRJ+COSX
. (#2833)SCF_TYPE=LINK
by DFDIRJ+LINK
. (#2833)unique_ptr
s, not raw pointers. (#2775, #2493, #2855)Matrix.diagonalize
overloads. (#2837, #2693)rsp
diagonalizer and supporting functions tqli and tred2. (#2838)normalize
and schmidt_add
from libqt. (#2927)sq_rsp
(after much work replacing its dependents. (#2928)build_disp_functor
->build_functional_and_disp
. (#2874)build_polarized
function to create a polarized (UKS) version of an unpolarized (RKS) functional. Needed for triplet derivatives. (#2888)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)psi4 --inherit-loglevel
or psi4.set_output_file(..., inherit_loglevel=True)
prevents psi4 from resetting the log level, even to default. (#2932)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)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)set qc_module ccenergy
. (#2943, #2913)psi4_SHGAUSS_ORDERING
to use sss (all CCA standard orderings) internally. Expert only! See notes at PR. (#2949, #2537)write_orbitals=True
for the reference geometry. (#2827)PointsFunction
class. (#2840)Atom not in list
bug with geometric optimizer when using 2-letter elements. (#2872, #2871)bin/psi4
or psi4.__init__.py
. (#2948)wfn.Fa_subset
and wfn.Fb_subset
now return the correct matrices in the MO basis. (#2958, #1989)Search 2918 above. Otherwise, find them and tell us.
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
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)@AlexHeide, @andyj10224, @aquaticseatard, @behnle, @bozkaya, @davpoolechem, @JonathonMisiewicz, @JoshRackers, @lazaroid, @loriab, @psi-rking, @maxscheurer, @mfherbst, @philipmnel, @sashashura, @susilehtola, @tallakahath, @TiborGY, @yxie326, @zachglick
set qc_module mrcc
rather than "mr" prefix onto method. (#2731)ERISieve
(#2660, #2657, #2659)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)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)Matrix::set_block
can be used on matrices that are not totally symmetric. (#2734)Matrix::transform
's ability to handle edge cases. (#2748)Matrix::get_block
can be used on matrices that are not totally symmetric. (#2752)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)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)sq_rsp()
function internally with a new wrapper to DSYEV. Deprecate rsp()
and sq_rsp()
. (#2686, #2798)Wfn.energy_
for OMP3 & OMP2.5. (#2653)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)Matrix::transpose
and Matrix::transpose_this
for matrices that are not totally symmetric. Now performs the transpose or raises an error messages, respectively. (#2740)basis_relativistic <name> {...}
now works. (#2764)Find them and tell us
variables(include_deprecated_keys=True)
to work again without error.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.‘<’ not supported between instances of ‘dict’ and ‘dict’
to work again.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
SCF_TYPE=COSX
. (#2567)-D ENABLE_ecpint=ON
. Analytic gradients and Hessians available (use with caution for post-SCF). Conda packages available for Linux and Mac. (#2368, #2135)@alenaizan, @andyj10224, @brianz98, @carolinesargent, @cgbriggs99, @e-kwsm, @konpat, @lazaroid, @philipmnel, @susilehtola, @TiborGY, @timostrunk, @andysim, @hokru, @jeffschriber, @JonathonMisiewicz, @jturney, @loriab, @maxscheurer, @zachglick
CC DIPOLE X
--> CC DIPOLE
. (#2479)external_potentials
keyword argument. (#2515)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)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)ref_gradient
array to test on or set findif fd_project T/F
explicitly to control. (#2575)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) |
embedding_charges
kwarg. (#2575)MAX_AM_ERI
.-D ENABLE_XHOST
CMake option for processor tuning to more architectures. (#2377, #2384)Vector.clone()
#2375; FittingMetric
#2420; DIISManager::reset_subspace()
#2437; OEProp #2507)ccdensity
keywords around OPDM relaxation. Keywords ONEPDM
, OPDM_ONLY
, ONEPDM_GRID_DUMP
, and OPDM_GRID_DUMP
affected. (#2432, #2434) "{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}"
find_occupation
and add more sanity checks to avoid sudden changes of occupation. (#2488)-m api
. Those in the usual CTest suite form subset -m cli
. (#2454, #2495)psi4 input.dat --loglevel=10
. The log file is the place to look for composite, finite difference, and manybody output. (#2512; #2575)psi4 --module
. (#2530)FINDIF NUMBER
, CBS NUMBER
, NBODY NUMBER
to check how many jobs the wrappers are running. (#2544)extras["psi4:tamps"]
. (#2328) # 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),
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)compare_recursive()
(#2397)fchk()
couldn't be run on a Wavefunction deserialized from file (#2400, #2408)allen_focal_point
wasn't working because higher deltas were getting lopped off. (#2532)pytest psi4/
would pick up unconfigured tests so one had to use pytest psi4/tests/
. (#2549)Find them and tell us
conda install psi4 -c psi4
.energy("dlpno-mp2")
(#2093, #2313).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.AtomicResult.native_files
field, controllable by AtomicInput.protocols.native_files
setting (#2361).Vector::dgemv
error. Not an correctness issue (#2347).qcdb.BasisSet
(#2349), libmints (#2346), cubeprop (#2345).@andyj10224, @maxscheurer, @kis-gergely-dzsi, @alenaizan, @Icyyork, @konpat, @zachglick, @susilehtola, @brianz98, @jeffschriber, @hokru, @loriab, @JonathonMisiewicz, @fevangelista, @andysim
set omega_combine true
/false
to #2279, please.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).