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 
34 #include "psi4/libdpd/dpd.h"
36 
37 #include "arrays.h"
38 
39 namespace psi {
40 
41 class IntegralTransform;
42 
43 namespace occwave {
44 
45 class OCCWave : public Wavefunction {
46  void common_init();
47 
48  public:
49  OCCWave(std::shared_ptr<Wavefunction> reference_wavefunction, Options &options);
50 
51  ~OCCWave() override;
52  double compute_energy() override;
53 
54  protected:
55  // General
56  void mem_release();
57  void mograd();
58  void update_mo();
59  void ccl_energy();
60  void nbo();
61  void get_moinfo();
62  void title();
63  void semi_canonic();
64  void ref_energy();
65  void fock_alpha();
66  void fock_beta();
67  void idp();
68  void idp2();
69  void diis(int dimvec, Array2d *vecs, Array2d *errvecs, Array1d *vec_new, Array1d *errvec_new);
70  void kappa_msd();
71  void kappa_orb_resp();
72  void kappa_orb_resp_iter();
73  void orb_resp_pcg_rhf();
74  void orb_resp_pcg_uhf();
75  void dump_ints();
76  void denominators_rhf();
77  void denominators_uhf();
78  void gfock();
79  void trans_ints_rhf();
80  void trans_ints_uhf();
81  void tpdm_ref();
82  void tpdm_corr_opdm();
83  void tpdm_oovv();
84  void tpdm_oooo();
85  void tpdm_ovov();
86  void tpdm_vovo();
87  void tpdm_ovvo();
88  void gfock_diag();
89  void gfock_oo();
90  void gfock_vv();
91  void coord_grad();
92  void dump_pdms();
93  void occ_iterations();
94  void tei_sort_iabc();
95  void ekt_ip();
96  void ekt_ea();
97  void z_vector();
98  void effective_pdms();
99  void effective_gfock();
100  void gfock_ea();
101  void oeprop();
102  void s2_response();
103  void s2_lagrangian();
104 
105  // OMP2
106  void omp2_manager();
107  void mp2_manager();
108  void omp2_g_int();
109  void omp2_response_pdms();
110  void omp2_t2_1st_sc();
111  void omp2_t2_1st_general();
112  void omp2_tpdm_oovv();
113  void omp2_mp2_energy();
114  void omp2_ip_poles();
115  void omp2_ea_poles();
116  void ep2_ip();
117 
118  // OMP3
119  void omp3_manager();
120  void mp3_manager();
121  void omp3_response_pdms();
122  void omp3_t2_1st_sc();
123  void omp3_t2_1st_general();
124  void omp3_tpdm_vvvv();
125  void omp3_g_int();
126  void omp3_mp2_energy();
127  void w_1st_order();
128  void v_2nd_order();
129  void t2_2nd_sc();
130  void t2_2nd_general();
131  void mp3_energy();
132  void omp3_ip_poles();
133 
134  // OMP2.5
135  void omp2_5_manager();
136  void mp2_5_manager();
137 
138  // OCEPA
139  void ocepa_manager();
140  void cepa_manager();
141  void cepa_iterations();
142  void ocepa_mp2_energy();
143  void ocepa_t2_1st_sc();
144  void ocepa_tpdm_vvvv();
145  void ocepa_g_int();
146  void ocepa_response_pdms();
147  void t2_amps();
148  void w_int();
149  void v_int();
150  void cepa_energy();
151 
152  // MP2
153  void denominators_rmp2();
154  void denominators_ump2();
155  void trans_ints_rmp2();
156  void trans_ints_ump2();
157  void t1_1st_sc();
158  void t1_1st_gen();
159 
162  // class DIISManager t2DiisManager;
163 
164  int nmo; // Number of MOs
165  int nao; // Number of AOs
166  int nso; // Number of SOs
167  int nooA; // Number of alpha occupied orbitals
168  int nooB; // Number of beta occupied orbitals
169  int nvoA; // Number of alpha virtual orbitals
170  int nvoB; // Number of beta virtual orbitals
171  int nacooA; // Number of active alpha occupied orbitals
172  int nacooB; // Number of active beta occupied orbitals
173  int nacso; // Number of active SOs
174  int nacvoA; // Number of active alpha virtual orbitals
175  int nacvoB; // Number of active beta virtual orbitals
176  int nirreps; // Number of irreducible representations
177  int nshell; // Number of shells
178  int nfrzc; // Number of frozen cores
179  int nfrzv; // Number of frozen virtuals
180  int npop; // Number of populated orbitals: npop=nmo-nfrzv
181  int dimtei; // dimension of tei in pitzer order for all integrals
182  int ntri; // square matrix dimension (nmo) -> pitzer order
183  int ntri_so; // square matrix dimension (nso) -> pitzer order
192  int itr_occ;
197  int num_vecs; // Number of vectors used in diis (diis order)
198  int nvar; // nvar = num_vecs +1;
199  int multp;
200  int charge;
201  int print_;
202  int cachelev;
203  int nidp;
204  int nidp_tot; // nidpA + nidpB
205  int nidpA;
206  int nidpB;
207  int conver;
208  int mo_optimized; // if 0 MOs are NOT optimized, if 1 MOs are optimized.
209  int itr_pcg;
210  int idp_idx;
213  int do_diis_;
214  int itr_diis;
215  int time4grad; // If 0 it is not the time for grad, if 1 it is the time for grad
216  int cc_maxdiis_; // MAX Number of vectors used in CC diis
217  int cc_mindiis_; // MIN Number of vectors used in CC diis
218  int incore_iabc_; // 1 means do incore, 0 means do out of core
219  int incore_abcd_; // 1 means do incore, 0 means do out of core
220  int orbs_already_opt; // 1 means true, 0 means false
221  int orbs_already_sc; // 1 means true, 0 means false
222  int ep_conver; // 1 means true, 0 means false
223  int itr_ep;
225 
226  size_t memory;
227  size_t memory_mb_;
228  size_t cost_iabc_; // Mem required for the <ia|bc> integrals
229  size_t cost_abcd_; // Mem required for the <ab|cd> integrals
230 
231  // Common
232  double Enuc;
233  double sum;
234  double Etotal;
235  double Eelec;
236  double Escf;
237  double Eref;
238  double Emp2;
239  double Emp2_t1;
240  double Emp2BB;
241  double Emp2AA;
242  double Emp2AB;
243  double Emp2L;
244  double Emp2L_old;
245  double Ecorr;
246  double EcorrL;
247  double Ecc_rdm;
248  double Escsmp2;
249  double Escsmp2BB;
250  double Escsmp2AA;
251  double Escsmp2AB;
252  double Esosmp2AB;
253  double Esosmp2;
254  double Escsnmp2;
255  double Escsnmp2BB;
256  double Escsnmp2AA;
257  double Escsmimp2;
258  double Escsmimp2BB;
259  double Escsmimp2AA;
260  double Escsmimp2AB;
261  double Escsmp2vdw;
262  double Escsmp2vdwBB;
263  double Escsmp2vdwAA;
264  double Escsmp2vdwAB;
265  double Esospimp2AB;
266  double Esospimp2;
267  double Eopdm;
268  double Etpdm;
269  double DE;
270  double tol_Eod;
271  double tol_grad;
272  double idp_cutoff;
273  double rms_kappa;
274  double rms_kappaA;
275  double rms_kappaB;
276  double rms_wog;
277  double rms_wogA;
278  double rms_wogB;
279  double step_max;
280  double mograd_max;
287  double tol_t2;
288  double rms_t2;
289  double rms_t2AA;
290  double rms_t2AB;
291  double rms_t2BB;
292  double rms_l2;
293  double mu_ls;
294  double sc_ls;
296  double cutoff;
297  double os_scale;
298  double ss_scale;
299  double sos_scale;
300  double sos_scale2;
301  double a_pcgA;
302  double a_pcgB;
303  double b_pcgA;
304  double b_pcgB;
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 Esosmp3AB;
332  double Esosmp3;
333  double Escsnmp3;
334  double Escsmimp3;
335  double Escsmp3vdw;
336  double Esospimp3;
337 
338  // OCEPA
339  double Ecepa;
340  double Ecepa_old;
341  double EcepaAA;
342  double EcepaBB;
343  double EcepaAB;
344  double EcepaL;
345  double EcepaL_old;
346  double EscscepaBB;
347  double EscscepaAA;
348  double EscscepaAB;
349  double Escscepa;
350  double EsoscepaAB;
351  double Esoscepa;
352  double Escsncepa;
353  double Escsmicepa;
354  double Escscepavdw;
355  double Esospicepa;
360 
361  std::string wfn;
362  std::string reference;
363  std::string reference_;
364  std::string jobtype;
365  std::string dertype;
366  std::string basis;
367  std::string level_shift;
368  std::string lineq;
369  std::string orth_type;
370  std::string natorb;
371  std::string semicanonic;
372  std::string opt_method;
373  std::string hess_type;
374  std::string occ_orb_energy;
375  std::string do_scs; // Spin-Component-Scaling
376  std::string do_sos; // Spin-Opposite-Scaling
377  std::string write_mo_coeff; // Write CmoA to CmoA.psi and CmoB to CmoB.psi
378  std::string read_mo_coeff; // Read CmoA from CmoA.psi and CmoB from CmoB.psi
379  std::string scs_type_;
380  std::string sos_type_;
381  std::string pcg_beta_type_;
382  std::string compute_mp3l; // Do compute mp3l energy during iterations?
383  std::string compute_cepal; // Do compute cepal energy during iterations?
384  std::string twopdm_abcd_type; // How to handle G_abcd
385  std::string wfn_type_;
386  std::string compute_ccl;
387  std::string orb_resp_solver_;
388  std::string ip_poles;
389  std::string ea_poles;
390  std::string ep_ip_poles;
391  std::string ep_ea_poles;
392  std::string ekt_ip_;
393  std::string ekt_ea_;
394  std::string orb_opt_;
395  std::string relaxed_;
396  std::string sym_gfm_;
397  std::string oeprop_;
398  std::string comput_s2_;
399 
400  int *mopi; /* number of all MOs per irrep */
401  int *sopi; /* number of all SOs per irrep */
402  int *occpi;
403  int *doccpi; /* number of doubly occupied MOs per irrep */
404  int *occpiA; /* number of alpha occupied MOs per irrep */
405  int *occpiB; /* number of beta occupied MOs per irrep */
406  int *soccpi; /* number of all singly occupied MOs per irrep */
407  int *virtpiA; /* number of alpha virtual MOs per irrep */
408  int *virtpiB; /* number of beta virtual MOs per irrep */
409  int *frzcpi; /* number of frozen occupied MOs per irrep */
410  int *frzvpi; /* number of frozen virtual MOs per irrep */
411  int *adoccpi; /* number of active doubly occupied MOs per irrep */
412  int *aoccpiA; /* number of active alpha occupied MOs per irrep */
413  int *aoccpiB; /* number of active beta occupied MOs per irrep */
414  int *avirtpiA; /* number of active alpha virtual MOs per irrep */
415  int *avirtpiB; /* number of active beta virtual MOs per irrep */
416  int *mosym; /* symmetry of all MOs in pitzer order */
417  int *sosym; /* symmetry of all SOs in pitzer order */
418  int *mosym_c1; /* symmetry of all MOs in energy order */
419  int *PitzerOffset; /* block offset */
420  int *pitzer2symblk; // convert Pitzer index to sym block index
421  int *pitzer2symirrep; // Return irrep of given SO in Pitzer order
422  int *occ2symblkA; // convert OCC index to sym block index
423  int *occ2symblkB; // convert OCC index to sym block index
424  int *virt2symblkA; // convert VIR index to sym block index
425  int *virt2symblkB; // convert VIR index to sym block index
426  int *qt2pitzerA; // Convert the index of given orbital in QT order to symmetric subgroup (pitzer ordered)
427  int *qt2pitzerB; // Convert the index of given orbital in QT order to symmetric subgroup (pitzer ordered)
428  int *pitzer2qtA; // Convert the index of given orbital in symmetric subgroup to QT order
429  int *pitzer2qtB; // Convert the index of given orbital in symmetric subgroup to QT order
430  int *occ_offA; /* Alpha OCC block offset */
431  int *occ_offB; /* Beta OCC block offset */
432  int *vir_offA; /* Alpha VIR block offset */
433  int *vir_offB; /* Alpha VIR block offset */
434  int *idprowA;
435  int *idprowB;
436  int *idpcolA;
437  int *idpcolB;
438  int *idpirrA;
439  int *idpirrB;
449 
450  size_t *cost_ov_;
451  size_t *cost_vv_;
452 
453  double *evalsA;
454  double *evalsB;
455  double *evals_c1A;
456  double *evals_c1B;
457 
464  Array1d *kappa; // where kappa = kappaA + kappaB
489  Array1d *zvector; // where zvector = zvectorA + zvectorB
490 
499 
502 
503  double **C_pitzerA;
504  double **C_pitzerB;
505 
506  SharedMatrix Ca_new; // New Alpha MO coeff.
507  SharedMatrix Cb_new; // New Beta MO coeff.
508  SharedMatrix Ca_ref; // Ref Alpha MO coeff.
509  SharedMatrix Cb_ref; // Ref Beta MO coeff.
562 };
563 }
564 }
565 
566 #endif // occwave_h
SharedMatrix t1B
Definition: occwave.h:559
void ocepa_response_pdms()
Definition: ocepa_response_pdms.cc:36
Array2d * errvecsA
Definition: occwave.h:493
SharedMatrix HCA
Definition: occwave.h:548
int * ov_pairpiAA
Definition: occwave.h:443
void dump_pdms()
Definition: coord_grad.cc:168
Array1d * kappaA
Definition: occwave.h:462
double os_scale
Definition: occwave.h:297
double sum
Definition: occwave.h:233
double e3_scale
Definition: occwave.h:320
SharedMatrix Cb_new
Definition: occwave.h:507
int * occpiB
Definition: occwave.h:405
double Emp2_t1
Definition: occwave.h:239
int exp_idp_cutoff
Definition: occwave.h:189
double sos_scale_ocepa
Definition: occwave.h:359
void mp2_5_manager()
Definition: occ/manager.cc:1429
void omp3_t2_1st_sc()
Definition: omp3_t2_1st_sc.cc:37
int nhessroot
Definition: occwave.h:193
int * idpcolB
Definition: occwave.h:437
std::string compute_cepal
Definition: occwave.h:383
int * qt2pitzerB
Definition: occwave.h:427
void omp3_response_pdms()
Definition: omp3_response_pdms.cc:37
int exp_mograd_max
Definition: occwave.h:190
int * occ_offB
Definition: occwave.h:431
std::string wfn_type_
Definition: occwave.h:385
void tpdm_ovov()
Definition: corr_tpdm.cc:588
Array2d * AorbAA
Definition: occwave.h:495
double Emp3BB
Definition: occwave.h:322
int pcg_maxiter
Definition: occwave.h:211
Array1d * Minv_pcgA
Definition: occwave.h:477
Options & options() const
Definition: wavefunction.cc:645
int nacooA
Definition: occwave.h:171
Array1d * p_pcgB
Definition: occwave.h:474
double cutoff
Definition: occwave.h:296
int idp_return
Definition: occwave.h:194
Array1d * r_pcg_newB
Definition: occwave.h:480
int * adoccpi
Definition: occwave.h:411
int * oo_pairpiAA
Definition: occwave.h:440
Array1d * kappa_barA
Definition: occwave.h:465
std::string compute_mp3l
Definition: occwave.h:382
double Eref
Definition: occwave.h:237
double omega
Definition: occwave.h:310
int nvar
Definition: occwave.h:198
void fock_alpha()
Definition: fock_alpha.cc:37
int * vv_pairpiBB
Definition: occwave.h:448
void diis(int dimvec, Array2d *vecs, Array2d *errvecs, Array1d *vec_new, Array1d *errvec_new)
Definition: occ/diis.cc:39
double rms_t2AA
Definition: occwave.h:289
int ep_maxiter
Definition: occwave.h:224
SharedMatrix g1symm
Definition: occwave.h:539
void get_moinfo()
Definition: occ/get_moinfo.cc:46
double Escsmimp2AB
Definition: occwave.h:260
int nidpB
Definition: occwave.h:206
double Escsnmp2
Definition: occwave.h:254
double a_pcgA
Definition: occwave.h:301
double biggest_mogradA
Definition: occwave.h:282
SharedMatrix GvvB
Definition: occwave.h:555
void omp2_mp2_energy()
Definition: occ/cc_energy.cc:77
void idp2()
Definition: idp2.cc:36
double Emp2AA
Definition: occwave.h:241
SharedMatrix GooB
Definition: occwave.h:553
double Emp2
Definition: occwave.h:238
SharedMatrix G1tildeA
Definition: occwave.h:543
size_t * cost_vv_
Definition: occwave.h:451
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:441
void tpdm_oooo()
Definition: corr_tpdm.cc:196
SharedMatrix GFock
Definition: occwave.h:519
double Escsmp2vdw
Definition: occwave.h:261
double Escsmp2vdwAA
Definition: occwave.h:263
double ss_scale
Definition: occwave.h:298
void ocepa_tpdm_vvvv()
Definition: corr_tpdm.cc:434
int * frzvpi
Definition: occwave.h:410
Array1d * sigma_pcgA
Definition: occwave.h:475
int exp_tol_Eod
Definition: occwave.h:186
SharedMatrix ZmatB
Definition: occwave.h:557
void v_int()
Definition: v_int.cc:37
int * sosym
Definition: occwave.h:417
SharedMatrix WorbB
Definition: occwave.h:547
SharedMatrix HG1B
Definition: occwave.h:535
double sos_scale
Definition: occwave.h:299
double Escsmp2AA
Definition: occwave.h:250
double EcepaBB
Definition: occwave.h:342
size_t cost_iabc_
Definition: occwave.h:228
int exp_tol_grad
Definition: occwave.h:188
double tol_Eod
Definition: occwave.h:270
int nvoB
Definition: occwave.h:170
int nidpA
Definition: occwave.h:205
double step_max
Definition: occwave.h:279
double Escsmp2AB
Definition: occwave.h:251
int nfrzv
Definition: occwave.h:179
void ocepa_manager()
Definition: occ/manager.cc:921
double Esospimp2AB
Definition: occwave.h:265
int * occpi
Definition: occwave.h:402
Array1d * kappa_barB
Definition: occwave.h:466
int * vir_offB
Definition: occwave.h:433
std::string reference_
Definition: occwave.h:363
int * pitzer2symblk
Definition: occwave.h:420
int pcg_conver
Definition: occwave.h:212
double Emp2L
Definition: occwave.h:243
int charge
Definition: occwave.h:200
size_t memory_mb_
Definition: occwave.h:227
double Esospimp2
Definition: occwave.h:266
double sc_ls
Definition: occwave.h:294
void nbo()
Definition: occwave.cc:475
void omp2_t2_1st_sc()
Definition: omp2_t2_1st.cc:39
int cc_maxiter
Definition: occwave.h:184
double EscscepaAB
Definition: occwave.h:348
double Emp2L_old
Definition: occwave.h:244
double rms_t2AB
Definition: occwave.h:290
SharedMatrix GFockA
Definition: occwave.h:520
double EcorrL
Definition: occwave.h:246
SharedMatrix WorbA
Definition: occwave.h:546
std::string orb_opt_
Definition: occwave.h:394
int mo_maxiter
Definition: occwave.h:185
std::string semicanonic
Definition: occwave.h:371
double rms_t1A
Definition: occwave.h:312
void omp2_ip_poles()
Definition: omp2_ip_poles.cc:61
double * evalsA
Definition: occwave.h:453
int * frzcpi
Definition: occwave.h:409
void kappa_orb_resp()
Definition: occ/kappa_orb_resp.cc:40
void ekt_ip()
Definition: ekt_ip.cc:41
SharedMatrix t1newB
Definition: occwave.h:561
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:500
int npop
Definition: occwave.h:180
Array1d * p_pcg_newA
Definition: occwave.h:483
int ntri_so
Definition: occwave.h:183
Array2d * Aorb
Definition: occwave.h:498
int orbs_already_opt
Definition: occwave.h:220
int * idprowA
Definition: occwave.h:434
void denominators_rmp2()
Definition: trans_ints_rmp2.cc:99
Array1d * dr_pcgB
Definition: occwave.h:486
SharedMatrix FsoA
Definition: occwave.h:515
void ocepa_mp2_energy()
Definition: occ/cc_energy.cc:452
double s2_ref
Definition: occwave.h:317
int * sopi
Definition: occwave.h:401
std::string orth_type
Definition: occwave.h:369
int * soccpi
Definition: occwave.h:406
int nirreps
Definition: occwave.h:176
int dimtei
Definition: occwave.h:181
Enter brief description of file here.
double EsoscepaAB
Definition: occwave.h:350
int print_
Definition: occwave.h:201
int nooA
Definition: occwave.h:167
int * aoccpiA
Definition: occwave.h:412
int * PitzerOffset
Definition: occwave.h:419
Array1d * wog_intA
Definition: occwave.h:460
void kappa_orb_resp_iter()
Definition: kappa_orb_resp_iter.cc:40
SharedMatrix FockA
Definition: occwave.h:517
double Escsnmp2BB
Definition: occwave.h:255
int nacooB
Definition: occwave.h:172
std::string oeprop_
Definition: occwave.h:397
int incore_iabc_
Definition: occwave.h:218
void omp2_t2_1st_general()
Definition: omp2_t2_1st.cc:154
void ref_energy()
Definition: occ/cc_energy.cc:41
SharedMatrix g1symmB
Definition: occwave.h:541
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:368
std::string twopdm_abcd_type
Definition: occwave.h:384
int * occpiA
Definition: occwave.h:404
double s2_lag
Definition: occwave.h:316
void effective_pdms()
Definition: coord_grad.cc:869
void tpdm_ref()
Definition: tpdm_ref_corr_opdm.cc:42
double Escsncepa
Definition: occwave.h:352
std::string occ_orb_energy
Definition: occwave.h:374
double rms_l2
Definition: occwave.h:292
Array1d * r_pcg_newA
Definition: occwave.h:479
std::string sos_type_
Definition: occwave.h:380
void denominators_rhf()
Definition: trans_ints_rhf.cc:194
int * occ_offA
Definition: occwave.h:430
std::string comput_s2_
Definition: occwave.h:398
Array1d * zvectorA
Definition: occwave.h:487
double biggest_mogradB
Definition: occwave.h:283
std::string dertype
Definition: occwave.h:365
Array1d * kappaB
Definition: occwave.h:463
void fock_beta()
Definition: fock_beta.cc:37
SharedMatrix g1symmA
Definition: occwave.h:540
void trans_ints_rhf()
Definition: trans_ints_rhf.cc:43
size_t * cost_ov_
Definition: occwave.h:450
void gfock_diag()
Definition: gfock_diag.cc:38
int * oo_pairpiBB
Definition: occwave.h:442
int ntri
Definition: occwave.h:182
std::string natorb
Definition: occwave.h:370
SharedMatrix GooA
Definition: occwave.h:552
double lambda_damping
Definition: occwave.h:309
SharedMatrix UorbB
Definition: occwave.h:526
std::string do_scs
Definition: occwave.h:375
int time4grad
Definition: occwave.h:215
void ccl_energy()
Definition: occ/ccl_energy.cc:37
void cepa_manager()
Definition: occ/manager.cc:1090
size_t memory
Definition: occwave.h:226
int ep_conver
Definition: occwave.h:222
double Esosmp2AB
Definition: occwave.h:252
void title()
Definition: occwave.cc:356
double compute_energy() override
Compute energy. Subclasses override this function to compute its energy.
Definition: occwave.cc:387
SharedMatrix HmoB
Definition: occwave.h:514
void omp2_tpdm_oovv()
Definition: corr_tpdm.cc:39
SharedMatrix FockB
Definition: occwave.h:518
double ** C_pitzerB
Definition: occwave.h:504
Array3i * vv_pairidxAA
Definition: occwave.h:501
void update_mo()
Definition: occ/update_mo.cc:38
std::string read_mo_coeff
Definition: occwave.h:378
double lshift_parameter
Definition: occwave.h:295
std::string relaxed_
Definition: occwave.h:395
std::string jobtype
Definition: occwave.h:364
SharedMatrix Tso
Definition: occwave.h:510
double Esoscepa
Definition: occwave.h:351
double Emp2AB
Definition: occwave.h:242
double Esospimp3
Definition: occwave.h:336
void omp2_5_manager()
Definition: occ/manager.cc:1207
double rms_wogA
Definition: occwave.h:277
double Escsmicepa
Definition: occwave.h:353
Array2d * vecsA
Definition: occwave.h:491
Array1d * p_pcg_newB
Definition: occwave.h:484
void oeprop()
Definition: coord_grad.cc:1881
void tei_sort_iabc()
Definition: tei_sort_iabc.cc:39
double cepa_os_scale_
Definition: occwave.h:356
double Escsmimp3
Definition: occwave.h:334
SharedMatrix GFockB
Definition: occwave.h:521
int * pitzer2symirrep
Definition: occwave.h:421
SharedWavefunction occwave(SharedWavefunction, Options &)
Definition: occ/main.cc:34
double EcepaAA
Definition: occwave.h:341
double mograd_max
Definition: occwave.h:280
Array1d * zvector
Definition: occwave.h:489
SharedMatrix G1tilde
Definition: occwave.h:542
std::string scs_type_
Definition: occwave.h:379
SharedMatrix HG1
Definition: occwave.h:533
double Emp3AA
Definition: occwave.h:323
double rms_kappaB
Definition: occwave.h:275
SharedMatrix KsqrA
Definition: occwave.h:531
std::string ea_poles
Definition: occwave.h:389
Array1d * z_pcg_newB
Definition: occwave.h:482
int * idprowB
Definition: occwave.h:435
void mp3_energy()
Definition: occ/cc_energy.cc:376
double Escsmimp2BB
Definition: occwave.h:258
int exp_tol_t2
Definition: occwave.h:187
void t2_amps()
Definition: t2_amps.cc:40
SharedMatrix Cb_ref
Definition: occwave.h:509
std::string ekt_ea_
Definition: occwave.h:393
int nvoA
Definition: occwave.h:169
int * idpcolA
Definition: occwave.h:436
Array2d * AorbBB
Definition: occwave.h:496
SharedMatrix KsqrB
Definition: occwave.h:532
int * ov_pairpiAB
Definition: occwave.h:444
SharedMatrix Hso
Definition: occwave.h:512
Definition: occwave.h:45
Array1d * kappa_newA
Definition: occwave.h:467
std::string ekt_ip_
Definition: occwave.h:392
double ** C_pitzerA
Definition: occwave.h:503
double Esosmp3AB
Definition: occwave.h:331
double Esosmp2
Definition: occwave.h:253
double Escf
Definition: occwave.h:236
void trans_ints_ump2()
Definition: trans_ints_ump2.cc:40
SharedMatrix Ftilde
Definition: occwave.h:522
SharedMatrix gamma1corrA
Definition: occwave.h:537
void t2_2nd_general()
Definition: t2_2nd_general.cc:40
void omp3_t2_1st_general()
Definition: omp3_t2_1st_general.cc:39
double biggest_kappaB
Definition: occwave.h:286
int idp_returnB
Definition: occwave.h:196
int cachelev
Definition: occwave.h:202
SharedMatrix Worb
Definition: occwave.h:545
std::string ep_ea_poles
Definition: occwave.h:391
void mem_release()
Definition: occwave.cc:559
double Escsmp3AA
Definition: occwave.h:328
double Esospicepa
Definition: occwave.h:355
SharedMatrix Ca_ref
Definition: occwave.h:508
std::string sym_gfm_
Definition: occwave.h:396
double EscscepaAA
Definition: occwave.h:347
double DE
Definition: occwave.h:269
std::string ep_ip_poles
Definition: occwave.h:390
int exp_cutoff
Definition: occwave.h:191
double EcepaL
Definition: occwave.h:344
int * vv_pairpiAA
Definition: occwave.h:446
double EcepaAB
Definition: occwave.h:343
SharedMatrix t1newA
Definition: occwave.h:560
std::string wfn
Definition: occwave.h:361
SharedMatrix UorbrotA
Definition: occwave.h:527
int * mosym_c1
Definition: occwave.h:418
void gfock()
Definition: gfock.cc:39
int * mosym
Definition: occwave.h:416
int num_vecs
Definition: occwave.h:197
void occ_iterations()
Definition: occ/occ_iterations.cc:39
int itr_diis
Definition: occwave.h:214
void omp3_manager()
Definition: occ/manager.cc:446
void omp2_response_pdms()
Definition: omp2_response_pdms.cc:39
double rms_t1B
Definition: occwave.h:313
int * pitzer2qtB
Definition: occwave.h:429
int * virtpiA
Definition: occwave.h:407
double Emp3AB
Definition: occwave.h:324
int itr_ep
Definition: occwave.h:223
int * occ2symblkB
Definition: occwave.h:423
Array1d * p_pcgA
Definition: occwave.h:473
int multp
Definition: occwave.h:199
void ep2_ip()
Definition: ep2_ip.cc:45
void tpdm_corr_opdm()
Definition: tpdm_ref_corr_opdm.cc:148
int * avirtpiB
Definition: occwave.h:415
Definition: liboptions.h:352
int * pitzer2qtA
Definition: occwave.h:428
void trans_ints_rmp2()
Definition: trans_ints_rmp2.cc:40
SharedMatrix Vso
Definition: occwave.h:511
SharedMatrix KorbA
Definition: occwave.h:529
double b_pcgB
Definition: occwave.h:304
double Emp3L
Definition: occwave.h:325
Array1d * Minv_pcgB
Definition: occwave.h:478
int * aoccpiB
Definition: occwave.h:413
double rms_kappa
Definition: occwave.h:273
double Escsmp2
Definition: occwave.h:248
double Escsnmp2AA
Definition: occwave.h:256
double Escsmp2vdwAB
Definition: occwave.h:264
int nao
Definition: occwave.h:165
double Escsmp3BB
Definition: occwave.h:327
SharedMatrix GvvA
Definition: occwave.h:554
double tol_pcg
Definition: occwave.h:308
SharedMatrix FtildeB
Definition: occwave.h:524
Array1d * r_pcgB
Definition: occwave.h:470
int nso
Definition: occwave.h:166
double tol_grad
Definition: occwave.h:271
void omp3_ip_poles()
Definition: omp3_ip_poles.cc:62
std::string orb_resp_solver_
Definition: occwave.h:387
double Ecorr
Definition: occwave.h:245
void orb_resp_pcg_rhf()
Definition: kappa_orb_resp_iter.cc:643
double biggest_kappa
Definition: occwave.h:284
double Escsmp2vdwBB
Definition: occwave.h:262
DIISManager * t2DiisManager
Definition: occwave.h:161
int * qt2pitzerA
Definition: occwave.h:426
Array2d * vecsB
Definition: occwave.h:492
double Ecepa_old
Definition: occwave.h:340
std::string level_shift
Definition: occwave.h:367
std::string hess_type
Definition: occwave.h:373
double EscscepaBB
Definition: occwave.h:346
void coord_grad()
Definition: coord_grad.cc:39
int * idpirrB
Definition: occwave.h:439
Definition: occ/arrays.h:257
int orbs_already_sc
Definition: occwave.h:221
void mp3_manager()
Definition: occ/manager.cc:742
double biggest_mograd
Definition: occwave.h:281
double rms_t2BB
Definition: occwave.h:291
int * avirtpiA
Definition: occwave.h:414
int nfrzc
Definition: occwave.h:178
int * vv_pairpiAB
Definition: occwave.h:447
SharedMatrix FCB
Definition: occwave.h:551
SharedMatrix gamma1corrB
Definition: occwave.h:538
SharedMatrix FtildeA
Definition: occwave.h:523
std::shared_ptr< Matrix > SharedMatrix
Definition: adc.h:49
double rms_wogB
Definition: occwave.h:278
int * virt2symblkA
Definition: occwave.h:424
Array2d * AorbAB
Definition: occwave.h:497
double Escsmimp2
Definition: occwave.h:257
void cepa_iterations()
Definition: cepa_iterations.cc:40
std::string write_mo_coeff
Definition: occwave.h:377
int nacvoA
Definition: occwave.h:174
Array1d * dr_pcgA
Definition: occwave.h:485
Array1d * kappa_newB
Definition: occwave.h:468
void common_init()
Definition: occwave.cc:56
double rms_pcg
Definition: occwave.h:307
double Etotal
Definition: occwave.h:234
double Enuc
Definition: occwave.h:232
std::shared_ptr< Wavefunction > reference_wavefunction() const
Returns the reference wavefunction.
Definition: wavefunction.cc:681
int nacso
Definition: occwave.h:173
double biggest_kappaA
Definition: occwave.h:285
Simple wavefunction base class.
Definition: wavefunction.h:85
void denominators_ump2()
Definition: trans_ints_ump2.cc:188
int itr_occ
Definition: occwave.h:192
double * evalsB
Definition: occwave.h:454
void mograd()
Definition: occ/mograd.cc:38
double Ecc_rdm
Definition: occwave.h:247
double Escsmimp2AA
Definition: occwave.h:259
Array2d * errvecsB
Definition: occwave.h:494
void tpdm_oovv()
Definition: corr_tpdm.cc:102
double tol_t2
Definition: occwave.h:287
double rms_t2
Definition: occwave.h:288
SharedMatrix ZmatA
Definition: occwave.h:556
void kappa_msd()
Definition: kappa_msd.cc:37
double Escscepavdw
Definition: occwave.h:354
Array1d * kappa
Definition: occwave.h:464
int nshell
Definition: occwave.h:177
int * virtpiB
Definition: occwave.h:408
double s2_proj
Definition: occwave.h:315
int * occ2symblkA
Definition: occwave.h:422
double mu_ls
Definition: occwave.h:293
double Eopdm
Definition: occwave.h:267
Array1d * z_pcg_newA
Definition: occwave.h:481
double rms_pcgA
Definition: occwave.h:305
int nidp
Definition: occwave.h:203
void omp3_g_int()
Definition: omp3_g_int.cc:38
double Escscepa
Definition: occwave.h:349
std::string reference
Definition: occwave.h:362
double Emp3L_old
Definition: occwave.h:326
double EcepaL_old
Definition: occwave.h:345
void mp2_manager()
Definition: occ/manager.cc:282
int * doccpi
Definition: occwave.h:403
int idp_returnA
Definition: occwave.h:195
SharedMatrix FCA
Definition: occwave.h:550
void w_int()
Definition: w_int.cc:39
Array1d * r_pcgA
Definition: occwave.h:469
std::string basis
Definition: occwave.h:366
std::string do_sos
Definition: occwave.h:376
double * evals_c1B
Definition: occwave.h:456
SharedMatrix t1A
Definition: occwave.h:558
void dump_ints()
Definition: coord_grad.cc:78
std::string ip_poles
Definition: occwave.h:388
double cepa_sos_scale_
Definition: occwave.h:358
int cc_mindiis_
Definition: occwave.h:217
int * idpirrA
Definition: occwave.h:438
SharedMatrix HmoA
Definition: occwave.h:513
void denominators_uhf()
Definition: trans_ints_uhf.cc:769
Definition: occ/arrays.h:46
double Etpdm
Definition: occwave.h:268
Array1d * sigma_pcgB
Definition: occwave.h:476
int mo_optimized
Definition: occwave.h:208
void omp3_mp2_energy()
Definition: occ/cc_energy.cc:235
void cepa_energy()
Definition: occ/cc_energy.cc:588
SharedMatrix HG1A
Definition: occwave.h:534
void w_1st_order()
Definition: w_1st_order.cc:39
int nmo
Definition: occwave.h:164
double Emp2BB
Definition: occwave.h:240
double Escsmp3
Definition: occwave.h:330
class IntegralTransform * ints
Definition: occwave.h:160
double rms_wog
Definition: occwave.h:276
Definition: occ/arrays.h:102
Definition: integraltransform.h:59
int idp_idx
Definition: occwave.h:210
void omp3_tpdm_vvvv()
Definition: corr_tpdm.cc:265
Array1d * z_pcgA
Definition: occwave.h:471
void ocepa_g_int()
Definition: ocepa_g_int.cc:38
void t1_1st_gen()
Definition: t1_1st.cc:71
void tpdm_vovo()
Definition: corr_tpdm.cc:667
SharedMatrix gamma1corr
Definition: occwave.h:536
double b_pcgA
Definition: occwave.h:303
std::string pcg_beta_type_
Definition: occwave.h:381
SharedMatrix UorbrotB
Definition: occwave.h:528
std::string compute_ccl
Definition: occwave.h:386
void ocepa_t2_1st_sc()
Definition: ocepa_t2_1st_sc.cc:39
double rms_t1
Definition: occwave.h:311
void v_2nd_order()
Definition: v_2nd_order.cc:37
SharedMatrix FsoB
Definition: occwave.h:516
double s2_resp
Definition: occwave.h:314
Array1d * wogA
Definition: occwave.h:458
Array1d * z_pcgB
Definition: occwave.h:472
void trans_ints_uhf()
Definition: trans_ints_uhf.cc:41
Array1d * wogB
Definition: occwave.h:459
int * vir_offA
Definition: occwave.h:432
int * ov_pairpiBB
Definition: occwave.h:445
int * virt2symblkB
Definition: occwave.h:425
int incore_abcd_
Definition: occwave.h:219
std::string opt_method
Definition: occwave.h:372
double Escsnmp3
Definition: occwave.h:333
size_t cost_abcd_
Definition: occwave.h:229
Array1d * wog_intB
Definition: occwave.h:461
int conver
Definition: occwave.h:207
void omp2_g_int()
Definition: omp2_response_pdms.cc:213
SharedMatrix UorbA
Definition: occwave.h:525
double Ecepa
Definition: occwave.h:339
double idp_cutoff
Definition: occwave.h:272
The DIISManager class handles DIIS extrapolations.
Definition: diismanager.h:47
double Eelec
Definition: occwave.h:235
double a_pcgB
Definition: occwave.h:302
int do_diis_
Definition: occwave.h:213
SharedMatrix HCB
Definition: occwave.h:549
int nidp_tot
Definition: occwave.h:204
double cepa_ss_scale_
Definition: occwave.h:357
SharedMatrix Ca_new
Definition: occwave.h:506
double sos_scale2
Definition: occwave.h:300
double rms_kappaA
Definition: occwave.h:274
int * mopi
Definition: occwave.h:400
void semi_canonic()
Definition: occ/semi_canonic.cc:39
Array1d * zvectorB
Definition: occwave.h:488
int nooB
Definition: occwave.h:168
SharedMatrix G1tildeB
Definition: occwave.h:544
int itr_pcg
Definition: occwave.h:209
double * evals_c1A
Definition: occwave.h:455
int nacvoB
Definition: occwave.h:175
double Emp3
Definition: occwave.h:321
SharedMatrix KorbB
Definition: occwave.h:530
void ekt_ea()
Definition: ekt_ea.cc:41
void orb_resp_pcg_uhf()
Definition: kappa_orb_resp_iter.cc:820
~OCCWave() override
Definition: occwave.cc:54
int cc_maxdiis_
Definition: occwave.h:216
void z_vector()
Definition: occ/z_vector.cc:40
double rms_pcgB
Definition: occwave.h:306
double Escsmp2BB
Definition: occwave.h:249
double Escsmp3vdw
Definition: occwave.h:335
void tpdm_ovvo()
Definition: corr_tpdm.cc:693
void omp2_manager()
Definition: occ/manager.cc:44
double Esosmp3
Definition: occwave.h:332