1#ifndef LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_QSPACE_H
2#define LINEARALGEBRA_SRC_MOLPRO_LINALG_ITSOLV_SUBSPACE_QSPACE_H
9#include <molpro/linalg/itsolv/ArrayHandlers.h>
10#include <molpro/linalg/itsolv/Logger.h>
11#include <molpro/linalg/itsolv/subspace/Dimensions.h>
12#include <molpro/linalg/itsolv/subspace/PSpace.h>
13#include <molpro/linalg/itsolv/subspace/SubspaceData.h>
14#include <molpro/linalg/itsolv/wrap.h>
15#include <molpro/linalg/itsolv/util.h>
16#include <molpro/linalg/itsolv/helper-implementation.h>
33template <
class Q,
class ForwardIt>
36 for (
auto it = begin;
it != end; ++
it) {
43template <
class Q,
class ForwardIt>
46 for (
auto it = begin;
it != end; ++
it) {
61template <
class Rt,
class Qt,
class Pt>
96 for (
size_t i = 0;
i <
params.size(); ++
i) {
113 std::sort(rp.begin(), rp.end(), std::greater<>());
117 qq.at(
d).remove_row_col(
i,
i);
118 qx.at(
d).remove_row(
i);
119 xq.at(
d).remove_col(
i);
decltype(value_type_L{} *value_type_R{}) value_type
Definition ArrayHandler.h:182
decltype(check_abs< value_type >()) value_type_abs
Definition ArrayHandler.h:183
Class, containing a collection of array handlers used in IterativeSolver Provides a Builder sub-class...
Definition ArrayHandlers.h:25
auto redundant_parameters(const subspace::Matrix< value_type > &overlap, const size_t oR, const size_t nR, const value_type_abs svd_thresh, Logger &logger)
Deduces a set of parameters that are redundant due to linear dependencies.
Definition helper-implementation.h:960
auto wrap_params(ForwardIt begin, ForwardIt end)
Definition QSpace.h:44
auto cwrap_params(ForwardIt begin, ForwardIt end)
Generates vector of reference wrappers to param and action in a range of QParam objects.
Definition QSpace.h:34
std::map< EqnData, Matrix< T > > SubspaceData
Equation data blocks of the subspace, in the scalar type of the problem.
Definition SubspaceData.h:18
std::vector< EqnData > square_blocks(const SubspaceData< T > &data)
The square matrices, H, S and, if present, M, among the equation data.
Definition SubspaceData.h:22
std::unique_ptr< LinearEigensystem< R, Q, P > > create_LinearEigensystem(const LinearEigensystemOptions &options, const std::shared_ptr< ArrayHandlers< R, Q, P > > &handlers=std::make_shared< molpro::linalg::itsolv::ArrayHandlers< R, Q, P > >())
Definition SolverFactory.h:111
std::vector< std::reference_wrapper< const A > > CVecRef
Definition wrap.h:14
std::vector< std::reference_wrapper< A > > VecRef
Definition wrap.h:11
Definition Dimensions.h:9
Container storing the Q space parameters.
Definition QSpace.h:62
typename array::ArrayHandler< R, R >::value_type_abs value_type_abs
Definition QSpace.h:67
void update(const CVecRef< R > ¶ms, const CVecRef< R > &actions, const SubspaceData< T > &qq_in, const SubspaceData< T > &qx_in, const SubspaceData< T > &xq_in, const Dimensions &dims, SubspaceData< T > &old_data, const CVecRef< R > &metric_actions={})
Prepends parameters to the start of Q space.
Definition QSpace.h:90
std::shared_ptr< ArrayHandlers< R, Q, P > > m_handlers
Definition QSpace.h:206
VecRef< Q > params()
Definition QSpace.h:172
typename array::ArrayHandler< R, R >::value_type value_type
Definition QSpace.h:66
CVecRef< Q > cactions() const
Definition QSpace.h:194
Pt P
Definition QSpace.h:65
size_t size() const
Definition QSpace.h:170
void clear()
Definition QSpace.h:161
CVecRef< Q > cparams() const
Definition QSpace.h:182
CVecRef< Q > cmetric_actions() const
Actions of the metric, empty unless there is a metric.
Definition QSpace.h:197
size_t m_unique_id
unique id for any new parameter set
Definition QSpace.h:208
void erase(size_t i)
Erases q parameter i.
Definition QSpace.h:164
std::list< qspace::QParam< Q > > m_params
q parameter sets with new parameters first
Definition QSpace.h:209
Rt R
Definition QSpace.h:63
std::shared_ptr< Logger > m_logger
Definition QSpace.h:207
Qt Q
Definition QSpace.h:64
VecRef< Q > actions()
Definition QSpace.h:184
QSpace(std::shared_ptr< ArrayHandlers< R, Q, P > > handlers, std::shared_ptr< Logger > logger)
Definition QSpace.h:69
CVecRef< Q > params() const
Definition QSpace.h:177
CVecRef< Q > actions() const
Definition QSpace.h:189
void set_logger(std::shared_ptr< Logger > logger)
Replaces the logger.
Definition QSpace.h:73
Parameter in the Q space.
Definition QSpace.h:25
std::unique_ptr< Q > param
parameter
Definition QSpace.h:26
std::unique_ptr< Q > action
corresponding action
Definition QSpace.h:27
size_t id
unique id
Definition QSpace.h:28
std::unique_ptr< Q > metric_action
corresponding action of the metric, null unless there is one
Definition QSpace.h:29