CheMPS2
|
#include <EdmistonRuedenberg.h>
Public Member Functions | |
EdmistonRuedenberg (const FourIndex *Vmat, const int group, const int printLevelIn=1) | |
Constructor. More... | |
virtual | ~EdmistonRuedenberg () |
Destructor. | |
double | Optimize (double *temp1, double *temp2, const bool startFromRandomUnitary, const double gradThreshold=EDMISTONRUED_gradThreshold, const int maxIter=EDMISTONRUED_maxIter) |
Maximize the Edmiston-Ruedenberg cost function. More... | |
void | FiedlerExchange (const int maxlinsize, double *temp1, double *temp2) |
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized (per irrep) More... | |
void | FiedlerGlobal (int *dmrg2ham) const |
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized. More... | |
DMRGSCFunitary * | getUnitary () |
Get the pointer to the unitary to use in DMRGSCF. More... | |
EdmistonRuedenberg class.
DMRG is not invariant with respect to orbital choice and ordering [LOC1]. An MPS introduces an artificial correlation length. Highly correlated orbitals should be placed close to each other for optimal DMRG performance. The correlation between localized orbitals in extended molecules decreases with increasing spatial separation. The exchange matrix directly reflects orbital overlap and separation. Minimizing its bandwidth yields a good ordering for extended molecules [LOC2, LOC3].
Physics notation is assumed for the two-body matrix elements (the electron repulsion integrals with eightfold permutation symmetry):
Edmiston and Ruedenberg proposed to maximize the cost function
in order to obtain localized orthonormal orbitals [LOC4]. When the spatial extent of an orbital is small, its self-repulsion will indeed be high. CheMPS2 obtains localized orbitals (per irrep) with an augmented Hessian Newton-Raphson maximization of , which can be called with the function CheMPS2::EdmistonRuedenberg::Optimize.
The orbitals which maximize the cost function can be parametrized with an orthogonal matrix (see CheMPS2::CASSCF):
The following derivatives from Ref. [LOC5] are useful:
in which is the element in which corresponds to . Keeping the eightfold permutation symmetry of in mind, the gradient of with respect to orbital rotations is
and the Hessian
Once localized orbitals are obtained, they can be ordered so that the bandwidth of the exchange matrix is minimal. This matrix has only nonnegative entries [LOC6]:
A fast approximate bandwidth minimization is obtained by the so-called Fiedler vector [LOC7, LOC8, LOC9, LOC10]. Consider the minimization of the cost function
where the (continuous) variable denotes the optimal position of orbital . In order to fix translational invariance and normalization of the solution, the constraints and are imposed. The cost function can be rewritten as
with the symmetric and positive semidefinite Laplacian :
The constant vector is an eigenvector of with eigenvalue 0, which is discarded due to the translational invariance constraint. When the exchange matrix is not block-diagonal, all other eigenvalues are positive. The eigenvector with smallest nonzero eigenvalue is the Fiedler vector, the solution to the constrained minimization of [LOC7, LOC8, LOC9, LOC10]. When the indices of the orbitals are permuted so that they are ordered according to the continuous variables in the Fiedler vector, a fast approximate bandwidth minimization of the exchange matrix is performed. CheMPS2 orders the localized orbitals according to the Fiedler vector of the exchange matrix, which is performed in the function CheMPS2::EdmistonRuedenberg::FiedlerExchange.
[LOC1] S. Wouters and D. Van Neck, European Physical Journal D 68, 272 (2014). http://dx.doi.org/10.1140/epjd/e2014-50500-1
[LOC2] W. Mizukami, Y. Kurashige and T. Yanai, Journal of Chemical Theory and Computation 9, 401-407 (2013). http://dx.doi.org/10.1021/ct3008974
[LOC3] N. Nakatani and G.K.-L. Chan, Journal of Chemical Physics 138, 134113 (2013). http://dx.doi.org/10.1063/1.4798639
[LOC4] C. Edmiston and K. Ruedenberg, Reviews of Modern Physics 35, 457-464 (1963). http://dx.doi.org/10.1103/RevModPhys.35.457
[LOC5] P.E.M. Siegbahn, J. Almlof, A. Heiberg and B.O. Roos, Journal of Chemical Physics 74, 2384-2396 (1981). http://dx.doi.org/10.1063/1.441359
[LOC6] A. Auerbach, Interacting Electrons and Quantum Magnetism, Springer, Heidelberg, 1994.
[LOC7] M. Fiedler, Czechoslovak Mathematical Journal 23, 298-305 (1973). http://dml.cz/dmlcz/101168
[LOC8] M. Fiedler, Czechoslovak Mathematical Journal 25, 619-633 (1975). http://dml.cz/dmlcz/101357
[LOC9] G. Barcza, O. Legeza, K. H. Marti, M. Reiher, Physical Review A 83, 012508 (2011). http://dx.doi.org/10.1103/PhysRevA.83.012508
[LOC10] M.W. Berry, Fiedler ordering, http://web.eecs.utk.edu/~mberry/order/node9.html (1996).
In the Boys localization method, the cost function
is maximized. With an orthogonal orbital rotation , the cost function becomes
The gradient and hessian of J with respect to orbital rotations are given by:
(Written down here for future reference.)
Definition at line 126 of file EdmistonRuedenberg.h.
CheMPS2::EdmistonRuedenberg::EdmistonRuedenberg | ( | const FourIndex * | Vmat, |
const int | group, | ||
const int | printLevelIn = 1 |
||
) |
Constructor.
Vmat | The active space two-electron integrals |
group | The group number |
printLevelIn | If 0: nothing is printed. If 1: info at beginning and end. If >1: intermediary info as well. |
Definition at line 34 of file EdmistonRuedenberg.cpp.
void CheMPS2::EdmistonRuedenberg::FiedlerExchange | ( | const int | maxlinsize, |
double * | temp1, | ||
double * | temp2 | ||
) |
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized (per irrep)
maxlinsize | max(dim(irrep(Ham))) |
temp1 | Work memory of at least 4*max(dim(irrep(Ham)))^2 |
temp2 | Work memory of at least 4*max(dim(irrep(Ham)))^2 |
Definition at line 367 of file EdmistonRuedenberg.cpp.
void CheMPS2::EdmistonRuedenberg::FiedlerGlobal | ( | int * | dmrg2ham | ) | const |
Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized.
dmrg2ham | At exit, dmrg2ham contains the new orbital ordering |
Definition at line 432 of file EdmistonRuedenberg.cpp.
CheMPS2::DMRGSCFunitary * CheMPS2::EdmistonRuedenberg::getUnitary | ( | ) |
Get the pointer to the unitary to use in DMRGSCF.
Definition at line 143 of file EdmistonRuedenberg.cpp.
double CheMPS2::EdmistonRuedenberg::Optimize | ( | double * | temp1, |
double * | temp2, | ||
const bool | startFromRandomUnitary, | ||
const double | gradThreshold = EDMISTONRUED_gradThreshold , |
||
const int | maxIter = EDMISTONRUED_maxIter |
||
) |
Maximize the Edmiston-Ruedenberg cost function.
temp1 | Work memory of at least max(dim(irrep(Ham)))^4 |
temp2 | Work memory of at least max(dim(irrep(Ham)))^4 |
startFromRandomUnitary | The name of the variable says it all. Useful if the point group symmetry is reduced to make use of locality in the DMRG calculations, but when the molecular orbitals still belong to the full point group. |
gradThreshold | Stop if the norm of the gradient is smaller than this value |
maxIter | Stop if maxIter iterations have been performed (when gradThreshold is not reached) |
Definition at line 66 of file EdmistonRuedenberg.cpp.