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  protected:
43  // => Task specification <= //
44 
47 
48  // => Key Member Data <= //
49 
51  std::shared_ptr<BasisSet> basisset_;
53  std::shared_ptr<Matrix> Da_;
55  std::shared_ptr<Matrix> Db_;
57  std::shared_ptr<Matrix> Ca_;
59  std::shared_ptr<Matrix> Cb_;
61  std::vector<std::tuple<double, int, int> > info_a_;
63  std::vector<std::tuple<double, int, int> > info_b_;
65  std::shared_ptr<BasisSet> auxiliary_;
66 
67  // => Computers <= //
68 
70  std::shared_ptr<CubicScalarGrid> grid_;
71 
72  // => Helper Functions <= //
73 
75  void common_init();
76 
77  public:
78  // => Constructors <= //
79 
82 
84  virtual ~CubeProperties();
85 
86  // => High-Level Property Computers <= //
87 
89  void compute_properties();
90 
91  // => Low-Level Property Computers (Do not use unless you are an advanced client code) <= //
92 
94  void print_header();
96  void compute_density(std::shared_ptr<Matrix> D, const std::string& key);
98  void compute_esp(std::shared_ptr<Matrix> Dt, const std::vector<double>& nuc_weights = std::vector<double>());
100  void compute_orbitals(std::shared_ptr<Matrix> C, const std::vector<int>& indices,
101  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 #endif
std::shared_ptr< BasisSet > auxiliary_
Auxiliary Basis Set if Any.
Definition: cubeprop.h:65
void compute_density(std::shared_ptr< Matrix > D, const std::string &key)
Compute a density grid task (key.cube)
Definition: cubeprop.cc:195
void print_header()
Obligatory title info.
Definition: cubeprop.cc:96
virtual ~CubeProperties()
Common Destructor.
Definition: cubeprop.cc:90
void compute_ELF(std::shared_ptr< Matrix > D, const std::string &key)
Compute an ELF grid task (key.cube)
Definition: cubeprop.cc:210
std::vector< std::tuple< double, int, int > > info_b_
Info for beta electrons (epsilon,rel. index,irrep)
Definition: cubeprop.h:63
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:100
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:202
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:198
std::shared_ptr< Matrix > Cb_
AO-basis (C1) SCF orbital coefficients for beta electrons.
Definition: cubeprop.h:59
Options & options_
Global options object.
Definition: cubeprop.h:46
Definition: cubeprop.h:41
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:61
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:206
std::shared_ptr< Matrix > Da_
AO-basis (C1) OPDM for alpha electrons.
Definition: cubeprop.h:53
CubeProperties(SharedWavefunction wfn)
Construct a CubeProperties object from a Wavefunction (possibly with symmetry in wfn) ...
Definition: cubeprop.cc:53
void compute_LOL(std::shared_ptr< Matrix > D, const std::string &key)
Compute a LOL grid task (key.cube)
Definition: cubeprop.cc:209
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:57
std::shared_ptr< BasisSet > basisset_
Orbital Basis Set.
Definition: cubeprop.h:51
std::shared_ptr< CubicScalarGrid > grid_
Grid-based property computer.
Definition: cubeprop.h:70
indices
Definition: libdpd/dpd.h:246
std::shared_ptr< Matrix > Db_
AO-basis (C1) OPDM for beta electrons.
Definition: cubeprop.h:55
std::shared_ptr< Wavefunction > SharedWavefunction
Definition: typedefs.h:54