iterative-solver 0.0
 
Loading...
Searching...
No Matches
molpro::linalg::itsolv::subspace::xspace Namespace Reference

Classes

struct  NewData
 New sections of equation data. More...
 

Functions

template<class R , class Q , class P >
auto update_qspace_data (const CVecRef< R > &params, const CVecRef< R > &actions, const CVecRef< P > &pparams, const CVecRef< Q > &qparams, const CVecRef< Q > &qactions, const CVecRef< Q > &dparams, const CVecRef< Q > &dactions, const CVecRef< Q > &rhs, const Dimensions &dims, ArrayHandlers< R, Q, P > &handlers, Logger &logger, bool hermitian=false, bool action_dot_action=false, const CVecRef< R > &metric_actions={})
 Returns new sections of equation data.
 
template<class Q , class P >
auto update_dspace_overlap_data (const CVecRef< P > &pparams, const CVecRef< Q > &qparams, const CVecRef< Q > &dparams, const CVecRef< Q > &rhs, array::ArrayHandler< Q, P > &handler_qp, array::ArrayHandler< Q, Q > &handler_qq, Logger &logger)
 Calculates overlap blocks between D space and the rest of the subspace.
 
template<class Q , class P >
auto update_dspace_action_data (const CVecRef< P > &pparams, const CVecRef< Q > &qparams, const CVecRef< Q > &qactions, const CVecRef< Q > &dparams, const CVecRef< Q > &dactions, array::ArrayHandler< Q, P > &handler_qp, array::ArrayHandler< Q, Q > &handler_qq, Logger &logger)
 Calculates action blocks between D space and the rest of the subspace.
 
template<typename value_type >
Matrix< value_type > metric_with_new_dspace (const Matrix< value_type > &metric, const Dimensions &dims, const std::vector< std::size_t > &q_delete, const Matrix< value_type > &dcoefficients)
 The metric matrix of the subspace after the deletion of Q vectors and their replacement, together with the old D vectors, by new D vectors, obtained by transforming the current metric matrix rather than from the vectors.
 
template<typename T >
void copy_dspace_eqn_data (const NewData< T > &new_data, SubspaceData< T > &data, const subspace::EqnData e, const Dimensions &dims)
 

Function Documentation

◆ copy_dspace_eqn_data()

template<typename T >
void molpro::linalg::itsolv::subspace::xspace::copy_dspace_eqn_data ( const NewData< T > &  new_data,
SubspaceData< T > &  data,
const subspace::EqnData  e,
const Dimensions &  dims 
)

◆ metric_with_new_dspace()

template<typename value_type >
Matrix< value_type > molpro::linalg::itsolv::subspace::xspace::metric_with_new_dspace ( const Matrix< value_type > &  metric,
const Dimensions &  dims,
const std::vector< std::size_t > &  q_delete,
const Matrix< value_type > &  dcoefficients 
)

The metric matrix of the subspace after the deletion of Q vectors and their replacement, together with the old D vectors, by new D vectors, obtained by transforming the current metric matrix rather than from the vectors.

Parameters
metricthe current metric matrix
dimsthe current dimensions
q_deleteindices of the Q vectors to be deleted
dcoefficientsthe coefficients of the new D vectors, as returned by construct_dspace()
Returns
the metric matrix of P, the remaining Q, and the new D vectors, in this order

◆ update_dspace_action_data()

template<class Q , class P >
auto molpro::linalg::itsolv::subspace::xspace::update_dspace_action_data ( const CVecRef< P > &  pparams,
const CVecRef< Q > &  qparams,
const CVecRef< Q > &  qactions,
const CVecRef< Q > &  dparams,
const CVecRef< Q > &  dactions,
array::ArrayHandler< Q, P > &  handler_qp,
array::ArrayHandler< Q, Q > &  handler_qq,
Logger &  logger 
)

Calculates action blocks between D space and the rest of the subspace.

◆ update_dspace_overlap_data()

template<class Q , class P >
auto molpro::linalg::itsolv::subspace::xspace::update_dspace_overlap_data ( const CVecRef< P > &  pparams,
const CVecRef< Q > &  qparams,
const CVecRef< Q > &  dparams,
const CVecRef< Q > &  rhs,
array::ArrayHandler< Q, P > &  handler_qp,
array::ArrayHandler< Q, Q > &  handler_qq,
Logger &  logger 
)

Calculates overlap blocks between D space and the rest of the subspace.

◆ update_qspace_data()

template<class R , class Q , class P >
auto molpro::linalg::itsolv::subspace::xspace::update_qspace_data ( const CVecRef< R > &  params,
const CVecRef< R > &  actions,
const CVecRef< P > &  pparams,
const CVecRef< Q > &  qparams,
const CVecRef< Q > &  qactions,
const CVecRef< Q > &  dparams,
const CVecRef< Q > &  dactions,
const CVecRef< Q > &  rhs,
const Dimensions &  dims,
ArrayHandlers< R, Q, P > &  handlers,
Logger &  logger,
bool  hermitian = false,
bool  action_dot_action = false,
const CVecRef< R > &  metric_actions = {} 
)

Returns new sections of equation data.

If metric_actions is not empty, the blocks of the metric matrix, EqnData::M, are calculated too, from the actions of the metric on the new parameters alone: as the metric M is Hermitian, <x|M b> = <M x|b> for a new parameter x and any subspace vector b. These are calculated together with the overlaps <x|b>, so that each b is read once.