MADNESS 0.10.1
Public Member Functions | Private Member Functions | Private Attributes | List of all members
madness::population::PopulationAnalysis Class Reference

the population analysis of the population keys, for orbitals given in real space More...

#include <population.h>

Collaboration diagram for madness::population::PopulationAnalysis:
Collaboration graph
[legend]

Public Member Functions

 PopulationAnalysis (World &world, const Molecule &molecule, const CalculationParameters &param)
 the schemes and basis sets of the population keys; nothing is projected yet
 
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 analyze (const std::vector< Function< double, 3 > > &mo, const Tensor< double > &occ) const
 
bool requested () const
 false for population none
 

Private Member Functions

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
 

Private Attributes

std::string basis_
 
std::string minbasis_
 population_basis, population_minbasis
 
std::shared_ptr< const Molecule > molecule_
 a copy: the results refer to this geometry
 
int print_level_ = 0
 
std::vector< std::string > schemes_
 the population key
 
World & world_
 

Detailed Description

the population analysis of the population keys, for orbitals given in real space

For each scheme of the population key: reads the basis set by name (population_basis for mulliken and lowdin, population_minbasis for iao), projects it at the current FunctionDefaults, forms S and X, and prints a table per scheme on rank 0 at print_level > 0. The occupied orbitals are those with a nonzero occupation, so explicit holes count, and the total charge is the nuclear charge minus their sum. The schemes assume orthonormal orbitals; after an SCF they are so only to its screening and truncation, so they are orthonormalized first (Loewdin, orthonormalize_symmetric). A failing scheme only warns: its entry in the result holds the error. moldft (SCF::population_analysis) and nemo (Nemo::population_analysis) call it after the final rung.

Constructor & Destructor Documentation

◆ PopulationAnalysis()

madness::population::PopulationAnalysis::PopulationAnalysis ( World &  world,
const Molecule &  molecule,
const CalculationParameters &  param 
)

the schemes and basis sets of the population keys; nothing is projected yet

Member Function Documentation

◆ analyze() [1/2]

nlohmann::json madness::population::PopulationAnalysis::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

◆ analyze() [2/2]

nlohmann::json madness::population::PopulationAnalysis::analyze ( const std::vector< Function< double, 3 > > &  mo,
const Tensor< double > &  occ 
) const

closed shell: both spins have the orbitals mo with the occupations occ

Returns
the results on every rank; empty when not requested()

Referenced by madness::Nemo::population_analysis(), and madness::SCF::population_analysis().

◆ requested()

bool madness::population::PopulationAnalysis::requested ( ) const

false for population none

References schemes_.

Referenced by madness::Nemo::population_analysis(), and run().

◆ run()

nlohmann::json madness::population::PopulationAnalysis::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
private

Member Data Documentation

◆ basis_

std::string madness::population::PopulationAnalysis::basis_
private

Referenced by run().

◆ minbasis_

std::string madness::population::PopulationAnalysis::minbasis_
private

population_basis, population_minbasis

Referenced by run().

◆ molecule_

std::shared_ptr<const Molecule> madness::population::PopulationAnalysis::molecule_
private

a copy: the results refer to this geometry

Referenced by run().

◆ print_level_

int madness::population::PopulationAnalysis::print_level_ = 0
private

Referenced by run().

◆ schemes_

std::vector<std::string> madness::population::PopulationAnalysis::schemes_
private

the population key

Referenced by requested(), and run().

◆ world_

World& madness::population::PopulationAnalysis::world_
private

Referenced by run().


The documentation for this class was generated from the following files: