1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ITERATIVESOLVER_ARRAYHANDLERS_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ITERATIVESOLVER_ARRAYHANDLERS_H
3#include <molpro/linalg/array/default_handler.h>
11 using std::logic_error::logic_error;
24template <
typename R,
typename Q = R,
typename P = std::map<
size_t,
typename R::value_type>>
70 template <
class T,
class S>
83 std::shared_ptr<array::ArrayHandler<T, S>>
handler()
const {
85 return array::create_default_handler<T, S>();
92 std::shared_ptr<array::ArrayHandler<T, S>>
m_handler;
105 std::shared_ptr<array::ArrayHandler<R, R>>
m_rr;
106 std::shared_ptr<array::ArrayHandler<Q, Q>>
m_qq;
107 std::shared_ptr<array::ArrayHandler<P, P>>
m_pp;
108 std::shared_ptr<array::ArrayHandler<R, Q>>
m_rq;
109 std::shared_ptr<array::ArrayHandler<R, P>>
m_rp;
110 std::shared_ptr<array::ArrayHandler<Q, R>>
m_qr;
111 std::shared_ptr<array::ArrayHandler<Q, P>>
m_qp;
115namespace iterativesolver {
Enhances various operations between pairs of arrays and allows dynamic code injection with uniform in...
Definition: ArrayHandler.h:162
Definition: ArrayHandlers.h:71
Proxy(Builder *b)
Definition: ArrayHandlers.h:74
Builder & operator()(const std::shared_ptr< array::ArrayHandler< T, S > > &h)
assigns a handler to the proxy
Definition: ArrayHandlers.h:77
Builder * builder
Definition: ArrayHandlers.h:91
std::shared_ptr< array::ArrayHandler< T, S > > m_handler
Definition: ArrayHandlers.h:92
std::shared_ptr< array::ArrayHandler< T, S > > handler() const
Definition: ArrayHandlers.h:83
Definition: ArrayHandlers.h:60
Proxy< P, P > pp
Definition: ArrayHandlers.h:98
Proxy< Q, Q > qq
Definition: ArrayHandlers.h:97
Proxy< R, P > rp
Definition: ArrayHandlers.h:100
Builder()
Definition: ArrayHandlers.h:62
Proxy< R, R > rr
Definition: ArrayHandlers.h:96
Proxy< R, Q > rq
Definition: ArrayHandlers.h:99
ArrayHandlers build()
Definition: ArrayHandlers.h:64
Proxy< Q, R > qr
Definition: ArrayHandlers.h:101
Proxy< Q, P > qp
Definition: ArrayHandlers.h:102
Class, containing a collection of array handlers used in IterativeSolver Provides a Builder sub-class...
Definition: ArrayHandlers.h:25
auto & qr()
Definition: ArrayHandlers.h:43
std::shared_ptr< array::ArrayHandler< Q, P > > m_qp
Definition: ArrayHandlers.h:111
std::shared_ptr< array::ArrayHandler< Q, R > > m_qr
Definition: ArrayHandlers.h:110
std::shared_ptr< array::ArrayHandler< P, P > > m_pp
Definition: ArrayHandlers.h:107
static Builder create()
Utility for creating Array handlers with some user specified handlers.
Definition: ArrayHandlers.h:57
auto & qq()
Definition: ArrayHandlers.h:40
std::shared_ptr< array::ArrayHandler< R, R > > m_rr
Definition: ArrayHandlers.h:105
std::shared_ptr< array::ArrayHandler< R, Q > > m_rq
Definition: ArrayHandlers.h:108
auto & pp()
Definition: ArrayHandlers.h:41
auto & qp()
Definition: ArrayHandlers.h:45
ArrayHandlers(std::shared_ptr< array::ArrayHandler< R, R > > rr, std::shared_ptr< array::ArrayHandler< Q, Q > > qq, std::shared_ptr< array::ArrayHandler< P, P > > pp, std::shared_ptr< array::ArrayHandler< R, Q > > rq, std::shared_ptr< array::ArrayHandler< R, P > > rp, std::shared_ptr< array::ArrayHandler< Q, R > > qr, std::shared_ptr< array::ArrayHandler< Q, P > > qp)
Definition: ArrayHandlers.h:30
std::shared_ptr< array::ArrayHandler< Q, Q > > m_qq
Definition: ArrayHandlers.h:106
auto & rp()
Definition: ArrayHandlers.h:44
auto & rr()
Definition: ArrayHandlers.h:39
ArrayHandlers()
Uses default handlers.
Definition: ArrayHandlers.h:37
auto & rq()
Definition: ArrayHandlers.h:42
std::shared_ptr< array::ArrayHandler< R, P > > m_rp
Definition: ArrayHandlers.h:109
Definition: ArrayHandlers.h:10