The first example shows how to perform separate computations on different electronic states of methylene. We compute the lowest ^3B_1 state and the first two ^1A_1 states. All of these computations use ROHF orbitals optimized for the lowest ^3B_1. Here we use the python API interface of Forte, but it is easy to translate these examples to a psi4 psithon input.
This input (see examples/api/02_rohf_fci.py
) starts with the
geometry specification:
# examples/api/02_rohf_fci.py
import psi4
import forte
mol = psi4.geometry("""
0 3 # triplet state
C
H 1 1.085
H 1 1.085 2 135.5
""")
psi4.set_options(
{
'basis': 'DZ',
'scf_type': 'pk', # <-- request conventional two-electron integrals
'e_convergence': 12,
'reference': 'rohf',
'forte__active_space_solver': 'fci',
'forte__restricted_docc': [1, 0, 0, 0],
'forte__active': [3, 0, 2, 2],
'forte__multiplicity': 3, # <-- triplet state
'forte__root_sym': 2, # <-- B1 symmetry
}
)
Note that all options prefixed with forte__
are specific to the
Forte computation. Here we specify a multiplicity equal to 3 and the
B_1 irrep (root_sym = 2
). In this example we keep the lowest
A_1 MO doubly occupied ('restricted_docc': [1, 0, 0, 0]
) and
use an active space that contains three A_1 MOs, and two MOs
each of B_1 and B_2 symmetry. Lastly, we run Forte:
psi4.energy('forte')
This input will run a CASCI computation (since we have not requested orbital optimization). An example of how to request orbital optimization can be found in the section Computing a manifold of solutions of different symmetry. The output will return the energy and show the composition of the wave function:
==> Root No. 0 <== 2b0 a0 20 0.70326213 2a0 b0 20 -0.70326213 Total Energy: -38.924726774489, <S^2>: 2.000000 ==> Energy Summary <== Multi.(2ms) Irrep. No. Energy <S^2> -------------------------------------------------------- 3 ( 0) B1 0 -38.924726774489 2.000000 --------------------------------------------------------
Next we change the options to compute the lowest two 1A_1
states. We modify the multiplicity, the symmetry, and indicate that we
want two roots (NROOTS = 2
):
psi4.set_options({
'forte__multiplicity': 1,
'forte__root_sym': 0, # <-- A1 symmetry
'forte__nroots' : 2}
)
psi4.energy('forte')
The results of this computation is:
==> Root No. 0 <== 220 00 20 0.92134189 200 20 20 -0.37537841 Total Energy: -38.866616413802, <S^2>: -0.000000 ==> Root No. 1 <== 200 20 20 -0.89364609 220 00 20 -0.36032959 ab0 20 20 -0.13675846 ba0 20 20 -0.13675846 Total Energy: -38.800424868719, <S^2>: -0.000000 ==> Energy Summary <== Multi.(2ms) Irrep. No. Energy <S^2> -------------------------------------------------------- 1 ( 0) A1 0 -38.866616413802 -0.000000 1 ( 0) A1 1 -38.800424868719 -0.000000 --------------------------------------------------------
The next example shows how to perform a state-averaged CASSCF
computation on two electronic states of different symmetries. We still
consider methylene, and average the lowest ^3B_1 and
^1A_1 states. To begin, we use ROHF orbitals optimized for the
lowest ^3B_1. However, the final orbitals will optimize the
average energy :raw-latex:`\begin{equation}
E_\mathrm{avg} = \frac{1}{2} \left(E_{^3B_1} + E_{^1A_1}\right).
\end{equation}` We use the same active space of the previous example,
but here to specify the state, we set the AVG_STATE
option:
# examples/api/03_sa-casscf.py
import psi4
import forte
psi4.geometry("""
0 3
C
H 1 1.085
H 1 1.085 2 135.5
""")
psi4.set_options({'basis': 'DZ', 'scf_type': 'pk', 'e_convergence': 12, 'reference': 'rohf',
'forte__job_type': 'mcscf_two_step',
'forte__active_space_solver': 'fci',
'forte__restricted_docc': [1, 0, 0, 0],
'forte__active': [3, 0, 2, 2],
'forte__avg_state': [[2, 3, 1], [0, 1, 1]]
# [(B1, triplet, 1 state), (A1,singlet,1 state)]
}
)
psi4.energy('forte')
The output of this computation (in examples/api/03_sa-casscf.out
)
shows the energy for both states in the following table:
==> Energy Summary <== Multi.(2ms) Irrep. No. Energy <S^2> -------------------------------------------------------- 1 ( 0) A1 0 -38.900217662950 0.000000 -------------------------------------------------------- 3 ( 0) B1 0 -38.960623289646 2.000000 --------------------------------------------------------
A common issue when running CASSCF computation problematic convergence due to a poor orbital guess. By default, Forte’s CASSCF code uses a Hartree-Fock guess on a state with the same charge and multiplicity of the solution that we are seeking. The next example shows how to provide initial orbitals from states with different multiplicity, different charge and multiplicity, or obtained via DFT. Here we target the singlet state of methylene, using the same active space of the previous example.
In the first example, we will ROHF orbitals for the triplet state as a
starting guess for CASSCF. To specify a triplet state we modify the
geometry section. After the ROHF computation, we pass the option
forte__multiplicity
to instruct Forte to optimize a singlet state
# examples/api/04_casscf-triplet-guess.py
import psi4
import forte
psi4.geometry("""
0 3 # <-- here we specify a triplet state
C
H 1 1.085
H 1 1.085 2 135.5
""")
psi4.set_options({'basis': 'DZ', 'scf_type': 'pk', 'e_convergence': 12, 'reference': 'rohf'})
e, wfn = psi4.energy('scf',return_wfn=True)
psi4.set_options({
'forte__job_type': 'mcscf_two_step',
'forte__multiplicity' : 1, # <-- to override multiplicity = 2 assumed from geometry
'forte__active_space_solver': 'fci',
'forte__restricted_docc': [1, 0, 0, 0],
'forte__active': [3, 0, 2, 2],
}
)
psi4.energy('forte',ref_wfn=wfn)
In the second example, we will ROHF orbitals for the doublet cation as a starting guess for CASSCF. The relevant changes are made in the geometry section, where we indicate a charge of +1 and multiplicity equal to 2:
# examples/api/05_casscf-doublet-guess.py
# ...
psi4.geometry("""
1 2
C
H 1 1.085
H 1 1.085 2 135.5
""")
and we also add options to fully specify the values of charge, multiplicity, and M_S used to perform the CASSCF computation
psi4.set_options({ 'forte__job_type': 'mcscf_two_step', 'forte__charge' : 0, # <-- to override charge = +1 assumed from geometry 'forte__multiplicity' : 1, # <-- to override multiplicity = 2 assumed from geometry 'forte__ms' : 0, # <-- to override ms = 1/2 assumed from geometry 'forte__active_space_solver': 'fci', 'forte__restricted_docc': [1, 0, 0, 0], 'forte__active': [3, 0, 2, 2], } )
In the last example, we pass DFT orbitals (triplet UB3LYP) as a starting guess:
# examples/api/06_casscf-dft-guess.py
# ...
psi4.geometry("""
0 3
C
H 1 1.085
H 1 1.085 2 135.5
""")
psi4.set_options({'basis': 'DZ', 'scf_type': 'pk', 'e_convergence': 12, 'reference': 'uks'})
e, wfn = psi4.energy('b3lyp',return_wfn=True)
psi4.set_options({
'forte__job_type': 'mcscf_two_step',
'forte__charge' : 0, # <-- to override charge = +1 assumed from geometry
'forte__multiplicity' : 1, # <-- to override multiplicity = 2 assumed from geometry
'forte__ms' : 0, # <-- to override ms = 1/2 assumed from geometry
'forte__active_space_solver': 'fci',
'forte__restricted_docc': [1, 0, 0, 0],
'forte__active': [3, 0, 2, 2],
}
)
The following is a numerical comparison of the convergence pattern of these three computations and the default guess used by Forte (singlet RHF, in this case)
Singlet RHF guess (default guess) Energy CI Energy Orbital ------------------------------ ------------------------------ Iter. Total Energy Delta Total Energy Delta Orb. Grad. Micro ---------------------------------------------------------------------------------------- 1 -38.869758479716 0.0000e+00 -38.878577088058 0.0000e+00 6.0872e-07 9 2 -38.894769773234 -2.5011e-02 -38.899566097104 -2.0989e-02 5.9692e-07 9 3 -38.900644175245 -5.8744e-03 -38.900811142131 -1.2450e-03 2.8974e-07 7 4 -38.900845440821 -2.0127e-04 -38.900853293556 -4.2151e-05 2.1094e-07 6 5 -38.900856221599 -1.0781e-05 -38.900856382896 -3.0893e-06 3.5078e-07 5 6 -38.900856468519 -2.4692e-07 -38.900856468929 -8.6033e-08 2.7648e-07 4 7 -38.900856469070 -5.5024e-10 -38.900856469077 -1.4813e-10 3.4940e-08 3 ---------------------------------------------------------------------------------------- Triplet ROHF guess (04_casscf-triplet-guess.out) Energy CI Energy Orbital ------------------------------ ------------------------------ Iter. Total Energy Delta Total Energy Delta Orb. Grad. Micro ---------------------------------------------------------------------------------------- 1 -38.866616410911 0.0000e+00 -38.877770272313 0.0000e+00 1.8365e-06 10 2 -38.894804745194 -2.8188e-02 -38.899492369417 -2.1722e-02 1.8438e-06 9 3 -38.900608150627 -5.8034e-03 -38.900797672192 -1.3053e-03 1.1877e-07 8 4 -38.900840657824 -2.3251e-04 -38.900851568289 -5.3896e-05 2.8346e-07 6 5 -38.900856107378 -1.5450e-05 -38.900856342345 -4.7741e-06 3.5145e-07 5 6 -38.900856468806 -3.6143e-07 -38.900856469025 -1.2668e-07 2.6265e-07 4 7 -38.900856469077 -2.7063e-10 -38.900856469079 -5.3831e-11 3.0108e-08 3 ---------------------------------------------------------------------------------------- Doublet ROHF (examples/api/05_casscf-doublet-guess.out) Energy CI Energy Orbital ------------------------------ ------------------------------ Iter. Total Energy Delta Total Energy Delta Orb. Grad. Micro ---------------------------------------------------------------------------------------- 1 -38.819565876524 0.0000e+00 -38.862403924512 0.0000e+00 2.4525e-06 14 2 -38.893973814690 -7.4408e-02 -38.899703281038 -3.7299e-02 2.7109e-06 11 3 -38.900705647525 -6.7318e-03 -38.900828470211 -1.1252e-03 4.6263e-07 9 4 -38.900850304213 -1.4466e-04 -38.900854820184 -2.6350e-05 2.4524e-07 8 5 -38.900856305078 -6.0009e-06 -38.900856411175 -1.5910e-06 4.4290e-07 7 6 -38.900856468122 -1.6304e-07 -38.900856468764 -5.7589e-08 1.6046e-07 7 7 -38.900856469077 -9.5575e-10 -38.900856469079 -3.1550e-10 2.7174e-08 3 ---------------------------------------------------------------------------------------- Unrestricted DFT (B3LYP) guess (examples/api/06_casscf-dft-guess.out) Energy CI Energy Orbital ------------------------------ ------------------------------ Iter. Total Energy Delta Total Energy Delta Orb. Grad. Micro ---------------------------------------------------------------------------------------- 1 -38.864953251693 0.0000e+00 -38.878418350280 0.0000e+00 1.6735e-06 11 2 -38.893853205980 -2.8900e-02 -38.899336177723 -2.0918e-02 1.7239e-06 9 3 -38.900627125514 -6.7739e-03 -38.900811355470 -1.4752e-03 1.6239e-07 8 4 -38.900846596355 -2.1947e-04 -38.900853835219 -4.2480e-05 9.5895e-08 7 5 -38.900856239152 -9.6428e-06 -38.900856388795 -2.5536e-06 1.0132e-07 6 6 -38.900856468388 -2.2924e-07 -38.900856468891 -8.0096e-08 6.1277e-08 5 7 -38.900856469072 -6.8447e-10 -38.900856469078 -1.8658e-10 2.4832e-08 3 ----------------------------------------------------------------------------------------