Resets D space constructing full solutions as the new working set, removing instabilities from Q space, and clearing D space.
More...
template<class Q>
class molpro::linalg::itsolv::detail::DSpaceResetter< Q >
Resets D space constructing full solutions as the new working set, removing instabilities from Q space, and clearing D space.
Resetting can happen over multiple iterations if size of the working set is less than the number of solutions. In such cases, D space is still cleared at the start, so only the first batch of solutions will be reproduced at that iteration with the other possibly showing larger errors than before. By the end of resetting, all previous solutions will be in the Q space and previous energies and residuals will be reproduced.
After resetting, the size of Q space can be reduced. The maximum size can be controlled via set_max_Qsize().
- Template Parameters
-
|
| DSpaceResetter ()=default |
|
| DSpaceResetter (int nreset, int max_Qsize) |
|
bool | do_reset (size_t iter, const subspace::Dimensions &dims) |
| Whether reset operation should be run. More...
|
|
void | set_nreset (size_t i) |
|
auto | get_nreset () const |
|
void | set_max_Qsize (size_t i) |
|
auto | get_max_Qsize () const |
|
template<class R , class P , typename value_type , typename value_type_abs > |
std::vector< int > | run (const VecRef< R > &rparams, subspace::IXSpace< R, Q, P > &xspace, const subspace::Matrix< value_type > &solutions, const value_type_abs norm_thresh, const value_type_abs svd_thresh, ArrayHandlers< R, Q, P > &handlers, Logger &logger) |
| Run the reset operation. More...
|
|