CheMPS2
CheMPS2::EdmistonRuedenberg Class Reference

#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...
 
DMRGSCFunitarygetUnitary ()
 Get the pointer to the unitary to use in DMRGSCF. More...
 

Detailed Description

EdmistonRuedenberg class.

Author
Sebastian Wouters sebas.nosp@m.tian.nosp@m.woute.nosp@m.rs@g.nosp@m.mail..nosp@m.com
Date
August 14, 2014

Introduction

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].

Localization

Physics notation is assumed for the two-body matrix elements (the electron repulsion integrals with eightfold permutation symmetry):

\[ v_{ij;kl} = \left( i(\vec{r}_1) j(\vec{r}_2) \left| \frac{1}{\mid \vec{r}_1 - \vec{r}_2 \mid} \right| k(\vec{r}_1) l(\vec{r}_2) \right). \]

Edmiston and Ruedenberg proposed to maximize the cost function

\[ I = \sum\limits_i v_{ii;ii} \]

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 $I$, which can be called with the function CheMPS2::EdmistonRuedenberg::Optimize.

The orbitals which maximize the cost function $ I = \sum\limits_i v_{ii;ii} $ can be parametrized with an orthogonal matrix $\mathbf{U} = \exp(\mathbf{X}(\vec{x}))$ (see CheMPS2::CASSCF):

\[ I(\mathbf{U}) = \sum\limits_{ijklm} \left[ \mathbf{U} \right]_{ij} \left[ \mathbf{U} \right]_{ik} \left[ \mathbf{U} \right]_{il} \left[ \mathbf{U} \right]_{im} v_{jk;lm}. \]

The following derivatives from Ref. [LOC5] are useful:

\[ \left[ \frac{\partial \left[ \mathbf{U} \right]_{\alpha \beta}}{\partial x_{pq}} \right]_0 = \delta_{p \alpha} \delta_{q \beta} - \delta_{q \alpha} \delta_{p \beta}, \]

\begin{eqnarray*} 2 \left[ \frac{\partial^2 \left[ \mathbf{U} \right]_{\alpha \beta}}{\partial x_{pq} \partial x_{rs}} \right]_0 & = & \delta_{qr} (\delta_{p \alpha} \delta_{s \beta} + \delta_{s \alpha} \delta_{p \beta} ) \\ & - & \delta_{pr} (\delta_{q \alpha} \delta_{s \beta} + \delta_{s \alpha} \delta_{q \beta} ) \\ & - & \delta_{qs} (\delta_{p \alpha} \delta_{r \beta} + \delta_{r \alpha} \delta_{p \beta} ) \\ & + & \delta_{ps} (\delta_{q \alpha} \delta_{r \beta} + \delta_{r \alpha} \delta_{q \beta} ), \end{eqnarray*}

in which $x_{pq}$ is the element in $\vec{x}$ which corresponds to $\left[ \mathbf{X} \right]_{pq}$. Keeping the eightfold permutation symmetry of $v_{ij;kl}$ in mind, the gradient of $I$ with respect to orbital rotations is

\[ \left[ \frac{\partial I}{\partial x_{pq}} \right]_0 = 4 (v_{pp;pq} - v_{qq;qp}), \]

and the Hessian

\begin{eqnarray*} \left[ \frac{\partial^2 I}{\partial x_{pq} \partial x_{rs}} \right]_0 & = & \delta_{pr} (8v_{pp;qs} + 4v_{pq;ps} - 2v_{qq;qs} - 2v_{ss;sq}) \\ & + & \delta_{qs} (8v_{qq;pr} + 4v_{qp;qr} - 2v_{pp;pr} - 2v_{rr;rp}) \\ & - & \delta_{ps} (8v_{pp;qr} + 4v_{pq;pr} - 2v_{qq;qr} - 2v_{rr;rq})\\ & - & \delta_{qr} (8v_{qq;ps} + 4v_{qp;qs} - 2v_{pp;ps} - 2v_{ss;sp}). \end{eqnarray*}

Minimizing the bandwidth of the exchange matrix

Once localized orbitals are obtained, they can be ordered so that the bandwidth of the exchange matrix $\mathbf{K}$ is minimal. This matrix has only nonnegative entries [LOC6]:

\[ \left[ \mathbf{K} \right]_{ij} = v_{ij;ji} \geq 0. \]

A fast approximate bandwidth minimization is obtained by the so-called Fiedler vector [LOC7, LOC8, LOC9, LOC10]. Consider the minimization of the cost function

\[ F(\vec{z}) ~ = ~ \frac{1}{2} \sum\limits_{k \neq l} \left[ \mathbf{K} \right]_{kl} (z_k - z_l)^2 ~ \geq 0, \]

where the (continuous) variable $z_k$ denotes the optimal position of orbital $k$. In order to fix translational invariance and normalization of the solution, the constraints $\sum_i z_i = 0$ and $\vec{z}^T \vec{z} = 1$ are imposed. The cost function can be rewritten as

\[ F(\vec{z}) ~ = ~ \vec{z}^T \mathbf{L} \vec{z} ~ \geq 0, \]

with the symmetric and positive semidefinite Laplacian $\mathbf{L}$:

\[ \left[ \mathbf{L} \right]_{k \neq l} = - \left[ \mathbf{K} \right]_{kl}, \]

\[ \left[ \mathbf{L} \right]_{k k} = \sum\limits_{m \neq k} \left[ \mathbf{K} \right]_{km}. \]

The constant vector $\vec{1}$ is an eigenvector of $\mathbf{L}$ with eigenvalue 0, which is discarded due to the translational invariance constraint. When the exchange matrix $\mathbf{K}$ 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 $F(\vec{z})$ [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 $\mathbf{K}$ 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.

References

[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).

Boys localization

In the Boys localization method, the cost function

\[ J = \frac{1}{2} \sum\limits_{ij} \left( \braket{ \phi_i \mid \vec{r} \mid \phi_i } - \braket{ \phi_j \mid \vec{r} \mid \phi_j } \right)^2 = \frac{1}{2} \sum\limits_{ij} \left( \vec{r}_{ii} - \vec{r}_{jj} \right)^2 \]

is maximized. With an orthogonal orbital rotation $\mathbf{U} = \exp(\mathbf{X}(\vec{x}))$, the cost function becomes

\[ J(\mathbf{U}) = \frac{1}{2} \sum\limits_{i,j} \left( \left[ \mathbf{U} \right]_{i\alpha} \left[ \mathbf{U} \right]_{i\beta} \vec{r}_{\alpha\beta} - \left[ \mathbf{U} \right]_{j\alpha} \left[ \mathbf{U} \right]_{j\beta} \vec{r}_{\alpha\beta} \right)^2. \]

The gradient and hessian of J with respect to orbital rotations are given by:

\begin{eqnarray*} \left[ \frac{\partial J}{\partial x_{pq}} \right]_0 & = & 2 N_{orb} \left[ \left( \vec{r}_{pq} + \vec{r}_{qp} \right).\left( \vec{r}_{pp} - \vec{r}_{qq} \right) \right] \\ \left[ \frac{\partial^2 J}{\partial x_{pq} \partial x_{rs}} \right]_0 & = & 2 N_{orb} \left( \delta_{pr} + \delta_{qs} - \delta_{qr} - \delta_{ps} \right) \left[ \left( \vec{r}_{pq} + \vec{r}_{qp} \right).\left( \vec{r}_{rs} + \vec{r}_{sr} \right) \right] \\ & + & N_{orb} \delta_{pr} \left[ \left( \vec{r}_{qs} + \vec{r}_{sq} \right).\left( 2 \vec{r}_{pp} - \vec{r}_{qq} - \vec{r}_{ss} \right) \right] \\ & + & N_{orb} \delta_{qs} \left[ \left( \vec{r}_{pr} + \vec{r}_{rp} \right).\left( 2 \vec{r}_{qq} - \vec{r}_{pp} - \vec{r}_{rr} \right) \right] \\ & - & N_{orb} \delta_{qr} \left[ \left( \vec{r}_{ps} + \vec{r}_{sp} \right).\left( 2 \vec{r}_{qq} - \vec{r}_{pp} - \vec{r}_{ss} \right) \right] \\ & - & N_{orb} \delta_{ps} \left[ \left( \vec{r}_{qr} + \vec{r}_{rq} \right).\left( 2 \vec{r}_{pp} - \vec{r}_{qq} - \vec{r}_{rr} \right) \right]. \end{eqnarray*}

(Written down here for future reference.)

Definition at line 126 of file EdmistonRuedenberg.h.

Constructor & Destructor Documentation

CheMPS2::EdmistonRuedenberg::EdmistonRuedenberg ( const FourIndex Vmat,
const int  group,
const int  printLevelIn = 1 
)

Constructor.

Parameters
VmatThe active space two-electron integrals
groupThe group number
printLevelInIf 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.

+ Here is the call graph for this function:

Member Function Documentation

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)

Parameters
maxlinsizemax(dim(irrep(Ham)))
temp1Work memory of at least 4*max(dim(irrep(Ham)))^2
temp2Work memory of at least 4*max(dim(irrep(Ham)))^2

Definition at line 367 of file EdmistonRuedenberg.cpp.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void CheMPS2::EdmistonRuedenberg::FiedlerGlobal ( int *  dmrg2ham) const

Permute the orbitals so that the bandwidth of the exchange matrix is (approximately) minimized.

Parameters
dmrg2hamAt exit, dmrg2ham contains the new orbital ordering

Definition at line 432 of file EdmistonRuedenberg.cpp.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

CheMPS2::DMRGSCFunitary * CheMPS2::EdmistonRuedenberg::getUnitary ( )

Get the pointer to the unitary to use in DMRGSCF.

Returns
Pointer to the unitary which defines the localized orbitals

Definition at line 143 of file EdmistonRuedenberg.cpp.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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.

Parameters
temp1Work memory of at least max(dim(irrep(Ham)))^4
temp2Work memory of at least max(dim(irrep(Ham)))^4
startFromRandomUnitaryThe 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.
gradThresholdStop if the norm of the gradient is smaller than this value
maxIterStop if maxIter iterations have been performed (when gradThreshold is not reached)
Returns
The value of the optimized cost function

Definition at line 66 of file EdmistonRuedenberg.cpp.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:


The documentation for this class was generated from the following files: