Psi4
civect.h
Go to the documentation of this file.
1 /*
2  * @BEGIN LICENSE
3  *
4  * Psi4: an open-source quantum chemistry software package
5  *
6  * Copyright (c) 2007-2018 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
10  *
11  * This file is part of Psi4.
12  *
13  * Psi4 is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU Lesser General Public License as published by
15  * the Free Software Foundation, version 3.
16  *
17  * Psi4 is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU Lesser General Public License for more details.
21  *
22  * You should have received a copy of the GNU Lesser General Public License along
23  * with Psi4; if not, write to the Free Software Foundation, Inc.,
24  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25  *
26  * @END LICENSE
27  */
28 
33 #ifndef _psi_src_bin_detci_civect_h
34 #define _psi_src_bin_detci_civect_h
35 
36 #include "psi4/pybind11.h"
37 
38 // Forward declarations
39 namespace psi {
40 namespace detci {
41 struct calcinfo;
42 struct params;
43 struct H_zero_block;
44 struct ci_blks;
45 class CIWavefunction;
46 class CIvect;
47 typedef std::shared_ptr<psi::detci::CIvect> SharedCIVector;
48 } // namespace detci
49 } // namespace psi
50 
51 namespace psi {
52 namespace detci {
53 
54 /*
55 ** CIVECT.H
56 **
57 ** Header file for CI Vector Class
58 **
59 ** David Sherrill, 15 June 1995
60 ** Center for Computational Quantum Chemistry
61 **
62 */
63 
64 class CIvect {
65  friend class CIWavefunction;
66 
67  protected:
68  // Holds pointers to relevant CI structs
70  struct params *CI_Params_;
72 
73  void common_init(); /* common init func */
74 
75  size_t vectlen_; /* total vector length */
76  size_t buffer_size_; /* size of largest in-core chunk */
77  int num_blocks_; /* number of blocks in vector */
78  int icore_; /* in-core option. 1 = whole vector in-core,
79  2 = symm block in-core,
80  0 = one subblock in-core */
81  int Ms0_; /* is this a vector for M_s=0? 1=yes, 0=no */
82  std::vector<int> Ia_code_; /* each block's alpha string id code */
83  std::vector<int> Ib_code_; /* each block's beta string id code */
84  std::vector<int> Ia_size_; /* num alp strings in each block */
85  std::vector<int> Ib_size_; /* num bet strings in each block */
86  std::vector<size_t> offset_; /* offsets for absolute numbering. This
87  is a word offset, not a byte offset,
88  so size_t should be ok */
89  int num_alpcodes_; /* number of possible (total) alpha codes */
90  int num_betcodes_; /* number of possible (total) beta codes */
91  int nirreps_; /* dimension of next four arrays */
92  int codes_per_irrep_; /* number of codes per irrep (for alpha) */
93  int buf_per_vect_; /* number of buffers per CI vector */
94  int buf_total_; /* number of total buffers (all vectors) */
95  int new_first_buf_; /* after collapse, buffs get renumbered */
96  int maxvect_; /* max number of CI vectors */
97  int nvect_; /* number of CI vectors */
98  int nunits_; /* number of units (physical disk files) */
99  int cur_vect_; /* current vector number in core */
100  int cur_buf_; /* current buffer in core */
101  int buf_locked_; /* is a memory buffer locked in/available? */
102  std::vector<int> units_; /* file numbers */
103  std::vector<int> file_number_; /* unit number for given vector/block */
104  size_t *buf_size_; /* size of each buffer on disk
105  (0...buf_per_vect) */
106  int *buf2blk_; /* buffer number -> block number for
107  icore=0, else buf->irrep for icore=2 */
108  int *buf_offdiag_; /* is the buffer "off-diagonal"? only applies
109  to Ms=0. If Ms<>0, always=0 */
110  int *first_ablk_; /* first blocknum with a given Ia irrep */
111  int *last_ablk_; /* last blocknum with a given Ia irrep */
112  int **decode_; /* gives block number for a (alp,bet) code */
113  /* dimensions num_alpcodes * num_betcodes */
114  double ***blocks_; /* a matrix for each block */
115  double *buffer_; /* pointer to buffer, same as blocks[0][0] */
116  std::vector<int> zero_blocks_; /* array for which blocks happen to be 0 */
117  int in_file_; /* increment for how many buffers in a file */
118  int extras_; /* accounts for extra buffers */
119  int units_used_; /* accounts for number of unit files used */
120  int cur_unit_; /* current unit file */
121  int cur_size_; /* current size of buffer */
122  int first_unit_; /* first file unit number (if > 1) */
123  int subgr_per_irrep_; /* possible number of Olsen subgraphs per irrep */
124  int print_lvl_; /* print level*/
125  bool fopen_; /* Are CIVec files open? */
126 
127  double ssq(struct stringwr *alplist, struct stringwr *betlist, double **CL, double **CR, int nas, int nbs,
128  int Ja_list, int Jb_list);
129 
130  public:
131  CIvect();
132  CIvect(size_t vl, int nb, int incor, int ms0, int *iac, int *ibc, int *ias, int *ibs, size_t *offs, int nac,
133  int nbc, int nirr, int cdperirr, int maxvect, int nunits, int funit, int *fablk, int *lablk, int **dc,
134  struct calcinfo *CI_CalcInfo, struct params *CI_Params, struct H_zero_block *CI_H0block,
135  bool buf_init = true);
136  CIvect(int incor, int maxvect, int nunits, int funit, struct ci_blks *CIblks, struct calcinfo *CI_CalcInfo,
137  struct params *CI_Params, struct H_zero_block *CI_H0block, bool buf_init = true);
138  ~CIvect();
139 
141  py::buffer_info array_interface();
142 
144  void axpy(double a, SharedCIVector x, int tvec, int ovec);
145  void scale(double a, int tvec);
146  void shift(double a, int tvec);
147  void copy(SharedCIVector src, int tvec, int ovec);
148  void divide(SharedCIVector denom, double min_val, int tvec, int ovec);
149  void zero();
150  double vdot(SharedCIVector b, int tvec, int ovec);
151  double norm(int tvec);
152 
153  // self += scale * a * b
154  void vector_multiply(double scale, SharedCIVector X, SharedCIVector Y, int tvec, int xvec, int yvec);
155 
157  double dcalc3(double lambda, SharedCIVector Hd, int rootnum);
158  void symnormalize(double a, int tvec);
159 
161  void init_io_files(bool open_old);
162  void close_io_files(int keep);
163  int read(int tvec, int ibuf);
164  int write(int tvec, int ibuf);
165  void buf_lock(double *a);
166  void buf_unlock();
167  double *buf_malloc();
168  void set_nvect(int i);
169 
170  // Questionable functions and/or should be private
171  void set(int incor, int maxvect, int nunits, int funit, struct ci_blks *CIblks);
172  void set(size_t vl, int nb, int incor, int ms0, int *iac, int *ibc, int *ias, int *ibs, size_t *offs, int nac,
173  int nbc, int nirr, int cdperirr, int maxvect, int nunits, int funit, int *fablk, int *lablk, int **dc);
174  void print();
175  double operator*(CIvect &b);
176  void setarray(const double *a, size_t len);
177  void max_abs_vals(int nval, int *iac, int *ibc, int *iaidx, int *ibidx, double *coeff, int neg_only);
178  double blk_max_abs_vals(int i, int offdiag, int nval, int *iac, int *ibc, int *iaidx, int *ibidx, double *coeff,
179  double minval, int neg_only);
180  void det2strings(size_t det, int *alp_code, int *bet_code, int *alp_idx, int *bet_idx);
181  size_t strings2det(int alp_code, int alp_idx, int bet_code, int bet_idx);
182  void diag_mat_els(struct stringwr **alplist, struct stringwr **betlist, double *oei, double *tei, double edrc,
183  int na, int nb, int nbf, int method);
184  void diag_mat_els_otf(struct stringwr **alplist, struct stringwr **betlist, double *oei, double *tei, double edrc,
185  int na, int nb, int nbf, int buf, int method);
186  void init_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums,
187  double *value);
188  void set_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums,
189  double *value);
190  void extract_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums,
191  double *value);
192  void symnorm(double a, int vecode, int gather_vec);
193  double zero_det(int iac, int ia, int ibc, int ib);
194  void scale(double a, int vecode, int gather_vec);
195  void symmetrize(double phase, int iblock);
196  double **blockptr(int blknum);
197  int schmidt_add(CIvect &c, int L);
198  int schmidt_add2(CIvect &c, int first_vec, int last_vec, int source_vec, int target_vec, double *dotval,
199  double *nrm, double *ovlpmax);
200  void dcalc(int nr, int L, double **alpha, double *lambda, double *norm_arr, CIvect &C, CIvect &S, double *buf1,
201  double *buf2, int *root_converged, int printflag, double *E_est);
202  void sigma_renorm(int nr, int L, double renorm_C, CIvect &S, double *buf1, int printflag);
203  double dcalc2(int rootnum, double lambda, CIvect &Hd, int precon, struct stringwr **alplist,
204  struct stringwr **betlist);
205  double dcalc_evangelisti(int rootnum, int num_vecs, double lambda, CIvect &Hd, CIvect &C, double *buf1,
206  double *buf2, int precon, int L, struct stringwr **alplist, struct stringwr **betlist,
207  double **alpha);
208  void construct_kth_order_wf(CIvect &Hd, CIvect &S, CIvect &C, struct stringwr **alplist, struct stringwr **betlist,
209  double *buf1, double *buf2, int k, double *mp_energy, double **bvec_overlap,
210  double *bvec_norm);
211  void wigner_E2k_formula(CIvect &Hd, CIvect &S, CIvect &C, struct stringwr **alplist, struct stringwr **betlist,
212  double *buf1, double *buf2, int k, double *mp2k_energy, double **wfn_overlap,
213  double **bvec_overlap, double *bvec_norm, int kvec_offset);
214  void print_buf();
215  void civ_xeay(double a, CIvect &Y, int xvect, int yvect);
216  void civ_xpeay(double a, CIvect &Y, int xvect, int yvect);
217  void transp_block(int iblock, double **tmparr);
218  size_t get_max_blk_size();
219  double checknorm();
220  void copy(CIvect &Src, int targetvec, int srcvec);
221  void restart_gather(int ivec, int nvec, int nroot, double **alpha, double *buffer1, double *buffer2);
222  void gather(int ivec, int nvec, int nroot, double **alpha, CIvect &C);
223  void restart_reord_fp(int L);
224  void print_fptrs();
225  double calc_ssq(double *buffer1, double *buffer2, struct stringwr **alplist, struct stringwr **betlist,
226  int vec_num);
227  void h0block_buf_init();
228  void h0block_buf_ols(double *norm, double *ovrlap, double *c1norm, double E_est);
229  void h0block_buf_precon(double *norm, int root);
230  void h0block_gather_vec(int vecode);
231  void h0block_gather_multivec(double *vec);
232  int check_zero_block(int blocknum);
233  void set_zero_block(int blocknum, int value);
234  void set_zero_blocks_all();
235  void copy_zero_blocks(CIvect &src);
236  void print_zero_blocks();
237  void scale_sigma(CIvect &Hd, CIvect &C, struct stringwr **alplist, struct stringwr **betlist, int i, double *buf1,
238  double *buf2);
239  int read_new_first_buf();
240  void write_new_first_buf();
241  void set_new_first_buf(int nfb);
242  int read_num_vecs();
243  void write_num_vecs(int nv);
244  void write_toc();
245  void civect_psio_debug();
246  void pt_correction(struct stringwr **alplist, struct stringwr **betlist);
247  double compute_follow_overlap(int troot, int ncoef, double *coef, int *Iac, int *Iaridx, int *Ibc, int *Ibridx);
248 
249  void calc_hd_block(struct stringwr *alplist, struct stringwr *betlist, double **H0, double *oei, double *tei,
250  double edrc, int nas, int nbs, int na, int nb, int nbf);
251  void calc_hd_block_ave(struct stringwr *alplist, struct stringwr *betlist, double **H0, double *tf_oei, double *tei,
252  double edrc, int nas, int nbs, int na, int nb, int nbf);
253  void calc_hd_block_z_ave(struct stringwr *alplist, struct stringwr *betlist, double **H0, double pert_param,
254  double *tei, double edrc, int nas, int nbs, int na, int nb, int nbf);
255  void calc_hd_block_orbenergy(struct stringwr *alplist, struct stringwr *betlist, double **H0, double *oei,
256  double *tei, double edrc, int nas, int nbs, int na, int nb, int nbf);
257  void calc_hd_block_mll(struct stringwr *alplist, struct stringwr *betlist, double **H0, double *oei, double *tei,
258  double edrc, int nas, int nbs, int na, int nb, int nbf);
259  void calc_hd_block_evangelisti(struct stringwr **alplist, struct stringwr **betlist, struct stringwr *alplist_local,
260  struct stringwr *betlist_local, double **H0, double *tf_oei, double *tei,
261  double edrc, int nas, int nbs, int na, int nb, int nbf);
262 };
263 } // namespace detci
264 } // namespace psi
265 
266 #endif // header guard
double * buffer_
Definition: civect.h:115
int ** decode_
Definition: civect.h:112
void print_zero_blocks()
Definition: civect.cc:3185
~CIvect()
Definition: civect.cc:420
Definition: ciwave.h:73
int units_used_
Definition: civect.h:119
void calc_hd_block_orbenergy(struct stringwr *alplist, struct stringwr *betlist, double **H0, double *oei, double *tei, double edrc, int nas, int nbs, int na, int nb, int nbf)
Definition: civect.cc:3711
void extract_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums, double *value)
Definition: civect.cc:1269
void civ_xeay(double a, CIvect &Y, int xvect, int yvect)
Definition: civect.cc:2618
std::vector< int > Ia_size_
Definition: civect.h:84
Definition: civect.h:64
void copy_zero_blocks(CIvect &src)
Definition: civect.cc:3176
void init_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums, double *value)
Definition: civect.cc:1129
int check_zero_block(int blocknum)
Definition: civect.cc:3150
double compute_follow_overlap(int troot, int ncoef, double *coef, int *Iac, int *Iaridx, int *Ibc, int *Ibridx)
Definition: civect.cc:3426
int buf_per_vect_
Definition: civect.h:93
int schmidt_add(CIvect &c, int L)
Definition: civect.cc:1870
void pt_correction(struct stringwr **alplist, struct stringwr **betlist)
Definition: civect.cc:3402
void set_zero_blocks_all()
Definition: civect.cc:3170
void buf_unlock()
Definition: civect.cc:1600
int read(int tvec, int ibuf)
Definition: civect.cc:1763
int maxvect_
Definition: civect.h:96
void setarray(const double *a, size_t len)
Definition: civect.cc:728
void h0block_buf_precon(double *norm, int root)
Definition: civect.cc:3039
double checknorm()
Definition: civect.cc:2709
size_t * buf_size_
Definition: civect.h:104
struct params * CI_Params_
Definition: civect.h:70
void close_io_files(int keep)
Definition: civect.cc:1740
void copy(SharedCIVector src, int tvec, int ovec)
Definition: civect.cc:542
bool fopen_
Definition: civect.h:125
void buf_lock(double *a)
Definition: civect.cc:1545
Definition: structs.h:309
void max_abs_vals(int nval, int *iac, int *ibc, int *iaidx, int *ibidx, double *coeff, int neg_only)
Definition: civect.cc:747
Definition: structs.h:266
void common_init()
Definition: civect.cc:124
std::vector< int > Ib_code_
Definition: civect.h:83
Definition: structs.h:609
void calc_hd_block_mll(struct stringwr *alplist, struct stringwr *betlist, double **H0, double *oei, double *tei, double edrc, int nas, int nbs, int na, int nb, int nbf)
Definition: civect.cc:3888
void h0block_gather_vec(int vecode)
Definition: civect.cc:2961
int cur_vect_
Definition: civect.h:99
int nvect_
Definition: civect.h:97
void print()
Definition: civect.cc:1085
Definition: pointgrp.h:104
py::buffer_info array_interface()
Numpy interface to the current buffer.
Definition: civect.cc:567
void set_zero_block(int blocknum, int value)
Definition: civect.cc:3158
double dcalc_evangelisti(int rootnum, int num_vecs, double lambda, CIvect &Hd, CIvect &C, double *buf1, double *buf2, int precon, int L, struct stringwr **alplist, struct stringwr **betlist, double **alpha)
Definition: civect.cc:3253
void print_buf()
Definition: civect.cc:2572
double * buf_malloc()
Definition: civect.cc:461
void civ_xpeay(double a, CIvect &Y, int xvect, int yvect)
Definition: civect.cc:2642
int write(int tvec, int ibuf)
Definition: civect.cc:1815
struct H_zero_block * CI_H0block_
Definition: civect.h:71
void transp_block(int iblock, double **tmparr)
Definition: civect.cc:2664
int cur_size_
Definition: civect.h:121
double dcalc2(int rootnum, double lambda, CIvect &Hd, int precon, struct stringwr **alplist, struct stringwr **betlist)
Definition: civect.cc:2201
size_t strings2det(int alp_code, int alp_idx, int bet_code, int bet_idx)
Definition: civect.cc:861
std::vector< size_t > offset_
Definition: civect.h:86
void calc_hd_block_ave(struct stringwr *alplist, struct stringwr *betlist, double **H0, double *tf_oei, double *tei, double edrc, int nas, int nbs, int na, int nb, int nbf)
Definition: civect.cc:3555
void divide(SharedCIVector denom, double min_val, int tvec, int ovec)
Definition: civect.cc:552
void scale_sigma(CIvect &Hd, CIvect &C, struct stringwr **alplist, struct stringwr **betlist, int i, double *buf1, double *buf2)
Definition: civect.cc:3211
void wigner_E2k_formula(CIvect &Hd, CIvect &S, CIvect &C, struct stringwr **alplist, struct stringwr **betlist, double *buf1, double *buf2, int k, double *mp2k_energy, double **wfn_overlap, double **bvec_overlap, double *bvec_norm, int kvec_offset)
Definition: civect.cc:2342
void shift(double a, int tvec)
Definition: civect.cc:531
void scale(double a, int tvec)
Definition: civect.cc:523
struct calcinfo * CI_CalcInfo_
Definition: civect.h:69
void h0block_buf_ols(double *norm, double *ovrlap, double *c1norm, double E_est)
Definition: civect.cc:2919
void init_io_files(bool open_old)
Disk/memory manipulation.
Definition: civect.cc:1717
size_t vectlen_
Definition: civect.h:75
void print_fptrs()
Definition: civect.cc:2843
int nirreps_
Definition: civect.h:91
std::vector< int > Ib_size_
Definition: civect.h:85
void set_new_first_buf(int nfb)
Definition: civect.cc:3337
void symmetrize(double phase, int iblock)
Definition: civect.cc:1618
void symnormalize(double a, int tvec)
Definition: civect.cc:600
int Ms0_
Definition: civect.h:81
std::vector< int > units_
Definition: civect.h:102
int first_unit_
Definition: civect.h:122
CIvect()
Definition: civect.cc:85
void dcalc(int nr, int L, double **alpha, double *lambda, double *norm_arr, CIvect &C, CIvect &S, double *buf1, double *buf2, int *root_converged, int printflag, double *E_est)
Definition: civect.cc:2120
SharedWavefunction detci(SharedWavefunction, Options &)
Definition: detci.cc:65
std::vector< int > file_number_
Definition: civect.h:103
int in_file_
Definition: civect.h:117
int buf_locked_
Definition: civect.h:101
void restart_gather(int ivec, int nvec, int nroot, double **alpha, double *buffer1, double *buffer2)
Definition: civect.cc:2748
void set_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums, double *value)
Definition: civect.cc:1196
std::shared_ptr< psi::detci::CIvect > SharedCIVector
Definition: civect.h:46
void calc_hd_block_evangelisti(struct stringwr **alplist, struct stringwr **betlist, struct stringwr *alplist_local, struct stringwr *betlist_local, double **H0, double *tf_oei, double *tei, double edrc, int nas, int nbs, int na, int nb, int nbf)
Definition: civect.cc:3795
double operator*(CIvect &b)
Definition: civect.cc:700
double *** blocks_
Definition: civect.h:114
void calc_hd_block_z_ave(struct stringwr *alplist, struct stringwr *betlist, double **H0, double pert_param, double *tei, double edrc, int nas, int nbs, int na, int nb, int nbf)
Definition: civect.cc:3970
int read_new_first_buf()
Definition: civect.cc:3320
void write_num_vecs(int nv)
Definition: civect.cc:3357
double vdot(SharedCIVector b, int tvec, int ovec)
Definition: civect.cc:485
double ssq(struct stringwr *alplist, struct stringwr *betlist, double **CL, double **CR, int nas, int nbs, int Ja_list, int Jb_list)
Definition: civect.cc:4105
void symnorm(double a, int vecode, int gather_vec)
Definition: civect.cc:1354
int * first_ablk_
Definition: civect.h:110
double calc_ssq(double *buffer1, double *buffer2, struct stringwr **alplist, struct stringwr **betlist, int vec_num)
Definition: civect.cc:3078
double norm(int tvec)
Definition: civect.cc:656
Definition: structs.h:142
void zero()
Definition: civect.cc:2061
int new_first_buf_
Definition: civect.h:95
void write_toc()
Definition: civect.cc:3372
void set_nvect(int i)
Definition: civect.cc:476
std::vector< int > zero_blocks_
Definition: civect.h:116
void diag_mat_els(struct stringwr **alplist, struct stringwr **betlist, double *oei, double *tei, double edrc, int na, int nb, int nbf, int method)
Definition: civect.cc:872
int num_betcodes_
Definition: civect.h:90
double blk_max_abs_vals(int i, int offdiag, int nval, int *iac, int *ibc, int *iaidx, int *ibidx, double *coeff, double minval, int neg_only)
Definition: civect.cc:776
size_t get_max_blk_size()
Definition: civect.cc:2692
void h0block_buf_init()
Definition: civect.cc:2856
int print_lvl_
Definition: civect.h:124
void civect_psio_debug()
Definition: civect.cc:3383
int extras_
Definition: civect.h:118
void restart_reord_fp(int L)
Definition: civect.cc:2810
int cur_unit_
Definition: civect.h:120
EXTERN struct Params params
Definition: cc/ccdensity/globals.h:55
int codes_per_irrep_
Definition: civect.h:92
int num_alpcodes_
Definition: civect.h:89
void construct_kth_order_wf(CIvect &Hd, CIvect &S, CIvect &C, struct stringwr **alplist, struct stringwr **betlist, double *buf1, double *buf2, int k, double *mp_energy, double **bvec_overlap, double *bvec_norm)
Definition: civect.cc:2256
int read_num_vecs()
Definition: civect.cc:3343
int buf_total_
Definition: civect.h:94
Definition: structs.h:407
void h0block_gather_multivec(double *vec)
Definition: civect.cc:3006
int cur_buf_
Definition: civect.h:100
int subgr_per_irrep_
Definition: civect.h:123
void axpy(double a, SharedCIVector x, int tvec, int ovec)
BLAS equivalents for CIVectors.
Definition: civect.cc:513
int schmidt_add2(CIvect &c, int first_vec, int last_vec, int source_vec, int target_vec, double *dotval, double *nrm, double *ovlpmax)
Definition: civect.cc:1952
void diag_mat_els_otf(struct stringwr **alplist, struct stringwr **betlist, double *oei, double *tei, double edrc, int na, int nb, int nbf, int buf, int method)
Definition: civect.cc:996
double ** blockptr(int blknum)
Definition: civect.cc:1708
int * buf_offdiag_
Definition: civect.h:108
double zero_det(int iac, int ia, int ibc, int ib)
Definition: civect.cc:1490
int * last_ablk_
Definition: civect.h:111
int nunits_
Definition: civect.h:98
void set(int incor, int maxvect, int nunits, int funit, struct ci_blks *CIblks)
Definition: civect.cc:161
void det2strings(size_t det, int *alp_code, int *bet_code, int *alp_idx, int *bet_idx)
Definition: civect.cc:847
int * buf2blk_
Definition: civect.h:106
void write_new_first_buf()
Definition: civect.cc:3305
std::vector< int > Ia_code_
Definition: civect.h:82
int num_blocks_
Definition: civect.h:77
void calc_hd_block(struct stringwr *alplist, struct stringwr *betlist, double **H0, double *oei, double *tei, double edrc, int nas, int nbs, int na, int nb, int nbf)
Definition: civect.cc:3469
int icore_
Definition: civect.h:78
double dcalc3(double lambda, SharedCIVector Hd, int rootnum)
Specific CIVector operations.
Definition: civect.cc:575
void vector_multiply(double scale, SharedCIVector X, SharedCIVector Y, int tvec, int xvec, int yvec)
Definition: civect.cc:680
void sigma_renorm(int nr, int L, double renorm_C, CIvect &S, double *buf1, int printflag)
Definition: civect.cc:2080
size_t buffer_size_
Definition: civect.h:76
void gather(int ivec, int nvec, int nroot, double **alpha, CIvect &C)
Definition: civect.cc:2776