RDMFunctional - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


QuantumChemistry

  

RDMFunctional

  

compute the ground state energy of a molecule as a functional of the one-electron reduced density matrix

 

Calling Sequence
Description
Outputs

Options
References
Examples

Calling Sequence

RDMFunctional(molecule, options)

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 symmetry, unit,  max_memory, xc, nuclear_gradient, populations, conv_tol, diis, diis_space, diis_start_cycle, direct_scf, direct_scf_tol, level_shift_factor, max_cycle, max_rho_cutoff, small_rho_cutoff, grids_atomic_radii, grids_becke_scheme, grids_level, grids_prune, grids_radi_method, grids_radii_adjust, grids_symmetry, excited_states, nstates

Description

• 

Reduced Density Matrix Functional Theory (RDMFT) computes the energy of a many-electron atom or molecule as a functional of the one-electron reduced density matrix rather than the many-electron wavefunction ψ(r1, r2, ..., rN).

• 

The command adds a universal correction, based on the 1-electron reduced density matrix (1-RDM) rather than the density alone, to any density functional theory (DFT) functional.

• 

A well-known limitation of DFT is its difficulty in predicting the energies and properties of molecules with static correlation, which is important to the computation of charges, van der Waals forces, barrier heights, and bi- and multiradicals.

• 

RDMFT's universal correction to DFT allows the orbital occupations to become fractional and thereby, capture strong correlation.

• 

Practically, RDMFT has a computational scaling of O(N3) similar to that of DFT.  In RDMFT the energy is minimized by semidefinite programming.

• 

RDMFunctional employs "B3LYP" as its default exchange-correlation (xc) functional.  Although "B3LYP" is the default xc functional, the RDMFunctional is currently optimized for semi-local (non-hybrid) functionals such as "PBE" and "SCAN".  The full list of available functionals is provided in the help page Functionals.  Furthermore, the available functionals can be searched with the SearchFunctionals command.   

• 

On the Windows operating system the RDMFunctional command requires the installation of Microsoft's Windows Subsystem for Linux (WSL).  For Windows 10 (version 2004 and higher) and Windows 11 you can install the WSL by opening the Command Prompt in administrator mode and entering the command: wsl --install -d Ubuntu  For additional details, please refer to: https://learn.microsoft.com/en-us/windows/wsl/install

Outputs

The table of following contents:

te_tot

-

float -- total electronic energy of the system

tmo_coeff

-

Matrix -- coefficients expressing molecular orbitals (columns) in terms of atomic orbitals (rows)

tmo_occ

-

Vector -- molecular orbital occupations

tmo_energy

-

Vector -- energies of the molecular orbitals

tmo_symmetry

-

Vector -- string labels of the irreducible representations of the molecular orbitals

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

tconverged

-

integer -- 1 or 0, indicating whether the calculation is converged or not  

trdm1

-

Matrix -- one-particle reduced density matrix (1-RDM) in the atomic-orbital basis set

tnuclear_gradient

-

Matrix -- analytical nuclear gradient

tdipole

-

Vector -- dipole moment according to its x, y and z components

tpopulations

-

Matrix -- atomic-orbital populations

tcharges

-

Vector -- atomic charges from the populations

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.

• 

unit = "Angstrom" or "Bohr". Default is "Angstrom".

• 

max_memory = posint -- allowed memory in MB.

• 

xc = string -- The full list of available functionals is provided in the help page Functionals.  Default functional is "B3LYP".

• 

solvent = string -- name of the solvent.  See Solvent.  Default is "None".

• 

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.

• 

nuclear_gradient = boolean -- option to return the analytical nuclear gradient if available. Default is false.

• 

active = list -- optional list [N,r] where r is the maximum number of orbitals allowed to be fractional and N is the number of electrons populating those r orbitals.  By default, all orbitals are allowed to become fractional.

• 

populations = string -- atomic-orbital population analysis: "Mulliken" and "Mulliken/meta-Lowdin". Default is "Mulliken".

• 

conv_tol = float -- converge threshold. Default is 1010.

• 

diis = boolean -- whether to employ diis. Default is true.

• 

diis_space = posint -- diis's space size. By default, 8 Fock matrices and errors vector are stored.

• 

diis_start_cycle = posint -- the step to start diis. Default is 1.

• 

direct_scf = boolean -- direct SCF is used by default.

• 

direct_scf_tol = float -- direct SCF cutoff threshold. Default is 1013.

• 

level_shift_factor = float/int -- level shift (in au) for virtual space. Default is 0.

• 

max_cycle = posint -- max number of iterations. Default is 50.

• 

max_rho_cutoff = float -- 107.

• 

small_rho_cutoff = float -- 0.

• 

grids_atomic_radii = string -- "radi.BRAGG_RADII" (default), "radi.COVALENT_RADII", or "None".

• 

grids_becke_scheme = string -- "gen_grid.original_becke" (default) or "gen_grid.stratmann".

• 

grids_level = (0-9) -- big number for large mesh grids. Default is 3.

• 

grids_prune = "gen_grid.nwchem_prune" (default), "gen_grid.sg1_prune", "gen_grid.treutler_prune", or "None".

• 

grids_radi_method = "radi.treutler" (default), "radi.delley", "radi.mura_knowles", or "radi.gauss_chebyshev". 

• 

grids_radii_adjust = "radi.treutler_atomic_radii_adjust" (default), "radi.becke_atomic_radii_adjust", or "None".

• 

grids_symmetry = boolean -- true or false to symmetrize mesh grids.

References

1. 

D. Gibney, J.-N. Boyn, and D. A. Mazziotti, Phys. Rev. Lett. 131, 243003 (2023). "Universal Generalization of Density Functional Theory for Static Correlation"

2. 

D. Gibney, J.-N. Boyn, and D. A. Mazziotti, J. Phys. Chem. Lett. 13, 1382–1388 (2022). "Density Functional Theory Transformed into a One-Electron Reduced-Density-Matrix Functional Theory for the Capture of Static Correlation"

3. 

D. Gibney, J.-N. Boyn, and D. A. Mazziotti, J. Chem. Theory Comput. 18, 6600–6607 (2022). "Comparison of Density-Matrix Corrections to Density Functional Theory"

4. 

D. Gibney, J.-N. Boyn, and D. A. Mazziotti, J. Phys. Chem. Lett. 12, 385–391 (2021). "Toward a Resolution of the Static Correlation Problem in Density Functional Theory from Semidefinite Programming"

5. 

R. G. Parr and W. Yang, Density Functional Theory of Atoms and Molecules (Oxford University Press, New York, 1989).

Examples

While the generalized DFT is applicable to a wide range of molecules, we demonstrate the command RDMFunctional with the dissociation of the diatomic molecule N2.  First, we load the QuantumChemistry package

withQuantumChemistry;

AOLabels,ActiveSpaceCI,ActiveSpaceSCF,AtomicData,BondAngles,BondDistances,Charges,ChargesPlot,Chat,ContractedSchrodinger,CorrelationEnergy,CoupledCluster,DensityFunctional,DensityPlot3D,Dipole,DipolePlot,Energy,ExcitationEnergies,ExcitationSpectra,ExcitationSpectraPlot,ExcitedStateEnergies,ExcitedStateSpins,ExcitonDensityPlot,ExcitonPopulations,ExcitonPopulationsPlot,FullCI,GeometryOptimization,HartreeFock,Interactive,Isotopes,LiteratureSearch,MOCoefficients,MODiagram,MOEnergies,MOIntegrals,MOOccupations,MOOccupationsPlot,MOSymmetries,MP2,MolecularData,MolecularDictionary,MolecularGeometry,NuclearEnergy,NuclearGradient,OscillatorStrengths,Parametric2RDM,PlotMolecule,Populations,Purify2RDM,QuantumComputing,RDM1,RDM2,RDMFunctional,RTM1,ReadXYZ,Restore,Save,SaveXYZ,SearchBasisSets,SearchFunctionals,SkeletalStructure,SolventDatabase,Thermodynamics,TransitionDipolePlot,TransitionDipoles,TransitionOrbitalPlot,TransitionOrbitals,Variational2RDM,VibrationalModeAnimation,VibrationalModes,Video

(1)

We select a set of bond distances from the roots of the sixth-order Chebyshev polynomial

bond_distances  mapx  x+2.0, fsolveexpandChebyshevT8,x;

bond_distances1.01921472,1.16853039,1.44442977,1.80490968,2.19509032,2.55557023,2.83146961,2.98078528

(2)

and define a list of molecular geometries with each geometry corresponding to one of the bond distances

molecules  seqN,0,0,0,N,0,0,R, R in bond_distances;

moleculesN,0,0,0,N,0,0,1.01921472,N,0,0,0,N,0,0,1.16853039,N,0,0,0,N,0,0,1.44442977,N,0,0,0,N,0,0,1.80490968,N,0,0,0,N,0,0,2.19509032,N,0,0,0,N,0,0,2.55557023,N,0,0,0,N,0,0,2.83146961,N,0,0,0,N,0,0,2.98078528

(3)

The energies for each geometry may be then readily computed from DensityFunctional with the Energy  command in the Quantum Chemistry package,

energies_dft seqEnergymolecule,method=DensityFunctional, basis=cc-pVDZ, xc=B3LYP, molecule in molecules;

energies_dft−109.50786339,−109.52331040,−109.37588586,−109.17741963,−109.03358249,−108.95146495,−108.90997138,−108.89291096

(4)

and using polynomial interpolation, we generate a polynomial in the bond distance R

pes_dft  interpbond_distances,energies_dft,R;

pes_dft0.14339035R7+2.20942302R614.44738600R5+51.96535307R4110.97891955R3+140.38786698R296.50876625R81.97856683

(5)

Similarly, we can use the RDMFunctional method in the Energy command

energies_rdm seqEnergymolecule,method=RDMFunctional, basis=cc-pVDZ, xc=B3LYP, molecule in molecules;

energies_rdm−109.50786339,−109.52331040,−109.37588586,−109.18887170,−109.10062254,−109.06672079,−109.05806429,−109.05565802

(6)

and generate a polynomial in R

 pes_rdm  interpbond_distances,energies_rdm,R;

pes_rdm0.00403016R7+0.13029220R62.19462464R5+12.96198119R438.72108443R3+62.54064536R251.32917602R92.88749381

(7)

The potential energy curves from DensityFunctional (red) and RDMFunctional (blue) can be plotted together  

p_dft plotpes_dft, R=1.0..2.9, axes=boxed, labels=Bond Distance (Å),"Energy hartree", color=red, thickness=3, labeldirections=horizontal,vertical: p_rdm  plotpes_rdm, R=1.0..2.9, axes=boxed, labels=Bond Distance (Å),"Energy hartree", color=blue, thickness=3:plots:-displayp_dft,p_rdm;

While the DFT dissociation curve (red) rises too quickly after 1.8Ådue to its incorrect treatment of static correlation, the RDMFunctional dissociation curve (blue) exhibits the correct behavior, leveling off as the bond breaks.

 

As a second example, we compute the energies and properties of hydrogen fluoride at a stretched geometry

molecule  H,0,0,0,F,0,0,2.0;

moleculeH,0,0,0,F,0,0,2.00000000

(8)

data  RDMFunctionalmolecule; 

datatablecharges=,mo_coeff=,mo_symmetry=,populations=,mo_occ=,converged=1,group=C1,aolabels=,mo_energy=,dipole=,e_tot=−98.77669656,rdm1=

(9)

See Also

QuantumChemistry
HartreeFock
DensityFunctional
SearchFunctionals
Functionals
Variational2RDM
Parametric2RDM
ContractedSchrodinger