Variational2RDM - Maple Help

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 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:

 ${t}\left[{\mathrm{e_tot}}\right]$ - float -- total electronic energy of the system ${t}\left[{\mathrm{e_corr}}\right]$ - float -- the difference between the variational 2-RDM method's energy and the Hartree-Fock energy ${t}\left[{\mathrm{mo_coeff}}\right]$ - Matrix -- coefficients expressing natural molecular orbitals (columns) in terms of atomic orbitals (rows) ${t}\left[{\mathrm{mo_coeff_canonical}}\right]$ - Matrix -- coefficients expressing canonical molecular orbitals (columns) in terms of atomic orbitals (rows) ${t}\left[{\mathrm{mo_occ}}\right]$ - Vector -- molecular (natural) orbital occupations ${t}\left[{\mathrm{converged}}\right]$ - integer -- 1 or 0, whether the energies are converged or not ${t}\left[{\mathrm{group}}\right]$ - string -- name of the molecule's point group symmetry ${t}\left[{\mathrm{aolabels}}\right]$ - Vector -- string label for each atomic orbital consisting of the atomic symbol and the orbital name ${t}\left[{\mathrm{active_orbitals}}\right]$ - list -- list of integers and/or integer ranges indicating the molecular orbitals that are active for correlation ${t}\left[{\mathrm{rdm1}}\right]$ - Matrix -- one-particle reduced density matrix (1-RDM) in molecular-orbital (MO) representation ${t}\left[{\mathrm{rdm2}}\right]$ - Matrix -- two-particle reduced density matrix (2-RDM) in molecular-orbital (MO) representation ${t}\left[{\mathrm{dipole}}\right]$ - Vector -- dipole moment according to its x, y and z components ${t}\left[{\mathrm{populations}}\right]$ - Matrix -- atomic-orbital populations ${t}\left[{\mathrm{charges}}\right]$ - Vector -- atomic charges from the populations ${t}\left[{\mathrm{nuclear_gradient}}\right]$ - 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

 1 D. A. Mazziotti, Phys. Rev. Lett. 106, 083001 (2011). "Large-scale semidefinite programming for many-electron quantum mechanics"
 2 D. A. Mazziotti, Phys. Rev. Lett. 93, 213001 (2004). "Realization of quantum chemistry without wave functions through first-order semidefinite programming"
 3 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"
 4 J. M. Montgomery and D. A. Mazziotti, J. Phys. Chem. A 122, 4988-4996 (2018). "Strong electron correlation in nitrogenase cofactor, FeMoco"
 5 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

 > $\mathrm{with}\left(\mathrm{QuantumChemistry}\right):$

A variational 2-RDM calculation of the  molecule

 >
 ${\mathrm{molecule}}{≔}\left[\left[{"H"}{,}{0}{,}{0}{,}{0}\right]{,}\left[{"F"}{,}{0}{,}{0}{,}{0.95000000}\right]\right]$ (1)
 >

Consider the molecule porphin

 >
 ${\mathrm{porphin}}{≔}\left[\left[{"N"}{,}{-2.08810000}{,}{-0.00060000}{,}{-0.00300000}\right]{,}\left[{"N"}{,}{2.13620000}{,}{0.00050000}{,}{0.00680000}\right]{,}\left[{"N"}{,}{-0.00800000}{,}{-1.98020000}{,}{0.00100000}\right]{,}\left[{"N"}{,}{-0.00910000}{,}{1.98030000}{,}{0.00020000}\right]{,}\left[{"C"}{,}{-2.84780000}{,}{-1.14060000}{,}{-0.00630000}\right]{,}\left[{"C"}{,}{-2.84840000}{,}{1.13910000}{,}{-0.00350000}\right]{,}\left[{"C"}{,}{2.92200000}{,}{-1.13340000}{,}{-0.00180000}\right]{,}\left[{"C"}{,}{2.92120000}{,}{1.13500000}{,}{-0.00380000}\right]{,}\left[{"C"}{,}{-1.03300000}{,}{-2.78390000}{,}{0.00130000}\right]{,}\left[{"C"}{,}{-1.03450000}{,}{2.78330000}{,}{0.00360000}\right]{,}\left[{"C"}{,}{1.09470000}{,}{-2.80000000}{,}{0.00760000}\right]{,}\left[{"C"}{,}{1.09310000}{,}{2.80070000}{,}{0.00450000}\right]{,}\left[{"C"}{,}{-2.46930000}{,}{-2.42440000}{,}{-0.00510000}\right]{,}\left[{"C"}{,}{-2.47070000}{,}{2.42300000}{,}{-0.00010000}\right]{,}\left[{"C"}{,}{2.38910000}{,}{-2.45120000}{,}{0.00680000}\right]{,}\left[{"C"}{,}{2.38760000}{,}{2.45240000}{,}{0.00280000}\right]{,}\left[{"C"}{,}{-4.22910000}{,}{-0.67480000}{,}{-0.01020000}\right]{,}\left[{"C"}{,}{-4.22950000}{,}{0.67250000}{,}{-0.00830000}\right]{,}\left[{"C"}{,}{4.23650000}{,}{-0.70490000}{,}{-0.01780000}\right]{,}\left[{"C"}{,}{4.23600000}{,}{0.70740000}{,}{-0.01890000}\right]{,}\left[{"C"}{,}{-0.70220000}{,}{-4.21410000}{,}{0.00850000}\right]{,}\left[{"C"}{,}{-0.70460000}{,}{4.21360000}{,}{0.01110000}\right]{,}\left[{"C"}{,}{0.63010000}{,}{-4.16800000}{,}{0.01350000}\right]{,}\left[{"C"}{,}{0.62770000}{,}{4.16840000}{,}{0.01100000}\right]{,}\left[{"H"}{,}{-1.08000000}{,}{-0.00040000}{,}{0.00050000}\right]{,}\left[{"H"}{,}{1.12580000}{,}{0.00020000}{,}{0.01980000}\right]{,}\left[{"H"}{,}{-3.19880000}{,}{-3.22790000}{,}{-0.00740000}\right]{,}\left[{"H"}{,}{-3.20060000}{,}{3.22610000}{,}{-0.00060000}\right]{,}\left[{"H"}{,}{3.12780000}{,}{-3.25200000}{,}{0.01090000}\right]{,}\left[{"H"}{,}{3.12600000}{,}{3.25360000}{,}{0.00550000}\right]{,}\left[{"H"}{,}{-5.10010000}{,}{-1.31080000}{,}{-0.01350000}\right]{,}\left[{"H"}{,}{-5.10070000}{,}{1.30810000}{,}{-0.01000000}\right]{,}\left[{"H"}{,}{5.10700000}{,}{-1.34730000}{,}{-0.02730000}\right]{,}\left[{"H"}{,}{5.10600000}{,}{1.35040000}{,}{-0.02940000}\right]{,}\left[{"H"}{,}{-1.36320000}{,}{-5.06040000}{,}{0.01020000}\right]{,}\left[{"H"}{,}{-1.36610000}{,}{5.05950000}{,}{0.01500000}\right]{,}\left[{"H"}{,}{1.27790000}{,}{-5.03170000}{,}{0.01980000}\right]{,}\left[{"H"}{,}{1.27500000}{,}{5.03240000}{,}{0.01530000}\right]\right]$ (2)
 > $\mathrm{PlotMolecule}\left(\mathrm{porphin}\right);$
 >

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

 >
 >
 >
 >
 >
 >
 >
 >
 ${\mathrm{table}}{}\left({\mathrm{%id}}{=}{36893490405790101340}\right)$ (3)

Note that the returned energy needs to be corrected for the nuclear repulsion energy

 >

 ${\mathrm{energy}}{≔}{-98.60131265}$ (4)

To verify this result, we compare with computing the energy by the standard approach

 >
 ${\mathrm{energy}}{≔}{-98.60131262}$ (5)
 >