Psi4
mrcc.h
Go to the documentation of this file.
1 /*
2  * @BEGIN LICENSE
3  *
4  * Psi4: an open-source quantum chemistry software package
5  *
6  * Copyright (c) 2007-2017 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program 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 General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License along
22  * with this program; if not, write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  *
25  * @END LICENSE
26  */
27 
28 #ifndef _psi_src_bin_psimrcc_mrcc_h_
29 #define _psi_src_bin_psimrcc_mrcc_h_
30 
32 #include "manybody.h"
33 #include "heff.h"
34 
35 namespace psi{ namespace psimrcc{
36 
37 class Updater;
38 
39 class CCMRCC : public CCManyBody
40 {
41 public:
42  // Constructor and destructor
43  CCMRCC(SharedWavefunction ref_wfn, Options &options);
44  virtual ~CCMRCC();
45 
46  // CCSD
47  void compute_energy(Updater* updater);
48 
49  // CCSD(T)
51 
52  // Perturbative correction for CBS
54  void perturbative_cbs();
55 
56 private:
58 
60 
61  void add_matrices();
62 
63  // These are used to call member functions
64 
66 
67  void diis(int cycle);
68  void diis_save_t_amps();
69 
70  void synchronize_amps();
71  void compute_delta_amps();
72  void add_ccsd_matrices();
73 
75 
76  void build_F_intermediates();
87 
88  // Intermediates required by triples
91 
92 
93  void build_W_intermediates();
103 
104  void build_Z_intermediates();
105 
106  void build_t1_amplitudes();
107  void build_t1_ia_amplitudes();
108  void build_t1_IA_amplitudes();
112 
113  void build_t2_amplitudes();
127 
129 
130  bool build_diagonalize_Heff(int cycle,double time);
131  void build_Heff_diagonal();
132  void build_Heff_offdiagonal();
133 
134  void update_amps();
135  void update_t1_amps();
136  void update_t2_amps();
137  void update_t3_amps();
138  void update_t3_ijkabc_amps();
139  void update_t3_ijKabC_amps();
140  void update_t3_iJKaBC_amps();
141  void update_t3_IJKABC_amps();
142 
143  void update_amps_bwccsd();
144  void update_t1_amps_bwccsd();
145  void update_t2_amps_bwccsd();
146 
147  void update_amps_mkccsd();
148  void update_t1_amps_mkccsd();
149  void update_t2_amps_mkccsd();
151  void update_t3_amps_mkccsd();
156 
161 
162  void print_mrccsd_energy(int cycle);
163 
164  // CCSD(T)
165  std::vector<double> compute_ooo_triples();
166  std::vector<double> compute_OOO_triples();
167  std::vector<double> compute_ooO_triples();
168  std::vector<double> compute_oOO_triples();
169 
170 
171 };
172 
173 }} /* End Namespaces */
174 
175 #endif // _psi_src_bin_psimrcc_mrcc_h_
std::vector< double > compute_OOO_triples()
void build_F_prime_mi_intermediates()
Definition: mrcc_f_int.cc:325
void build_F_mi_intermediates()
Definition: mrcc_f_int.cc:149
PsiReturnType psimrcc(SharedWavefunction, Options &)
Definition: psimrcc/main.cc:86
void build_W_mNiJ_intermediates()
Definition: mrcc_w_int.cc:81
void compute_delta_amps()
Definition: mrcc_t_amps.cc:85
void update_t2_amps_mkccsd_residual()
void build_W_JBME_intermediates()
Definition: mrcc_w_int.cc:245
std::vector< double > compute_ooo_triples()
void build_t2_IJAB_amplitudes_triples_diagram1()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t2_amps.cc:763
void update_amps_mkccsd_residual()
void build_t1_ia_amplitudes()
Definition: mrcc_t1_amps.cc:55
void build_W_jBmE_intermediates()
Definition: mrcc_w_int.cc:175
CCMRCC(SharedWavefunction ref_wfn, Options &options)
Definition: psimrcc/mrcc.cc:42
void build_Heff_offdiagonal()
Definition: mrcc_Heff.cc:114
void update_t3_ijkabc_amps()
Definition: mrcc_t_amps.cc:114
void build_t2_iJaB_amplitudes_triples_diagram3()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t2_amps.cc:1443
void update_t3_iJKaBC_amps_mkccsd()
void update_t3_IJKABC_amps_mkccsd()
void form_similarity_transformed_hamiltonian()
void build_F_ae_intermediates()
Definition: mrcc_f_int.cc:79
void build_t1_amplitudes()
Definition: mrcc_t1_amps.cc:49
void build_t1_IA_amplitudes()
Definition: mrcc_t1_amps.cc:118
void build_F_me_intermediates()
Definition: mrcc_f_int.cc:220
void build_W_jbME_intermediates()
Definition: mrcc_w_int.cc:198
void build_t2_iJaB_amplitudes_triples_diagram2()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t2_amps.cc:1041
void update_t3_IJKABC_amps()
Definition: mrcc_t_amps.cc:203
void build_F_prime_ae_intermediates()
Definition: mrcc_f_int.cc:284
Definition: manybody.h:70
void build_t2_iJaB_amplitudes()
Definition: mrcc_t2_amps.cc:168
void build_W_JbMe_intermediates()
Definition: mrcc_w_int.cc:223
void update_t3_ijKabC_amps_mkccsd()
void build_t2_IJAB_amplitudes()
Definition: mrcc_t2_amps.cc:294
void build_Z_intermediates()
Definition: mrcc_z_int.cc:44
void build_t1_IA_amplitudes_triples()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t1_amps.cc:238
void build_W_JBme_intermediates()
Definition: mrcc_w_int.cc:152
bool ap_correction
Definition: mrcc.h:59
void build_t2_amplitudes_triples()
Definition: mrcc_t2_amps.cc:353
virtual ~CCMRCC()
Definition: psimrcc/mrcc.cc:88
void build_W_intermediates()
Definition: mrcc_w_int.cc:46
bool build_diagonalize_Heff(int cycle, double time)
Definition: mrcc_Heff.cc:50
void update_t1_t2_amps_mkccsd_residual()
void build_W_jbme_intermediates()
Definition: mrcc_w_int.cc:122
void build_t2_ijab_amplitudes()
Definition: mrcc_t2_amps.cc:60
void build_t2_ijab_amplitudes_triples_diagram1()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t2_amps.cc:385
std::vector< double > compute_ooO_triples()
void update_t3_ijKabC_amps()
Definition: mrcc_t_amps.cc:142
void build_t1_amplitudes_triples()
Definition: mrcc_t1_amps.cc:154
void build_F_MI_intermediates()
Definition: mrcc_f_int.cc:191
void perturbative_cbs()
Definition: mrcc_pert_cbs.cc:85
void build_t2_iJaB_amplitudes_triples_diagram1()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t2_amps.cc:524
void print_mrccsd_energy(int cycle)
Definition: mrcc_energy.cc:40
void build_t2_ijab_amplitudes_triples_diagram2()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t2_amps.cc:906
void diis(int cycle)
void build_F_prime_MI_intermediates()
Definition: mrcc_f_int.cc:345
Definition: liboptions.h:359
void build_t2_IJAB_amplitudes_triples_diagram2()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t2_amps.cc:1244
void build_W_MNIJ_intermediates()
Definition: mrcc_w_int.cc:102
void compute_energy(Updater *updater)
Definition: mrcc_compute.cc:60
void build_F_intermediates()
Computes the contractions as described in J. Phys. Chem. vol. 94, pg. 4334 (1991). See J. Phys. Chem. vol. 127, 024102 (2007) supplementary material for the spin-factored equations.
Definition: mrcc_f_int.cc:56
void compute_first_order_amps()
Definition: mrcc_pert_cbs.cc:37
Definition: mrcc.h:39
Definition: heff.h:35
void update_t3_amps()
Definition: mrcc_t_amps.cc:106
void build_t2_ijab_amplitudes_triples_diagram3()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t2_amps.cc:1376
void build_t1_ia_amplitudes_triples()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t1_amps.cc:167
void update_t1_amps_mkccsd_residual()
void build_tau_intermediates()
Computes the contractions as described in J. Phys. Chem. vol. 94, pg. 4334 (1991). See J. Phys. Chem. vol. 127, 024102 (2007) supplementary material for the spin-factored equations.
Definition: mrcc_tau.cc:58
Options & options_
Definition: mrcc.h:57
void build_t2_IJAB_amplitudes_triples_diagram3()
Computes the contraction as described in Fig. 1 of Phys. Chem. Chem. Phys. vol. 2, pg. 2047 (2000). This algorithm hence performs .
Definition: mrcc_t2_amps.cc:1510
void update_t3_ijkabc_amps_mkccsd()
void update_t3_iJKaBC_amps()
Definition: mrcc_t_amps.cc:171
void synchronize_amps()
Definition: mrcc_t_amps.cc:49
void update_t1_t2_amps_mkccsd()
void build_F_AE_intermediates()
Definition: mrcc_f_int.cc:120
void build_F2_me_intermediates()
Definition: mrcc_f_int.cc:366
void build_F_ME_intermediates()
Definition: mrcc_f_int.cc:253
void build_F2_ME_intermediates()
Definition: mrcc_f_int.cc:397
void build_t2_amplitudes()
Definition: mrcc_t2_amps.cc:52
std::shared_ptr< Wavefunction > SharedWavefunction
Definition: typedefs.h:50
Hamiltonian h_eff
Definition: mrcc.h:65
Containts the procedure for updating the amplitudes.
Definition: updater.h:46
void add_matrices()
Definition: mrcc_add_matrices.cc:41
void compute_perturbative_triples()
Definition: mrcc_pert_triples.cc:52
std::vector< double > compute_oOO_triples()
void build_W_mnij_intermediates()
Definition: mrcc_w_int.cc:60
void build_Heff_diagonal()
Definition: mrcc_Heff.cc:97
void build_F_prime_AE_intermediates()
Definition: mrcc_f_int.cc:305