1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_IXSPACE_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_IXSPACE_H
3#include <molpro/linalg/array/ArrayHandler.h>
4#include <molpro/linalg/array/Span.h>
5#include <molpro/linalg/itsolv/subspace/Dimensions.h>
6#include <molpro/linalg/itsolv/subspace/SubspaceData.h>
7#include <molpro/linalg/itsolv/wrap.h>
12template <
class RT,
class QT,
class PT>
28 virtual void erase(
size_t i) = 0;
decltype(value_type_L{} *value_type_R{}) value_type
Definition: ArrayHandler.h:181
decltype(check_abs< value_type >()) value_type_abs
Definition: ArrayHandler.h:182
Non-owning container taking a pointer to the data buffer and its size and exposing routines for itera...
Definition: Span.h:28
Full subspace.
Definition: IXSpace.h:13
virtual CVecRef< Q > cparamsq() const =0
virtual CVecRef< P > paramsp() const =0
virtual CVecRef< P > cparamsp() const =0
virtual VecRef< Q > actionsq()=0
virtual void erased(size_t i)=0
Removes parameter i from D subspace.
virtual VecRef< Q > paramsd()=0
virtual VecRef< Q > paramsq()=0
virtual CVecRef< Q > paramsq() const =0
RT R
Definition: IXSpace.h:15
PT P
Definition: IXSpace.h:17
size_t size() const
Number of vectors forming the subspace.
Definition: IXSpace.h:25
virtual CVecRef< Q > cactionsd() const =0
SubspaceData data
Equation data in the subspace.
Definition: IXSpace.h:22
virtual void erasep(size_t i)=0
Removes parameter i from P subspace.
virtual void eraseq(size_t i)=0
Removes parameter i from Q subspace.
typename array::ArrayHandler< R, R >::value_type_abs value_type_abs
Definition: IXSpace.h:19
virtual CVecRef< Q > paramsd() const =0
virtual VecRef< P > paramsp()=0
virtual CVecRef< Q > cactionsq() const =0
virtual void update_pspace(const CVecRef< P > ¶ms, const array::Span< value_type > &pp_action_matrix)=0
Adds parameters to the P space.
QT Q
Definition: IXSpace.h:16
virtual CVecRef< Q > cparamsd() const =0
typename array::ArrayHandler< R, R >::value_type value_type
Definition: IXSpace.h:18
virtual CVecRef< Q > actionsd() const =0
virtual VecRef< Q > actionsd()=0
virtual const Dimensions & dimensions() const =0
virtual CVecRef< Q > actionsq() const =0
virtual void erase(size_t i)=0
Removes parameter i from the full subspace.
virtual void update_qspace(const CVecRef< R > ¶ms, const CVecRef< R > &actions)=0
Adds parameters to the Q space.
virtual ~IXSpace()=default
virtual void update_dspace(VecRef< Q > ¶ms, VecRef< Q > &actions)=0
Updates D space with the new parameters.
std::map< EqnData, Matrix< double > > SubspaceData
Definition: SubspaceData.h:9
std::vector< std::reference_wrapper< const A > > CVecRef
Definition: wrap.h:14
std::vector< std::reference_wrapper< A > > VecRef
Definition: wrap.h:11
Stores partitioning of XSpace into P, Q and R blocks with sizes and offsets for each one.
Definition: Dimensions.h:5
size_t nX
Definition: Dimensions.h:11