44#ifndef MADNESS_CHEM_POPULATION_H__INCLUDED
45#define MADNESS_CHEM_POPULATION_H__INCLUDED
48#include <nlohmann/json.hpp>
60template <
typename T, std::
size_t NDIM>
class Function;
90 const Tensor<double>& occ,
const std::vector<int>& atom_of_bf,
long natom);
103 const std::vector<int>& atom_of_bf,
long natom);
107 const Tensor<double>& occ,
const std::vector<int>& atom_of_bf,
long natom);
110const std::vector<std::string>&
schemes();
126 void print(
double total_charge,
int print_level)
const;
128 nlohmann::json
to_json()
const;
132AtomicPopulations
atomic_populations(
const std::string& scheme,
const std::string& basis,
long nbf,
133 const std::vector<std::string>& symbols,
const std::vector<double>&
Z,
134 long nalpha,
long nbeta,
const SpinPopulation&
alpha,
135 const SpinPopulation&
beta);
172 bool restricted)
const;
A multiresolution adaptive numerical function.
Definition mra.h:140
Definition molecule.h:129
A tensor is a multidimensional array.
Definition tensor.h:318
A parallel world class.
Definition world.h:134
the population analysis of the population keys, for orbitals given in real space
Definition population.h:148
int print_level_
Definition population.h:168
std::string minbasis_
population_basis, population_minbasis
Definition population.h:167
std::string basis_
Definition population.h:167
nlohmann::json analyze(const std::vector< Function< double, 3 > > &amo, const Tensor< double > &aocc, const std::vector< Function< double, 3 > > &bmo, const Tensor< double > &bocc) const
open shell
nlohmann::json run(const std::vector< Function< double, 3 > > &amo, const Tensor< double > &aocc, const std::vector< Function< double, 3 > > &bmo, const Tensor< double > &bocc, bool restricted) const
Definition population.cc:317
World & world_
Definition population.h:164
std::shared_ptr< const Molecule > molecule_
a copy: the results refer to this geometry
Definition population.h:165
nlohmann::json analyze(const std::vector< Function< double, 3 > > &mo, const Tensor< double > &occ) const
std::vector< std::string > schemes_
the population key
Definition population.h:166
bool requested() const
false for population none
Definition population.cc:301
char * p(char *buf, const char *name, int k, int initial_level, double thresh, int order)
Definition derivatives.cc:72
const double beta
Definition gygi_soltion.cc:62
const std::vector< std::string > & schemes()
the schemes this file implements
Definition population.cc:75
SpinPopulation spin_population(const std::string &scheme, const Tensor< double > &S, const Tensor< double > &X, const Tensor< double > &occ, const std::vector< int > &atom_of_bf, const long natom)
dispatch: "mulliken" and "lowdin" to projection_population, "iao" to iao_population
Definition population.cc:192
AtomicPopulations atomic_populations(const std::string &scheme, const std::string &basis, const long nbf, const std::vector< std::string > &symbols, const std::vector< double > &Z, const long nalpha, const long nbeta, const SpinPopulation &alpha, const SpinPopulation &beta)
charges and spin populations from the populations of both spins (beta empty when nbeta is 0)
Definition population.cc:199
SpinPopulation iao_population(const Tensor< double > &S, const Tensor< double > &X, const Tensor< double > &occ, const std::vector< int > &atom_of_bf, const long natom)
populations of the intrinsic atomic orbitals (Knizia, J. Chem. Theory Comput. 9, 4834 (2013))
Definition population.cc:144
Tensor< double > matrix_power(const Tensor< double > &S, const double p, const double tol)
Definition population.cc:81
SpinPopulation projection_population(const std::string &scheme, const Tensor< double > &S, const Tensor< double > &X, const Tensor< double > &occ, const std::vector< int > &atom_of_bf, const long natom)
Mulliken or Loewdin populations of the occupied space projected onto the basis.
Definition population.cc:95
Namespace for all elements and tools of MADNESS.
Definition DFConvergence.h:9
static double Z
Definition rk.cc:35
Definition CalculationParameters.h:51
one scheme's atomic charges and spin populations for a molecule
Definition population.h:113
long nbeta
electrons of each spin
Definition population.h:117
std::string scheme
mulliken, lowdin or iao
Definition population.h:114
bool open() const
Definition population.h:123
long nalpha
Definition population.h:117
SpinPopulation alpha
Definition population.h:121
std::vector< double > spin
N_A(alpha) - N_A(beta)
Definition population.h:120
std::string basis
the projection or minimal basis set
Definition population.h:115
SpinPopulation beta
the per-spin results with their diagnostics
Definition population.h:121
std::vector< std::string > symbols
element of each atom
Definition population.h:118
std::vector< double > charge
q_A = Z_A - N_A(alpha) - N_A(beta)
Definition population.h:119
long nbf
its number of functions
Definition population.h:116
nlohmann::json to_json() const
Definition population.cc:262
void print(double total_charge, int print_level) const
the table (charge, and spin for open shells, per atom), the sums and the scheme's diagnostics
Definition population.cc:225
electrons per atom from one spin's occupied orbitals, with the scheme's diagnostics
Definition population.h:65
double max_norm_error
iao: max_i |sum_rho Q_rho,i^2 - 1|, zero when phi lies in the IAO span
Definition population.h:70
double spilling
mulliken/lowdin: 1 - sum_i n_i c_i / sum_i n_i (Sanchez-Portal et al. 1995)
Definition population.h:68
Tensor< double > electrons
electrons on each atom
Definition population.h:66
Tensor< double > completeness
mulliken/lowdin: c_i = X_i^T S^-1 X_i, the share of phi_i inside the basis
Definition population.h:67
double min_w_eigenvalue
smallest eigenvalue of W = X^T S^-1 X (all schemes)
Definition population.h:69
InputParameters param
Definition tdse.cc:203
Defines and implements most of Tensor.
static const double alpha
Definition testcosine.cc:10
static Molecule molecule
Definition testperiodicdft.cc:39