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 program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License along
22  * with this program; if not, write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  *
25  * @END LICENSE
26  */
27 
28 #ifndef _psi_src_lib_libcubeprop_cubeprop_h_
29 #define _psi_src_lib_libcubeprop_cubeprop_h_
30 
31 #include <map>
32 
33 #include "psi4/libmints/typedefs.h"
35 
36 namespace psi {
37 
38 class CubicScalarGrid;
39 
41 
42 protected:
43 
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 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, const std::vector<std::string>& labels, const std::string& key);
103  void compute_basis_functions(const std::vector<int>& indices, const std::string& key);
105  void compute_LOL(std::shared_ptr<Matrix> D, const std::string& key);
107  void compute_ELF(std::shared_ptr<Matrix> D, const std::string& key);
108 };
109 
110 }
111 
112 #endif
std::shared_ptr< BasisSet > auxiliary_
Auxiliary Basis Set if Any.
Definition: cubeprop.h:66
void compute_density(std::shared_ptr< Matrix > D, const std::string &key)
Compute a density grid task (key.cube)
Definition: cubeprop.cc:199
void print_header()
Obligatory title info.
Definition: cubeprop.cc:97
virtual ~CubeProperties()
Common Destructor.
Definition: cubeprop.cc:88
void compute_ELF(std::shared_ptr< Matrix > D, const std::string &key)
Compute an ELF grid task (key.cube)
Definition: cubeprop.cc:220
std::vector< std::tuple< double, int, int > > info_b_
Info for beta electrons (epsilon,rel. index,irrep)
Definition: cubeprop.h:64
void common_init()
Common setup across all constructors.
Definition: cubeprop.cc:91
void compute_properties()
Compute all relevant properties from options object specifications.
Definition: cubeprop.cc:103
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:208
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:203
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:40
Definition: liboptions.h:359
const char * labels[]
Definition: petitelist.cc:1075
std::vector< std::tuple< double, int, int > > info_a_
Info for alpha electrons (epsilon,rel. index,irrep)
Definition: cubeprop.h:62
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:212
std::shared_ptr< Matrix > Da_
AO-basis (C1) OPDM for alpha electrons.
Definition: cubeprop.h:54
CubeProperties(SharedWavefunction wfn)
Construct a CubeProperties object from a Wavefunction (possibly with symmetry in wfn) ...
Definition: cubeprop.cc:48
void compute_LOL(std::shared_ptr< Matrix > D, const std::string &key)
Compute a LOL grid task (key.cube)
Definition: cubeprop.cc:216
std::shared_ptr< Wavefunction > wfn
Definition: dx_write.cc:59
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
indices
Definition: libdpd/dpd.h:245
std::shared_ptr< Matrix > Db_
AO-basis (C1) OPDM for beta electrons.
Definition: cubeprop.h:56
std::shared_ptr< Wavefunction > SharedWavefunction
Definition: typedefs.h:50