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