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-2017 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/libmints/typedefs.h"
36 
37 namespace psi {
38 
39 class CubicScalarGrid;
40 
42 
43 protected:
44 
45  // => Task specification <= //
46 
49 
50  // => Key Member Data <= //
51 
53  std::shared_ptr<BasisSet> basisset_;
55  std::shared_ptr<Matrix> Da_;
57  std::shared_ptr<Matrix> Db_;
59  std::shared_ptr<Matrix> Ca_;
61  std::shared_ptr<Matrix> Cb_;
63  std::vector<std::tuple<double, int, int> > info_a_;
65  std::vector<std::tuple<double, int, int> > info_b_;
67  std::shared_ptr<BasisSet> auxiliary_;
68 
69  // => Computers <= //
70 
72  std::shared_ptr<CubicScalarGrid> grid_;
73 
74  // => Helper Functions <= //
75 
77  void common_init();
78 
79 public:
80  // => Constructors <= //
81 
84 
86  virtual ~CubeProperties();
87 
88  // => High-Level Property Computers <= //
89 
91  void compute_properties();
92 
93  // => Low-Level Property Computers (Do not use unless you are an advanced client code) <= //
94 
96  void print_header();
98  void compute_density(std::shared_ptr<Matrix> D, const std::string& key);
100  void compute_esp(std::shared_ptr<Matrix> Dt, const std::vector<double>& nuc_weights = std::vector<double>());
102  void compute_orbitals(std::shared_ptr<Matrix> C, const std::vector<int>& indices, 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 };
110 
111 }
112 
113 #endif
std::shared_ptr< BasisSet > auxiliary_
Auxiliary Basis Set if Any.
Definition: cubeprop.h:67
void compute_density(std::shared_ptr< Matrix > D, const std::string &key)
Compute a density grid task (key.cube)
Definition: cubeprop.cc:200
void print_header()
Obligatory title info.
Definition: cubeprop.cc:98
virtual ~CubeProperties()
Common Destructor.
Definition: cubeprop.cc:89
void compute_ELF(std::shared_ptr< Matrix > D, const std::string &key)
Compute an ELF grid task (key.cube)
Definition: cubeprop.cc:221
std::vector< std::tuple< double, int, int > > info_b_
Info for beta electrons (epsilon,rel. index,irrep)
Definition: cubeprop.h:65
void common_init()
Common setup across all constructors.
Definition: cubeprop.cc:92
void compute_properties()
Compute all relevant properties from options object specifications.
Definition: cubeprop.cc:104
void compute_orbitals(std::shared_ptr< Matrix > C, const std::vector< int > &indices, const std::vector< std::string > &labels, const std::string &key)
Compute an orbital task (key_N.cube, for 0-based indices of C)
Definition: cubeprop.cc:209
void compute_esp(std::shared_ptr< Matrix > Dt, const std::vector< double > &nuc_weights=std::vector< double >())
Compute an ESP grid task (Dt.cube and ESP.cube)
Definition: cubeprop.cc:204
std::shared_ptr< Matrix > Cb_
AO-basis (C1) SCF orbital coefficients for beta electrons.
Definition: cubeprop.h:61
Options & options_
Global options object.
Definition: cubeprop.h:48
Definition: cubeprop.h:41
Definition: liboptions.h:360
const char * labels[]
Definition: petitelist.cc:1076
std::vector< std::tuple< double, int, int > > info_a_
Info for alpha electrons (epsilon,rel. index,irrep)
Definition: cubeprop.h:63
void compute_basis_functions(const std::vector< int > &indices, const std::string &key)
Compute a basis function task (key_N.cube, for 0-based indices of basisset_)
Definition: cubeprop.cc:213
std::shared_ptr< Matrix > Da_
AO-basis (C1) OPDM for alpha electrons.
Definition: cubeprop.h:55
CubeProperties(SharedWavefunction wfn)
Construct a CubeProperties object from a Wavefunction (possibly with symmetry in wfn) ...
Definition: cubeprop.cc:49
void compute_LOL(std::shared_ptr< Matrix > D, const std::string &key)
Compute a LOL grid task (key.cube)
Definition: cubeprop.cc:217
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:59
std::shared_ptr< BasisSet > basisset_
Orbital Basis Set.
Definition: cubeprop.h:53
std::shared_ptr< CubicScalarGrid > grid_
Grid-based property computer.
Definition: cubeprop.h:72
indices
Definition: libdpd/dpd.h:246
std::shared_ptr< Matrix > Db_
AO-basis (C1) OPDM for beta electrons.
Definition: cubeprop.h:57
std::shared_ptr< Wavefunction > SharedWavefunction
Definition: typedefs.h:52