iterative-solver 0.0
PSpace.h
1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_PSPACE_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_PSPACE_H
3#include <molpro/linalg/array/ArrayHandler.h>
4#include <molpro/linalg/itsolv/subspace/SubspaceData.h>
5#include <molpro/linalg/itsolv/wrap.h>
6
8
9template <class Rt, class Pt>
10class PSpace {
11public:
12 using R = Rt;
13 using P = Pt;
14
16 for (const auto& p : params)
17 m_params.emplace_back(handler.copy(p));
18 }
19
20 CVecRef<P> params() const { return cwrap(m_params); }
21 CVecRef<P> cparams() const { return params(); }
22 VecRef<P> params() { return wrap(m_params); }
23
24 size_t size() const { return m_params.size(); }
25
26 void erase(size_t i) { m_params.erase(m_params.begin() + i); }
27
28private:
29 std::vector<P> m_params;
30};
31
32} // namespace molpro::linalg::itsolv::subspace
33
34#endif // LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_PSPACE_H
Enhances various operations between pairs of arrays and allows dynamic code injection with uniform in...
Definition: ArrayHandler.h:162
virtual AL copy(const AR &source)=0
VecRef< P > params()
Definition: PSpace.h:22
void update(const CVecRef< P > &params, array::ArrayHandler< P, P > &handler)
Definition: PSpace.h:15
CVecRef< P > params() const
Definition: PSpace.h:20
size_t size() const
Definition: PSpace.h:24
void erase(size_t i)
Definition: PSpace.h:26
CVecRef< P > cparams() const
Definition: PSpace.h:21
Definition: PSpace.h:7
auto cwrap(ForwardIt begin, ForwardIt end)
Takes a begin and end iterators and returns a vector of references to each element.
Definition: wrap.h:52
auto wrap(ForwardIt begin, ForwardIt end)
Takes a begin and end iterators and returns a vector of references to each element.
Definition: wrap.h:32
std::vector< std::reference_wrapper< const A > > CVecRef
Definition: wrap.h:14
std::vector< std::reference_wrapper< A > > VecRef
Definition: wrap.h:11