12std::vector<sparse_les_factory_ptr>& ref_solver_factories()
14 static std::vector<sparse_les_factory_ptr> facs;
21 ref_solver_factories().push_back(sls_fac);
26 return ref_solver_factories();
32 std::vector<sparse_les_factory_ptr>& F = ref_solver_factories();
33 for (std::vector<sparse_les_factory_ptr>::const_iterator fi = F.begin(); fi != F.end(); ++fi) {
34 if ((*fi)->get_solver_name() == solver_name)
35 return (*fi)->create(n, nr_rhs, nr_nze);
43 std::vector<sparse_les_factory_ptr>& F = ref_solver_factories();
44 for (std::vector<sparse_les_factory_ptr>::const_iterator fi = F.begin(); fi != F.end(); ++fi) {
45 if (((*fi)->get_caps() & caps) == caps)
46 return (*fi)->create(n, nr_rhs, nr_nze);
reference counted pointer, which can work together with types that are derived from ref_counted,...
virtual ~sparse_les_factory()
make constructor virtual
static sparse_les_ptr create_by_cap(SparseLesCaps caps, int n, int nr_rhs, int nr_nze=-1)
check the registered solver types for one with the given capabilities and create an instance of it
virtual double get_x_entry(int i) const
return the i-th component of a single solution vector
virtual double & ref_b_entry(int i)
return reference to i-th entry in a single right hand side b
static void register_solver_factory(sparse_les_factory_ptr sls_fac)
register a factory for a new type of linear equation solver
virtual void set_b_entry(int i, double val)
set i-th entry in a single right hand side b
static sparse_les_ptr create_by_name(const std::string &solver_name, int n, int nr_rhs, int nr_nze=-1)
check the registered solver types for one with the given name
static const std::vector< sparse_les_factory_ptr > & get_solver_factories()
return the list of registered solvers