QuantumChemistry
Variational2RDM
compute the ground-state energy of a molecule as a variational functional of the two-electron reduced density matrix (2-RDM)
Calling Sequence Description Options
Outputs References Examples
Calling Sequence
Variational2RDM(molecule, options) Variational2RDM(nelectrons, mo_integrals = table)
Parameters
molecule
-
list of lists; each list has 4 elements, the string of an atom's symbol and atom's x, y, and z coordinates
options
(optional) equation(s) of the form option = value where option is one of active, conditions, casscf, nuclear_gradient, return_rdm, populations, symmetry, unit, conv_tol, max_memory, max_cycle, max_cycle_sdp, initial_mo, conv_tol_hf, diis_hf, diis_space_hf, diis_start_cycle_hf, direct_scf_hf, direct_scf_tol_hf, level_shift_hf, max_cycle_hf, nuclear_gradient_hf, populations_hf
nelectrons
integer; number of electrons
mo_integrals
mo_integrals = table where the table has two entries one_electron_integrals and two_electron_integrals that contain the one- and two-electron integrals, respectively. The integrals must be specified as Matrices in the format given on the help page for MOIntegrals. The table can have two additional entries to add pointgroup symmetry, group and mo_symmetry, in which group is a string with the pointgroup (i.e. "D2h", "C2h", "C2v", "D2", "Cs", "Ci", "C2", or "C1") and mo_symmetry is a Vector containing strings of the molecular orbitals' irreducible representations (i.e. the Vector returned as mo_symmetry by HartreeFock).
Description
The variational 2-RDM method computes the ground-state energy of a molecule as a variational functional of the two-electron reduced density matrix (2-RDM). The 2-RDM is computed subject to N-representability conditions, which are necessary constraints for the 2-RDM to represent an N-electron density matrix.
The 2-RDM is computed directly without the many-electron wave function through a special type of constrained optimization known as semidefinite programming.
The optional conditions keyword controls the N-representability conditions employed in the calculation. It can be set to the following strings: "D", "DQ", "DQG" (default), and "DQGT".
The optional return_rdm keyword controls whether or not the spin-free 1- and/or 2-RDMs are returned. If set to "rdm1" (default), the 1-RDM is returned, if set to "rdm1_and_rdm2", the 1- and 2-RDMs are returned, and if set to "none", RDMs are not returned.
The optional active keyword can be provided to control the size of the active space. The active keyword can be assigned to a list of two elements [N,r] containing the number N of active electrons and the number r of active orbitals or a set {} containing the indices of the molecular orbitals to be treated as active. If the active keyword is not assigned, then a [2,2] active space is automatically chosen for even N and a [3,3] active space for odd N.
The optional casscf keyword controls whether or not the orbitals of the active space are optimized. If set to false (default), the orbitals are not optimized, and if set to true, the orbitals are optimized.
The second calling sequence requires the number of electrons nelectrons and a keyword mo_integrals set to a Maple table that contains the one- and two-electron integrals. This calling sequence allows for using custom Hamiltonians in the Variational 2-RDM method.
Outputs
The table of following contents:
te_tot
float -- total electronic energy of the system
te_corr
float -- the difference between the variational 2-RDM method's energy and the Hartree-Fock energy
tmo_coeff
Matrix -- coefficients expressing natural molecular orbitals (columns) in terms of atomic orbitals (rows)
tmo_coeff_canonical
Matrix -- coefficients expressing canonical molecular orbitals (columns) in terms of atomic orbitals (rows)
tmo_occ
Vector -- molecular (natural) orbital occupations
tconverged
integer -- 1 or 0, whether the energies are converged or not
tgroup
string -- name of the molecule's point group symmetry
taolabels
Vector -- string label for each atomic orbital consisting of the atomic symbol and the orbital name
tactive_orbitals
list -- list of integers and/or integer ranges indicating the molecular orbitals that are active for correlation
trdm1
Matrix -- one-particle reduced density matrix (1-RDM) in molecular-orbital (MO) representation
trdm2
Matrix -- two-particle reduced density matrix (2-RDM) in molecular-orbital (MO) representation
tdipole
Vector -- dipole moment according to its x, y and z components
tpopulations
Matrix -- atomic-orbital populations
tcharges
Vector -- atomic charges from the populations
tnuclear_gradient
Matrix -- analytical nuclear gradient
Options
basis = string -- name of the basis set. See Basis for a list of available basis sets. Default is "sto-3g".
spin = nonnegint -- twice the total spin S (= 2S). Default is 0.
charge = nonnegint -- net charge of the molecule. Default is 0.
symmetry = string/boolean -- is the Schoenflies symbol of the abelian point-group symmetry which can be one of the following: D2h, C2h, C2v, D2, Cs, Ci, C2, C1. true (default) finds the appropriate symmetry while false does not use symmetry.
unit = string -- "Angstrom" or "Bohr". Default is "Angstrom".
ghost = list of lists -- each list has the string of an atom's symbol and the atom's x, y, and z coordinates. See Ghost Atoms.
conditions = string -- "D", "DQ", "DQG," or "DQGT". Default is "DQG".
active = list or set -- [number of electrons, number of active orbitals] or {integer indices of the active orbitals}
return_rdm = string -- options to return the 1-RDM and/or 2-RDM: "none", "rdm1", "rdm1_and_rdm2". Default is "rdm1".
casscf = boolean -- optimize the active orbitals through rotations with the inactive orbitals. Default is false.
pair = boolean -- treat the active orbitals with a pair variational 2-RDM method corresponding to the doubly occupied configuration interaction approximation. Default is false.
populations = string -- atomic-orbital population analysis: "Mulliken" and "Mulliken/meta-Lowdin". Default is "Mulliken".
nuclear_gradient = boolean -- option to return the analytical nuclear gradient if available. Default is false.
conv_tol = float -- converge threshold. Default is 5*10−5.
max_cycle = posint -- max number of iterations. Default is 50.
max_cycle_sdp = posint -- max number of SDP iterations. Default is 50000.
max_memory = posint/boolean -- allowed memory in MB. Default is 4000.
verbose = posint -- positive integer between 1 and 5 that controls printing. Default is 1.
initial_mo = list -- initial molecular orbitals (MOs) as a list: [ t[mo_coeff], t[mo_symmetry] ] where t[mo_coeff] is the Matrix of MOs (columns) in terms of atomic orbitals (rows) and t[mo_symmetry] is the Vector of MO symmetries (see HartreeFock output).
Attributes for Hartree Fock:
conv_tol_hf = float -- converge threshold. Default is 10−10.
diis_hf = boolean -- whether to do diis. Default is true.
diis_space_hf = posint -- diis's space size. By default, 8 Fock matrices and errors vector are stored.
diis_start_cycle_hf = posint -- the step to start diis. Default is 1.
direct_scf_hf = boolean -- direct SCF in which integrals are recomputed is used by default.
direct_scf_tol_hf = float -- direct SCF cutoff threshold. Default is 10−13.
level_shift_hf = float/int -- level shift (in a.u.) for virtual space. Default is 0.
max_cycle_hf = posint -- max number of iterations. Default is 50.
nuclear_gradient_hf = boolean -- option to return the analytical nuclear gradient. Default is false.
populations_hf = string -- atomic-orbital population analysis: "Mulliken" and "Mulliken/meta-Lowdin". Default is "Mulliken".
mo_integrals = table -- table with two entries one_electron_integrals and two_electron_integrals containing the one- and two-electron integrals, respectively. The integrals must be specified as Matrices in the format given on the help page for MOIntegrals. The table can have two additional entries to add pointgroup symmetry, group and mo_symmetry, in which group is a string with the pointgroup (i.e. "D2h", "C2h", "C2v", "D2", "Cs", "Ci", "C2", or "C1") and mo_symmetry is a Vector containing strings of the molecular orbitals' irreducible representations (i.e. the Vector returned as mo_symmetry by HartreeFock).
References
D. A. Mazziotti, Phys. Rev. Lett. 106, 083001 (2011). "Large-scale semidefinite programming for many-electron quantum mechanics"
D. A. Mazziotti, Phys. Rev. Lett. 93, 213001 (2004). "Realization of quantum chemistry without wave functions through first-order semidefinite programming"
A. W. Schlimgen, C. W. Heaps, and D. A. Mazziotti, J. Phys. Chem. Lett. 7, 627-631 (2016). "Entangled electrons foil synthesis of elusive low-valent vanadium oxo complex"
J. M. Montgomery and D. A. Mazziotti, J. Phys. Chem. A 122, 4988-4996 (2018). "Strong electron correlation in nitrogenase cofactor, FeMoco"
L. E. McNamara, J.-N. Boyn, C. Melnychuk, S. W. Anferov, D. A. Mazziotti, R. D Schaller, and J. S Anderson, J. Am. Chem. Soc. 144, 16447-16455 (2022). "Bright, modular, and switchable near-infrared II emission from compact tetrathiafulvalene-based diradicaloid complexes"
Examples
withQuantumChemistry:
A variational 2-RDM calculation of the hydrogen fluoride HF molecule
molecule ≔ H,0,0,0,F,0,0,0.95;
molecule≔H,0,0,0,F,0,0,0.95000000
output_hf ≔ Variational2RDMmolecule, active=3,6, basis=dz;
Consider the molecule porphyrin
porphyrin ≔ MolecularGeometryporphyrin;
porphyrin≔N,0.41270000,1.98750000,0.00600000,N,−2.17470000,0.39250000,−0.24630000,N,1.99980000,−0.37780000,0.02600000,N,−0.38610000,−1.92460000,0.03210000,C,−0.58090000,2.92330000,−0.12260000,C,−2.66830000,1.63500000,0.08770000,C,1.67060000,2.53490000,−0.08640000,C,−3.09270000,−0.59120000,0.05040000,C,−1.91870000,2.82790000,−0.09620000,C,0.12580000,4.19230000,−0.29380000,C,−3.96180000,1.43880000,0.53500000,C,1.45170000,3.96250000,−0.26730000,C,−4.22710000,0.04920000,0.51040000,C,2.87440000,1.94860000,−0.03850000,C,−2.81980000,−1.96620000,−0.17610000,C,2.97660000,0.47870000,0.08240000,C,−1.60350000,−2.53250000,−0.17530000,C,2.58760000,−1.61060000,0.15620000,C,0.49120000,−2.88490000,−0.03030000,C,1.96090000,−2.79310000,0.13490000,C,4.30850000,−0.11290000,0.25850000,C,−1.36830000,−3.94400000,−0.36680000,C,4.00910000,−1.41320000,0.29990000,C,−0.06710000,−4.22030000,−0.27980000,H,−2.50140000,3.74390000,−0.18110000,H,0.26030000,1.01000000,0.19310000,H,−1.27220000,0.21960000,−0.66540000,H,−0.34730000,5.15390000,−0.41810000,H,−4.64240000,2.21750000,0.85240000,H,2.22780000,4.70420000,−0.36980000,H,−5.14780000,−0.43540000,0.80620000,H,3.79140000,2.52310000,−0.11690000,H,−3.68870000,−2.60860000,−0.30970000,H,2.51710000,−3.72110000,0.22650000,H,5.26030000,0.37900000,0.33090000,H,−2.14430000,−4.67240000,−0.54800000,H,4.72590000,−2.21120000,0.41950000,H,0.44540000,−5.15990000,−0.36890000
PlotMoleculeporphyrin;
data ≔ Variational2RDMporphyrin;
With the second calling sequence we can customize the Hamiltonian by defining the electron integrals. For example, let us demonstrate by using the integrals returned by MOIntegrals
molecule ≔ H,0,0,0,F,0,0,0.95:
data ≔ HartreeFockmolecule, symmetry=false:
modata ≔ datamo_coeff,datamo_symmetry:
mo ≔ MOIntegralsmolecule, initial_mo=modata:
mointsone_electron_integrals ≔mokinetic_energy_integrals+monuclear_attraction_integrals:
mointstwo_electron_integrals ≔ moelectron_repulsion_integrals:
nelectrons ≔ 10:
data ≔ Variational2RDMnelectrons, mo_integrals=moints;
data≔table⁡e_tot=−103.61457071,mo_coeff=,mo_occ=,group=C1,rdm1=,converged=1
Note that the returned energy needs to be corrected for the nuclear repulsion energy
energy ≔ datae_tot+NuclearEnergymolecule;
energy≔−98.60131255
To verify this result, we compare with computing the energy by the standard approach
energy ≔ Energymolecule, method=Variational2RDM, active=10,6;
energy≔−98.60131262
See Also
QuantumChemistry HartreeFock FullCI ActiveSpaceCI ActiveSpaceSCF Parametric2RDM ContractedSchrodinger
Download Help Document