-
Notifications
You must be signed in to change notification settings - Fork 3
/
indices.h
68 lines (51 loc) · 1.85 KB
/
indices.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#ifndef LIBRESPONSE_INDICES_H_
#define LIBRESPONSE_INDICES_H_
/*!
* @brief
*
* @file
*/
#include "typedefs.h"
#include "index_printing.h"
namespace libresponse {
/*!
* Given the number of AOs/basis functions per fragment, produce the
* indices for AOs that span each fragment.
*/
type::indices make_indices_ao(const arma::uvec &nbasis_frgm);
/*!
*
*/
type::pair_indices make_indices_mo_separate(const arma::uvec &nocc_frgm, const arma::uvec &nvirt_frgm);
/*!
*
*/
type::indices make_indices_mo_combined(const arma::uvec &nocc_frgm, const arma::uvec &nvirt_frgm);
/*!
*
*/
arma::uvec make_indices_mo_restricted(const arma::uvec &nocc_frgm, const arma::uvec &nvirt_frgm);
type::indices make_indices_mo_restricted_local_occ_all_virt(const arma::uvec &nocc_frgm, const arma::uvec &nvirt_frgm);
// TODO is is quite general, just concatenation of of a vector of arma
// vectors
arma::uvec join(const type::indices &idxs);
void make_masked_mat(arma::mat &mm, const arma::mat &m, const arma::uvec &idxs, double fill_value = 0.0, bool reduce = false);
void make_masked_cube(arma::cube &mc, const arma::mat &c, const arma::uvec &idxs, double fill_value = 0.0, bool reduce = false);
/*!
*
*/
void make_masked_mat(arma::mat &mm, const arma::mat &m, const type::indices &idxs, double fill_value = 0.0, bool reduce = false);
/*!
*
*/
void make_masked_cube(arma::cube &mc, const arma::cube &c, const type::indices &idxs, double fill_value = 0.0, bool reduce = false);
/*!
*
*/
void make_masked_mat(arma::mat &mm, const arma::mat &m, const type::indices &idxs_rows, const type::indices &idxs_cols, double fill_value, bool reduce = false);
/*!
*
*/
void make_masked_cube(arma::cube &mc, const arma::cube &c, const type::indices &idxs_rows, const type::indices &idxs_cols, double fill_value, bool reduce = false);
} // namespace libresponse
#endif // LIBRESPONSE_INDICES_H