MPQC  3.0.0-alpha
ccr12_triples.h
1 //
2 // ccr12_triples.h : computes unconventional triples correction to (T) model
3 //
4 // Copyright (C) 2009 Toru Shiozaki
5 //
6 // Author: Toru Shiozaki <shiozaki.toru@gmail.com>
7 // Maintainer: TS
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 #pragma once
29 #ifndef __chemistry_qc_ccr12_ccr12_triples_h
30 #define __chemistry_qc_ccr12_ccr12_triples_h
31 
32 #include <chemistry/qc/ccr12/ccr12_info.h>
33 #include <iostream>
34 
35 
36 //define this when GGspace = ip is to be used.
37 #define USE_GG_SPACE_EQ_IP
38 
39 namespace sc {
40 
41 class CCR12_Triples : virtual public RefCount {
42  protected:
43  CCR12_Info* z;
44 
45  Ref<Tensor> singles_intermediate_;
46  Ref<Tensor> doubles_intermediate_;
47  Ref<Tensor> rhs_intermediate_;
48  Ref<Tensor> lhs_intermediate_;
49 
50  // Prediagonalization scheme
51  // only for ii cases.
52  void prediagon();
53  void fill_in_ltensors();
54  int pair_size_;
55 
56  RefDiagSCMatrix bdiag_;
57  RefSCMatrix lmatrix_;
58  Ref<Tensor> ltensor1_;
59  Ref<Tensor> ltensor2_;
60 
61 // Two cases. From here...
62 // for GGspace = ii
63  void singles();
64  void doubles();
65  void denom_contraction();
66  void denom_contraction_new();
67  void offset_hhphhh(Ref<Tensor>&);
68  double get_energy();
69 // for GGspace = ip
70  void doubles_ig(Ref<Tensor>& out);
71  void singles_ig(Ref<Tensor>& out);
72  void denom_contraction_ig();
73  void offset_hgphhh(Ref<Tensor>&);
74  double get_energy_ig();
75 // to here...
76 
77  void offset_bphhh(Ref<Tensor>&);
78 
79  public:
80  CCR12_Triples(CCR12_Info* inz) : z(inz) {};
81  ~CCR12_Triples() {};
82 
83  double compute();
84 
85 };
86 
87 }
88 
89 #endif
90 
sc::RefSCMatrix
The RefSCMatrix class is a smart pointer to an SCMatrix specialization.
Definition: matrix.h:135
sc::Ref
A template class that maintains references counts.
Definition: ref.h:361
sc::CCR12_Triples
Definition: ccr12_triples.h:41
sc::RefDiagSCMatrix
The RefDiagSCMatrix class is a smart pointer to an DiagSCMatrix specialization.
Definition: matrix.h:389
sc::RefCount
The base class for all reference counted objects.
Definition: ref.h:192
sc
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
sc::CCR12_Info
CCR12_Info is the compilation of members that are used in CC and CC-R12 methods.
Definition: ccr12_info.h:50

Generated at Sun Jan 26 2020 23:23:57 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.