MADNESS 0.10.1
|
#include <eigsolver.h>
Public Types | |
typedef Function< T, NDIM > | funcT |
typedef Vector< double, NDIM > | kvecT |
typedef SeparatedConvolution< double, NDIM > | operatorT |
typedef std::shared_ptr< operatorT> | poperatorT |
Public Member Functions | |
EigSolver (World &world, std::vector< funcT > phis, std::vector< double > eigs, std::vector< EigSolverOp< T, NDIM > * > ops, ElectronicStructureParams params) | |
Constructor for non-periodic system. | |
EigSolver (World &world, std::vector< funcT > phis, std::vector< double > eigs, std::vector< EigSolverOp< T, NDIM > * > ops, std::vector< kvecT > kpoints, ElectronicStructureParams params) | |
Constructor for periodic system. | |
virtual | ~EigSolver () |
Destructor. | |
void | addObserver (IEigSolverObserver< T, NDIM > *obs) |
const std::vector< double > & | eigs () |
double | get_eig (int indx) |
funcT | get_phi (int indx) |
void | make_bsh_operators () |
Makes the BSH Green's functions for the parallel solver (multi_solve()). | |
T | matrix_element (const funcT &phii, const funcT &phij) |
Computes a matrix element given the left and right functions. | |
void | multi_solve (int maxits) |
const std::vector< funcT > & | phis () |
void | prepare_ops () |
Preprocesses the operators for doing an iteration of "eigensolving". | |
void | print_matrix_elements (const funcT &phii, const funcT &phij) |
Prints a matrix element given the left and right functions. | |
void | solve (int maxits) |
void | update_occupation () |
Static Public Member Functions | |
static funcT | compute_rho (std::vector< funcT > phis, std::vector< double > occs, const World &world) |
Computes the electronic density. | |
Private Attributes | |
std::vector< poperatorT > | _bops |
std::vector< double > | _eigs |
List of the eigenvalues. | |
std::vector< kvecT > | _kpoints |
List of the ops. | |
std::vector< IEigSolverObserver< T, NDIM > * > | _obs |
std::vector< double > | _occs |
std::vector< EigSolverOp< T, NDIM > * > | _ops |
List of the ops. | |
ElectronicStructureParams | _params |
std::vector< funcT > | _phis |
List of the functions. | |
Function< double, NDIM > | _rho |
World & | _world |
The EigSolver class is the class that is the workhorse of both the Hartree Fock and the DFT algorithms. This class relies on the wrapper class to give it a list of operators to implement as its potential. This should allow for much more reuse.
typedef SeparatedConvolution<double,NDIM> madness::EigSolver< T, NDIM >::operatorT |
typedef std::shared_ptr<operatorT> madness::EigSolver< T, NDIM >::poperatorT |
madness::EigSolver< T, NDIM >::EigSolver | ( | World & | world, |
std::vector< funcT > | phis, | ||
std::vector< double > | eigs, | ||
std::vector< EigSolverOp< T, NDIM > * > | ops, | ||
std::vector< kvecT > | kpoints, | ||
ElectronicStructureParams | params | ||
) |
Constructor for periodic system.
References madness::EigSolver< T, NDIM >::_occs, madness::EigSolver< T, NDIM >::_rho, madness::EigSolver< T, NDIM >::compute_rho(), madness::EigSolver< T, NDIM >::eigs(), and madness::EigSolver< T, NDIM >::phis().
madness::EigSolver< T, NDIM >::EigSolver | ( | World & | world, |
std::vector< funcT > | phis, | ||
std::vector< double > | eigs, | ||
std::vector< EigSolverOp< T, NDIM > * > | ops, | ||
ElectronicStructureParams | params | ||
) |
Constructor for non-periodic system.
References madness::EigSolver< T, NDIM >::_kpoints, madness::EigSolver< T, NDIM >::_occs, madness::EigSolver< T, NDIM >::_rho, madness::EigSolver< T, NDIM >::compute_rho(), madness::EigSolver< T, NDIM >::eigs(), madness::ElectronicStructureParams::periodic, and madness::EigSolver< T, NDIM >::phis().
|
virtual |
Destructor.
|
inline |
References madness::EigSolver< T, NDIM >::_obs.
|
static |
Computes the electronic density.
References madness::square(), and madness::Function< T, NDIM >::truncate().
Referenced by madness::EigSolver< T, NDIM >::EigSolver(), madness::EigSolver< T, NDIM >::EigSolver(), madness::EigSolver< T, NDIM >::multi_solve(), and madness::EigSolver< T, NDIM >::solve().
|
inline |
References madness::EigSolver< T, NDIM >::_eigs.
Referenced by madness::EigSolver< T, NDIM >::EigSolver(), and madness::EigSolver< T, NDIM >::EigSolver().
|
inline |
References madness::EigSolver< T, NDIM >::_eigs.
Referenced by test_hydro().
|
inline |
References madness::EigSolver< T, NDIM >::_phis.
Referenced by test_hydro().
void madness::EigSolver< T, NDIM >::make_bsh_operators | ( | ) |
Makes the BSH Green's functions for the parallel solver (multi_solve()).
References madness::Function< T, NDIM >::clear(), DEBUG_STREAM, e(), madness::FunctionDefaults< NDIM >::get_k(), madness::FunctionDefaults< NDIM >::get_thresh(), and k.
void madness::EigSolver< T, NDIM >::multi_solve | ( | int | maxits | ) |
This solver has been optimized for usage in parallel. This solver processes each eigenfunction in a parallel fashion.
References madness::apply(), madness::EigSolver< T, NDIM >::compute_rho(), madness::gaxpy(), madness::inner(), make_bsh_operators(), madness::Function< T, NDIM >::norm2(), madness::norm2(), oi, op(), pi, madness::scale(), and madness::truncate().
|
inline |
References madness::EigSolver< T, NDIM >::_phis.
Referenced by madness::EigSolver< T, NDIM >::EigSolver(), and madness::EigSolver< T, NDIM >::EigSolver().
void madness::EigSolver< T, NDIM >::prepare_ops | ( | ) |
void madness::EigSolver< T, NDIM >::print_matrix_elements | ( | const funcT & | phii, |
const funcT & | phij | ||
) |
Prints a matrix element given the left and right functions.
References axis, DEBUG_STREAM, diff(), madness::inner(), oi, op(), and T().
void madness::EigSolver< T, NDIM >::solve | ( | int | maxits | ) |
This solver has not been optimized for usage in parallel. This solver processes each eigenfunction in a serial fashion.
References madness::apply(), madness::EigSolver< T, NDIM >::compute_rho(), DEBUG_STREAM, diff(), e(), EIGV_STREAM, madness::FunctionDefaults< NDIM >::get_cell_width(), madness::FunctionDefaults< NDIM >::get_thresh(), madness::inner(), k, L, LOG_STREAM, madness::Function< T, NDIM >::norm2(), oi, op(), pi, psi(), madness::Function< T, NDIM >::scale(), thresh, and madness::Function< T, NDIM >::truncate().
Referenced by test_hydro().
void madness::EigSolver< T, NDIM >::update_occupation | ( | ) |
|
private |
|
private |
List of the eigenvalues.
Referenced by madness::EigSolver< T, NDIM >::eigs(), and madness::EigSolver< T, NDIM >::get_eig().
|
private |
List of the ops.
Referenced by madness::EigSolver< T, NDIM >::EigSolver().
|
private |
Referenced by madness::EigSolver< T, NDIM >::addObserver().
|
private |
Referenced by madness::EigSolver< T, NDIM >::EigSolver(), and madness::EigSolver< T, NDIM >::EigSolver().
|
private |
List of the ops.
|
private |
|
private |
List of the functions.
Referenced by madness::EigSolver< T, NDIM >::get_phi(), and madness::EigSolver< T, NDIM >::phis().
Referenced by madness::EigSolver< T, NDIM >::EigSolver(), and madness::EigSolver< T, NDIM >::EigSolver().
|
private |