ERKALE
ERKALE - DFT from Hel
 All Classes Functions Variables Friends Pages
Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
EMDEvaluator Class Reference

Radial EMD evaluator. More...

#include <emd.h>

Inheritance diagram for EMDEvaluator:
GaussianEMDEvaluator SlaterEMDEvaluator

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_tget_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.
 

Detailed Description

Radial EMD evaluator.

Constructor & Destructor Documentation

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.

Member Data Documentation

std::vector< std::vector<size_t> > EMDEvaluator::idfuncs
private

Lists of identical functions (same radial and angular parts), only difference comes from phase factor (different origins)

std::vector< std::vector<RadialFourier *> > EMDEvaluator::rad
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.


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