MPQC  3.0.0-alpha
approx_pairs.h
1 //
2 // approx_pairs.h
3 //
4 // Copyright (C) 2014 David Hollman
5 //
6 // Author: David Hollman
7 // Maintainer: DSH
8 // Created: Jun 6, 2014
9 //
10 // This file is part of the SC Toolkit.
11 //
12 // The SC Toolkit is free software; you can redistribute it and/or modify
13 // it under the terms of the GNU Library General Public License as published by
14 // the Free Software Foundation; either version 2, or (at your option)
15 // any later version.
16 //
17 // The SC Toolkit 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 Library General Public License for more details.
21 //
22 // You should have received a copy of the GNU Library General Public License
23 // along with the SC Toolkit; see the file COPYING.LIB. If not, write to
24 // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
25 //
26 // The U.S. Government is granted a limited license as per AL 91-7.
27 //
28 
29 #ifndef _chemistry_qc_scf_cadf_approx_pairs_h
30 #define _chemistry_qc_scf_cadf_approx_pairs_h
31 
32 #include "cadfclhf.h"
33 
34 namespace sc {
35 
37  private:
38 
39  Ref<CADFCLHF> wfn_;
40 
41  std::string filename_;
42 
44 
45  // Pairs of shell indices to print
46  std::vector<std::pair<int, int>> pairs_;
47 
48  Ref<TwoBodyTwoCenterInt> ints2c_ex_;
49  Ref<TwoBodyThreeCenterInt> ints3c_ex_;
50 
51  std::unordered_map<int, int> shell_map_gbs_;
52  std::unordered_map<int, int> shell_map_dfbs_;
53  std::unordered_map<int, int> shell_map_exbs_;
54  std::vector<std::array<int,4>> pairs_tmp_;
55 
56  void initialize();
57 
58  bool initialized_ = false;
59 
60  void compute_pairs_ex();
61 
62  void write_atoms_section(std::ostream &out);
63  void write_gto_section(std::ostream &out);
64  void write_mo_section(std::ostream &out);
65 
66  bool normalize_pairs_ = true;
67 
68  std::unordered_map<std::pair<int,int>, Eigen::MatrixXd, sc::hash<std::pair<int, int>>> excoefs_;
69 
70  enum {
71  GBS_orbs,
72  DFBS_pair,
73  EX_pair
74  };
75 
76  void write_mo(std::ostream& out, const Eigen::VectorXd& coefs, int orb_type, const std::string& name);
77 
78  public:
79 
80  ApproximatePairWriter(const Ref<KeyVal>& keyval);
81 
82  void write_pairs();
83 
84 
85  friend class CADFCLHF;
86  static ClassDesc cd_;
87 
88 };
89 
90 } // end namespace sc
91 
92 #endif /* _chemistry_qc_scf_cadf_approx_pairs_h */
sc::hash
Definition: hash.h:38
sc::Ref
A template class that maintains references counts.
Definition: ref.h:361
sc::ClassDesc
This class is used to contain information about classes.
Definition: class.h:147
sc::ApproximatePairWriter
Definition: approx_pairs.h:36
sc::DescribedClass
Classes which need runtime information about themselves and their relationship to other classes can v...
Definition: class.h:233
sc::CADFCLHF
A specialization of CLHF that uses concentric atomic density fitting to build fock matrices.
Definition: cadfclhf.h:147
sc
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14

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