Psi4
cubeprop.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-2018 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 _psi_src_lib_libcubeprop_cubeprop_h_
30 #define _psi_src_lib_libcubeprop_cubeprop_h_
31 
32 #include <map>
33 
34 #include "psi4/pragma.h"
35 #include "psi4/libmints/typedefs.h"
37 
38 namespace psi {
39 
40 class CubicScalarGrid;
41 
43  protected:
44  // => Task specification <= //
45 
48 
49  // => Key Member Data <= //
50 
52  std::shared_ptr<BasisSet> basisset_;
54  std::shared_ptr<Matrix> Da_;
56  std::shared_ptr<Matrix> Db_;
58  std::shared_ptr<Matrix> Ca_;
60  std::shared_ptr<Matrix> Cb_;
62  std::vector<std::tuple<double, int, int> > info_a_;
64  std::vector<std::tuple<double, int, int> > info_b_;
66  std::shared_ptr<BasisSet> auxiliary_;
68  int nalpha_;
69  int nbeta_;
70 
71  // => Computers <= //
72 
74  std::shared_ptr<CubicScalarGrid> grid_;
75 
76  // => Helper Functions <= //
77 
79  void common_init();
80 
81  public:
82  // => Constructors <= //
83 
86 
88  virtual ~CubeProperties();
89 
90  // => High-Level Property Computers <= //
91 
93  void raw_compute_properties();
94 
95  // => Low-Level Property Computers (Do not use unless you are an advanced client code) <= //
96 
98  void print_header();
100  void compute_density(std::shared_ptr<Matrix> D, const std::string& key);
102  void compute_esp(std::shared_ptr<Matrix> Dt, const std::vector<double>& nuc_weights = std::vector<double>());
104  void compute_orbitals(std::shared_ptr<Matrix> C, const std::vector<int>& indices,
105  const std::vector<std::string>& labels, const std::string& key);
107  void compute_difference(std::shared_ptr<Matrix> C, const std::vector<int>& indices,
108  const std::string& label, bool square);
110  void compute_basis_functions(const std::vector<int>& indices, const std::string& key);
112  void compute_LOL(std::shared_ptr<Matrix> D, const std::string& key);
114  void compute_ELF(std::shared_ptr<Matrix> D, const std::string& key);
115 
117  std::shared_ptr<BasisSet> basisset() { return basisset_; }
118 };
119 } // namespace psi
120 
121 #endif
std::shared_ptr< BasisSet > auxiliary_
Auxiliary Basis Set if Any.
Definition: cubeprop.h:66
std::shared_ptr< BasisSet > basisset()
Returns Orbital Basis Set.
Definition: cubeprop.h:117
std::vector< std::tuple< double, int, int > > info_b_
Info for beta electrons (epsilon,rel. index,irrep)
Definition: cubeprop.h:64
int nalpha_
Total number of alpha/beta electrons.
Definition: cubeprop.h:68
int nbeta_
Definition: cubeprop.h:69
std::shared_ptr< Matrix > Cb_
AO-basis (C1) SCF orbital coefficients for beta electrons.
Definition: cubeprop.h:60
Options & options_
Global options object.
Definition: cubeprop.h:47
Definition: cubeprop.h:42
Definition: liboptions.h:353
const char * labels[]
Definition: petitelist.cc:958
std::vector< std::tuple< double, int, int > > info_a_
Info for alpha electrons (epsilon,rel. index,irrep)
Definition: cubeprop.h:62
std::shared_ptr< Matrix > Da_
AO-basis (C1) OPDM for alpha electrons.
Definition: cubeprop.h:54
std::shared_ptr< Wavefunction > wfn
Definition: dx_write.cc:60
std::shared_ptr< Matrix > Ca_
AO-basis (C1) SCF orbital coefficients for alpha electrons.
Definition: cubeprop.h:58
std::shared_ptr< BasisSet > basisset_
Orbital Basis Set.
Definition: cubeprop.h:52
std::shared_ptr< CubicScalarGrid > grid_
Grid-based property computer.
Definition: cubeprop.h:74
#define PSI_API
Definition: pragma.h:155
indices
Definition: libdpd/dpd.h:262
std::shared_ptr< Matrix > Db_
AO-basis (C1) OPDM for beta electrons.
Definition: cubeprop.h:56
std::shared_ptr< Wavefunction > SharedWavefunction
Definition: typedefs.h:54