#include <emd.h>
Public Member Functions | |
EMDEvaluator () | |
Dummy constructor. | |
EMDEvaluator (const std::vector< std::vector< size_t > > &idfuncsv, const std::vector< std::vector< ylmcoeff_t > > &clm, const std::vector< size_t > &locv, const std::vector< coords_t > &coord, const arma::cx_mat &Pv, int lp=0, int mp=0) | |
~EMDEvaluator () | |
Destructor. | |
void | print () const |
Print the evaluator. | |
void | check_norm () const |
Check norms of radial functions. | |
std::complex< double > | get (double p) const |
Evaluate radial EMD at p. | |
Protected Attributes | |
std::vector< std::vector < RadialFourier * > > | rad |
Private Member Functions | |
void | distance_table (const std::vector< coords_t > &coord) |
Computes the distance table. | |
void | compute_coefficients (const std::vector< std::vector< ylmcoeff_t > > &clm, int lp, int mp) |
Computes the coupling coefficients. | |
void | add_coupling (size_t ig, size_t jg, coupl_coeff_t c) |
Add coupling coefficient. | |
void | get_coupling (size_t ig, size_t jg, int l, int lp, std::vector< total_coupl_t > &c) const |
Get the coupling constants for L=|l-lp|, ..., l+lp. | |
std::vector< radf_val_t > | get_radial (size_t ig, double p) const |
Computes the ig:th radial function. | |
void | get_total_coupling (size_t ig, size_t jg, double p, std::vector< total_coupl_t > &c, std::vector< total_coupl_t > &tmp) const |
Get the total coupling (incl. radial function) | |
Private Attributes | |
std::vector< std::vector < size_t > > | idfuncs |
std::vector< std::vector < coupl_coeff_t > > | cc |
The coupling coefficients of the nonequivalent functions. | |
std::vector< size_t > | loc |
The locations of the functions on the atoms (Nbas) | |
size_t | Nat |
The number of centers. | |
std::vector< double > | dist |
The distances between the functions' origins (Nat x Nat) | |
std::vector< std::vector < std::complex< double > > > | YLM |
Spherical harmonics values, complex conjugated [Nat x Nat] [(L,M)]. | |
arma::cx_mat | P |
The density matrix. | |
int | Lmax |
Maximum value of L. | |
Radial EMD evaluator.
EMDEvaluator::EMDEvaluator | ( | const std::vector< std::vector< size_t > > & | idfuncsv, |
const std::vector< std::vector< ylmcoeff_t > > & | clm, | ||
const std::vector< size_t > & | locv, | ||
const std::vector< coords_t > & | coord, | ||
const arma::cx_mat & | Pv, | ||
int | lp = 0 , |
||
int | mp = 0 |
||
) |
Construct evaluator.
idfuncs is the list of equivalent functions, idfuncs[ieq][1..N] = ibf clm gives the lm expansion of the nonequivalent radial functions.
loc gives indices of centers of all of the basis functions coord are coordinates of the individual atoms (centers) P is the density matrix
The radial functions need to be separately initialized.
(lp,mp) is the final spherical harmonic value.
|
private |
Lists of identical functions (same radial and angular parts), only difference comes from phase factor (different origins)
|
protected |
Radial parts for each non-equivalent function. Needs a pointer array, since otherwise the objects will be stripped to RadialFourier.
This array needs to be constructed in a basis-set specific subclass.