CheMPS2
CheMPS2::Cumulant Class Reference

#include <Cumulant.h>

Static Public Member Functions

static double gamma4_ham (const Problem *prob, const ThreeDM *the3DM, const TwoDM *the2DM, const int i, const int j, const int k, const int l, const int p, const int q, const int r, const int s)
 Get the cumulant approximation of $ \Gamma^4_{ijklpqrs} $, using HAM indices. More...
 
static void gamma4_fock_contract_ham (const Problem *prob, const ThreeDM *the3DM, const TwoDM *the2DM, double *fock, double *result)
 Contract the CASPT2 Fock operator with the cumulant approximation of $ \Gamma^4 $ in $ \mathcal{O}(L^7) $ time, using HAM indices. More...
 

Detailed Description

Cumulant class.

Author
Sebastian Wouters sebas.nosp@m.tian.nosp@m.woute.nosp@m.rs@g.nosp@m.mail..nosp@m.com
Date
November 26, 2015

The cumulant class contains routines to approximate the spinfree 4-RDM $ \Gamma^4 $ by neglecting the fourth order cumulant $ \Lambda^4 $. Based on the spinfree density matrices

\begin{eqnarray*} \Gamma^1_{ip} & = & \sum\limits_{\sigma} \braket{ 0 | \hat{a}_{i \sigma}^{\dagger} \hat{a}_{p \sigma} | 0 } \\ \Gamma^2_{ijpq} & = & \sum\limits_{\sigma \tau} \braket{ 0 | \hat{a}_{i \sigma}^{\dagger} \hat{a}_{j \tau}^{\dagger} \hat{a}_{q \tau} \hat{a}_{p \sigma} | 0 } \\ \Gamma^3_{ijkpqr} & = & \sum\limits_{\sigma \tau \chi} \braket{ 0 | \hat{a}_{i \sigma}^{\dagger} \hat{a}_{j \tau}^{\dagger} \hat{a}_{k \chi}^{\dagger} \hat{a}_{r \chi} \hat{a}_{q \tau} \hat{a}_{p \sigma} | 0 } \\ \Gamma^4_{ijklpqrs} & = & \sum\limits_{\sigma \tau \chi \omega } \braket{ 0 | \hat{a}_{i \sigma}^{\dagger} \hat{a}_{j \tau}^{\dagger} \hat{a}_{k \chi}^{\dagger} \hat{a}_{l \omega}^{\dagger} \hat{a}_{s \omega} \hat{a}_{r \chi} \hat{a}_{q \tau} \hat{a}_{p \sigma} | 0 } \end{eqnarray*}

and the spinfree second order cumulant

\begin{eqnarray*} \Lambda^2_{ijpq} & = & \Gamma^2_{ijpq} - \Gamma^1_{ip} \Gamma^1_{jq} + \frac{1}{2} \Gamma^1_{iq} \Gamma^1_{jp} \end{eqnarray*}

the spinfree 4-RDM can be written as [CUM1]:

\begin{eqnarray*} & & \Gamma^4_{ijklpqrs} \\ & = & \Lambda^4_{ijklpqrs} \\ & + & \Gamma^3_{ijkpqr} \Gamma^1_{ls} - \frac{1}{2} \Gamma^3_{ijksqr} \Gamma^1_{lp} - \frac{1}{2} \Gamma^3_{ijkpsr} \Gamma^1_{lq} - \frac{1}{2} \Gamma^3_{ijkpqs} \Gamma^1_{lr} \\ & + & \Gamma^3_{ijlpqs} \Gamma^1_{kr} - \frac{1}{2} \Gamma^3_{ijlrqs} \Gamma^1_{kp} - \frac{1}{2} \Gamma^3_{ijlprs} \Gamma^1_{kq} - \frac{1}{2} \Gamma^3_{ijlpqr} \Gamma^1_{ks} \\ & + & \Gamma^3_{iklprs} \Gamma^1_{jq} - \frac{1}{2} \Gamma^3_{iklqrs} \Gamma^1_{jp} - \frac{1}{2} \Gamma^3_{iklpqs} \Gamma^1_{jr} - \frac{1}{2} \Gamma^3_{iklprq} \Gamma^1_{js} \\ & + & \Gamma^3_{jklqrs} \Gamma^1_{ip} - \frac{1}{2} \Gamma^3_{jklprs} \Gamma^1_{iq} - \frac{1}{2} \Gamma^3_{jklqps} \Gamma^1_{ir} - \frac{1}{2} \Gamma^3_{jklqrp} \Gamma^1_{is} \\ & - & \Gamma^2_{ijpq} \Gamma^2_{klrs} + \frac{1}{2} \Gamma^2_{ijpr} \Gamma^2_{klqs} + \frac{1}{2} \Gamma^2_{ijps} \Gamma^2_{klrq} + \frac{1}{2} \Gamma^2_{ijrq} \Gamma^2_{klps} + \frac{1}{2} \Gamma^2_{ijsq} \Gamma^2_{klrp} \\ & - & \frac{1}{3} \Gamma^2_{ijrs} \Gamma^2_{klpq} - \frac{1}{6} \Gamma^2_{ijrs} \Gamma^2_{klqp} - \frac{1}{6} \Gamma^2_{ijsr} \Gamma^2_{klpq} - \frac{1}{3} \Gamma^2_{ijsr} \Gamma^2_{klqp} \\ & - & \Gamma^2_{ikpr} \Gamma^2_{jlqs} + \frac{1}{2} \Gamma^2_{ikpq} \Gamma^2_{jlrs} + \frac{1}{2} \Gamma^2_{ikps} \Gamma^2_{jlqr} + \frac{1}{2} \Gamma^2_{ikqr} \Gamma^2_{jlps} + \frac{1}{2} \Gamma^2_{iksr} \Gamma^2_{jlqp} \\ & - & \frac{1}{3} \Gamma^2_{ikqs} \Gamma^2_{jlpr} - \frac{1}{6} \Gamma^2_{iksq} \Gamma^2_{jlpr} - \frac{1}{6} \Gamma^2_{ikqs} \Gamma^2_{jlrp} - \frac{1}{3} \Gamma^2_{iksq} \Gamma^2_{jlrp} \\ & - & \Gamma^2_{ilps} \Gamma^2_{kjrq} + \frac{1}{2} \Gamma^2_{ilpr} \Gamma^2_{kjsq} + \frac{1}{2} \Gamma^2_{ilpq} \Gamma^2_{kjrs} + \frac{1}{2} \Gamma^2_{ilrs} \Gamma^2_{kjpq} + \frac{1}{2} \Gamma^2_{ilqs} \Gamma^2_{kjrp} \\ & - & \frac{1}{3} \Gamma^2_{ilrq} \Gamma^2_{kjps} - \frac{1}{6} \Gamma^2_{ilqr} \Gamma^2_{kjps} - \frac{1}{6} \Gamma^2_{ilrq} \Gamma^2_{kjsp} - \frac{1}{3} \Gamma^2_{ilqr} \Gamma^2_{kjsp} \\ & + & 2 \Lambda^2_{ijpq} \Lambda^2_{klrs} - \Lambda^2_{ijpr} \Lambda^2_{klqs} - \Lambda^2_{ijps} \Lambda^2_{klrq} - \Lambda^2_{ijrq} \Lambda^2_{klps} - \Lambda^2_{ijsq} \Lambda^2_{klrp} \\ & + & \frac{2}{3} \Lambda^2_{ijrs} \Lambda^2_{klpq} + \frac{1}{3} \Lambda^2_{ijrs} \Lambda^2_{klqp} + \frac{1}{3} \Lambda^2_{ijsr} \Lambda^2_{klpq} + \frac{2}{3} \Lambda^2_{ijsr} \Lambda^2_{klqp} \\ & + & 2 \Lambda^2_{ikpr} \Lambda^2_{jlqs} - \Lambda^2_{ikpq} \Lambda^2_{jlrs} - \Lambda^2_{ikps} \Lambda^2_{jlqr} - \Lambda^2_{ikqr} \Lambda^2_{jlps} - \Lambda^2_{iksr} \Lambda^2_{jlqp} \\ & + & \frac{2}{3} \Lambda^2_{ikqs} \Lambda^2_{jlpr} + \frac{1}{3} \Lambda^2_{iksq} \Lambda^2_{jlpr} + \frac{1}{3} \Lambda^2_{ikqs} \Lambda^2_{jlrp} + \frac{2}{3} \Lambda^2_{iksq} \Lambda^2_{jlrp} \\ & + & 2 \Lambda^2_{ilps} \Lambda^2_{kjrq} - \Lambda^2_{ilpr} \Lambda^2_{kjsq} - \Lambda^2_{ilpq} \Lambda^2_{kjrs} - \Lambda^2_{ilrs} \Lambda^2_{kjpq} - \Lambda^2_{ilqs} \Lambda^2_{kjrp} \\ & + & \frac{2}{3} \Lambda^2_{ilrq} \Lambda^2_{kjps} + \frac{1}{3} \Lambda^2_{ilqr} \Lambda^2_{kjps} + \frac{1}{3} \Lambda^2_{ilrq} \Lambda^2_{kjsp} + \frac{2}{3} \Lambda^2_{ilqr} \Lambda^2_{kjsp} \end{eqnarray*}

By neglecting $ \Lambda^4 $, the cumulant approximation of the 4-RDM $ \Gamma^4 $ is obtained.

[CUM1] M. Saitow, Y. Kurashige and T. Yanai, Journal of Chemical Physics 139, 044118 (2013). http://dx.doi.org/10.1063/1.4816627

Definition at line 120 of file Cumulant.h.

Member Function Documentation

void CheMPS2::Cumulant::gamma4_fock_contract_ham ( const Problem *  prob,
const ThreeDM *  the3DM,
const TwoDM *  the2DM,
double *  fock,
double *  result 
)
static

Contract the CASPT2 Fock operator with the cumulant approximation of $ \Gamma^4 $ in $ \mathcal{O}(L^7) $ time, using HAM indices.

Parameters
probPointer to the DMRG problem
the3DMPointer to the DMRG 3-RDM
the2DMPointer to the DMRG 2-RDM
fockContains the SYMMETRIC fock operator $ F_{ls} $ = fock[l+L*s] = fock[s+L*l]
resultContains the contraction: result[i+L*(j+L*(k+L*(p+L*(q+L*r))))] = $ \sum\limits_{ls} F_{ls} \Gamma^4_{ijklpqrs} $

Definition at line 84 of file Cumulant.cpp.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double CheMPS2::Cumulant::gamma4_ham ( const Problem *  prob,
const ThreeDM *  the3DM,
const TwoDM *  the2DM,
const int  i,
const int  j,
const int  k,
const int  l,
const int  p,
const int  q,
const int  r,
const int  s 
)
static

Get the cumulant approximation of $ \Gamma^4_{ijklpqrs} $, using HAM indices.

Parameters
probPointer to the DMRG problem
the3DMPointer to the DMRG 3-RDM
the2DMPointer to the DMRG 2-RDM
iindex 1 of $ \Gamma^4_{ijklpqrs} $
jindex 2 of $ \Gamma^4_{ijklpqrs} $
kindex 3 of $ \Gamma^4_{ijklpqrs} $
lindex 4 of $ \Gamma^4_{ijklpqrs} $
pindex 5 of $ \Gamma^4_{ijklpqrs} $
qindex 6 of $ \Gamma^4_{ijklpqrs} $
rindex 7 of $ \Gamma^4_{ijklpqrs} $
sindex 8 of $ \Gamma^4_{ijklpqrs} $
Returns
the desired value

Definition at line 381 of file Cumulant.cpp.

+ Here is the call graph for this function:


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