ERKALE
ERKALE - DFT from Hel
 All Classes Functions Variables Friends Pages
properties.h
1 /*
2  * This source code is part of
3  *
4  * E R K A L E
5  * -
6  * HF/DFT from Hel
7  *
8  * Written by Susi Lehtola, 2010-2011
9  * Copyright (c) 2010-2011, Susi Lehtola
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13  * as published by the Free Software Foundation; either version 2
14  * of the License, or (at your option) any later version.
15  */
16 
17 #ifndef ERKALE_POPULATION
18 #define ERKALE_POPULATION
19 
20 #include "global.h"
21 #include <armadillo>
22 class BasisSet;
23 
25 arma::vec add_nuclear_charges(const BasisSet & basis, const arma::vec & q);
26 
28 arma::vec mulliken_charges(const BasisSet & basis, const arma::mat & P);
30 arma::mat mulliken_charges(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb);
31 
33 void mulliken_analysis(const BasisSet & basis, const arma::mat & P);
35 void mulliken_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb);
36 
38 arma::vec lowdin_charges(const BasisSet & basis, const arma::mat & P);
40 arma::mat lowdin_charges(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb);
41 
43 void lowdin_analysis(const BasisSet & basis, const arma::mat & P);
45 void lowdin_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb);
46 
48 arma::vec IAO_charges(const BasisSet & basis, const arma::mat & C, std::string minbas="MINAO.gbs");
50 arma::vec IAO_charges(const BasisSet & basis, const arma::cx_mat & C, std::string minbas="MINAO.gbs");
51 
53 void IAO_analysis(const BasisSet & basis, const arma::mat & C, std::string minbas="MINAO.gbs");
55 void IAO_analysis(const BasisSet & basis, const arma::cx_mat & C, std::string minbas="MINAO.gbs");
57 void IAO_analysis(const BasisSet & basis, const arma::mat & Ca, const arma::mat & Cb, std::string minbas="MINAO.gbs");
59 void IAO_analysis(const BasisSet & basis, const arma::cx_mat & Ca, const arma::cx_mat & Cb, std::string minbas="MINAO.gbs");
60 
62 arma::vec nuclear_density(const BasisSet & basis, const arma::mat & P);
63 
65 void nuclear_analysis(const BasisSet & basis, const arma::mat & P);
67 void nuclear_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb);
68 
70 arma::vec becke_charges(const BasisSet & basis, const arma::mat & P, double tol=1e-5);
72 arma::mat becke_charges(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, double tol=1e-5);
73 
75 void becke_analysis(const BasisSet & basis, const arma::mat & P, double tol=1e-5);
77 void becke_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, double tol=1e-5);
78 
80 arma::vec hirshfeld_charges(const BasisSet & basis, const arma::mat & P, std::string method="HF", double tol=1e-5);
82 arma::mat hirshfeld_charges(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, std::string method="HF", double tol=1e-5);
83 
85 void hirshfeld_analysis(const BasisSet & basis, const arma::mat & P, std::string method="HF", double tol=1e-5);
87 void hirshfeld_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, std::string method="HF", double tol=1e-5);
88 
90 arma::vec iterative_hirshfeld_charges(const BasisSet & basis, const arma::mat & P, std::string method="HF", double tol=1e-5);
92 arma::mat iterative_hirshfeld_charges(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, std::string method="HF", double tol=1e-5);
93 
95 void iterative_hirshfeld_analysis(const BasisSet & basis, const arma::mat & P, std::string method="HF", double tol=1e-5);
97 void iterative_hirshfeld_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, std::string method="HF", double tol=1e-5);
98 
100 arma::vec stockholder_charges(const BasisSet & basis, const arma::mat & P, double tol=1e-5);
102 arma::mat stockholder_charges(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, double tol=1e-5);
103 
105 void stockholder_analysis(const BasisSet & basis, const arma::mat & P, double tol=1e-5);
107 void stockholder_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, double tol=1e-5);
108 
110 arma::vec bader_charges(const BasisSet & basis, const arma::mat & P, double tol=1e-5);
112 arma::mat bader_charges(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, double tol=1e-5);
113 
115 void bader_analysis(const BasisSet & basis, const arma::mat & P, double tol=1e-5);
117 void bader_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, double tol=1e-5);
118 
120 arma::vec voronoi_charges(const BasisSet & basis, const arma::mat & P, double tol=1e-5);
122 arma::mat voronoi_charges(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, double tol=1e-5);
123 
125 void voronoi_analysis(const BasisSet & basis, const arma::mat & P, double tol=1e-5);
127 void voronoi_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb, double tol=1e-5);
128 
129 
141 arma::mat mulliken_overlap(const BasisSet & basis, const arma::mat & P);
142 
148 arma::mat bond_order(const BasisSet & basis, const arma::mat & P);
149 
154 arma::mat bond_order(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb);
155 
159 void population_analysis(const BasisSet & basis, const arma::mat & P);
160 void population_analysis(const BasisSet & basis, const arma::mat & Pa, const arma::mat & Pb);
161 
163 double spin_S2(const BasisSet & basis, const arma::mat & Ca, const arma::mat & Cb);
164 
168 double darwin_1e(const BasisSet & basis, const arma::mat & P);
169 
173 double mass_velocity(const BasisSet & basis, const arma::mat & P);
174 
175 #endif
Basis set.
Definition: basis.h:187