Psi4
occwave.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-2019 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
10  *
11  * This file is part of Psi4.
12  *
13  * Psi4 is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU Lesser General Public License as published by
15  * the Free Software Foundation, version 3.
16  *
17  * Psi4 is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU Lesser General Public License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public License along
23  * with Psi4; if not, write to the Free Software Foundation, Inc.,
24  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25  *
26  * @END LICENSE
27  */
28 
29 #ifndef occwave_h
30 #define occwave_h
31 
32 #include "psi4/libmints/vector.h"
35 #include "psi4/libdpd/dpd.h"
37 
38 #include "arrays.h"
39 
40 namespace psi {
41 
42 class IntegralTransform;
43 
44 namespace occwave {
45 
46 class OCCWave : public Wavefunction {
47  void common_init();
48 
49  public:
50  OCCWave(std::shared_ptr<Wavefunction> reference_wavefunction, Options &options);
51 
52  ~OCCWave() override;
53  double compute_energy() override;
54 
55  protected:
56  enum class SpinType : char { Alpha = 'a', Beta = 'b' };
57 
58  // General
59  void mem_release();
60  void mograd();
61  void compute_orbital_step();
63  void ccl_energy();
64  void nbo();
65  void get_moinfo();
66  void title();
67  void semi_canonic();
68  void ref_energy();
69  void fock_alpha();
70  void fock_beta();
71  void idp();
72  void idp2();
73  void kappa_msd();
74  void kappa_orb_resp();
75  void kappa_orb_resp_iter();
76  void compute_sigma_vector();
77  void orb_resp_pcg_rhf();
78  void orb_resp_pcg_uhf();
79  void dump_ints();
80  void denominators_rhf();
81  void denominators_uhf();
82  void gfock();
83  void trans_ints_rhf();
84  void trans_ints_uhf();
85  void tpdm_ref();
86  void tpdm_corr_opdm();
87  void tpdm_oovv();
88  void tpdm_oooo();
89  void tpdm_ovov();
90  void tpdm_vovo();
91  void tpdm_ovvo();
92  void gfock_diag();
93  void gfock_oo();
94  void gfock_vv();
95  void coord_grad();
96  void dump_pdms();
97  void occ_iterations();
98  void response_pdms();
99  void tei_sort_iabc();
100  void ekt_ip();
101  void ekt_ea();
102  void z_vector();
103  void effective_pdms();
104  void effective_gfock();
105  void gfock_ea();
106  void oeprop();
107  void s2_response();
108  void s2_lagrangian();
109  void second_order_opdm();
110  void set_t2_amplitudes_mp2();
111  void mp2_energy(bool include_singles = false);
112  void oo_diis();
113 
114  // Processing functions - print output, save variables
115  void mp2_printing(bool scf = false, bool include_singles = false);
116  void mp2p5_printing(bool scf = false);
117  void mp3_printing(bool scf = false);
118  void mp2_postprocessing(bool include_singles = false);
119  void mp2p5_postprocessing();
120  void mp3_postprocessing();
121 
122  // OMP2
123  void omp2_manager();
124  void mp2_manager();
125  void omp2_g_int();
126  void omp2_response_pdms();
127  void omp2_tpdm_oovv();
128  void omp2_ip_poles();
129  void omp2_ea_poles();
130  void ep2_ip();
131  void iterate_t2o1_amplitudes(); // Used by all OMP methods, as all need T2(1)
132  void iterative_mp_postdiis_amplitudes(); // Used by OMP methods higher than OMP2
133 
134  // OMP3
135  void omp3_manager();
136  void mp3_manager();
137  void omp3_response_pdms();
138  void omp3_tpdm_vvvv();
139  void omp3_g_int();
140  void w_1st_order();
141  void v_2nd_order();
142  void t2_2nd_sc();
143  void t2_2nd_general();
144  void mp3_energy();
145  void omp3_ip_poles();
146 
147  // OMP2.5
148  void omp2_5_manager();
149  void mp2_5_manager();
150 
151  // OCEPA
152  void ocepa_manager();
153  void cepa_manager();
154  void cepa_iterations();
155  void cepa_diis();
156  void cepa_chemist();
157  void ocepa_tpdm_vvvv();
158  void ocepa_response_pdms();
159  void t2_amps();
160  void w_int();
161  void v_int();
162  void cepa_energy();
163 
164  // MP2
165  void denominators_rmp2();
166  void denominators_ump2();
167  void trans_ints_rmp2();
168  void trans_ints_ump2();
169  void t1_1st_sc();
170  void t1_1st_gen();
171 
173  // Having two separate DIIS managers is silly and will soon be remedied.
176  // class DIISManager t2DiisManager;
177 
178  int nmo; // Number of MOs
179  int nao; // Number of AOs
180  int nso; // Number of SOs
181  int nooA; // Number of alpha occupied orbitals
182  int nooB; // Number of beta occupied orbitals
183  int nvoA; // Number of alpha virtual orbitals
184  int nvoB; // Number of beta virtual orbitals
185  int nacooA; // Number of active alpha occupied orbitals
186  int nacooB; // Number of active beta occupied orbitals
187  int nacso; // Number of active SOs
188  int nacvoA; // Number of active alpha virtual orbitals
189  int nacvoB; // Number of active beta virtual orbitals
190  int nirreps; // Number of irreducible representations
191  int nshell; // Number of shells
192  int nfrzc; // Number of frozen cores
193  int nfrzv; // Number of frozen virtuals
194  int npop; // Number of populated orbitals: npop=nmo-nfrzv
195  int dimtei; // dimension of tei in pitzer order for all integrals
196  int ntri; // square matrix dimension (nmo) -> pitzer order
197  int ntri_so; // square matrix dimension (nso) -> pitzer order
206  int itr_occ;
211  int multp;
212  int charge;
213  int print_;
214  int cachelev;
215  int nidp;
216  int nidp_tot; // nidpA + nidpB
217  int nidpA;
218  int nidpB;
219  int conver;
220  int mo_optimized; // if 0 MOs are NOT optimized, if 1 MOs are optimized.
221  int itr_pcg;
222  int idp_idx;
225  int do_diis_;
226  int itr_diis;
227  int time4grad; // If 0 it is not the time for grad, if 1 it is the time for grad
228  int maxdiis_; // MAX Number of vectors used in diis
229  int mindiis_; // MIN Number of vectors used in diis
230  int incore_iabc_; // 1 means do incore, 0 means do out of core
231  int incore_abcd_; // 1 means do incore, 0 means do out of core
232  int orbs_already_opt; // 1 means true, 0 means false
233  int orbs_already_sc; // 1 means true, 0 means false
234  int ep_conver; // 1 means true, 0 means false
235  int itr_ep;
237 
238  size_t memory;
239  size_t memory_mb_;
240  size_t cost_iabc_; // Mem required for the <ia|bc> integrals
241  size_t cost_abcd_; // Mem required for the <ab|cd> integrals
242 
243  // Common
244  double Enuc;
245  double sum;
246  double Etotal;
247  double Eelec;
248  double Escf;
249  double Eref;
250  double Emp2;
251  double Emp2_t1;
252  double Emp2BB;
253  double Emp2AA;
254  double Emp2AB;
255  double Emp2L;
256  double Emp2L_old;
257  double Ecorr;
258  double EcorrL;
259  double Ecc_rdm;
260  double Escsmp2;
261  double Escsmp2BB;
262  double Escsmp2AA;
263  double Escsmp2AB;
264  double Esosmp2AB;
265  double Esosmp2;
266  double Escsnmp2;
267  double Escsnmp2BB;
268  double Escsnmp2AA;
269  double Escsmp2vdw;
270  double Escsmp2vdwBB;
271  double Escsmp2vdwAA;
272  double Escsmp2vdwAB;
273  double Esospimp2AB;
274  double Esospimp2;
275  double Eopdm;
276  double Etpdm;
277  double DE;
278  double tol_Eod;
279  double tol_grad;
280  double idp_cutoff;
281  double rms_kappa;
282  double rms_kappaA;
283  double rms_kappaB;
284  double rms_wog;
285  double rms_wogA;
286  double rms_wogB;
287  double step_max;
288  double mograd_max;
295  double tol_t2;
296  double rms_t2;
297  double rms_t2AA;
298  double rms_t2AB;
299  double rms_t2BB;
300  double rms_l2;
301  double sc_ls;
302  double cutoff;
303  double os_scale;
304  double ss_scale;
305  double rms_pcgA;
306  double rms_pcgB;
307  double rms_pcg;
308  double tol_pcg;
310  double omega; // Green's function pole for alpha spin
311  double rms_t1;
312  double rms_t1A;
313  double rms_t1B;
314  double s2_resp;
315  double s2_proj;
316  double s2_lag;
317  double s2_ref;
318 
319  // OMP3
320  double e3_scale;
321  double Emp3;
322  double Emp3BB;
323  double Emp3AA;
324  double Emp3AB;
325  double Emp3L;
326  double Emp3L_old;
327  double Escsmp3BB;
328  double Escsmp3AA;
329  double Escsmp3AB;
330  double Escsmp3;
331  double Esosmp3;
332 
333  // OCEPA
334  double Ecepa;
335  double Ecepa_old;
336  double EcepaAA;
337  double EcepaBB;
338  double EcepaAB;
339  double EcepaL;
340  double EcepaL_old;
341 
342  std::string wfn;
343  std::string reference;
344  std::string reference_;
345  std::string jobtype;
346  std::string dertype;
347  std::string basis;
348  std::string lineq;
349  std::string orth_type;
350  std::string natorb;
351  std::string semicanonic;
352  std::string opt_method;
353  std::string hess_type;
354  std::string occ_orb_energy;
355  std::string write_mo_coeff; // Write CmoA to CmoA.psi and CmoB to CmoB.psi
356  std::string read_mo_coeff; // Read CmoA from CmoA.psi and CmoB from CmoB.psi
357  std::string spin_scale_type_;
358  std::string pcg_beta_type_;
359  std::string compute_mp3l; // Do compute mp3l energy during iterations?
360  std::string compute_cepal; // Do compute cepal energy during iterations?
361  std::string twopdm_abcd_type; // How to handle G_abcd
362  std::string wfn_type_;
363  std::string compute_ccl;
364  std::string orb_resp_solver_;
365  std::string ip_poles;
366  std::string ea_poles;
367  std::string ep_ip_poles;
368  std::string ep_ea_poles;
369  std::string ekt_ip_;
370  std::string ekt_ea_;
371  std::string orb_opt_;
372  std::string relaxed_;
373  std::string sym_gfm_;
374  std::string oeprop_;
375  std::string comput_s2_;
376 
377  // Several of these int*'s seem like they should be Dimension objects.
378  int *mopi; /* number of all MOs per irrep */
379  int *sopi; /* number of all SOs per irrep */
380  int *occpi;
381  int *doccpi; /* number of doubly occupied MOs per irrep */
382  int *occpiA; /* number of alpha occupied MOs per irrep */
383  int *occpiB; /* number of beta occupied MOs per irrep */
384  int *soccpi; /* number of all singly occupied MOs per irrep */
385  int *virtpiA; /* number of alpha virtual MOs per irrep */
386  int *virtpiB; /* number of beta virtual MOs per irrep */
387  int *frzcpi; /* number of frozen occupied MOs per irrep */
388  int *frzvpi; /* number of frozen virtual MOs per irrep */
389  int *adoccpi; /* number of active doubly occupied MOs per irrep */
390  int *aoccpiA; /* number of active alpha occupied MOs per irrep */
391  int *aoccpiB; /* number of active beta occupied MOs per irrep */
392  int *avirtpiA; /* number of active alpha virtual MOs per irrep */
393  int *avirtpiB; /* number of active beta virtual MOs per irrep */
394  int *mosym; /* symmetry of all MOs in pitzer order */
395  int *sosym; /* symmetry of all SOs in pitzer order */
396  int *mosym_c1; /* symmetry of all MOs in energy order */
397  int *PitzerOffset; /* block offset */
398  int *pitzer2symblk; // convert Pitzer index to sym block index
399  int *pitzer2symirrep; // Return irrep of given SO in Pitzer order
400  int *occ2symblkA; // convert OCC index to sym block index
401  int *occ2symblkB; // convert OCC index to sym block index
402  int *virt2symblkA; // convert VIR index to sym block index
403  int *virt2symblkB; // convert VIR index to sym block index
404  int *qt2pitzerA; // Convert the index of given orbital in QT order to symmetric subgroup (pitzer ordered)
405  int *qt2pitzerB; // Convert the index of given orbital in QT order to symmetric subgroup (pitzer ordered)
406  int *pitzer2qtA; // Convert the index of given orbital in symmetric subgroup to QT order
407  int *pitzer2qtB; // Convert the index of given orbital in symmetric subgroup to QT order
408  int *occ_offA; /* Alpha OCC block offset */
409  int *occ_offB; /* Beta OCC block offset */
410  int *vir_offA; /* Alpha VIR block offset */
411  int *vir_offB; /* Alpha VIR block offset */
412  int *idprowA;
413  int *idprowB;
414  int *idpcolA;
415  int *idpcolB;
416  int *idpirrA;
417  int *idpirrB;
427 
428  size_t *cost_ov_;
429  size_t *cost_vv_;
430 
431  double *evalsA;
432  double *evalsB;
433  double *evals_c1A;
434  double *evals_c1B;
435 
442  Array1d *kappa; // where kappa = kappaA + kappaB
461  Array1d *zvector; // where zvector = zvectorA + zvectorB
462 
467 
470 
471  double **C_pitzerA;
472  double **C_pitzerB;
473 
474  SharedMatrix Ca_new; // New Alpha MO coeff.
475  SharedMatrix Cb_new; // New Beta MO coeff.
500  SharedMatrix gamma1corr; // Correlation contribution to 1PDM, for RHF
501  SharedMatrix gamma1corrA; // Correlation contribution to alpha 1PDM, for UHF
502  SharedMatrix gamma1corrB; // Correlation contribution to beta 1PDM, for UHF
503  SharedMatrix g1symm; // 1PDM, for RHF
504  SharedMatrix g1symmA; // Alpha 1PDM, for UHF
505  SharedMatrix g1symmB; // Beta 1PDM, for UHF
516  SharedMatrix GooA; // -1 * OO block of the correlation contribution to alpha 1PDM
517  SharedMatrix GooB; // -1 * OO block of the correlation contribution to beta 1PDM
518  SharedMatrix GvvA; // -1 * VV block of the correlation contribution to alpha 1PDM
519  SharedMatrix GvvB; // -1 * VV block of the correlation contribution to beta 1PDM
526 
527  // Variables with different spin types
528  std::map<SpinType, Dimension> idp_dimensions_;
529  std::map<SpinType, SharedVector> kappa_bar_;
530  std::map<SpinType, int *> idpirr_;
531  std::map<SpinType, int *> idprow_;
532  std::map<SpinType, int *> idpcol_;
533  std::map<SpinType, int *> occpi_;
534  std::map<SpinType, int> idp_count_;
535  std::map<SpinType, SharedMatrix> C_;
536  std::map<SpinType, SharedMatrix> C_ref_;
537 };
538 }
539 }
540 
541 #endif // occwave_h
SharedMatrix t1B
Definition: occwave.h:523
void ocepa_response_pdms()
Definition: ocepa_response_pdms.cc:36
SharedMatrix HCA
Definition: occwave.h:512
int * ov_pairpiAA
Definition: occwave.h:421
void dump_pdms()
Definition: coord_grad.cc:168
Array1d * kappaA
Definition: occwave.h:440
double os_scale
Definition: occwave.h:303
double sum
Definition: occwave.h:245
double e3_scale
Definition: occwave.h:320
SharedMatrix Cb_new
Definition: occwave.h:475
int * occpiB
Definition: occwave.h:383
double Emp2_t1
Definition: occwave.h:251
int exp_idp_cutoff
Definition: occwave.h:203
void response_pdms()
Definition: occ/occ_iterations.cc:455
void mp2_5_manager()
Definition: occ/manager.cc:813
int nhessroot
Definition: occwave.h:207
int * idpcolB
Definition: occwave.h:415
std::string compute_cepal
Definition: occwave.h:360
int * qt2pitzerB
Definition: occwave.h:405
void omp3_response_pdms()
Definition: omp3_response_pdms.cc:37
int exp_mograd_max
Definition: occwave.h:204
int * occ_offB
Definition: occwave.h:409
std::string wfn_type_
Definition: occwave.h:362
void tpdm_ovov()
Definition: corr_tpdm.cc:588
Array2d * AorbAA
Definition: occwave.h:463
double Emp3BB
Definition: occwave.h:322
int pcg_maxiter
Definition: occwave.h:223
Array1d * Minv_pcgA
Definition: occwave.h:453
Options & options() const
Definition: wavefunction.cc:654
int nacooA
Definition: occwave.h:185
double cutoff
Definition: occwave.h:302
int idp_return
Definition: occwave.h:208
Array1d * r_pcg_newB
Definition: occwave.h:456
int * adoccpi
Definition: occwave.h:389
int * oo_pairpiAA
Definition: occwave.h:418
std::string compute_mp3l
Definition: occwave.h:359
std::map< SpinType, int * > idprow_
Definition: occwave.h:531
double Eref
Definition: occwave.h:249
void mp2_printing(bool scf=false, bool include_singles=false)
Definition: postprocessing.cc:36
double omega
Definition: occwave.h:310
Array1d * D_pcgA
Definition: occwave.h:449
void fock_alpha()
Definition: fock_alpha.cc:37
int * vv_pairpiBB
Definition: occwave.h:426
void iterate_t2o1_amplitudes()
Definition: iterate_t2o1_amplitudes.cc:39
double rms_t2AA
Definition: occwave.h:297
int ep_maxiter
Definition: occwave.h:236
SharedMatrix g1symm
Definition: occwave.h:503
void get_moinfo()
Definition: occ/get_moinfo.cc:47
int nidpB
Definition: occwave.h:218
std::map< SpinType, SharedVector > kappa_bar_
Definition: occwave.h:529
void second_order_opdm()
Definition: second_order_opdm.cc:40
double Escsnmp2
Definition: occwave.h:266
double biggest_mogradA
Definition: occwave.h:290
SharedMatrix GvvB
Definition: occwave.h:519
void idp2()
Definition: idp2.cc:36
double Emp2AA
Definition: occwave.h:253
SharedMatrix GooB
Definition: occwave.h:517
double Emp2
Definition: occwave.h:250
SharedMatrix G1tildeA
Definition: occwave.h:507
size_t * cost_vv_
Definition: occwave.h:429
void t2_2nd_sc()
Definition: occ/t2_2nd_sc.cc:38
void gfock_ea()
Definition: gfock_ea.cc:41
int * oo_pairpiAB
Definition: occwave.h:419
void tpdm_oooo()
Definition: corr_tpdm.cc:196
SharedMatrix GFock
Definition: occwave.h:485
double Escsmp2vdw
Definition: occwave.h:269
void mp2p5_printing(bool scf=false)
Definition: postprocessing.cc:65
double Escsmp2vdwAA
Definition: occwave.h:271
double ss_scale
Definition: occwave.h:304
void ocepa_tpdm_vvvv()
Definition: corr_tpdm.cc:434
int * frzvpi
Definition: occwave.h:388
Array1d * sigma_pcgA
Definition: occwave.h:451
void update_mo_spincase(SpinType)
Definition: occ/update_mo.cc:38
int exp_tol_Eod
Definition: occwave.h:200
std::map< SpinType, int * > idpcol_
Definition: occwave.h:532
SharedMatrix ZmatB
Definition: occwave.h:521
void v_int()
Definition: v_int.cc:37
int * sosym
Definition: occwave.h:395
SharedMatrix WorbB
Definition: occwave.h:511
SharedMatrix HG1B
Definition: occwave.h:499
DIISManager * orbitalDiis
Definition: occwave.h:175
double Escsmp2AA
Definition: occwave.h:262
double EcepaBB
Definition: occwave.h:337
size_t cost_iabc_
Definition: occwave.h:240
int exp_tol_grad
Definition: occwave.h:202
double tol_Eod
Definition: occwave.h:278
int nvoB
Definition: occwave.h:184
void mp2_energy(bool include_singles=false)
Definition: occ/cc_energy.cc:77
int nidpA
Definition: occwave.h:217
double step_max
Definition: occwave.h:287
double Escsmp2AB
Definition: occwave.h:263
int nfrzv
Definition: occwave.h:193
void ocepa_manager()
Definition: occ/manager.cc:498
double Esospimp2AB
Definition: occwave.h:273
int * occpi
Definition: occwave.h:380
int * vir_offB
Definition: occwave.h:411
std::string reference_
Definition: occwave.h:344
double ** scf
Definition: dx_write.cc:57
int * pitzer2symblk
Definition: occwave.h:398
int pcg_conver
Definition: occwave.h:224
double Emp2L
Definition: occwave.h:255
int charge
Definition: occwave.h:212
size_t memory_mb_
Definition: occwave.h:239
double Esospimp2
Definition: occwave.h:274
double sc_ls
Definition: occwave.h:301
void nbo()
Definition: occwave.cc:489
int cc_maxiter
Definition: occwave.h:198
double Emp2L_old
Definition: occwave.h:256
double rms_t2AB
Definition: occwave.h:298
SharedMatrix GFockA
Definition: occwave.h:486
double EcorrL
Definition: occwave.h:258
SharedMatrix WorbA
Definition: occwave.h:510
std::string orb_opt_
Definition: occwave.h:371
int mo_maxiter
Definition: occwave.h:199
std::string semicanonic
Definition: occwave.h:351
void cepa_chemist()
Definition: cepa_iterations.cc:183
double rms_t1A
Definition: occwave.h:312
void omp2_ip_poles()
Definition: omp2_ip_poles.cc:61
double * evalsA
Definition: occwave.h:431
int * frzcpi
Definition: occwave.h:387
void kappa_orb_resp()
Definition: occ/kappa_orb_resp.cc:40
void ekt_ip()
Definition: ekt_ip.cc:41
SharedMatrix t1newB
Definition: occwave.h:525
void idp()
Definition: occ/idp.cc:36
double Escsmp3AB
Definition: occwave.h:329
void t1_1st_sc()
Definition: t1_1st.cc:39
Array3i * oo_pairidxAA
Definition: occwave.h:468
int npop
Definition: occwave.h:194
int ntri_so
Definition: occwave.h:197
Array2d * Aorb
Definition: occwave.h:466
int orbs_already_opt
Definition: occwave.h:232
int * idprowA
Definition: occwave.h:412
void denominators_rmp2()
Definition: trans_ints_rmp2.cc:99
Array1d * dr_pcgB
Definition: occwave.h:458
SharedMatrix FsoA
Definition: occwave.h:481
double s2_ref
Definition: occwave.h:317
int * sopi
Definition: occwave.h:379
void compute_sigma_vector()
Definition: kappa_orb_resp_iter.cc:607
std::string orth_type
Definition: occwave.h:349
int * soccpi
Definition: occwave.h:384
int nirreps
Definition: occwave.h:190
int dimtei
Definition: occwave.h:195
Enter brief description of file here.
int print_
Definition: occwave.h:213
int nooA
Definition: occwave.h:181
int * aoccpiA
Definition: occwave.h:390
int * PitzerOffset
Definition: occwave.h:397
Array1d * wog_intA
Definition: occwave.h:438
void kappa_orb_resp_iter()
Definition: kappa_orb_resp_iter.cc:40
SharedMatrix FockA
Definition: occwave.h:483
double Escsnmp2BB
Definition: occwave.h:267
int nacooB
Definition: occwave.h:186
void mp3_printing(bool scf=false)
Definition: postprocessing.cc:84
std::string oeprop_
Definition: occwave.h:374
int incore_iabc_
Definition: occwave.h:230
void ref_energy()
Definition: occ/cc_energy.cc:41
SharedMatrix g1symmB
Definition: occwave.h:505
OCCWave(std::shared_ptr< Wavefunction > reference_wavefunction, Options &options)
Definition: occwave.cc:49
void effective_gfock()
Definition: coord_grad.cc:1112
std::string lineq
Definition: occwave.h:348
std::string twopdm_abcd_type
Definition: occwave.h:361
int * occpiA
Definition: occwave.h:382
double s2_lag
Definition: occwave.h:316
void effective_pdms()
Definition: coord_grad.cc:869
void mp3_postprocessing()
Definition: postprocessing.cc:131
void tpdm_ref()
Definition: tpdm_ref_corr_opdm.cc:42
std::string occ_orb_energy
Definition: occwave.h:354
double rms_l2
Definition: occwave.h:300
Array1d * r_pcg_newA
Definition: occwave.h:455
void denominators_rhf()
Definition: trans_ints_rhf.cc:194
int * occ_offA
Definition: occwave.h:408
std::string comput_s2_
Definition: occwave.h:375
Array1d * zvectorA
Definition: occwave.h:459
double biggest_mogradB
Definition: occwave.h:291
std::string dertype
Definition: occwave.h:346
Array1d * kappaB
Definition: occwave.h:441
void fock_beta()
Definition: fock_beta.cc:37
SharedMatrix g1symmA
Definition: occwave.h:504
void trans_ints_rhf()
Definition: trans_ints_rhf.cc:43
size_t * cost_ov_
Definition: occwave.h:428
void gfock_diag()
Definition: gfock_diag.cc:38
int * oo_pairpiBB
Definition: occwave.h:420
int ntri
Definition: occwave.h:196
std::string natorb
Definition: occwave.h:350
SharedMatrix GooA
Definition: occwave.h:516
double lambda_damping
Definition: occwave.h:309
SharedMatrix UorbB
Definition: occwave.h:492
int time4grad
Definition: occwave.h:227
void ccl_energy()
Definition: occ/ccl_energy.cc:37
void cepa_manager()
Definition: occ/manager.cc:589
size_t memory
Definition: occwave.h:238
int ep_conver
Definition: occwave.h:234
double Esosmp2AB
Definition: occwave.h:264
void title()
Definition: occwave.cc:370
double compute_energy() override
Compute energy. Subclasses override this function to compute its energy.
Definition: occwave.cc:401
SharedMatrix HmoB
Definition: occwave.h:480
void omp2_tpdm_oovv()
Definition: corr_tpdm.cc:39
SharedMatrix FockB
Definition: occwave.h:484
double ** C_pitzerB
Definition: occwave.h:472
Array3i * vv_pairidxAA
Definition: occwave.h:469
std::string read_mo_coeff
Definition: occwave.h:356
std::string relaxed_
Definition: occwave.h:372
std::string jobtype
Definition: occwave.h:345
SharedMatrix Tso
Definition: occwave.h:476
double Emp2AB
Definition: occwave.h:254
void omp2_5_manager()
Definition: occ/manager.cc:676
double rms_wogA
Definition: occwave.h:285
void oeprop()
Definition: coord_grad.cc:1881
void cepa_diis()
Definition: cepa_iterations.cc:145
void tei_sort_iabc()
Definition: tei_sort_iabc.cc:39
SharedMatrix GFockB
Definition: occwave.h:487
int * pitzer2symirrep
Definition: occwave.h:399
Array1d * D_pcgB
Definition: occwave.h:450
SharedWavefunction occwave(SharedWavefunction, Options &)
Definition: occ/main.cc:34
double EcepaAA
Definition: occwave.h:336
double mograd_max
Definition: occwave.h:288
Array1d * zvector
Definition: occwave.h:461
SharedMatrix G1tilde
Definition: occwave.h:506
SharedMatrix HG1
Definition: occwave.h:497
double Emp3AA
Definition: occwave.h:323
double rms_kappaB
Definition: occwave.h:283
std::string ea_poles
Definition: occwave.h:366
int * idprowB
Definition: occwave.h:413
void mp3_energy()
Definition: occ/cc_energy.cc:226
int exp_tol_t2
Definition: occwave.h:201
void t2_amps()
Definition: t2_amps.cc:40
std::string ekt_ea_
Definition: occwave.h:370
int nvoA
Definition: occwave.h:183
int * idpcolA
Definition: occwave.h:414
Array2d * AorbBB
Definition: occwave.h:464
int * ov_pairpiAB
Definition: occwave.h:422
SharedMatrix Hso
Definition: occwave.h:478
Definition: occwave.h:46
Array1d * kappa_newA
Definition: occwave.h:443
std::string ekt_ip_
Definition: occwave.h:369
double ** C_pitzerA
Definition: occwave.h:471
double Esosmp2
Definition: occwave.h:265
double Escf
Definition: occwave.h:248
void trans_ints_ump2()
Definition: trans_ints_ump2.cc:40
SharedMatrix Ftilde
Definition: occwave.h:488
SharedMatrix gamma1corrA
Definition: occwave.h:501
void t2_2nd_general()
Definition: t2_2nd_general.cc:40
double biggest_kappaB
Definition: occwave.h:294
int idp_returnB
Definition: occwave.h:210
int cachelev
Definition: occwave.h:214
SharedMatrix Worb
Definition: occwave.h:509
std::string ep_ea_poles
Definition: occwave.h:368
void mem_release()
Definition: occwave.cc:573
double Escsmp3AA
Definition: occwave.h:328
std::string sym_gfm_
Definition: occwave.h:373
double DE
Definition: occwave.h:277
std::string ep_ip_poles
Definition: occwave.h:367
int exp_cutoff
Definition: occwave.h:205
double EcepaL
Definition: occwave.h:339
int * vv_pairpiAA
Definition: occwave.h:424
std::map< SpinType, SharedMatrix > C_
Definition: occwave.h:535
double EcepaAB
Definition: occwave.h:338
SharedMatrix t1newA
Definition: occwave.h:524
std::string wfn
Definition: occwave.h:342
SharedMatrix UorbrotA
Definition: occwave.h:493
int * mosym_c1
Definition: occwave.h:396
void gfock()
Definition: gfock.cc:39
int * mosym
Definition: occwave.h:394
void occ_iterations()
Definition: occ/occ_iterations.cc:42
int itr_diis
Definition: occwave.h:226
void omp3_manager()
Definition: occ/manager.cc:272
void omp2_response_pdms()
Definition: omp2_response_pdms.cc:39
double rms_t1B
Definition: occwave.h:313
int * pitzer2qtB
Definition: occwave.h:407
SpinType
Definition: occwave.h:56
int * virtpiA
Definition: occwave.h:385
double Emp3AB
Definition: occwave.h:324
int itr_ep
Definition: occwave.h:235
int * occ2symblkB
Definition: occwave.h:401
int multp
Definition: occwave.h:211
void ep2_ip()
Definition: ep2_ip.cc:45
void tpdm_corr_opdm()
Definition: tpdm_ref_corr_opdm.cc:148
int * avirtpiB
Definition: occwave.h:393
Definition: liboptions.h:353
int * pitzer2qtA
Definition: occwave.h:406
void trans_ints_rmp2()
Definition: trans_ints_rmp2.cc:40
SharedMatrix Vso
Definition: occwave.h:477
SharedMatrix KorbA
Definition: occwave.h:495
double Emp3L
Definition: occwave.h:325
Array1d * Minv_pcgB
Definition: occwave.h:454
int * aoccpiB
Definition: occwave.h:391
double rms_kappa
Definition: occwave.h:281
double Escsmp2
Definition: occwave.h:260
double Escsnmp2AA
Definition: occwave.h:268
double Escsmp2vdwAB
Definition: occwave.h:272
int nao
Definition: occwave.h:179
double Escsmp3BB
Definition: occwave.h:327
SharedMatrix GvvA
Definition: occwave.h:518
double tol_pcg
Definition: occwave.h:308
SharedMatrix FtildeB
Definition: occwave.h:490
Array1d * r_pcgB
Definition: occwave.h:446
int nso
Definition: occwave.h:180
double tol_grad
Definition: occwave.h:279
void omp3_ip_poles()
Definition: omp3_ip_poles.cc:62
std::string orb_resp_solver_
Definition: occwave.h:364
double Ecorr
Definition: occwave.h:257
void orb_resp_pcg_rhf()
Definition: kappa_orb_resp_iter.cc:382
double biggest_kappa
Definition: occwave.h:292
double Escsmp2vdwBB
Definition: occwave.h:270
DIISManager * t2DiisManager
Definition: occwave.h:174
int * qt2pitzerA
Definition: occwave.h:404
double Ecepa_old
Definition: occwave.h:335
std::string hess_type
Definition: occwave.h:353
void coord_grad()
Definition: coord_grad.cc:39
int * idpirrB
Definition: occwave.h:417
Definition: occ/arrays.h:259
int orbs_already_sc
Definition: occwave.h:233
void mp3_manager()
Definition: occ/manager.cc:420
double biggest_mograd
Definition: occwave.h:289
double rms_t2BB
Definition: occwave.h:299
int * avirtpiA
Definition: occwave.h:392
int nfrzc
Definition: occwave.h:192
Array1d * S_pcgB
Definition: occwave.h:448
int * vv_pairpiAB
Definition: occwave.h:425
SharedMatrix FCB
Definition: occwave.h:515
SharedMatrix gamma1corrB
Definition: occwave.h:502
SharedMatrix FtildeA
Definition: occwave.h:489
std::shared_ptr< Matrix > SharedMatrix
Definition: adc.h:49
double rms_wogB
Definition: occwave.h:286
int * virt2symblkA
Definition: occwave.h:402
Array2d * AorbAB
Definition: occwave.h:465
void cepa_iterations()
Definition: cepa_iterations.cc:40
std::string write_mo_coeff
Definition: occwave.h:355
int nacvoA
Definition: occwave.h:188
Array1d * dr_pcgA
Definition: occwave.h:457
Array1d * kappa_newB
Definition: occwave.h:444
void common_init()
Definition: occwave.cc:56
double rms_pcg
Definition: occwave.h:307
double Etotal
Definition: occwave.h:246
double Enuc
Definition: occwave.h:244
std::shared_ptr< Wavefunction > reference_wavefunction() const
Returns the reference wavefunction.
Definition: wavefunction.cc:694
int nacso
Definition: occwave.h:187
std::string spin_scale_type_
Definition: occwave.h:357
int mindiis_
Definition: occwave.h:229
double biggest_kappaA
Definition: occwave.h:293
Simple wavefunction base class.
Definition: wavefunction.h:86
void denominators_ump2()
Definition: trans_ints_ump2.cc:188
int itr_occ
Definition: occwave.h:206
int maxdiis_
Definition: occwave.h:228
double * evalsB
Definition: occwave.h:432
void mograd()
Definition: occ/mograd.cc:38
double Ecc_rdm
Definition: occwave.h:259
void tpdm_oovv()
Definition: corr_tpdm.cc:102
double tol_t2
Definition: occwave.h:295
double rms_t2
Definition: occwave.h:296
SharedMatrix ZmatA
Definition: occwave.h:520
void kappa_msd()
Definition: kappa_msd.cc:37
void oo_diis()
Definition: occ/occ_iterations.cc:484
void mp2_postprocessing(bool include_singles=false)
Definition: postprocessing.cc:106
Array1d * S_pcgA
Definition: occwave.h:447
Array1d * kappa
Definition: occwave.h:442
int nshell
Definition: occwave.h:191
int * virtpiB
Definition: occwave.h:386
double s2_proj
Definition: occwave.h:315
int * occ2symblkA
Definition: occwave.h:400
std::map< SpinType, SharedMatrix > C_ref_
Definition: occwave.h:536
double Eopdm
Definition: occwave.h:275
std::map< SpinType, int > idp_count_
Definition: occwave.h:534
double rms_pcgA
Definition: occwave.h:305
int nidp
Definition: occwave.h:215
void omp3_g_int()
Definition: omp3_g_int.cc:38
std::string reference
Definition: occwave.h:343
double Emp3L_old
Definition: occwave.h:326
void iterative_mp_postdiis_amplitudes()
Definition: t2_2nd_general.cc:778
double EcepaL_old
Definition: occwave.h:340
void mp2_manager()
Definition: occ/manager.cc:175
int * doccpi
Definition: occwave.h:381
int idp_returnA
Definition: occwave.h:209
SharedMatrix FCA
Definition: occwave.h:514
void w_int()
Definition: w_int.cc:39
Array1d * r_pcgA
Definition: occwave.h:445
std::string basis
Definition: occwave.h:347
void mp2p5_postprocessing()
Definition: postprocessing.cc:146
double * evals_c1B
Definition: occwave.h:434
SharedMatrix t1A
Definition: occwave.h:522
void dump_ints()
Definition: coord_grad.cc:78
std::string ip_poles
Definition: occwave.h:365
int * idpirrA
Definition: occwave.h:416
SharedMatrix HmoA
Definition: occwave.h:479
void denominators_uhf()
Definition: trans_ints_uhf.cc:769
Definition: occ/arrays.h:46
double Etpdm
Definition: occwave.h:276
Array1d * sigma_pcgB
Definition: occwave.h:452
int mo_optimized
Definition: occwave.h:220
void cepa_energy()
Definition: occ/cc_energy.cc:298
SharedMatrix HG1A
Definition: occwave.h:498
void w_1st_order()
Definition: w_1st_order.cc:39
int nmo
Definition: occwave.h:178
double Emp2BB
Definition: occwave.h:252
double Escsmp3
Definition: occwave.h:330
class IntegralTransform * ints
Definition: occwave.h:172
double rms_wog
Definition: occwave.h:284
Definition: occ/arrays.h:104
Definition: integraltransform.h:59
int idp_idx
Definition: occwave.h:222
std::map< SpinType, Dimension > idp_dimensions_
Definition: occwave.h:528
std::map< SpinType, int * > occpi_
Definition: occwave.h:533
void omp3_tpdm_vvvv()
Definition: corr_tpdm.cc:265
void t1_1st_gen()
Definition: t1_1st.cc:71
void tpdm_vovo()
Definition: corr_tpdm.cc:667
SharedMatrix gamma1corr
Definition: occwave.h:500
std::string pcg_beta_type_
Definition: occwave.h:358
SharedMatrix UorbrotB
Definition: occwave.h:494
std::string compute_ccl
Definition: occwave.h:363
double rms_t1
Definition: occwave.h:311
void v_2nd_order()
Definition: v_2nd_order.cc:37
SharedMatrix FsoB
Definition: occwave.h:482
double s2_resp
Definition: occwave.h:314
Array1d * wogA
Definition: occwave.h:436
void trans_ints_uhf()
Definition: trans_ints_uhf.cc:41
Array1d * wogB
Definition: occwave.h:437
int * vir_offA
Definition: occwave.h:410
int * ov_pairpiBB
Definition: occwave.h:423
int * virt2symblkB
Definition: occwave.h:403
int incore_abcd_
Definition: occwave.h:231
std::string opt_method
Definition: occwave.h:352
size_t cost_abcd_
Definition: occwave.h:241
Array1d * wog_intB
Definition: occwave.h:439
int conver
Definition: occwave.h:219
SharedMatrix UorbA
Definition: occwave.h:491
double Ecepa
Definition: occwave.h:334
double idp_cutoff
Definition: occwave.h:280
The DIISManager class handles DIIS extrapolations.
Definition: diismanager.h:47
double Eelec
Definition: occwave.h:247
int do_diis_
Definition: occwave.h:225
SharedMatrix HCB
Definition: occwave.h:513
int nidp_tot
Definition: occwave.h:216
SharedMatrix Ca_new
Definition: occwave.h:474
double rms_kappaA
Definition: occwave.h:282
int * mopi
Definition: occwave.h:378
void set_t2_amplitudes_mp2()
Definition: set_t2_amplitudes_mp2.cc:41
void semi_canonic()
Definition: occ/semi_canonic.cc:39
Array1d * zvectorB
Definition: occwave.h:460
int nooB
Definition: occwave.h:182
SharedMatrix G1tildeB
Definition: occwave.h:508
int itr_pcg
Definition: occwave.h:221
double * evals_c1A
Definition: occwave.h:433
std::map< SpinType, int * > idpirr_
Definition: occwave.h:530
int nacvoB
Definition: occwave.h:189
void compute_orbital_step()
Definition: occ/occ_iterations.cc:464
double Emp3
Definition: occwave.h:321
SharedMatrix KorbB
Definition: occwave.h:496
void ekt_ea()
Definition: ekt_ea.cc:41
void orb_resp_pcg_uhf()
Definition: kappa_orb_resp_iter.cc:475
~OCCWave() override
Definition: occwave.cc:54
void z_vector()
Definition: occ/z_vector.cc:40
double rms_pcgB
Definition: occwave.h:306
double Escsmp2BB
Definition: occwave.h:261
void tpdm_ovvo()
Definition: corr_tpdm.cc:693
void omp2_manager()
Definition: occ/manager.cc:44
double Esosmp3
Definition: occwave.h:331