MADNESS
version 0.9
|
The structure needed if the kain solver shall be used. More...
#include <TDA.h>
Public Member Functions | |
kain_solver_helper_struct () | |
void | sanity_check (const xfunctionsT &xfunctions) const |
void | initialize (World &world, const size_t excitations, const size_t nnoct, const bool kain) |
void | update (xfunctionsT &xfunctions) |
void | transform_subspace (World &world, const madness::Tensor< double > U) |
void | reduce_subspace (const size_t i) |
void | erase_subspace (const size_t i) |
void | increase_subspace (World &world, const xfunctionsT &xfunctions) |
std::vector< vecfuncT > | transform_vecfunctions (World &world, const std::vector< vecfuncT > &xfunctions, const madness::Tensor< double > U) const |
The structure needed if the kain solver shall be used.
|
inline |
|
inline |
Only erase the subspace, not delete the solver use this if you replace xfunctions
[in] | i | the number of the solver/xfunction which subspace should be erased |
References MADNESS_EXCEPTION.
|
inline |
increase the subspace: adding new solvers use this if you add new xfunctions
[in] | world | the world |
[in] | xfunctions | the current xfunctions (which have been extended) |
References sanity_check(), and madness::XNonlinearSolver< T, C, Alloc >::set_maxsub().
Referenced by madness::TDA::solve().
|
inline |
Initialize the kain solver helper structure
[in] | world | the world |
[in] | excitations | the number of excitations planned to calculate |
[in] | nnoct | the number of occupied (non frozen) orbitals = the number of response orbitals |
[in] | kain | true if kain should be used, false if not (when false it is just the default initialization) |
[in] | allatonce | should all xfunctions be solved ad once or not (currently: not) |
[in] | guess_iter_ | number of guess iterations (not needed anymore) |
References madness::XNonlinearSolver< T, C, Alloc >::set_maxsub().
Referenced by madness::TDA::setup().
|
inline |
reduce the subspace: delete whole solvers Use this if you delete xfunctions
[in] | i | the number of the xfunction that was deleted |
|
inline |
Check if everything is fine within the kain solver (use this when adding or deleting xfunctions)
[in] | xfunctions,the | xfunctions of the current iteration |
References MADNESS_EXCEPTION.
Referenced by increase_subspace(), and madness::TDA::solve().
|
inline |
Transform the Kain subspace(s)
[in] | world | the world |
[in] | U | The transformation matrix |
References k, and transform_vecfunctions().
|
inline |
Helper function for the transform_subspace function of the structure
[in] | world | the world |
[in] | xfunctions | a vector of vectorfunctions |
[in] | U | the transformation matrix |
[out] | U*xfunctions | : the transformed vector of vectorfunctions |
References madness::compress(), madness::gaxpy(), and madness::World::size().
Referenced by transform_subspace().
|
inline |
Update the current response orbitals x of the xfunctions structures
[in] | xfunctions | a vector if xfunctions structures of the current iteration (each xfunction should contain the x and curren_residuals) |
References k, MADNESS_EXCEPTION, madness::sub(), and madness::xfunction::x.