|
| | EigenSolver (int nbast, int nocc, const ergo_real *fock_matrix, const ergo_real *overlap, int n) |
| |
| virtual | ~EigenSolver () |
| |
| virtual ergo_real | getPreconditionerShift (int i) const |
| | returns the preconditioning shift. More...
|
| |
| virtual int | getInitialGuess (VarVectorCollection &vecs) |
| | generate the starting guess for the HOMO-LUMO excitation by placing one in th the right position. More...
|
| |
| virtual bool | getResidual (VarVectorCollection &residualv) |
| | get residual of the eigenvalue problem. More...
|
| |
| virtual void | increaseSubspaceLimit (int newSize) |
| | expands above the default limit More...
|
| |
| ergo_real | getFreq (int i) const |
| |
| void | computeMoments (OneElOperator &dipx, OneElOperator &dipy, OneElOperator &dipz) |
| |
| ergo_real | getTransitionMoment2 (int i) const |
| |
| | LRSolver (int nbast, int nocc, const ergo_real *fock_matrix, const ergo_real *s) |
| | Initialize the solver by computing the diagonal of the E2 operator as needed for preconditioning. More...
|
| |
| virtual | ~LRSolver () |
| |
| bool | solve (E2Evaluator &e, bool diskMode=false) |
| | Solves the problem defined by the subclass. More...
|
| |
| void | computeExactE2Diag (E2Evaluator &e2) |
| |
|
| ergo_real | convThreshold |
| | iterative method convergence threshold More...
|
| |
| int | maxSubspaceSize |
| | current subspace size limit. More...
|
| |
| void | getAvMinusFreqSv (ergo_real f, ergo_real *weights, VarVector &r) |
| | Computes a vector built of base vectors with specified vectors. More...
|
| |
| void | projectOnSubspace (const VarVector &full, ergo_real *w) |
| | Projects vector. More...
|
| |
| void | buildVector (const ergo_real *w, VarVector &full) |
| | Build full fector from the reduced form. More...
|
| |
| void | operToVec (OneElOperator &oper, VarVector &res) const |
| | Transform square operator to the vector form. More...
|
| |
| ergo_real | setE2diag (int nbast, int nocc, const ergo_real *fock_matrix, const ergo_real *s) |
| | setE2diag is called by the constructor to fill in the approximation of the E[2] operator diagonal. More...
|
| |
| virtual void | addToSpace (VarVectorCollection &vecs, E2Evaluator &e2) |
| | extends the subspace with v and its transformed vector Av. More...
|
| |
| void | mo2ao (int nbast, const ergo_real *mo, ergo_real *ao) const |
| |
| void | ao2mo (int nbast, const ergo_real *ao, ergo_real *mo) const |
| | computes mo := cmo'*ao*cmo More...
|
| |
| VarVector | e2diag |
| | approximation to the diagonal of E2 operator More...
|
| |
| int | subspaceSize |
| | current subspace size More...
|
| |
| SmallMatrix | eSub |
| | E[2] matrix projected onto subspace. More...
|
| |
| SmallMatrix | sSub |
| | S[2] matrix projected onto subspace. More...
|
| |
| ergo_real * | xSub |
| | solution vector projected onto subspace More...
|
| |
| int | nbast |
| | number of basis functions More...
|
| |
| int | nocc |
| | number of occupied orbitals More...
|
| |
| VarVectorCollection | vects |
| | base vectors More...
|
| |
| static const int | MVEC = 200 |
| | default limit for subspace size More...
|
| |
Iterative Eigenvalue solver, extending the generic LRSolver.
get residual of the eigenvalue problem.
This is done in following steps: Solution in the subspace: [ Xsub, lambda ] = eig(eSub, Ssub); Pick first positive eigenvalue l1 = lambda(step+1); Pick corresponding eigenvector: Xsub = Xsub(:,step+1); Residual Vector: residualv = (Av-l1*Sv)*Xsub;
Implements LR::LRSolver.
References LR::LRSolver::convThreshold, do_output(), LR::dot(), LR::LRSolver::eSub, LR::LRSolver::getAvMinusFreqSv(), mat::ggev(), LOG_AREA_LR, LOG_CAT_ERROR, LOG_CAT_INFO, LR::VarVectorCollection::setSize(), LR::LRSolver::sSub, and LR::LRSolver::subspaceSize.