alpaqa dll
Nonconvex constrained optimization
Loading...
Searching...
No Matches
sparsity-conversions.hpp
Go to the documentation of this file.
1#pragma once
2
6#include <guanaqo/linalg/sparsity-conversions.hpp>
7#include <utility>
8
9namespace alpaqa::sparsity {
10
11template <Config Conf, class To>
14 ConvertingEvaluator(const Sparsity &sp)
15 : converter{sp}, values(get_nnz(sp)), work(converter.work_size()) {}
16 SparsityConverter<Sparsity, To> converter;
18
19 template <class E>
20 rvec eval(E &&evaluator) {
21 std::forward<E>(evaluator)(values);
22 auto r = converter.template convert_values<real_t>(as_span(values), as_span(work));
23 return as_vec(r);
24 }
25};
26
27template <Config Conf>
30 DenseEvaluator(const Sparsity &sp) : converter{sp} {}
32
33 template <class E>
34 rmat eval(E &&evaluator) {
35 const auto &sp = converter.converter.get_sparsity();
36 auto v = converter.eval(std::forward<E>(evaluator));
37 return mmat{v.data(), num_rows(sp), num_cols(sp)};
38 }
39};
40
41} // namespace alpaqa::sparsity
#define USING_ALPAQA_CONFIG(Conf)
Definition config.hpp:77
typename Conf::rmat rmat
Definition config.hpp:96
auto as_span(Eigen::DenseBase< Derived > &v)
Convert an Eigen vector view to a std::span.
Definition span.hpp:21
typename Conf::mmat mmat
Definition config.hpp:94
auto as_vec(std::span< T, E > s)
Convert a std::span to an Eigen::Vector view.
Definition span.hpp:51
typename Conf::rvec rvec
Definition config.hpp:91
typename Conf::vec vec
Definition config.hpp:88
SparsityConverter< Sparsity, To > converter
ConvertingEvaluator< Conf, Dense > converter