ERKALE
ERKALE - DFT from Hel
 All Classes Functions Variables Friends Pages
badergrid.h
1 /*
2  * This source code is part of
3  *
4  * E R K A L E
5  * -
6  * DFT from Hel
7  *
8  * Written by Susi Lehtola, 2013
9  * Copyright (c) 2013, 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_BADERGRID
18 #define ERKALE_BADERGRID
19 
20 #include "global.h"
21 #include "basis.h"
22 #include "dftgrid.h"
23 
37 class BaderGrid {
39  const BasisSet *basp;
42 
44  std::vector<coords_t> maxima;
46  std::vector< std::vector<gridpoint_t> > reggrid;
48  size_t Nnuc;
49 
51  bool verbose;
53  void print_maxima() const;
54 
55  public:
57  BaderGrid();
59  ~BaderGrid();
60 
62  void set(const BasisSet & basis, bool verbose=true, bool lobatto=false);
63 
65  void construct_bader(const arma::mat & P, double thr);
67  void construct_voronoi(double tol);
69  size_t get_Nmax() const;
70 
72  arma::vec regional_charges(const arma::mat & P);
74  arma::vec nuclear_charges(const arma::mat & P);
75 
77  std::vector<arma::mat> regional_overlap();
79  arma::mat regional_overlap(size_t ireg);
80 };
81 
83 coords_t track_to_maximum(const BasisSet & basis, const arma::mat & P, const coords_t r0, size_t & nd, size_t & ng);
84 
85 
86 #endif
Definition: badergrid.h:37
arma::vec nuclear_charges(const arma::mat &P)
Compute nuclear charges.
Definition: badergrid.cpp:402
AngularGrid wrk
Grid worker.
Definition: badergrid.h:41
arma::vec regional_charges(const arma::mat &P)
Compute regional charges.
Definition: badergrid.cpp:391
void print_maxima() const
Print maxima.
Definition: badergrid.cpp:338
std::vector< arma::mat > regional_overlap()
Compute regional overlap matrices.
Definition: badergrid.cpp:408
bool verbose
Verbose operation?
Definition: badergrid.h:51
std::vector< coords_t > maxima
Locations of maxima.
Definition: badergrid.h:44
void construct_bader(const arma::mat &P, double thr)
Construct grid with AO overlap matrix threshold thr and classify points into regions with P...
Definition: badergrid.cpp:58
size_t get_Nmax() const
Get amount of regions.
Definition: badergrid.cpp:334
std::vector< std::vector< gridpoint_t > > reggrid
Grid points corresponding to the regions.
Definition: badergrid.h:46
Basis set.
Definition: basis.h:187
BaderGrid()
Constructor.
Definition: badergrid.cpp:41
Coordinates structure.
Definition: basis.h:50
Angular integration grid on a radial shell of an atom.
Definition: dftgrid.h:164
const BasisSet * basp
Basis set.
Definition: badergrid.h:39
~BaderGrid()
Destructor.
Definition: badergrid.cpp:44
void construct_voronoi(double tol)
Construct grid with AO overlap matrix threshold thr and classify points into Voronoi regions...
Definition: badergrid.cpp:240
void set(const BasisSet &basis, bool verbose=true, bool lobatto=false)
Set parameters.
Definition: badergrid.cpp:47
size_t Nnuc
Amount of nuclei.
Definition: badergrid.h:48