Documentation
Installers
Source
Release Notes
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_ROTATE
keyword. - 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_basis
keyword 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 OMP_NUM_THREADS and MKL_NUM_THREADS now ignored. Control parallelism in PsiAPI with
psi4 -nN
or in either mode throughset_num_threads(N)
. - Reworked Psi variables in dfmp2 module so that duplicated in Wavefunction.get_variables() as well as
psi4.get_variables()
. - 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
print
in Psithon (input file syntax) to no longer process intoprint_out
commands that redirect to output file. Now it means whatever your python print means. - Added to Numpy integration the ability for
psi4.core.Matrix
andpsi4.core.Vector
to 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/psi4
so now a light script callingimport psi4
rather 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.py
as 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-compile
to generate Makefile rather thanpsi4 --new-plugin-makefile
as formerly. Plugin interface has been substantially renovated. - Renamed plugin generation from, for example,
psi4 --new-plugin +wavefunction myplugin
topsi4 --plugin-name myplugin --plugin-template wavefunction
. - Build performs pre-install to
BuildDir/stage/
so python driver not being run from source. Usepsi4 --inplace
to 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 find_package(PythonLibs) to find_package(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
BasisSet
s to be exclusively built in Python and passed into C-side by the Wavefunction get_basisset and set_basisset 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 dft_spherical_points.
- 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).