Psi4 Project Logo

Geometry Optimization, optimize() and gradient()

For further discussion of geometry optimization, see Sec. Geometry Optimization.

optimize() is the only command most users will ever need to access directly to perform geometry optimizations. Behind the scenes, optimize() is a wrapper that repeatedly calls gradient() that computes the gradient then adds a call to the geometry projection module.

optimize(name[, molecule, return_wfn, func, mode, dertype, hessian_with])[source]

Function to perform a geometry optimization.

Aliases:opt()
Returns:float – Total electronic energy of optimized structure in Hartrees.
Returns:(float, Wavefunction) – energy and wavefunction when return_wfn specified.
PSI variables:
Parameters:
  • name (string) –

    'scf' || 'mp2' || 'ci5' || etc.

    First argument, usually unlabeled. Indicates the computational method to be applied to the database. May be any valid argument to energy().

  • molecule (molecule) –

    h2o || etc.

    The target molecule, if not the last molecule defined.

  • return_wfn (boolean) –

    'on' || \Rightarrow 'off' \Leftarrow

    Indicate to additionally return the Wavefunction calculation result as the second element (after float energy) of a tuple.

  • func (function) –

    \Rightarrow gradient \Leftarrow || energy || cbs

    Indicates the type of calculation to be performed on the molecule. The default dertype accesses 'gradient' or 'energy', while 'cbs' performs a multistage finite difference calculation. If a nested series of python functions is intended (see Function Intercalls), use keyword opt_func instead of func.

  • mode (string) –

    \Rightarrow 'continuous' \Leftarrow || 'sow' || 'reap'

    For a finite difference of energies optimization, indicates whether the calculations required to complete the optimization are to be run in one file ('continuous') or are to be farmed out in an embarrassingly parallel fashion ('sow'/'reap'). For the latter, run an initial job with 'sow' and follow instructions in its output file. For maximum flexibility, return_wfn is always on in 'reap' mode.

  • dertype (dertype) –

    'gradient' || 'energy'

    Indicates whether analytic (if available) or finite difference optimization is to be performed.

  • hessian_with (string) –

    'scf' || 'mp2' || etc.

    Indicates the computational method with which to perform a hessian analysis to guide the geometry optimization.

Warning

Optimizations where the molecule is specified in Z-matrix format with dummy atoms will result in the geometry being converted to a Cartesian representation.

Note

Analytic gradients area available for all methods in the table below. Optimizations with other methods in the energy table proceed by finite differences.

name calls method
efp efp-only optimizations
scf Hartree–Fock (HF) or density functional theory (DFT) [manual]
hf HF self consistent field (SCF) [manual]
dcft density cumulant functional theory [manual]
mp2 2nd-order Moller-Plesset perturbation theory (MP2) [manual] [details]
mp3 3rd-order Moller-Plesset perturbation theory (MP3) [manual] [details]
mp2.5 average of MP2 and MP3 [manual] [details]
omp2 orbital-optimized second-order MP perturbation theory [manual]
omp3 orbital-optimized third-order MP perturbation theory [manual]
omp2.5 orbital-optimized MP2.5 [manual]
lccd Linear CCD [manual] [details]
olccd orbital optimized LCCD [manual]
ccd coupled cluster doubles (CCD) [manual]
ccsd coupled cluster singles and doubles (CCSD) [manual] [details]
ccsd(t) CCSD with perturbative triples (CCSD(T)) [manual] [details]
eom-ccsd equation of motion (EOM) CCSD [manual]
name calls method DFT [manual]
b3lyp B3LYP Hybrid-GGA Exchange-Correlation Functional (VWN1-RPA)
b3lyp-chg B3LYP Hybrid-GGA Exchange-Correlation Functional (VWN1-RPA) w/ Chai and Head-Gordon Dispersion Correction
b3lyp-d B3LYP Hybrid-GGA Exchange-Correlation Functional (VWN1-RPA) w/ Grimme’s -D2 Dispersion Correction
b3lyp-d1 B3LYP Hybrid-GGA Exchange-Correlation Functional (VWN1-RPA) w/ Grimme’s -D1 Dispersion Correction
b3lyp-d3 B3LYP Hybrid-GGA Exchange-Correlation Functional (VWN1-RPA) w/ Grimme’s -D3 (zero-damping) Dispersion Correction
b3lyp-d3bj B3LYP Hybrid-GGA Exchange-Correlation Functional (VWN1-RPA) w/ Grimme’s -D3 (BJ-damping) Dispersion Correction
b3lyp-d3m B3LYP Hybrid-GGA Exchange-Correlation Functional (VWN1-RPA) w/ Grimme’s -D3 (zero-damping, short-range refitted) Dispersion Correction
b3lyp-d3mbj B3LYP Hybrid-GGA Exchange-Correlation Functional (VWN1-RPA) w/ Grimme’s -D3 (BJ-damping, short-range refitted) Dispersion Correction
b3lyp5 B3LYP5 Hybrid-GGA Exchange-Correlation Functional (VWN5)
b3lyp5-d B3LYP5 Hybrid-GGA Exchange-Correlation Functional (VWN5) w/ Grimme’s -D2 Dispersion Correction
b3lyp5-d3 B3LYP5 Hybrid-GGA Exchange-Correlation Functional (VWN5) w/ Grimme’s -D3 (zero-damping) Dispersion Correction
b3lyp5-d3bj B3LYP5 Hybrid-GGA Exchange-Correlation Functional (VWN5) w/ Grimme’s -D3 (BJ-damping) Dispersion Correction
b3lyp5-d3m B3LYP5 Hybrid-GGA Exchange-Correlation Functional (VWN5) w/ Grimme’s -D3 (zero-damping, short-range refitted) Dispersion Correction
b3lyp5-d3mbj B3LYP5 Hybrid-GGA Exchange-Correlation Functional (VWN5) w/ Grimme’s -D3 (BJ-damping, short-range refitted) Dispersion Correction
b3_x Becke88 GGA Exchange (B3LYP weighting)
b88_x Becke88 GGA Exchange
b97-0 B97-0 Hybrid-GGA Exchange-Correlation Functional
b97-1 B97-1 Hybrid-GGA Exchange-Correlation Functional
b97-2 B97-2 Hybrid-GGA Exchange-Correlation Functional
b97-d B97-D Pure-GGA Exchange-Correlation Functional w/ Grimme’s -D2 Dispersion Correction
b97-d3 B97-D Pure-GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping) Dispersion Correction
b97-d3bj B97-D Pure-GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping) Dispersion Correction
b97-d3m B97-D Pure-GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping, short-range refitted) Dispersion Correction
b97-d3mbj B97-D Pure-GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping, short-range refitted) Dispersion Correction
blyp BLYP GGA Exchange-Correlation Functional
blyp-d BLYP GGA Exchange-Correlation Functional w/ Grimme’s -D2 Dispersion Correction
blyp-d1 B3LYP Hybrid-GGA Exchange-Correlation Functional (VWN1-RPA) w/ Grimme’s -D1 Dispersion Correction
blyp-d3 BLYP GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping) Dispersion Correction
blyp-d3bj BLYP GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping) Dispersion Correction
blyp-d3m BLYP GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping, short-range refitted) Dispersion Correction
blyp-d3mbj BLYP GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping, short-range refitted) Dispersion Correction
bp86 BP86 GGA Exchange-Correlation Functional
bp86-d BP86 GGA Exchange-Correlation Functional w/ Grimme’s -D2 Dispersion Correction
bp86-d1 BP86 GGA Exchange-Correlation Functional w/ Grimme’s -D1 Dispersion Correction
bp86-d3 BP86 GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping) Dispersion Correction
bp86-d3bj BP86 GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping) Dispersion Correction
bp86-d3m BP86 GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping, short-range refitted) Dispersion Correction
bp86-d3mbj BP86 GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping, short-range refitted) Dispersion Correction
ft97 FT97 GGA Exchange-Correlation Functional
ft97b_x Filitov and Theil 1997 Exchange
ft97_c FT97 Correlation (Involves Ei functions)
hcth HCTH Pure-GGA Exchange-Correlation Functional
hcth120 HCTH120 Pure-GGA Exchange-Correlation Functional
hcth120-d3 HCTH120 Pure-GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping) Dispersion Correction
hcth120-d3bj HCTH120 Pure-GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping) Dispersion Correction
hcth147 HCTH147 Pure-GGA Exchange-Correlation Functional
hcth407 HCTH407 Pure-GGA Exchange-Correlation Functional
hf+d w/ Podeszwa and Szalewicz Dispersion Correction
hf_x Hartree-Fock Exchange Functional
lyp_c LYP Correlation
m05 Heavily Parameterized Hybrid Meta-GGA XC Functional
m05-2x Heavily Parameterized Hybrid Meta-GGA XC Functional
m05-2x-d3 Heavily Parameterized Hybrid Meta-GGA XC Functional w/ Grimme’s -D3 (zero-damping) Dispersion Correction
m05-d3 Heavily Parameterized Hybrid Meta-GGA XC Functional w/ Grimme’s -D3 (zero-damping) Dispersion Correction
p86_c P86 Correlation (PZ81 LSDA + P86 GGA)
pbe PBE GGA Exchange-Correlation Functional
pbe-d PBE GGA Exchange-Correlation Functional w/ Grimme’s -D2 Dispersion Correction
pbe-d1 PBE GGA Exchange-Correlation Functional w/ Grimme’s -D1 Dispersion Correction
pbe-d3 PBE GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping) Dispersion Correction
pbe-d3bj PBE GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping) Dispersion Correction
pbe-d3m PBE GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping, short-range refitted) Dispersion Correction
pbe-d3mbj PBE GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping, short-range refitted) Dispersion Correction
pbe0 PBE0 Hybrid GGA Exchange-Correlation Functional
pbe0-d PBE0 Hybrid GGA Exchange-Correlation Functional w/ Grimme’s -D2 Dispersion Correction
pbe0-d3 PBE0 Hybrid GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping) Dispersion Correction
pbe0-d3bj PBE0 Hybrid GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping) Dispersion Correction
pbe0-d3m PBE0 Hybrid GGA Exchange-Correlation Functional w/ Grimme’s -D3 (zero-damping, short-range refitted) Dispersion Correction
pbe0-d3mbj PBE0 Hybrid GGA Exchange-Correlation Functional w/ Grimme’s -D3 (BJ-damping, short-range refitted) Dispersion Correction
pbea_c New Implementation of PBEC in wPBEc-sr.
pbesol_x PBEsol GGA Exchange Hole (Parameter Free)
pbe_c PBE Correlation
pbe_x PBE GGA Exchange Hole (Parameter Free)
pw91 PW91 GGA Exchange-Correlation Functional
pw91_c PW91 Correlation
pw91_x PW91 Parameterized GGA Exchange
pw92a_c New Implementation of PW92C in wPBEc-sr.
pw92_c  
pz81_c PZ81 Correlation
rpbe_x RPBE GGA Exchange Hole (Parameter Free)
sogga Second Order GGA Exchange-Correlation Functional
sogga_x Second Order GGA Exchange Hole (Parameter Free)
svwn SVWN3 (RPA) LSDA Functional
s_x Slater LSDA Exchange
vwn3rpa_c VWN3 LSDA Correlation, RPA Parameters, VWN1 Spin Polarization
vwn3_c VWN3 LSDA Correlation, QMC Parameters, VWN1 Spin Polarization
vwn5rpa_c VWN5 LSDA Correlation, RPA Parameters, VWN5 Spin Polarization
vwn5_c VWN5 LSDA Correlation, QMC Parameters, VWN5 Spin Polarization
dldf Dispersionless Hybrid Meta-GGA XC Functional
dldf+d Dispersionless Hybrid Meta-GGA XC Functional w/ Podeszwa and Szalewicz Dispersion Correction
dldf+d09 Dispersionless Hybrid Meta-GGA XC Functional w/ Podeszwa and Szalewicz Dispersion Correction
name calls method in Stanton and Gauss’s CFOUR program [manual]
c4-scf Hartree–Fock (HF)
c4-mp2 2nd-order Moller-Plesset perturbation theory (non-density-fitting) (MP2)
c4-mp3 3rd-order Moller-Plesset perturbation theory (MP3)
c4-mp4(sdq) 4th-order MP perturbation theory (MP4) less triples
c4-mp4 full MP4
c4-cc2 approximate coupled cluster singles and doubles (CC2)
c4-ccsd coupled cluster singles and doubles (CCSD)
c4-cc3 approximate CC singles, doubles, and triples (CC3)
c4-ccsd(t) CCSD with perturbative triples (CCSD(T))
c4-ccsdt coupled cluster singles, doubles, and triples (CCSDT)
cfour expert full control over cfour program
Examples:
>>> # [1] Analytic hf optimization
>>> optimize('hf')
>>> # [2] Finite difference mp5 optimization with gradient
>>> #     printed to output file
>>> e, wfn = opt('mp5', return_wfn='yes')
>>> wfn.gradient().print_out()
>>> # [3] Forced finite difference hf optimization run in
>>> #     embarrassingly parallel fashion
>>> optimize('hf', dertype='energy', mode='sow')
gradient(name[, molecule, return_wfn, func, dertype])[source]

Function complementary to :py:func:~driver.optimize(). Carries out one gradient pass, deciding analytic or finite difference.

Returns:Matrix – Total electronic gradient in Hartrees/Bohr.
Returns:(Matrix, Wavefunction) – gradient and wavefunction when return_wfn specified.
Examples:
>>> # [1] Single-point dft gradient getting the gradient
>>> #     in file, psi4.Matrix, and np.array forms
>>> set gradient_write on
>>> G, wfn = gradient('b3lyp-d', return_wfn=True)
>>> wfn.gradient().print_out()
>>> np.array(G)