Documentation
Installers
Source
Release Notes
Advertised Version: 1.11 Continuous Version: 1.11 Release Date: 29 Jun 2026 Documentation: https://psicode.org/psi4manual/1.11.x/ . Availability: Public, GitHub source, CMake build, ~Conda binary installers~, ~Docker~ Span: ~48 PRs~
New Contributors
- @esingh41 made her first contribution in https://github.com/psi4/psi4/pull/3329
- @NathanGillispie made his first contribution in https://github.com/psi4/psi4/pull/3292
- @ConstLike made his first contribution in https://github.com/psi4/psi4/pull/3334
Full Changelog: https://github.com/psi4/psi4/compare/v1.10...v1.11
Required Dependency Changes
- For compatibility with QCSchema v2 and Py v3.14 in general, Psi4 now needs pydantic >=2.11, qcelemental >=0.50.4, qcengine >=0.50.0, qcmanybody >=0.7.1, optking >=0.5.0, qcfractal >= ~0.64 (not available for Py 3.14 until unreleased v0.70), dftd3-python >=1.3.0, dftd4-python >=4.1.0 by @loriab in https://github.com/psi4/psi4/pull/3341
- Python v3.14 is now useable. Some QCSchema v1 functionality may be unavailable due to pydantic constraints (i.e., Pydantic does not allow QCSchema v1 objects to be created with Py >=3.14) by @loriab in https://github.com/psi4/psi4/pull/3341
New Methods
- DLPNO: DLPNO-CCSD is callable as
energy('dlpno-ccsd')and DLPNO-CCSD(T) is callable asenergy('dlpno-ccsd(t)')by @andyj10224 in https://github.com/psi4/psi4/pull/3293 - The user may evaluate the Hellmann-Feynman gradient term associated with an arbitrary potential via numerical quadrature with
psi4.core.NumIntHelper.potential_gradient(). The potential must be supplied as a list ofpsi4.core.Vector, where each vector object corresponds to a block in thepsi4.core.DFTGridused to instantiate thepsi4.core.NumIntHelperby @johnppederson in https://github.com/psi4/psi4/pull/3322 - Set
relativistic zorato make the core Hamiltonian scalar-relativistic (with minimal cost) with zeroth-order regular approximation (ZORA) by @NathanGillispie in https://github.com/psi4/psi4/pull/3292 - Add MBIS charges for atomic number Z=1–118 (previously Z=1–36 only); no API changes by @jaclark5 in https://github.com/psi4/psi4/pull/3399
- The functionality of the longstanding
fsapt.pypost-SAPT analysis script is now joined by a driverfsapt_analysis()function to do the analysis in-script or on anAtomicResult. Also better storing of SAPT QCVariables on wfn by @Awallace3 in https://github.com/psi4/psi4/pull/3222 - Users can get the analytic gradient of the energy for molecules in the presence of diffuse charges, the analytic gradient of the energy for embedded diffuse charges by calling
ExternalPotential.gradient_on_diffuses(), the interaction energy between diffuse/point charges in separate ExternalPotential objects viaExternalPotential.computeExternExternInteraction()by @johnppederson in https://github.com/psi4/psi4/pull/3374
External Libraries
- Require OpenOrbitalOptimizer v0.3 (see #3392)
- Can now build and use
pyeinsumsthrough Psi4 by @loriab in https://github.com/psi4/psi4/pull/3350 - Bump yapf version to v0.43.0 by @TiborGY in https://github.com/psi4/psi4/pull/3326 and by @JonathonMisiewicz in https://github.com/psi4/psi4/pull/3360
Breaking Changes
Performance Optimizations
- Fix redundant LibXC build caused by GauXC’s ExchCXX dependency handling by @TiborGY in https://github.com/psi4/psi4/pull/3330
- Optimize wK block in DirectJK: use
clone()instead of N separate creations for performance improvement for range-separated functionals (wB97, wB97X, CAM-B3LYP, etc) by @ConstLike in https://github.com/psi4/psi4/pull/3334 - Fix mbis memory overallocation and free atom method selection allowing bigger molecules and less memory @esingh41 in https://github.com/psi4/psi4/pull/3329
- Fix an SCF performance conversion regression bug (not a correctness bug) in the SAD guess. Characteristics: very different SAD energy, jumps in SCF energies, more iterations to converge or fails to converge, sometimes positive SCF energies. SAD is affected, SADNO is ok. worse with larger basis sets. Of released versions, only v1.10.0 was affected; v1.9.x and v1.10.1 were correct. by @loriab in https://github.com/psi4/psi4/pull/3390
- OOO (OpenOrbitalOptimizer) is now converging SCF far tighter now, so more useable.
set orbital_optimizer_package oooby @loriab in https://github.com/psi4/psi4/pull/3392 - New function
psi4.core.get_timer_records()to collecttimer.datinfo from parallel timers in dictionary form and without going through a file.. Extend QCSchema wrapper to collect additional native files. Added export of timer data to structured data, removing half-workingtimer.dat. When submitted with protocolnative_files='all', qcschema jobs now report timer data like the below under keytimer.json. The format isn’t necessarily final. Credit to @Awallace3 , @Lexiiiy, @pot8osince98 https://github.com/psi4/psi4/pull/3443 - Evaluations for diffuse charges involving ERIs have been parallelized by @johnppederson in https://github.com/psi4/psi4/pull/3374
Details of Interest
- Alter DLPNO-CCSD(T) to always treat diagonal pairs at CC level and set
T_CUT_CLMOandT_CUT_CPAOto 1.0e-4 to match ORCA by @andyj10224 in https://github.com/psi4/psi4/pull/3338 - Avoid double underscores at the beginning of include guard names in libplugin by @TiborGY in https://github.com/psi4/psi4/pull/3327
- Disallow MBIS with ECP by by @jaclark5 in https://github.com/psi4/psi4/pull/3444
- Deprecations
- Mark the Python exports of
Options::set_read_globalsandOptions::set_read_globalsas deprecated by @TiborGY in https://github.com/psi4/psi4/pull/3436 - Mark several members of
CDJKas deprecated or planned to be of different visibility by @TiborGY in https://github.com/psi4/psi4/pull/3432 - Dimension deprecation: reorder_qt by @NathanGillispie in https://github.com/psi4/psi4/pull/3361
- Dimension deprecation: std::pair DPD constructor by @NathanGillispie in https://github.com/psi4/psi4/pull/3358
- Dimension deprecation: Fix Dimension copy in diagnostic.cc by @NathanGillispie in https://github.com/psi4/psi4/pull/3370
- Dimension deprecation: cc code sort_3d, halftrans by @NathanGillispie in https://github.com/psi4/psi4/pull/3357
- Dimension deprecation: int* –> Dimension by @NathanGillispie in https://github.com/psi4/psi4/pull/3356
- Mark the Python exports of
- Forward cmake per-config flag variants (e.g.,
-DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG") to psi4-core subbuild. This allows overriding flags added by the cmake configuration by @susilehtola in https://github.com/psi4/psi4/pull/3400 needs_grac_is now computed rather than cached. code modernization. by @JonathonMisiewicz in https://github.com/psi4/psi4/pull/3393- Reworked optional dependency handling to apply libraries and defines more uniformly across source files at the cost of longer rebuild times when altering those deps. Also defaulted to a “unity build” cuts compile time by ~2/3. An optional pre-compiled headers mode is not on by default by @loriab in https://github.com/psi4/psi4/pull/3388
- allow unity build for
cc/by @loriab in https://github.com/psi4/psi4/pull/3386 - allow unity builds for
psimrccby @loriab in https://github.com/psi4/psi4/pull/3387
- allow unity build for
- Delete copy constructor and assignment operator for
BasisSet. This was causing L2 shell build errors with pybind11 v3.0.3* by @loriab in https://github.com/psi4/psi4/pull/3380 - Add include guard to the scf.h.template file. by @cgbriggs99 in https://github.com/psi4/psi4/pull/3352
- The user may provide an arbitrary one-electron potential matrix to the
external_potentialskeyword used during calls to theenergyorgradientfunctions. The matrix can be provided as a list of lists or a NumPy array, much like the existing options for point charge input. by @johnppederson in https://github.com/psi4/psi4/pull/3349 - The
ExternalPotential::computePotentialGradients()method has been exposed in the Python layer, allowing the user to readily calculate the Hellmann-Feynman and nuclear components of the gradient for acore.ExternalPotentialobject given that it has point charges (this will be expanded to include the gradient contributions from diffuse charges). Hellmann-Feynman (and nuclear) gradient components are not calculated for arbitrary one-electron potential matrices by @johnppederson in https://github.com/psi4/psi4/pull/3349 - Fix deprecation warnings + cleanup in
libfockand also adds some functions to libpsio to support these changes by @JonathonMisiewicz in https://github.com/psi4/psi4/pull/3359 - Fix deprecation warnings + cleanup in
libscf_solverby @JonathonMisiewicz in https://github.com/psi4/psi4/pull/3354 psi4.run_qcschema(..., return_version)andpsi4 --return-versionlearned new keywordreturn_version=1|2to specify what version QCSchema to return. Without this keyword, version in is version out. Oldrun_jsonandpsi4 --jsonis removed.run_qcschema(..., return_dict)keyword is also available to get a dictionary rather than a model (class instance); return_dict=True can provide more capability for QCSchema v1 with Python v3.14. Note that run_qcschema is a top-level fn now accessible without longerpsi4.schema_wrapper.run_qcschema()address. by @loriab in https://github.com/psi4/psi4/pull/3341- For qcfractal integration, the deprecated tag and priority have been removed in favor of compute_tag and compute_priority. by @loriab in https://github.com/psi4/psi4/pull/3341
- Updated conda environments for compiling psi4, including an explicit environment solve for future availability by @loriab in https://github.com/psi4/psi4/pull/3445
Conda Package Updates
- Added gauxc for snlink. Some changes to allow it by @loriab in https://github.com/psi4/psi4/pull/3445
- Some path-advisor-generated environments were solving to include MPI. Now requesting non-mpi variant of MolSSI’s MDI to avoid this (#3392)
- Anyone using
simple-dftd3directly or through therun_sdftd3fn of psi4, see https://github.com/psi4/psi4/pull/3380 . Normalenergy("<functional>-d3")through psi4 is unchanged. - Try updated Windows constraints: MKL 2025, Clang 19 (rather than 17), and LLVM OpenMP (rather than iomp5) by @loriab in https://github.com/psi4/psi4/pull/3345
Bug Fixes
psi4-path-advisor.pyfailure catch. @cgbriggs99 in https://github.com/psi4/psi4/pull/3332- PSI_API: fixed corner case in
Matrix::diagonalize, no longer dereferences a nullptr ifnMatz == evals_only_descending(not presently in code) by @TiborGY in https://github.com/psi4/psi4/pull/3335 - Fixed memory leaks related to psimrcc and a segfault in mcscf that prevented optimizing with psimrcc by @cgbriggs99 in https://github.com/psi4/psi4/pull/3337
- Print solvent in error in ddx by @jevandezande in https://github.com/psi4/psi4/pull/3343
- Fix dimension error in dfocc affecting frozen-core or dropped orbitals (affects certain DF-MP2 gradients) by @jaclark5 in https://github.com/psi4/psi4/pull/3435, https://github.com/psi4/psi4/issues/3433
- Avoid printlevel dictation whether or not to throw in
CDJKby @TiborGY in https://github.com/psi4/psi4/pull/3423 - Forgive an error upon
import adccunder certain circumstances (snowflake) fails, causing the qcengine records to return as errors and the psi4 logic to fail. Showed up with QCFractal v0.65 by @loriab in https://github.com/psi4/psi4/pull/3424 - Fix HDF5 2.x cmake detection (resolve imported targets to file paths) by @susilehtola in https://github.com/psi4/psi4/pull/3405
- Return error rather than segfaulting in QCEngine-like contexts by altering
print_outto now safely falls back to stderr if outfile stream is unavailable (#3392) - Fix flaky snowflake test by fixing QCVariables saved for CC2 method @loriab in https://github.com/psi4/psi4/pull/3366
- Accommodate pkg_resources decease from setuptools in v82 by @loriab in https://github.com/psi4/psi4/pull/3362
- Update writer-file prefix generation so bare
WRITER_FILE_LABELoutputs follow the output-file directory. This fixes a bug where grad/hess/normco files would write to the submission dir ifwriter_file_labelwas set but to the input file dir if not. by @loriab in https://github.com/psi4/psi4/pull/3443 - Avert future
DiskDFJKsegfaults inmanage_JK_core()andcompute_JK()with a failure message by @TiborGY in https://github.com/psi4/psi4/pull/3422
Known Bugs
- In
set perturb_with spherethere is likely a bug when the basis set uses pure d-, f-, etc. functions and contains d-shells or higher. If you need this, see https://github.com/psi4/psi4/pull/3437 for a potential solution