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_;
67 
68  // => Computers <= //
69 
71  std::shared_ptr<CubicScalarGrid> grid_;
72 
73  // => Helper Functions <= //
74 
76  void common_init();
77 
78  public:
79  // => Constructors <= //
80 
83 
85  virtual ~CubeProperties();
86 
87  // => High-Level Property Computers <= //
88 
90  void raw_compute_properties();
91 
92  // => Low-Level Property Computers (Do not use unless you are an advanced client code) <= //
93 
95  void print_header();
97  void compute_density(std::shared_ptr<Matrix> D, const std::string& key);
99  void compute_esp(std::shared_ptr<Matrix> Dt, const std::vector<double>& nuc_weights = std::vector<double>());
101  void compute_orbitals(std::shared_ptr<Matrix> C, const std::vector<int>& indices,
102  const std::vector<std::string>& labels, const std::string& key);
104  void compute_basis_functions(const std::vector<int>& indices, const std::string& key);
106  void compute_LOL(std::shared_ptr<Matrix> D, const std::string& key);
108  void compute_ELF(std::shared_ptr<Matrix> D, const std::string& key);
109 
111  std::shared_ptr<BasisSet> basisset() { return basisset_; }
112 };
113 }
114 
115 #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:111
std::vector< std::tuple< double, int, int > > info_b_
Info for beta electrons (epsilon,rel. index,irrep)
Definition: cubeprop.h:64
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:355
const char * labels[]
Definition: petitelist.cc:961
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:71
#define PSI_API
Definition: pragma.h:153
indices
Definition: libdpd/dpd.h:246
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