MADNESS  version 0.9
Classes | Public Member Functions | Public Attributes | List of all members
madness::Solver< T, NDIM > Class Template Reference

The main class of the periodic DFT solver

\[ z = frac{x}{1 - y^2} \]

. More...

#include <solver.h>

Classes

struct  GuessDensity
 

Public Member Functions

void START_TIMER (World &world)
 
void END_TIMER (World &world, const char *msg)
 
 Solver (World &world, const std::string &filename)
 
void init (const std::string &filename)
 
std::vector< KPointgenkmesh (unsigned int ngridk0, unsigned ngridk1, unsigned int ngridk2, double koffset0, double koffset1, double koffset2, double R)
 
void save_orbitals ()
 
void load_orbitals ()
 
void make_nuclear_potential_impl ()
 
void make_nuclear_charge_density_impl ()
 
void make_nuclear_potential ()
 
template<typename Q >
void test_periodicity (const Function< Q, 3 > &f)
 
rfunctionT make_lda_potential (World &world, const rfunctionT &arho, const rfunctionT &brho, const rfunctionT &adelrhosq, const rfunctionT &bdelrhosq)
 
vecfuncT project_ao_basis (World &world, KPoint kpt)
 
 Solver (World &world, rfunctionT vnucrhon, vecfuncT phisa, vecfuncT phisb, std::vector< T > eigsa, std::vector< T > eigsb, ElectronicStructureParams params, MolecularEntity mentity)
 
void initial_guess ()
 Initializes alpha and beta mos, occupation numbers, eigenvalues. More...
 
 Solver (World &world, const rfunctionT &vnucrhon, const vecfuncT &phis, const std::vector< T > &eigs, const ElectronicStructureParams &params, MolecularEntity mentity)
 
 Solver (World &world, rfunctionT vnucrhon, vecfuncT phis, std::vector< T > eigs, std::vector< KPoint > kpoints, std::vector< double > occs, ElectronicStructureParams params, MolecularEntity mentity)
 
virtual ~Solver ()
 
void set_occs2 (const std::vector< KPoint > &kpoints, const std::vector< double > &eigsa, const std::vector< double > &eigsb, std::vector< double > &occsa, std::vector< double > &occsb)
 
rfunctionT compute_rho_slow (const vecfuncT &phis, std::vector< KPoint > kpoints, std::vector< double > occs)
 Compute the electronic density for either a molecular or periodic system. More...
 
rfunctionT compute_rho (const vecfuncT &phis, std::vector< KPoint > kpoints, std::vector< double > occs)
 
std::vector< poperatorTmake_bsh_operators (const std::vector< T > &eigs)
 
double calculate_kinetic_energy ()
 
void apply_potential (vecfuncT &pfuncsa, vecfuncT &pfuncsb, const vecfuncT &phisa, const vecfuncT &phisb, const rfunctionT &rhoa, const rfunctionT &rhob, const rfunctionT &rho)
 Applies the LDA effective potential to each orbital. Currently only lda and spin-polarized is not implemented. More...
 
void apply_hf_exchange3 (vecfuncT &phisa, vecfuncT &phisb, vecfuncT &funcsa, vecfuncT &funcsb, double &xc)
 
KPoint find_kpt_from_orb (unsigned int idx)
 
void apply_hf_exchange4 (vecfuncT &phisa, vecfuncT &phisb, vecfuncT &funcsa, vecfuncT &funcsb, double &xc)
 
void apply_hf_exchange (vecfuncT &phisa, vecfuncT &phisb, vecfuncT &funcsa, vecfuncT &funcsb)
 
void reproject ()
 
void solve ()
 
ctensorT matrix_exponential (const ctensorT &A)
 
template<typename Q >
void print_tensor2d (ostream &os, Tensor< Q > t)
 
void print_potential_matrix_eigs (const vecfuncT &wf, const vecfuncT &vwf)
 
void print_fock_matrix_eigs (const vecfuncT &wf, const vecfuncT &vwf, KPoint kpoint)
 
void do_rhs (vecfuncT &wf, vecfuncT &vwf, std::vector< KPoint > kpoints, std::vector< T > &alpha, std::vector< double > &eigs)
 
void do_rhs_simple (vecfuncT &wf, vecfuncT &vwf, std::vector< KPoint > kpoints, std::vector< T > &alpha, std::vector< double > &eigs)
 
tensor_complex make_kinetic_matrix (World &world, const vector_complex_function_3d &v, const KPoint &k)
 
tensorT build_fock_matrix (vecfuncT &psi, vecfuncT &vpsi, KPoint kpoint)
 
void gram_schmidt (vecfuncT &f, KPoint kpoint)
 
tensorT Q3 (const tensorT &s)
 Given overlap matrix, return rotation with 3rd order error to orthonormalize the vectors. More...
 
ctensorT csqrt (const ctensorT &s, double tol=1e-8)
 Computes matrix square root (not used any more?) More...
 
void orthonormalize (vecfuncT &wf, KPoint kpoint)
 
vecfuncT compute_residual (const vecfuncT &awfs, const vecfuncT &bwfs)
 
void update_orbitals (vecfuncT &awfs, vecfuncT &bwfs, std::vector< KPoint > kpoints)
 
void step_restriction (vecfuncT &owfs, vecfuncT &nwfs, int aorb)
 
void fix_occupations (const std::vector< T > &eps, std::vector< double > &occs)
 

Public Attributes

double ttt
 
double sss
 

Detailed Description

template<typename T, int NDIM>
class madness::Solver< T, NDIM >

The main class of the periodic DFT solver

\[ z = frac{x}{1 - y^2} \]

.

Constructor & Destructor Documentation

template<typename T, int NDIM>
madness::Solver< T, NDIM >::Solver ( World world,
const std::string &  filename 
)
inline
template<typename T, int NDIM>
madness::Solver< T, NDIM >::Solver ( World world,
rfunctionT  vnucrhon,
vecfuncT  phisa,
vecfuncT  phisb,
std::vector< T >  eigsa,
std::vector< T >  eigsb,
ElectronicStructureParams  params,
MolecularEntity  mentity 
)
inline
template<typename T, int NDIM>
madness::Solver< T, NDIM >::Solver ( World world,
const rfunctionT vnucrhon,
const vecfuncT &  phis,
const std::vector< T > &  eigs,
const ElectronicStructureParams params,
MolecularEntity  mentity 
)
inline
template<typename T, int NDIM>
madness::Solver< T, NDIM >::Solver ( World world,
rfunctionT  vnucrhon,
vecfuncT  phis,
std::vector< T >  eigs,
std::vector< KPoint kpoints,
std::vector< double >  occs,
ElectronicStructureParams  params,
MolecularEntity  mentity 
)
inline
template<typename T, int NDIM>
virtual madness::Solver< T, NDIM >::~Solver ( )
inlinevirtual

Member Function Documentation

template<typename T, int NDIM>
void madness::Solver< T, NDIM >::apply_hf_exchange ( vecfuncT &  phisa,
vecfuncT &  phisb,
vecfuncT &  funcsa,
vecfuncT &  funcsb 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::apply_hf_exchange3 ( vecfuncT &  phisa,
vecfuncT &  phisb,
vecfuncT &  funcsa,
vecfuncT &  funcsb,
double &  xc 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::apply_hf_exchange4 ( vecfuncT &  phisa,
vecfuncT &  phisb,
vecfuncT &  funcsa,
vecfuncT &  funcsb,
double &  xc 
)
inline
template<typename T, int NDIM>
tensorT madness::Solver< T, NDIM >::build_fock_matrix ( vecfuncT &  psi,
vecfuncT &  vpsi,
KPoint  kpoint 
)
inline
template<typename T, int NDIM>
double madness::Solver< T, NDIM >::calculate_kinetic_energy ( )
inline
template<typename T, int NDIM>
vecfuncT madness::Solver< T, NDIM >::compute_residual ( const vecfuncT &  awfs,
const vecfuncT &  bwfs 
)
inline
template<typename T, int NDIM>
rfunctionT madness::Solver< T, NDIM >::compute_rho ( const vecfuncT &  phis,
std::vector< KPoint kpoints,
std::vector< double >  occs 
)
inline
template<typename T, int NDIM>
ctensorT madness::Solver< T, NDIM >::csqrt ( const ctensorT &  s,
double  tol = 1e-8 
)
inline

Computes matrix square root (not used any more?)

References c, m, MADNESS_EXCEPTION, madness::print(), sqrt(), and madness::syev().

Referenced by madness::Solver< T, NDIM >::orthonormalize().

template<typename T, int NDIM>
void madness::Solver< T, NDIM >::do_rhs ( vecfuncT &  wf,
vecfuncT &  vwf,
std::vector< KPoint kpoints,
std::vector< T > &  alpha,
std::vector< double > &  eigs 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::do_rhs_simple ( vecfuncT &  wf,
vecfuncT &  vwf,
std::vector< KPoint kpoints,
std::vector< T > &  alpha,
std::vector< double > &  eigs 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::END_TIMER ( World world,
const char *  msg 
)
inline
template<typename T, int NDIM>
KPoint madness::Solver< T, NDIM >::find_kpt_from_orb ( unsigned int  idx)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::fix_occupations ( const std::vector< T > &  eps,
std::vector< double > &  occs 
)
inline
template<typename T, int NDIM>
std::vector<KPoint> madness::Solver< T, NDIM >::genkmesh ( unsigned int  ngridk0,
unsigned  ngridk1,
unsigned int  ngridk2,
double  koffset0,
double  koffset1,
double  koffset2,
double  R 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::gram_schmidt ( vecfuncT &  f,
KPoint  kpoint 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::init ( const std::string &  filename)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::initial_guess ( )
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::load_orbitals ( )
inline
template<typename T, int NDIM>
std::vector<poperatorT> madness::Solver< T, NDIM >::make_bsh_operators ( const std::vector< T > &  eigs)
inline
template<typename T, int NDIM>
tensor_complex madness::Solver< T, NDIM >::make_kinetic_matrix ( World world,
const vector_complex_function_3d v,
const KPoint k 
)
inline
template<typename T, int NDIM>
rfunctionT madness::Solver< T, NDIM >::make_lda_potential ( World world,
const rfunctionT arho,
const rfunctionT brho,
const rfunctionT adelrhosq,
const rfunctionT bdelrhosq 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::make_nuclear_charge_density_impl ( )
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::make_nuclear_potential ( )
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::make_nuclear_potential_impl ( )
inline
template<typename T, int NDIM>
ctensorT madness::Solver< T, NDIM >::matrix_exponential ( const ctensorT &  A)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::orthonormalize ( vecfuncT &  wf,
KPoint  kpoint 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::print_fock_matrix_eigs ( const vecfuncT &  wf,
const vecfuncT &  vwf,
KPoint  kpoint 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::print_potential_matrix_eigs ( const vecfuncT &  wf,
const vecfuncT &  vwf 
)
inline
template<typename T, int NDIM>
template<typename Q >
void madness::Solver< T, NDIM >::print_tensor2d ( ostream &  os,
Tensor< Q >  t 
)
inline
template<typename T, int NDIM>
vecfuncT madness::Solver< T, NDIM >::project_ao_basis ( World world,
KPoint  kpt 
)
inline
template<typename T, int NDIM>
tensorT madness::Solver< T, NDIM >::Q3 ( const tensorT &  s)
inline

Given overlap matrix, return rotation with 3rd order error to orthonormalize the vectors.

References madness::inner().

template<typename T, int NDIM>
void madness::Solver< T, NDIM >::reproject ( )
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::save_orbitals ( )
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::set_occs2 ( const std::vector< KPoint > &  kpoints,
const std::vector< double > &  eigsa,
const std::vector< double > &  eigsb,
std::vector< double > &  occsa,
std::vector< double > &  occsb 
)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::solve ( )
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::START_TIMER ( World world)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::step_restriction ( vecfuncT &  owfs,
vecfuncT &  nwfs,
int  aorb 
)
inline
template<typename T, int NDIM>
template<typename Q >
void madness::Solver< T, NDIM >::test_periodicity ( const Function< Q, 3 > &  f)
inline
template<typename T, int NDIM>
void madness::Solver< T, NDIM >::update_orbitals ( vecfuncT &  awfs,
vecfuncT &  bwfs,
std::vector< KPoint kpoints 
)
inline

Member Data Documentation

template<typename T, int NDIM>
double madness::Solver< T, NDIM >::sss
template<typename T, int NDIM>
double madness::Solver< T, NDIM >::ttt

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