1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_CASTOPTIONS_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_CASTOPTIONS_H
3#include "LinearEigensystemRSPTOptions.h"
5#include <molpro/linalg/itsolv/IterativeSolver.h>
6#include <molpro/linalg/itsolv/LinearEigensystemDavidsonOptions.h>
7#include <molpro/linalg/itsolv/LinearEquationsDavidsonOptions.h>
8#include <molpro/linalg/itsolv/NonLinearEquationsDIISOptions.h>
9#include <molpro/linalg/itsolv/OptimizeBFGSOptions.h>
10#include <molpro/linalg/itsolv/OptimizeSDOptions.h>
17 template <
class OptionsType>
18 static std::shared_ptr<OptionsType> cast(
const std::shared_ptr<Options>&
options,
19 const std::string& options_type_name) {
20 auto lin_eig_options = std::shared_ptr<OptionsType>{};
22 lin_eig_options = std::dynamic_pointer_cast<OptionsType>(
options);
24 throw std::runtime_error(
"Failed to cast Options to " + options_type_name);
26 return lin_eig_options;
29 template <
class OptionsType>
30 static const OptionsType& cast(
const Options&
options,
const std::string& options_type_name) {
32 return dynamic_cast<const OptionsType&
>(
options);
33 }
catch (std::bad_cast& err) {
34 throw std::runtime_error(
"Failed to cast Options to " + options_type_name);
40 return cast<LinearEigensystemDavidsonOptions>(
options,
"LinearEigensystemOptions");
43 return cast<LinearEigensystemDavidsonOptions>(
options,
"LinearEigensystemOptions");
46 return cast<LinearEigensystemRSPTOptions>(
options,
"LinearEigensystemRSPTOptions");
51 cast<LinearEigensystemDavidsonOptions>(
options,
"LinearEigensystemOptions"));
55 return cast<LinearEquationsDavidsonOptions>(
options,
"LinearEquationsOptions");
58 return cast<LinearEquationsDavidsonOptions>(
options,
"LinearEquationsOptions");
63 cast<LinearEquationsDavidsonOptions>(
options,
"LinearEquationsOptions"));
66 static std::shared_ptr<NonLinearEquationsDIISOptions>
68 return cast<NonLinearEquationsDIISOptions>(
options,
"NonLinearEquationsDIISOptions");
71 return cast<NonLinearEquationsDIISOptions>(
options,
"NonLinearEquationsDIISOptions");
76 cast<NonLinearEquationsDIISOptions>(
options,
"NonLinearEquationsDIISOptions"));
80 return cast<OptimizeBFGSOptions>(
options,
"OptimizeBFGSOptions");
83 return cast<OptimizeBFGSOptions>(
options,
"OptimizeBFGSOptions");
90 static std::shared_ptr<OptimizeSDOptions>
OptimizeSD(
const std::shared_ptr<Options>&
options) {
91 return cast<OptimizeSDOptions>(
options,
"OptimizeSDOptions");
94 return cast<OptimizeSDOptions>(
options,
"OptimizeSDOptions");
4-parameter interpolation of a 1-dimensional function given two points for which function values and ...
Definition: helper.h:10
const std::shared_ptr< const molpro::Options > options()
Get the Options object associated with iterative-solver.
Definition: options.cpp:4
Safely down-cast Options to one of the implementations.
Definition: CastOptions.h:15
static const OptimizeBFGSOptions & OptimizeBFGS(const Options &options)
Definition: CastOptions.h:82
static const NonLinearEquationsDIISOptions & NonLinearEquationsDIIS(const Options &options)
Definition: CastOptions.h:70
static OptimizeSDOptions & OptimizeSD(Options &options)
Definition: CastOptions.h:96
static LinearEigensystemDavidsonOptions & LinearEigensystem(Options &options)
Definition: CastOptions.h:48
static std::shared_ptr< LinearEigensystemDavidsonOptions > LinearEigensystem(const std::shared_ptr< Options > &options)
Definition: CastOptions.h:39
static OptimizeBFGSOptions & OptimizeBFGS(Options &options)
Definition: CastOptions.h:85
static std::shared_ptr< NonLinearEquationsDIISOptions > NonLinearEquationsDIIS(const std::shared_ptr< Options > &options)
Definition: CastOptions.h:67
static const LinearEigensystemRSPTOptions & LinearEigensystemRSPT(const Options &options)
Definition: CastOptions.h:45
static const LinearEigensystemDavidsonOptions & LinearEigensystem(const Options &options)
Definition: CastOptions.h:42
static NonLinearEquationsDIISOptions & NonLinearEquationsDIIS(Options &options)
Definition: CastOptions.h:73
static std::shared_ptr< OptimizeBFGSOptions > OptimizeBFGS(const std::shared_ptr< Options > &options)
Definition: CastOptions.h:79
static LinearEquationsDavidsonOptions & LinearEquations(Options &options)
Definition: CastOptions.h:60
static const OptimizeSDOptions & OptimizeSD(const Options &options)
Definition: CastOptions.h:93
static std::shared_ptr< OptimizeSDOptions > OptimizeSD(const std::shared_ptr< Options > &options)
Definition: CastOptions.h:90
static const LinearEquationsDavidsonOptions & LinearEquations(const Options &options)
Definition: CastOptions.h:57
static std::shared_ptr< LinearEquationsDavidsonOptions > LinearEquations(const std::shared_ptr< Options > &options)
Definition: CastOptions.h:54
Allows setting and getting of options for LinearEigensystemDavidson instance via IterativeSolver base...
Definition: LinearEigensystemDavidsonOptions.h:36
Allows setting and getting of options for LinearEigensystemRSPT instance via IterativeSolver base cla...
Definition: LinearEigensystemRSPTOptions.h:9
Allows setting and getting of options for LinearEquationsDavidson instance via IterativeSolver base c...
Definition: LinearEquationsDavidsonOptions.h:8
Allows setting and getting of options for NonLinearEquationsDIIS instance via IterativeSolver base cl...
Definition: NonLinearEquationsDIISOptions.h:9
Allows setting and getting of options for OptimizeBFGS instance via IterativeSolver base class.
Definition: OptimizeBFGSOptions.h:9
Allows setting and getting of options for OptimizeBFGS instance via IterativeSolver base class.
Definition: OptimizeSDOptions.h:9
Access point for different options in iterative solvers.
Definition: Options.h:20