template<class R, class Q = R, class P = std::map<size_t, typename R::value_type>>
class molpro::linalg::itsolv::SolverFactory< R, Q, P >
Factory for creating instances of specific solver implementations from the corresponding Options object.
#include <molpro/linalg/itsolv/SolverFactory.h>
#include "UserDefinedVectors.h"
#include "read_user_options.h"
using R = UserDefinedRVector;
using Q = UserDefinedQVector;
using P = UserDefinedPVector;
int main(int argn, char** argv){
std::shared_ptr<Options>
options = read_user_options_general(argn, argv);
auto handlers = std::make_shared<ArrayHandlers<R, Q, P>>();
std::unique_ptr<IterativeSolver> solver = factory.
create(*
options, handlers);
solver->solve();
std::shared_ptr<ILinearEigensystemOptions> eigen_options = read_user_options_eigen(argn, argv);
std::shared_ptr<ILinearEigensystem> eigen_solver = factory.create(*eigen_options, handlers);
eigen_solver.solve();
user_defined_print(eigen_solver.eigenvalues());
P>("max_size_qspace=6, nroots=3, convergence_threshold=1e-4"); eigen_solver.solve();
auto minimiser = create_Optimize<R, Q, P>("BFGS","convergence_threshold=1e-5");
}
virtual std::unique_ptr< IterativeSolver< R, Q, P > > create(const Options &options, const std::shared_ptr< ArrayHandlers< R, Q, P > > &handlers)
Definition: SolverFactory-implementation.h:19
std::unique_ptr< LinearEigensystem< R, Q, P > > create_LinearEigensystem(const LinearEigensystemOptions &options, const std::shared_ptr< ArrayHandlers< R, Q, P > > &handlers=std::make_shared< molpro::linalg::itsolv::ArrayHandlers< R, Q, P > >())
Definition: SolverFactory.h:108
const std::shared_ptr< const molpro::Options > options()
Get the Options object associated with iterative-solver.
Definition: options.cpp:4