MPQC 3.0.0-alpha
Loading...
Searching...
No Matches
sr_r12intermediates.h
1//
2// singlereference_r12_intermediates.h
3//
4// Copyright (C) 2013 Edward Valeev
5//
6// Author: Edward Valeev <evaleev@vt.edu>
7// Maintainer: EV
8//
9// This file is part of the SC Toolkit.
10//
11// The SC Toolkit is free software; you can redistribute it and/or modify
12// it under the terms of the GNU Library General Public License as published by
13// the Free Software Foundation; either version 2, or (at your option)
14// any later version.
15//
16// The SC Toolkit is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU Library General Public License for more details.
20//
21// You should have received a copy of the GNU Library General Public License
22// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24//
25// The U.S. Government is granted a limited license as per AL 91-7.
26//
27
28#ifdef __GNUG__
29#pragma implementation
30#endif
31
32#ifndef _mpqc_src_lib_chemistry_qc_mbptr12_srr12intermediates_h
33#define _mpqc_src_lib_chemistry_qc_mbptr12_srr12intermediates_h
34
35#if defined(MPQC_NEW_FEATURES)
36# include <tiledarray.h>
37#else
38# error "sr_r12intermediates.h requires MPQC3 runtime, but it is not available"
39#endif
40
41#include <chemistry/qc/wfn/rdm.h>
42#include <chemistry/qc/mbptr12/r12wfnworld.h>
43#include <../bin/mpqc/mpqcinit.h>
44
45namespace TA = TiledArray;
46
47namespace sc {
48
50 template <typename T>
51 class DA4_Tile {
52 private:
53 TA::Array<T, 4, DA4_Tile>* owner_;
54 std::array<std::size_t, 4> index_;
55 Ref<DistArray4> darray4_;
56 int te_type_;
57
58 public:
59 typedef T value_type;
60 typedef TA::Tensor<T> eval_type;
61 typedef typename eval_type::range_type range_type;
62
63 DA4_Tile() { }
64
65 DA4_Tile(TA::Array<T, 4, DA4_Tile>* owner,
66 const std::array<std::size_t, 4>& index,
67 const Ref<DistArray4>& darray4,
68 int te_type) :
69 owner_(owner), index_(index), darray4_(darray4), te_type_(te_type)
70 { }
71
72 operator TA::Tensor<T> () const;
73
74 range_type range() const {
75 return owner_->trange().make_tile_range(index_);
76 }
77
80 template <typename Archive>
81 void serialize(Archive& ar) {
82 MPQC_ASSERT(false);
83 }
84
85 };
86
88 template <typename T>
89 class DA4_Tile34 {
90 private:
91 TA::Array<TA::Tensor<T>, 2, DA4_Tile34 >* owner_;
92 std::array<std::size_t, 2> index_;
93 Ref<DistArray4> darray4_;
94 int te_type_;
95
96 public:
97 typedef T value_type;
98 typedef TA::Tensor<TA::Tensor<T> > eval_type;
99 typedef typename eval_type::range_type range_type;
100 typedef T numeric_type;
101
102 DA4_Tile34() { }
103
104 DA4_Tile34(TA::Array<TA::Tensor<T>, 2, DA4_Tile34 >* owner,
105 const std::array<std::size_t, 2>& index,
106 const Ref<DistArray4>& darray4,
107 int te_type) :
108 owner_(owner), index_(index), darray4_(darray4), te_type_(te_type)
109 { }
110
112 operator TA::Tensor<TA::Tensor<T> > () const;
113
116 template <typename Archive>
117 void serialize(Archive& ar) {
118 MPQC_ASSERT(false);
119 }
120
121 };
122
124 template <typename T, unsigned int DIM, typename ElementGenerator>
126 private:
127 TA::Array<T, DIM, LazyTensor>* owner_;
128 std::array<std::size_t, DIM> index_;
129 ElementGenerator* element_generator_;
130
131 public:
132 typedef T value_type;
133 typedef TA::Tensor<T> eval_type;
134 typedef typename eval_type::range_type range_type;
135
136 LazyTensor() { }
137
138 LazyTensor(const LazyTensor& other) :
139 owner_(other.owner_), index_(other.index_), element_generator_(other.element_generator_)
140 {}
141
142 LazyTensor& operator=(const LazyTensor& other) {
143 owner_ = other.owner_;
144 index_ = other.index_;
145 element_generator_ = other.element_generator_;
146 return *this;
147 }
148
149 LazyTensor(TA::Array<T, DIM, LazyTensor>* owner,
150 const std::array<std::size_t, DIM>& index,
151 ElementGenerator* gen) :
152 owner_(owner), index_(index), element_generator_(gen)
153 { }
154
155 operator TA::Tensor<T> () const {
156
157 eval_type tile(owner_->trange().make_tile_range(index_));
158
159 auto* ptr = tile.data();
160 for(auto i = tile.range().begin();
161 i!=tile.range().end();
162 ++i, ++ptr) {
163
164 *ptr = (*element_generator_)(*i);
165
166 }
167
168 return tile;
169 }
170
173 template <typename Archive>
174 void serialize(Archive& ar) {
175 MPQC_ASSERT(false);
176 }
177
178 };
179
180 namespace expressions {
181 template <typename ArgType, bool Transpose> struct trace_tensor2_op;
182 template <typename ArgType, bool Transpose> struct diag_tensor2_op;
183
185 template <typename T>
188 TGeminalGenerator(unsigned int spin = 0) : s_(spin) {
189 MPQC_ASSERT(s_ == 0 || s_ == 1);
190 }
191
192 template <typename Index> T operator()(const Index& i) {
193 if (s_ == 0) {
194 if (i[0] == i[1] && i[0] == i[2] && i[0] == i[3]) // iiii
195 return 1.0/2.0;
196 else if (i[0] == i[2] && i[1] == i[3]) // ijij
197 return 3.0/8.0;
198 else if (i[0] == i[3] && i[1] == i[2]) // ijji
199 return 1.0/8.0;
200 }
201 if (s_ == 1) {
202 if ((i[0] == i[2] && i[1] == i[3]) || (i[0] == i[3] && i[1] == i[2])) // ijij
203 return 1.0/4.0;
204 }
205 return 0.0;
206 }
207
208 private:
209 unsigned int s_;
210 };
211
212 };
213
214
217 template <typename T>
219 public:
220
222 typedef TA::Array<T, 4 > TArray4; // Tile = Tensor<T>
224 typedef TA::Array<T, 4, DA4_Tile<T> > TArray4d; // Tile = DA4_Tile<T>
226 typedef TA::Array<T, 2> TArray2; // Tile = Tensor<T>
228 typedef TA::Array<T, 2, DA4_Tile<T> > TArray2d; // Tile = DA4_Tile<T>
230 //typedef TA::Array<T, 2, LazyTensor<T, 2, ElementGenerator> > TArray2d; // Tile = LazyTensor<T, 2, ElementGenerator>
232 typedef TA::Array<TA::Tensor<T>, 2> TArray22; // Tile = Tensor<Tensor<T>>
234 typedef TA::Array<TA::Tensor<T>, 2, DA4_Tile34<T> > TArray22d; // Tile = Tensor<Tensor<T>>
235
237 typedef TA::Array<T, 4, LazyTensor<T, 4, expressions::TGeminalGenerator<T> > > TArray4Tg;
238
245 SingleReference_R12Intermediates(madness::World& world,
246 const Ref<R12WavefunctionWorld>& r12world) :
247 world_(world),
248 r12world_(r12world)
249 {
250 }
252 r12world_ = 0;
253 }
254
255 const Ref<R12WavefunctionWorld>& r12world() const {
256 return r12world_;
257 }
258
262 std::pair<TArray2,TArray2> V_diag();
263
267 std::pair<TArray2,TArray2> X_diag();
268
272 std::pair<TArray2,TArray2> B_diag();
273
278 void gf2_r12(int orbital);
279
283 TArray2 rdm1();
284
285 // compute multipole
286 void compute_multipole();
287 TArray2 XaiAddToXam(const TA::Array<double, 2 >& Xam,
288 const TA::Array<double, 2 >& Xai);
289 // compute B^P_Q which is summed over k
290 TArray2 BPk_Qk(const char* p, const char* q,
291 const double C_0, const double C_1);
292 TArray4 Bpr_qs(const char* p, const char* q);
293
294 // compute V^Pq_Rs = 1/2 \bar{R}^Pq_AlphaBeta \bar{g}^AlphaBeta_Rs
295 // P and R are in alpha or beta space
296 TArray4 VPq_Rs(const char* p, const char* q,
297 const char* r, const char* s,
298 const double C_0, const double C_1);
299 // V^Rk_Sk which is summed over k
300 TArray2 VRk_Sk(const char* r, const char* s,
301 const double C_0, const double C_1);
302
303 // compute Xam contribution from CABS Singles
304 TArray2 Xam_CabsSingles(const TArray2& TmA, const TArray2& Tma);
305
306 // compute Xam contribution from MP2
307 TArray2 Xam_mp2(const TArray4& T2_ijab,
308 const TArray2& Dij, const TArray2& Dab);
309
310 // compute Xam contribution from MP2 F12 coulping part
311 TArray2 Xam_Cmp2f12(const double C_0, const double C_1,
312 const TArray4& T2_ijab, const TArray4& A_ijab,
313 const TArray2& Dij, const TArray2& Dab,
314 const TArray2& RT_apb);
315
316 // compute F12 density from X and B terms
317 void compute_Df12_XB(const double C_0, const double C_1,
318 TArray2& D_f12_ij, TArray2& D_f12_ab,
319 TArray2& D_f12_apbp, TArray2& D_f12_apb);
320 // compute X and B density contribution to Xam
321 TArray2 Xam_Df12_XB(const double C_0, const double C_1,
322 const TArray2& Df12_ij, const TArray2& Df12_ab,
323 const TArray2& Df12_apbp, const TArray2& Df12_apb);
324
325 // compute Xam contribution from F12 V part
326 TArray2 Xam_V(const double C_0, const double C_1);
327 // compute Xam contribution from F12 X part
328 TArray2 Xam_X(const double C_0, const double C_1);
329 // compute Xam contribution from F12 B part
330 TArray2 Xam_B(const double C_0, const double C_1);
331
332 // compute Xii' contribution from F12 part for frozen-core systems
333 TArray2 Xiip_VBX(const double C_0, const double C_1);
334 // compute Xii' contribution from CCSD F12 coupling
335 // for frozen-core systems
336 TArray2 Xiip_CVT(const double C_0, const double C_1,
337 const TArray2& T1, const TArray4& T2);
338
339 // Xam contribution of CT2 part resulted from CCSD F12 coupling
340 TArray2 Xam_CT2_ccsd(const double C_0, const double C_1,
341 const TArray4& T2, const TArray2& RT2_aPb);
342 // Xam contribution of VT(T1&T2) part resulted from CCSD F12 coupling
343 TArray2 Xam_VT_ccsd(const double C_0, const double C_1,
344 const TArray2& T1, const TArray4& T2);
345
346 // compute T1 & T2 amplitudes of CC2
347 void compute_T_cc2(TArray2& T1, TArray4& T2);
348
349 // compute Lambda_1 & Lambda_2 amplitudes of CC2
350 // using formula from Schaefer III, JCP 87, 5361 (1987)
351 void compute_lambda_cc2(const TArray2& t1, const TArray4& t2,
352 TArray2& L1, TArray4& L2);
353
354 // use formula from Gauss and Stanton, JCP, 103 (1995)
355 void compute_lambda_cc2_2(const TArray2& t1, const TArray4& t2,
356 TArray2& L1, TArray4& L2);
357
358 // CCSD (Gauss and Stanton formula)
359 // compute Delta_ai = 1 / (- <a|F|a> + <i|F|i>)
360 // & Delta_ijab = 1 / (- <a|F|a> - <b|F|b> + <i|F|i> + <j|F|j>)
361 void compute_Delta_cc(const TA::TiledRange& TR_ai,
362 const TA::TiledRange& TR_abij,
363 TArray2& D_ai, TArray4& D_abij);
364 // compute intermediates needed for T and lambda amplitudes
365 void compute_intermediates_TFW_ccsd(
366 const TArray2& t1, const TArray4& t2,
367 const TArray4d& g_abij, const TArray4d& g_aikl,
368 const TArray4d& g_aibj, const TArray4d& g_aijb,
369 const TArray4d& g_abci,
370 const TArray4d& g_ijkl, const TArray4d& g_abcd,
371 TArray2& TFkc, TArray2& TFac, TArray2& TFki,
372 TArray4& TW_KbCj_ab,TArray4& TW_KbcJ_ba,
373 TArray4& TW_AbCd_ab, TArray4& TW_KlIj_ab);
374 void compute_intermediates_CW_ccsd(
375 const TArray2& t1, const TArray4& t2,
376 TArray2& CFkc, TArray2& CFac, TArray2& CFki,
377 TArray4& CW_KbEj_ab, TArray4& CW_KbeJ_ba,
378 TArray4& CW_AbCd_ab, TArray4& CW_AbCi_ab,
379 TArray4& CW_KlIj_ab, TArray4& CW_KbIj_ab,
380 TArray4& CW_KlIc_ab, TArray4& CW_KliC_ab,
381 TArray4& CW_AkCd_ab);
382 // compute CCSD T amplitudes
383 void compute_T_ccsd(TArray2& t1, TArray4& t2, const std::string method);
384 // compute CCSD lambda amplitudes
385 void compute_lambda_ccsd(const TArray2& t1, const TArray4& t2,
386 TArray2& L1, TArray4& L2,
387 const std::string method);
388
389 // compute CC2 one-electron density from amplitudes
390 void compute_cc2_1rdm_amp(const TArray2& T1_cc2, const TArray4& T2_cc2,
391 const TArray2& L1_cc2, const TArray4& L2_cc2,
392 TArray2& Dij_cc2, TArray2& Dab_cc2,
393 TArray2& Dia_cc2, TArray2& Dai_cc2);
394
395 // cpmute Gamma intermediates needed for CCSD Xam
396 void compute_Gamma_ijab_ccsd(const TArray2& T1, const TArray4& T2,
397 const TArray4& tau_ab,
398 const TArray2& L1, const TArray4& L2,
399 TArray4& Gamma_IjAb_ab);
400 void compute_ccsd_1rdm_amp(const TArray2& T1, const TArray4& T2,
401 const TArray2& L1, const TArray4& L2,
402 TArray2& Dij, TArray2& Dab,
403 TArray2& Dia, TArray2& Dai);
404
405 void compute_Gamma2_ccsd(const TArray2& T1, const TArray4& T2,
406 const TArray2& L1, const TArray4& L2,
407 const TArray4& tau_aa, const TArray4& tau_ab,
408 TArray4& Gamma_IjKa_ab,
409 TArray4& Gamma_AbCi_ab,
410 TArray4& Gamma_iBjA_ab, TArray4& Gamma_iBJa_ba,
411 TArray4& Gamma_AbCd_ab, TArray4& Gamma_IjKl_ab,
412 TArray4& Gamma_IjAb_ab);
413
414 // compute CCSD Xam (JCP, 103, 3561 (1995))
415 void compute_Xam_ccsd(const TArray2& T1, const TArray4& T2,
416 const TArray2& L1, const TArray4& L2,
417 TArray2& Xam_tot, TArray2& Xiip);
418
419 // compute multipole using F12b method
421 // compute V^PQ_RS = 1/2 R^PQ_A'B' g^A'B'_RS
422 // P, Q, R, and S in same spin space (or for close-shell)
423 TArray4 VPQ_RS(const char* p, const char* q,
424 const char* r, const char* s);
425 TArray2 Xam_CT2L2_f12b(const double C_0, const double C_1,
426 const TArray4& T2, const TArray2& RT2_aPb,
427 const TArray4& L2, const TArray2& RL2_aPb);
428 TArray2 Xam_VTL_f12b(const double C_0, const double C_1,
429 const TArray2& T1, const TArray4& T2,
430 const TArray2& L1, const TArray4& L2);
431
432 TArray2 Xam_VT1T1_f12b(const double C_0, const double C_1,
433 const TArray2& T1);
434 // test function
435 TArray2 Xam_VT1T1_f12b_test(const double C_0, const double C_1,
436 const TArray4& tauT1_ab);
437
438 TArray2 Xam_VL2T1_f12b(const double C_0, const double C_1,
439 const TArray2& T1, const TArray4& L2);
440 // test function
441 TArray2 Xam_VL2T1_f12b_test(const double C_0, const double C_1,
442 const TArray2& T1, const TArray4& L2);
443
444 TArray2 Xam_VL2T1T1_f12b(const double C_0, const double C_1,
445 const TArray2& T1, const TArray4& L2);
446 // test function
447 TArray2 Xam_VL2T1T1_f12b_test(const double C_0, const double C_1,
448 const TArray2& T1, const TArray4& L2);
449
450 // frozen-core contribution: Xii' from CT2, VT2, and VT1 in F12b
451 TArray2 Xiip_CVT_f12b(const double C_0, const double C_1,
452 const TArray2& T1, const TArray4& T2,
453 const TArray2& L1, const TArray4& L2);
454 // frozen-core contribution: Xii' from VT1T1 in F12b
455 TArray2 Xiip_VT1T1_f12b(const double C_0, const double C_1,
456 const TArray2& T1, const TArray4& T2,
457 const TArray4& L2);
458
463
468 TArray4 V_spinfree(bool symmetrize_p1_p2 = false);
469
474 TArray4 X_spinfree(bool symmetrize_p1_p2 = false);
475
480 TArray4 B_spinfree(bool symmetrize_p1_p2 = false);
481
486 void set_T1(const RefSCMatrix& t1) { t1_ = t1; }
491 void set_T1_cabs(const RefSCMatrix& t1_cabs) { t1_cabs_ = t1_cabs; }
496 void set_L1(const RefSCMatrix& l1) { l1_ = l1; }
501 void set_T2(const Ref<DistArray4> (&t2)[NSpinCases2]) { std::copy(t2, t2+NSpinCases2, t2_); }
506 void set_L2(const Ref<DistArray4> (&l2)[NSpinCases2]) { std::copy(l2, l2+NSpinCases2, l2_); }
511 void set_rdm2(const Ref<SpinFreeRDM<Two> >& rdm2) { rdm2_ = rdm2; }
512
514 TArray4d& ijxy(const std::string& key);
516 TArray22d& ij_xy(const std::string& key);
518 TArray2& xy(const std::string& key);
519
522 TArray2& sieve(const TArray2& input, const std::string& output_annotation);
523
549 TA::expressions::TsrExpr<const TArray4d, true> _4(const std::string& key);
550
573 TA::expressions::TsrExpr<const TArray2, true> _2(const std::string& key);
574
575 //TA::expressions::TensorExpression<TA::Tensor< TA::Tensor<T> > > _22(const std::string& key);
576
578 TA::expressions::TsrExpr<const TArray4Tg, true> _Tg(const std::string& key);
579
580 private:
581 madness::World& world_;
583
584 // extra data
585 RefSCMatrix t1_;
586 RefSCMatrix t1_cabs_;
587 RefSCMatrix l1_; // lambda1
588 Ref<DistArray4> t2_[NSpinCases2];
589 Ref<DistArray4> l2_[NSpinCases2]; // lambda2
590 Ref<SpinFreeRDM<Two> > rdm2_;
591
592 // utilities
593
594 // deprecated
596 std::shared_ptr<TArray22> ab_O_cd(const std::string& key,
597 const int te_type);
598
599 std::map<std::string, std::shared_ptr<TArray22> > tarray22_registry_;
600 std::map<std::string, std::shared_ptr<TArray4d> > tarray4_registry_;
601 std::map<std::string, std::shared_ptr<TArray2> > tarray2_registry_;
602 std::map<std::string, std::shared_ptr<TArray22d> > tarray22d_registry_;
603 std::map<std::string, std::shared_ptr<TArray4Tg> > tarray4tg_registry_;
604
605 // helps to create TArray4Tg
606 static expressions::TGeminalGenerator<T> tg_s0_gen;
607 static expressions::TGeminalGenerator<T> tg_s1_gen;
608
609 // deprecated
610 TArray22& _(const std::string& key);
611
621 std::string to_space(const std::string& index);
622
641 static std::string to_space_(std::string index);
642
646 std::vector<size_t> space_hashmarks(std::string space_label) const;
647
648 template <size_t NDIM>
649 TA::TiledRange
650 make_trange(const std::array<std::string, NDIM>& spaces) const;
651
657 const Ref<OrbitalSpace>& col) const;
658
659 typedef enum {
660 ij=0, ji=1
661 } ij_type;
663 template <typename Array22>
664 TA::expressions::TsrExpr<const Array22, true> take(const Array22& ij_o_pq,
665 ij_type IJ) {
666 //typedef typename Array22::value_type value_type;
667 typedef TA::Tensor<TA::Tensor<T> > value_type;
668 if (IJ == ij) {
670 return make_unary_tensor(ij_o_pq("i,j"),
671 diag_op);
672 }
673 // else: IJ == ji
675 return make_unary_tensor(ij_o_pq("i,j"),
676 diag_op);
677 }
678
680 template <typename Array22>
681 TA::expressions::TsrExpr<const TArray2, true> dotket(const Array22& ij_o1_pq,
682 const Array22& ij_o2_pq,
683 bool transpose_o2_ket = false) {
684 //typedef typename Array22::value_type value_type;
685 typedef TA::Tensor<TA::Tensor<T> > value_type;
686 if (transpose_o2_ket == false) {
688 return make_binary_tensor(ij_o1_pq("i,j"), ij_o2_pq("i,j"),
689 trace_op);
690 }
691 // else: transpose_o2_ket = true
693 return make_binary_tensor(ij_o1_pq("i,j"), ij_o2_pq("j,i"),
694 trace_op);
695 }
696
697 };
698
699}; // end of namespace sc
700
701#include <chemistry/qc/mbptr12/sr_r12intermediates_util.h>
702#include <chemistry/qc/mbptr12/sr_r12intermediates_VXB_diag.h>
703
704#endif // end of header guard
705
706
707// Local Variables:
708// mode: c++
709// c-file-style: "CLJ-CONDENSED"
710// End:
Tile of a <34> slice of <1234> that's "evaluated" when needed by reading from DistArray4 holding pqrs...
Definition sr_r12intermediates.h:89
void serialize(Archive &ar)
Definition sr_r12intermediates.h:117
Tile of a 4-index tensor that's "evaluated" when needed by reading from DistArray4.
Definition sr_r12intermediates.h:51
void serialize(Archive &ar)
Definition sr_r12intermediates.h:81
Tile of a DIM-order tensor that's "evaluated" when needed by calling ElementGenerator({i0,...
Definition sr_r12intermediates.h:125
void serialize(Archive &ar)
Definition sr_r12intermediates.h:174
The RefSCMatrix class is a smart pointer to an SCMatrix specialization.
Definition matrix.h:135
A template class that maintains references counts.
Definition ref.h:361
SingleReference_R12Intermediates computes R12/F12 intermediates using MPQC3 runtime.
Definition sr_r12intermediates.h:218
std::pair< TArray2, TArray2 > V_diag()
computes diagonal (spin-restricted, for now) V intermediate
Definition sr_r12intermediates_VXB_diag.h:433
TArray2 rdm1()
returns the 1-particle reduced density matrix
Definition sr_r12intermediates_VXB_diag.h:6783
TA::Array< T, 2 > TArray2
standard 2-index tensor
Definition sr_r12intermediates.h:226
void gf2_r12(int orbital)
Computes second-order Green's function IPs and EAs \parame orbital the index of the orbital,...
Definition sr_r12intermediates_VXB_diag.h:513
void set_rdm2(const Ref< SpinFreeRDM< Two > > &rdm2)
provides (spin-free) RDM2
Definition sr_r12intermediates.h:511
TA::Array< T, 4 > TArray4
standard 4-index tensor
Definition sr_r12intermediates.h:222
TA::Array< T, 4, DA4_Tile< T > > TArray4d
4-index tensor with lazy tiles
Definition sr_r12intermediates.h:224
TA::Array< T, 4, LazyTensor< T, 4, expressions::TGeminalGenerator< T > > > TArray4Tg
geminal T tensor
Definition sr_r12intermediates.h:237
TArray4 B_spinfree(bool symmetrize_p1_p2=false)
computes spin-free B intermediate
Definition sr_r12intermediates_VXB_diag.h:7256
TArray22d & ij_xy(const std::string &key)
Definition sr_r12intermediates_util.h:348
void set_T1(const RefSCMatrix &t1)
provides T1 amplitude tensor
Definition sr_r12intermediates.h:486
void set_T1_cabs(const RefSCMatrix &t1_cabs)
provides T1 CABS amplitude tensor
Definition sr_r12intermediates.h:491
TA::expressions::TsrExpr< const TArray2, true > _2(const std::string &key)
Given a descriptive key, creates a rank-2 Array of integrals, or other related quantities The syntax ...
Definition sr_r12intermediates_util.h:600
TA::expressions::TsrExpr< const TArray4d, true > _4(const std::string &key)
Given a descriptive key, creates a rank-4 Array of integrals, or other related quantities The syntax ...
Definition sr_r12intermediates_util.h:582
void compute_multipole()
Definition sr_r12intermediates_VXB_diag.h:4163
void set_T2(const Ref< DistArray4 >(&t2)[NSpinCases2])
provides T2 amplitudes
Definition sr_r12intermediates.h:501
TArray4 X_spinfree(bool symmetrize_p1_p2=false)
computes spin-free X intermediate
Definition sr_r12intermediates_VXB_diag.h:7242
TArray4 V_spinfree(bool symmetrize_p1_p2=false)
computes spin-free V intermediate
Definition sr_r12intermediates_VXB_diag.h:7228
TArray4 rdm2()
returns the 2-particle density matrix
TA::Array< TA::Tensor< T >, 2, DA4_Tile34< T > > TArray22d
2-index tensor of lazy 2-index tensors
Definition sr_r12intermediates.h:234
TArray2 & xy(const std::string &key)
Definition sr_r12intermediates_util.h:440
TArray2 & sieve(const TArray2 &input, const std::string &output_annotation)
sieves x|o1|y -> x'|o1|y' does not throw only if each tile of the result depends only on 1 tile of th...
TA::Array< T, 2, DA4_Tile< T > > TArray2d
2-index tensor with lazy tiles
Definition sr_r12intermediates.h:228
TA::Array< TA::Tensor< T >, 2 > TArray22
2-index tensor with lazy tiles
Definition sr_r12intermediates.h:232
void set_L2(const Ref< DistArray4 >(&l2)[NSpinCases2])
provides Lambda2 amplitudes
Definition sr_r12intermediates.h:506
void compute_multipole_F12b_coupling()
Definition sr_r12intermediates_VXB_diag.h:6242
std::pair< TArray2, TArray2 > X_diag()
computes diagonal (spin-restricted, for now) X intermediate
Definition sr_r12intermediates_VXB_diag.h:453
std::pair< TArray2, TArray2 > B_diag()
computes diagonal (spin-restricted, for now) B intermediate
Definition sr_r12intermediates_VXB_diag.h:473
TA::expressions::TsrExpr< const TArray4Tg, true > _Tg(const std::string &key)
like _4, produces geminal T tensor
Definition sr_r12intermediates_util.h:623
SingleReference_R12Intermediates(madness::World &world, const Ref< R12WavefunctionWorld > &r12world)
Constructs an SingleReference_R12Intermediates object.
Definition sr_r12intermediates.h:245
TArray4d & ijxy(const std::string &key)
Definition sr_r12intermediates_util.h:167
void set_L1(const RefSCMatrix &l1)
provides Lambda1 amplitude tensor
Definition sr_r12intermediates.h:496
SpinFreeRDM<R> is a spin-free reduced density matrix of rank R.
Definition rdm.h:226
SpinCase1 other(SpinCase1 S)
given 1-spin return the other 1-spin
Contains all MPQC code up to version 3.
Definition mpqcin.h:14
Definition range.hpp:25
makes a geminal T tensor
Definition sr_r12intermediates.h:186
TGeminalGenerator(unsigned int spin=0)
Definition sr_r12intermediates.h:188
Definition sr_r12intermediates_util.h:762
Definition sr_r12intermediates_util.h:695

Generated at Wed Sep 25 2024 02:45:29 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.12.0.