# Documentation

# Installers

# Source

# Release Notes

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 to`properties(...)`

to avoid python namespace conflicts. - If you have a (non-py-only) plugin,
- Add
`PSI_API`

to your plugin code in this pattern - If, upon rebuilding against psi4, you get symbol not found errors, run
`c++filt`

on the mangled symbol name, then add`PSI_API`

to the psi4 repo to make sure the`core.so`

you’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.Hx`

and`RHF.solve`

for 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").nph`

now 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
`nbody`

wrapped 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.so`

rather than statically linked. This saves size (since NumPy also uses`mkl_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 env`

works multishell, not just on`bash`

. Since conda 4.4 c. Dec 2017

### Known Bugs

- PCM-ROHF is broken. See #999
- ERD interface is broken and disabled