| MADNESS
    version 0.9
    | 
#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, std::vector< kvecT > kpoints, ElectronicStructureParams params) | |
| Constructor for periodic system.  More... | |
| EigSolver (World &world, std::vector< funcT > phis, std::vector< double > eigs, std::vector< EigSolverOp< T, NDIM > * > ops, ElectronicStructureParams params) | |
| Constructor for non-periodic system.  More... | |
| virtual | ~EigSolver () | 
| Destructor.  More... | |
| void | solve (int maxits) | 
| void | multi_solve (int maxits) | 
| double | get_eig (int indx) | 
| funcT | get_phi (int indx) | 
| const std::vector< funcT > & | phis () | 
| const std::vector< double > & | eigs () | 
| void | addObserver (IEigSolverObserver< T, NDIM > *obs) | 
| T | matrix_element (const funcT &phii, const funcT &phij) | 
| Computes a matrix element given the left and right functions.  More... | |
| void | print_matrix_elements (const funcT &phii, const funcT &phij) | 
| Prints a matrix element given the left and right functions.  More... | |
| void | prepare_ops () | 
| Preprocesses the operators for doing an iteration of "eigensolving".  More... | |
| void | make_bsh_operators () | 
| Makes the BSH Green's functions for the parallel solver (multi_solve()).  More... | |
| 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.  More... | |
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 Function<T,NDIM> madness::EigSolver< T, NDIM >::funcT | 
| typedef Vector<double,NDIM> madness::EigSolver< T, NDIM >::kvecT | 
| 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 >::compute_rho().
| 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 >::compute_rho(), and madness::ElectronicStructureParams::periodic.
| 
 | virtual | 
Destructor.
| 
 | inline | 
| 
 | 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 >::multi_solve(), and madness::EigSolver< T, NDIM >::solve().
| 
 | inline | 
| 
 | inline | 
| 
 | inline | 
| void madness::EigSolver< T, NDIM >::make_bsh_operators | ( | ) | 
Makes the BSH Green's functions for the parallel solver (multi_solve()).
References DEBUG_STREAM, madness::FunctionDefaults< NDIM >::get_k(), madness::FunctionDefaults< NDIM >::get_thresh(), k, and sqrt().
| T madness::EigSolver< T, NDIM >::matrix_element | ( | const funcT & | phii, | 
| const funcT & | phij | ||
| ) | 
Computes a matrix element given the left and right functions.
References madness::EigSolverOp< T, NDIM >::coeff(), madness::inner(), madness::EigSolverOp< T, NDIM >::is_od(), madness::EigSolverOp< T, NDIM >::is_rd(), NDIM, op(), madness::EigSolverOp< T, NDIM >::op_o(), and madness::EigSolverOp< T, NDIM >::op_r().
| 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::EigSolverOp< T, NDIM >::coeff(), madness::EigSolver< T, NDIM >::compute_rho(), madness::gaxpy(), madness::inner(), madness::EigSolverOp< T, NDIM >::is_od(), madness::EigSolverOp< T, NDIM >::is_rd(), make_bsh_operators(), madness::EigSolverOp< T, NDIM >::multi_op_o(), madness::EigSolverOp< T, NDIM >::multi_op_r(), madness::norm2(), madness::Function< T, NDIM >::norm2(), op(), pi, madness::scale(), and madness::truncate().
| 
 | inline | 
| void madness::EigSolver< T, NDIM >::prepare_ops | ( | ) | 
Preprocesses the operators for doing an iteration of "eigensolving".
References madness::EigSolverOp< T, NDIM >::is_rd(), op(), and madness::EigSolverOp< T, NDIM >::prepare_op().
| 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 madness::EigSolverOp< T, NDIM >::coeff(), DEBUG_STREAM, madness::inner(), madness::EigSolverOp< T, NDIM >::is_od(), madness::EigSolverOp< T, NDIM >::is_rd(), madness::EigSolverOp< T, NDIM >::messsageME(), op(), madness::EigSolverOp< T, NDIM >::op_o(), madness::EigSolverOp< T, NDIM >::op_r(), and std::tr1::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::EigSolverOp< T, NDIM >::coeff(), madness::EigSolver< T, NDIM >::compute_rho(), DEBUG_STREAM, EIGV_STREAM, madness::FunctionDefaults< NDIM >::get_cell_width(), madness::FunctionDefaults< NDIM >::get_k(), madness::FunctionDefaults< NDIM >::get_thresh(), madness::inner(), madness::EigSolverOp< T, NDIM >::is_od(), madness::EigSolverOp< T, NDIM >::is_rd(), k, L, LOG_STREAM, madness::Function< T, NDIM >::norm2(), op(), madness::EigSolverOp< T, NDIM >::op_o(), madness::EigSolverOp< T, NDIM >::op_r(), pi, psi(), madness::Function< T, NDIM >::scale(), sqrt(), thresh, and madness::Function< T, NDIM >::truncate().
| void madness::EigSolver< T, NDIM >::update_occupation | ( | ) | 
 1.8.8
 1.8.8