sisi4s
Loading...
Searching...
No Matches
StantonIntermediatesUCCSD.hpp
Go to the documentation of this file.
1#ifndef STANTON_UCCSD_INTERMEDIATES_DEFINED
2#define STANTON_UCCSD_INTERMEDIATES_DEFINED
3
5#include <math/Complex.hpp>
6#include <util/Tensor.hpp>
7
8namespace sisi4s {
9
10/*
11 * This is the code version of:
12 * ----------------------------
13 * John F. Stanton, Jürgen Gauss, John D. Watts, Rodney J. Bartlett.
14 * A direct product decomposition approach for symmetry exploitation in
15 * many‐body methods. I. Energy calculations.
16 * The Journal of Chemical Physics 1991 doi:10.1063/1.460620
17 *
18 */
19template <typename F = complex>
21public:
30
32
33 // tensor setters, it's more convenient to set them like so
34 // than in a constructor, since there are so many tensors
35 void setTai(Tensor<F> *t) { Tai = t; }
36 void setTabij(Tensor<F> *t) { Tabij = t; }
37 void setVabcd(Tensor<F> *t) { Vabcd = t; }
38 void setViajb(Tensor<F> *t) { Viajb = t; }
39 void setVijab(Tensor<F> *t) { Vijab = t; }
40 void setVijkl(Tensor<F> *t) { Vijkl = t; }
41 void setVijka(Tensor<F> *t) { Vijka = t; }
42 void setViabc(Tensor<F> *t) { Viabc = t; }
43 void setViajk(Tensor<F> *t) { Viajk = t; }
44 void setVabic(Tensor<F> *t) { Vabic = t; }
45 void setVaibc(Tensor<F> *t) { Vaibc = t; }
46 void setVaibj(Tensor<F> *t) { Vaibj = t; }
47 void setViabj(Tensor<F> *t) { Viabj = t; }
48 void setVijak(Tensor<F> *t) { Vijak = t; }
49 void setVaijb(Tensor<F> *t) { Vaijb = t; }
50 void setVabci(Tensor<F> *t) { Vabci = t; }
51 void setVabij(Tensor<F> *t) { Vabij = t; }
52 void setFij(Tensor<F> *t) { Fij = t; }
53 void setFab(Tensor<F> *t) { Fab = t; }
54 void setFia(Tensor<F> *t) { Fia = t; }
55
56private:
57 void calculateIntermediates();
58 void calculateOneBodyIntermediates();
59 void checkInputs();
60
61 // Intermediate quantities
63 Fae, Fmi, Fme, Tau_abij, TildeTau_abij, Wijkl, Wabcd, Wiabj;
64
65 // Output quantities
66 PTR(Tensor<F>) Rai, Rabij;
67
68 // Input quantities
69 Tensor<F> *Tai, *Tabij;
70 Tensor<F> *Fij, *Fab, *Fia = nullptr;
71 Tensor<F> *Vabcd, *Viajb, *Vijab, *Vijkl, *Vijka, *Viabc, *Viajk, *Vabic,
72 *Vaibc, *Vaibj, *Viabj, *Vijak, *Vaijb, *Vabci, *Vabij;
73};
74
75} // namespace sisi4s
76
77#endif
#define PTR(TYPE)
Definition SharedPointer.hpp:8
Definition StantonIntermediatesUCCSD.hpp:20
void setFia(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:54
void setVaibj(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:46
void setViajk(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:43
void setVabic(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:44
void setViajb(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:38
void setVabci(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:50
void setFab(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:53
void setVijak(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:48
void setVaibc(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:45
void setTai(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:35
void setTabij(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:36
void setVaijb(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:49
void setVijkl(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:40
void setVabcd(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:37
void setVabij(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:51
void setFij(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:52
void setVijka(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:41
void setViabc(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:42
StantonIntermediatesUCCSD()
Definition StantonIntermediatesUCCSD.hpp:31
void setViabj(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:47
void setVijab(Tensor< F > *t)
Definition StantonIntermediatesUCCSD.hpp:39
std::shared_ptr< Tensor< F > > getRabij()
Get the doubles part of the residuum.
Definition StantonIntermediatesUCCSD.cxx:141
std::shared_ptr< Tensor< F > > getRai()
Get the singles part of the residuum.
Definition StantonIntermediatesUCCSD.cxx:115
Definition Algorithm.hpp:10
CTF::Tensor< F > Tensor
Definition Tensor.hpp:9