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-2017 The Psi4 Developers.
7  *
8  * The copyrights for code used from other parties are included in
9  * the corresponding files.
10  *
11  * This program is free software; you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation; either version 2 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License along
22  * with this program; if not, write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24  *
25  * @END LICENSE
26  */
27 
32 #ifndef _psi_src_bin_detci_civect_h
33 #define _psi_src_bin_detci_civect_h
34 
35 #include "psi4/pybind11.h"
36 
37 // Forward declarations
38 namespace psi { namespace detci {
39 typedef unsigned long int BIGINT;
40 struct calcinfo;
41 struct params;
42 struct H_zero_block;
43 struct ci_blks;
44 class CIWavefunction;
45 class CIvect;
46 typedef std::shared_ptr<psi::detci::CIvect> SharedCIVector;
47 }}
48 
49 namespace psi {
50 namespace detci {
51 
52 /*
53 ** CIVECT.H
54 **
55 ** Header file for CI Vector Class
56 **
57 ** David Sherrill, 15 June 1995
58 ** Center for Computational Quantum Chemistry
59 **
60 */
61 
62 class CIvect {
63  friend class CIWavefunction;
64 
65  protected:
66 
67  // Holds pointers to relevant CI structs
69  struct params *CI_Params_;
71 
72  void common_init(); /* common init func */
73 
74  BIGINT vectlen_; /* total vector length */
75  unsigned long buffer_size_; /* size of largest in-core chunk */
76  int num_blocks_; /* number of blocks in vector */
77  int icore_; /* in-core option. 1 = whole vector in-core,
78  2 = symm block in-core,
79  0 = one subblock in-core */
80  int Ms0_; /* is this a vector for M_s=0? 1=yes, 0=no */
81  std::vector<int> Ia_code_; /* each block's alpha string id code */
82  std::vector<int> Ib_code_; /* each block's beta string id code */
83  std::vector<int> Ia_size_; /* num alp strings in each block */
84  std::vector<int> Ib_size_; /* num bet strings in each block */
85  std::vector<BIGINT> offset_; /* offsets for absolute numbering. This
86  is a word offset, not a byte offset,
87  so unsigned long should be ok */
88  int num_alpcodes_; /* number of possible (total) alpha codes */
89  int num_betcodes_; /* number of possible (total) beta codes */
90  int nirreps_; /* dimension of next four arrays */
91  int codes_per_irrep_; /* number of codes per irrep (for alpha) */
92  int buf_per_vect_; /* number of buffers per CI vector */
93  int buf_total_; /* number of total buffers (all vectors) */
94  int new_first_buf_; /* after collapse, buffs get renumbered */
95  int maxvect_; /* max number of CI vectors */
96  int nvect_; /* number of CI vectors */
97  int nunits_; /* number of units (physical disk files) */
98  int cur_vect_; /* current vector number in core */
99  int cur_buf_; /* current buffer in core */
100  int buf_locked_; /* is a memory buffer locked in/available? */
101  std::vector<int> units_; /* file numbers */
102  std::vector<int> file_number_; /* unit number for given vector/block */
103  unsigned long *buf_size_; /* size of each buffer on disk
104  (0...buf_per_vect) */
105  int *buf2blk_; /* buffer number -> block number for
106  icore=0, else buf->irrep for icore=2 */
107  int *buf_offdiag_; /* is the buffer "off-diagonal"? only applies
108  to Ms=0. If Ms<>0, always=0 */
109  int *first_ablk_; /* first blocknum with a given Ia irrep */
110  int *last_ablk_; /* last blocknum with a given Ia irrep */
111  int **decode_; /* gives block number for a (alp,bet) code */
112  /* dimensions num_alpcodes * num_betcodes */
113  double ***blocks_; /* a matrix for each block */
114  double *buffer_; /* pointer to buffer, same as blocks[0][0] */
115  std::vector<int> zero_blocks_; /* array for which blocks happen to be 0 */
116  int in_file_; /* increment for how many buffers in a file */
117  int extras_; /* accounts for extra buffers */
118  int units_used_; /* accounts for number of unit files used */
119  int cur_unit_; /* current unit file */
120  int cur_size_; /* current size of buffer */
121  int first_unit_; /* first file unit number (if > 1) */
122  int subgr_per_irrep_; /* possible number of Olsen subgraphs per irrep */
123  int print_lvl_; /* print level*/
124  bool fopen_; /* Are CIVec files open? */
125 
126  double ssq(struct stringwr *alplist, struct stringwr *betlist, double **CL,
127  double **CR, int nas, int nbs, int Ja_list, int Jb_list);
128 
129  public:
130  CIvect();
131  CIvect(BIGINT vl, int nb, int incor, int ms0, int *iac, int *ibc, int *ias,
132  int *ibs, BIGINT *offs, int nac, int nbc, int nirr, int cdperirr,
133  int maxvect, int nunits, int funit, int *fablk, int *lablk, int **dc,
134  struct calcinfo *CI_CalcInfo, struct params *CI_Params,
135  struct H_zero_block *CI_H0block, bool buf_init = true);
136  CIvect(int incor, int maxvect, int nunits, int funit,
137  struct ci_blks *CIblks, struct calcinfo *CI_CalcInfo,
138  struct params *CI_Params, struct H_zero_block *CI_H0block,
139  bool buf_init = true);
140  ~CIvect();
141 
143  py::buffer_info array_interface();
144 
146  void axpy(double a, SharedCIVector x, int tvec, int ovec);
147  void scale(double a, int tvec);
148  void shift(double a, int tvec);
149  void copy(SharedCIVector src, int tvec, int ovec);
150  void divide(SharedCIVector denom, double min_val, int tvec, int ovec);
151  void zero(void);
152  double vdot(SharedCIVector b, int tvec, int ovec);
153  double norm(int tvec);
154 
155  // self += scale * a * b
156  void vector_multiply(double scale, SharedCIVector X, SharedCIVector Y, int tvec, int xvec, int yvec);
157 
159  double dcalc3(double lambda, SharedCIVector Hd, int rootnum);
160  void symnormalize(double a, int tvec);
161 
163  void init_io_files(bool open_old);
164  void close_io_files(int keep);
165  int read(int tvec, int ibuf);
166  int write(int tvec, int ibuf);
167  void buf_lock(double *a);
168  void buf_unlock(void);
169  double *buf_malloc(void);
170  void set_nvect(int i);
171 
172  // Questionable functions and/or should be private
173  void set(int incor, int maxvect, int nunits, int funit,
174  struct ci_blks *CIblks);
175  void set(BIGINT vl, int nb, int incor, int ms0, int *iac, int *ibc,
176  int *ias, int *ibs, BIGINT *offs, int nac, int nbc, int nirr,
177  int cdperirr, int maxvect, int nunits, int funit, int *fablk,
178  int *lablk, int **dc);
179  void print();
180  double operator*(CIvect &b);
181  void setarray(const double *a, BIGINT len);
182  void max_abs_vals(int nval, int *iac, int *ibc, int *iaidx, int *ibidx,
183  double *coeff, int neg_only);
184  double blk_max_abs_vals(int i, int offdiag, int nval, int *iac, int *ibc,
185  int *iaidx, int *ibidx, double *coeff,
186  double minval, int neg_only);
187  void det2strings(BIGINT det, int *alp_code, int *bet_code, int *alp_idx,
188  int *bet_idx);
189  BIGINT strings2det(int alp_code, int alp_idx, int bet_code, int bet_idx);
190  void diag_mat_els(struct stringwr **alplist, struct stringwr **betlist,
191  double *oei, double *tei, double edrc, int na, int nb,
192  int nbf, int method);
193  void diag_mat_els_otf(struct stringwr **alplist, struct stringwr **betlist,
194  double *oei, double *tei, double edrc, int na, int nb,
195  int nbf, int buf, int method);
196  void init_vals(int ivect, int nvals, int *alplist, int *alpidx,
197  int *betlist, int *betidx, int *blknums, double *value);
198  void set_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist,
199  int *betidx, int *blknums, double *value);
200  void extract_vals(int ivect, int nvals, int *alplist, int *alpidx,
201  int *betlist, int *betidx, int *blknums, double *value);
202  void symnorm(double a, int vecode, int gather_vec);
203  double zero_det(int iac, int ia, int ibc, int ib);
204  void scale(double a, int vecode, int gather_vec);
205  void symmetrize(double phase, int iblock);
206  double **blockptr(int blknum);
207  int schmidt_add(CIvect &c, int L);
208  int schmidt_add2(CIvect &c, int first_vec, int last_vec, int source_vec,
209  int target_vec, double *dotval, double *nrm,
210  double *ovlpmax);
211  void dcalc(int nr, int L, double **alpha, double *lambda, double *norm_arr,
212  CIvect &C, CIvect &S, double *buf1, double *buf2,
213  int *root_converged, int printflag,
214  double *E_est);
215  void sigma_renorm(int nr, int L, double renorm_C, CIvect &S, double *buf1,
216  int printflag);
217  double dcalc2(int rootnum, double lambda, CIvect &Hd, int precon,
218  struct stringwr **alplist, struct stringwr **betlist);
219  double dcalc_evangelisti(int rootnum, int num_vecs, double lambda,
220  CIvect &Hd, CIvect &C, double *buf1, double *buf2,
221  int precon, int L, struct stringwr **alplist,
222  struct stringwr **betlist, double **alpha);
223  void construct_kth_order_wf(CIvect &Hd, CIvect &S, CIvect &C,
224  struct stringwr **alplist,
225  struct stringwr **betlist, double *buf1,
226  double *buf2, int k, double *mp_energy,
227  double **bvec_overlap, double *bvec_norm);
228  void wigner_E2k_formula(CIvect &Hd, CIvect &S, CIvect &C,
229  struct stringwr **alplist,
230  struct stringwr **betlist, double *buf1,
231  double *buf2, int k, double *mp2k_energy,
232  double **wfn_overlap, double **bvec_overlap,
233  double *bvec_norm, int kvec_offset);
234  void print_buf();
235  void civ_xeay(double a, CIvect &Y, int xvect, int yvect);
236  void civ_xpeay(double a, CIvect &Y, int xvect, int yvect);
237  void transp_block(int iblock, double **tmparr);
238  unsigned long get_max_blk_size(void);
239  double checknorm(void);
240  void copy(CIvect &Src, int targetvec, int srcvec);
241  void restart_gather(int ivec, int nvec, int nroot, double **alpha,
242  double *buffer1, double *buffer2);
243  void gather(int ivec, int nvec, int nroot, double **alpha, CIvect &C);
244  void restart_reord_fp(int L);
245  void print_fptrs(void);
246  double calc_ssq(double *buffer1, double *buffer2, struct stringwr **alplist,
247  struct stringwr **betlist, int vec_num);
248  void h0block_buf_init(void);
249  void h0block_buf_ols(double *norm, double *ovrlap, double *c1norm,
250  double E_est);
251  void h0block_buf_precon(double *norm, int root);
252  void h0block_gather_vec(int vecode);
253  void h0block_gather_multivec(double *vec);
254  int check_zero_block(int blocknum);
255  void set_zero_block(int blocknum, int value);
256  void set_zero_blocks_all(void);
257  void copy_zero_blocks(CIvect &src);
258  void print_zero_blocks(void);
259  void scale_sigma(CIvect &Hd, CIvect &C, struct stringwr **alplist,
260  struct stringwr **betlist, int i, double *buf1,
261  double *buf2);
262  int read_new_first_buf(void);
263  void write_new_first_buf(void);
264  void set_new_first_buf(int nfb);
265  int read_num_vecs(void);
266  void write_num_vecs(int nv);
267  void write_toc(void);
268  void civect_psio_debug(void);
269  void pt_correction(struct stringwr **alplist, struct stringwr **betlist);
270  double compute_follow_overlap(int troot, int ncoef, double *coef, int *Iac,
271  int *Iaridx, int *Ibc, int *Ibridx);
272 
273  void calc_hd_block(struct stringwr *alplist, struct stringwr *betlist,
274  double **H0, double *oei, double *tei, double edrc,
275  int nas, int nbs, int na, int nb, int nbf);
276  void calc_hd_block_ave(struct stringwr *alplist, struct stringwr *betlist,
277  double **H0, double *tf_oei, double *tei,
278  double edrc, int nas, int nbs, int na, int nb,
279  int nbf);
280  void calc_hd_block_z_ave(struct stringwr *alplist, struct stringwr *betlist,
281  double **H0, double pert_param, double *tei,
282  double edrc, int nas, int nbs, int na, int nb,
283  int nbf);
284  void calc_hd_block_orbenergy(struct stringwr *alplist,
285  struct stringwr *betlist, double **H0,
286  double *oei, double *tei, double edrc, int nas,
287  int nbs, int na, int nb, int nbf);
288  void calc_hd_block_mll(struct stringwr *alplist, struct stringwr *betlist,
289  double **H0, double *oei, double *tei, double edrc,
290  int nas, int nbs, int na, int nb, int nbf);
291  void calc_hd_block_evangelisti(struct stringwr **alplist,
292  struct stringwr **betlist,
293  struct stringwr *alplist_local,
294  struct stringwr *betlist_local, double **H0,
295  double *tf_oei, double *tei, double edrc,
296  int nas, int nbs, int na, int nb, int nbf);
297 };
298 }
299 } // namespace psi::detci
300 
301 #endif // header guard
double * buffer_
Definition: civect.h:114
void setarray(const double *a, BIGINT len)
Definition: civect.cc:753
int ** decode_
Definition: civect.h:111
~CIvect()
Definition: civect.cc:440
Definition: ciwave.h:74
int units_used_
Definition: civect.h:118
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:3941
unsigned long get_max_blk_size(void)
Definition: civect.cc:2851
void extract_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums, double *value)
Definition: civect.cc:1359
void civ_xeay(double a, CIvect &Y, int xvect, int yvect)
Definition: civect.cc:2769
void denom(struct L_Params)
Definition: cclambda/denom.cc:46
std::vector< int > Ia_size_
Definition: civect.h:83
Definition: civect.h:62
void copy_zero_blocks(CIvect &src)
Definition: civect.cc:3363
void init_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums, double *value)
Definition: civect.cc:1212
int check_zero_block(int blocknum)
Definition: civect.cc:3330
double compute_follow_overlap(int troot, int ncoef, double *coef, int *Iac, int *Iaridx, int *Ibc, int *Ibridx)
Definition: civect.cc:3640
int buf_per_vect_
Definition: civect.h:92
int schmidt_add(CIvect &c, int L)
Definition: civect.cc:1996
void zero(void)
Definition: civect.cc:2190
void pt_correction(struct stringwr **alplist, struct stringwr **betlist)
Definition: civect.cc:3614
int read(int tvec, int ibuf)
Definition: civect.cc:1885
int maxvect_
Definition: civect.h:95
void h0block_buf_precon(double *norm, int root)
Definition: civect.cc:3218
struct params * CI_Params_
Definition: civect.h:69
void close_io_files(int keep)
Definition: civect.cc:1861
void copy(SharedCIVector src, int tvec, int ovec)
Definition: civect.cc:562
bool fopen_
Definition: civect.h:124
void buf_lock(double *a)
Definition: civect.cc:1649
Definition: structs.h:324
void max_abs_vals(int nval, int *iac, int *ibc, int *iaidx, int *ibidx, double *coeff, int neg_only)
Definition: civect.cc:772
void print_zero_blocks(void)
Definition: civect.cc:3373
Definition: structs.h:280
void common_init()
Definition: civect.cc:133
std::vector< int > Ib_code_
Definition: civect.h:82
Definition: structs.h:627
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:4132
void h0block_gather_vec(int vecode)
Definition: civect.cc:3144
int cur_vect_
Definition: civect.h:98
double * buf_malloc(void)
Definition: civect.cc:481
void civect_psio_debug(void)
Definition: civect.cc:3593
int nvect_
Definition: civect.h:96
void print()
Definition: civect.cc:1163
Definition: pointgrp.h:105
std::vector< BIGINT > offset_
Definition: civect.h:85
unsigned long * buf_size_
Definition: civect.h:103
py::buffer_info array_interface()
Numpy interface to the current buffer.
Definition: civect.cc:589
void set_zero_block(int blocknum, int value)
Definition: civect.cc:3340
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:3447
void print_buf()
Definition: civect.cc:2716
void civ_xpeay(double a, CIvect &Y, int xvect, int yvect)
Definition: civect.cc:2796
int write(int tvec, int ibuf)
Definition: civect.cc:1939
struct H_zero_block * CI_H0block_
Definition: civect.h:70
void transp_block(int iblock, double **tmparr)
Definition: civect.cc:2820
int cur_size_
Definition: civect.h:120
double dcalc2(int rootnum, double lambda, CIvect &Hd, int precon, struct stringwr **alplist, struct stringwr **betlist)
Definition: civect.cc:2342
void buf_unlock(void)
Definition: civect.cc:1707
int read_num_vecs(void)
Definition: civect.cc:3546
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:3779
void divide(SharedCIVector denom, double min_val, int tvec, int ovec)
Definition: civect.cc:573
void scale_sigma(CIvect &Hd, CIvect &C, struct stringwr **alplist, struct stringwr **betlist, int i, double *buf1, double *buf2)
Definition: civect.cc:3402
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:2486
void shift(double a, int tvec)
Definition: civect.cc:551
void scale(double a, int tvec)
Definition: civect.cc:543
struct calcinfo * CI_CalcInfo_
Definition: civect.h:68
void h0block_buf_ols(double *norm, double *ovrlap, double *c1norm, double E_est)
Definition: civect.cc:3101
void init_io_files(bool open_old)
Disk/memory manipulation.
Definition: civect.cc:1838
int nirreps_
Definition: civect.h:90
std::vector< int > Ib_size_
Definition: civect.h:84
void set_new_first_buf(int nfb)
Definition: civect.cc:3536
void symmetrize(double phase, int iblock)
Definition: civect.cc:1728
void symnormalize(double a, int tvec)
Definition: civect.cc:626
int Ms0_
Definition: civect.h:80
std::vector< int > units_
Definition: civect.h:101
int first_unit_
Definition: civect.h:121
CIvect()
Definition: civect.cc:87
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:2257
SharedWavefunction detci(SharedWavefunction, Options &)
Definition: detci.cc:64
std::vector< int > file_number_
Definition: civect.h:102
int in_file_
Definition: civect.h:116
int buf_locked_
Definition: civect.h:100
void restart_gather(int ivec, int nvec, int nroot, double **alpha, double *buffer1, double *buffer2)
Definition: civect.cc:2910
void set_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums, double *value)
Definition: civect.cc:1282
std::shared_ptr< psi::detci::CIvect > SharedCIVector
Definition: civect.h:45
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:4029
double operator*(CIvect &b)
Definition: civect.cc:726
double *** blocks_
Definition: civect.h:113
double checknorm(void)
Definition: civect.cc:2870
void h0block_buf_init(void)
Definition: civect.cc:3033
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:4216
void write_num_vecs(int nv)
Definition: civect.cc:3562
double vdot(SharedCIVector b, int tvec, int ovec)
Definition: civect.cc:505
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:4356
unsigned long buffer_size_
Definition: civect.h:75
void symnorm(double a, int vecode, int gather_vec)
Definition: civect.cc:1449
int * first_ablk_
Definition: civect.h:109
double calc_ssq(double *buffer1, double *buffer2, struct stringwr **alplist, struct stringwr **betlist, int vec_num)
Definition: civect.cc:3257
double norm(int tvec)
Definition: civect.cc:682
void det2strings(BIGINT det, int *alp_code, int *bet_code, int *alp_idx, int *bet_idx)
Definition: civect.cc:884
BIGINT vectlen_
Definition: civect.h:74
Definition: structs.h:149
int new_first_buf_
Definition: civect.h:94
void set_zero_blocks_all(void)
Definition: civect.cc:3355
void set_nvect(int i)
Definition: civect.cc:496
unsigned long int BIGINT
Definition: civect.h:39
std::vector< int > zero_blocks_
Definition: civect.h:115
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:915
int num_betcodes_
Definition: civect.h:89
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:809
int print_lvl_
Definition: civect.h:123
int read_new_first_buf(void)
Definition: civect.cc:3516
int extras_
Definition: civect.h:117
void restart_reord_fp(int L)
Definition: civect.cc:2979
int cur_unit_
Definition: civect.h:119
int codes_per_irrep_
Definition: civect.h:91
int num_alpcodes_
Definition: civect.h:88
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:2397
int buf_total_
Definition: civect.h:93
Definition: structs.h:424
void h0block_gather_multivec(double *vec)
Definition: civect.cc:3185
int cur_buf_
Definition: civect.h:99
int subgr_per_irrep_
Definition: civect.h:122
void axpy(double a, SharedCIVector x, int tvec, int ovec)
BLAS equivalents for CIVectors.
Definition: civect.cc:533
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:2081
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:1058
double ** blockptr(int blknum)
Definition: civect.cc:1825
void print_fptrs(void)
Definition: civect.cc:3014
int * buf_offdiag_
Definition: civect.h:107
double zero_det(int iac, int ia, int ibc, int ib)
Definition: civect.cc:1589
int * last_ablk_
Definition: civect.h:110
int nunits_
Definition: civect.h:97
void set(int incor, int maxvect, int nunits, int funit, struct ci_blks *CIblks)
Definition: civect.cc:170
int * buf2blk_
Definition: civect.h:105
BIGINT strings2det(int alp_code, int alp_idx, int bet_code, int bet_idx)
Definition: civect.cc:901
std::vector< int > Ia_code_
Definition: civect.h:81
int num_blocks_
Definition: civect.h:76
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:3688
int icore_
Definition: civect.h:77
double dcalc3(double lambda, SharedCIVector Hd, int rootnum)
Specific CIVector operations.
Definition: civect.cc:601
void vector_multiply(double scale, SharedCIVector X, SharedCIVector Y, int tvec, int xvec, int yvec)
Definition: civect.cc:706
void write_toc(void)
Definition: civect.cc:3579
void sigma_renorm(int nr, int L, double renorm_C, CIvect &S, double *buf1, int printflag)
Definition: civect.cc:2214
void write_new_first_buf(void)
Definition: civect.cc:3499
void gather(int ivec, int nvec, int nroot, double **alpha, CIvect &C)
Definition: civect.cc:2942