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 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 { namespace detci {
40 typedef unsigned long int BIGINT;
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 }}
49 
50 namespace psi {
51 namespace detci {
52 
53 /*
54 ** CIVECT.H
55 **
56 ** Header file for CI Vector Class
57 **
58 ** David Sherrill, 15 June 1995
59 ** Center for Computational Quantum Chemistry
60 **
61 */
62 
63 class CIvect {
64  friend class CIWavefunction;
65 
66  protected:
67 
68  // Holds pointers to relevant CI structs
70  struct params *CI_Params_;
72 
73  void common_init(); /* common init func */
74 
75  BIGINT vectlen_; /* total vector length */
76  unsigned long 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<BIGINT> offset_; /* offsets for absolute numbering. This
87  is a word offset, not a byte offset,
88  so unsigned long 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  unsigned long *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,
128  double **CR, int nas, int nbs, int Ja_list, int Jb_list);
129 
130  public:
131  CIvect();
132  CIvect(BIGINT vl, int nb, int incor, int ms0, int *iac, int *ibc, int *ias,
133  int *ibs, BIGINT *offs, int nac, int nbc, int nirr, int cdperirr,
134  int maxvect, int nunits, int funit, int *fablk, int *lablk, int **dc,
135  struct calcinfo *CI_CalcInfo, struct params *CI_Params,
136  struct H_zero_block *CI_H0block, bool buf_init = true);
137  CIvect(int incor, int maxvect, int nunits, int funit,
138  struct ci_blks *CIblks, struct calcinfo *CI_CalcInfo,
139  struct params *CI_Params, struct H_zero_block *CI_H0block,
140  bool buf_init = true);
141  ~CIvect();
142 
144  py::buffer_info array_interface();
145 
147  void axpy(double a, SharedCIVector x, int tvec, int ovec);
148  void scale(double a, int tvec);
149  void shift(double a, int tvec);
150  void copy(SharedCIVector src, int tvec, int ovec);
151  void divide(SharedCIVector denom, double min_val, int tvec, int ovec);
152  void zero(void);
153  double vdot(SharedCIVector b, int tvec, int ovec);
154  double norm(int tvec);
155 
156  // self += scale * a * b
157  void vector_multiply(double scale, SharedCIVector X, SharedCIVector Y, int tvec, int xvec, int yvec);
158 
160  double dcalc3(double lambda, SharedCIVector Hd, int rootnum);
161  void symnormalize(double a, int tvec);
162 
164  void init_io_files(bool open_old);
165  void close_io_files(int keep);
166  int read(int tvec, int ibuf);
167  int write(int tvec, int ibuf);
168  void buf_lock(double *a);
169  void buf_unlock(void);
170  double *buf_malloc(void);
171  void set_nvect(int i);
172 
173  // Questionable functions and/or should be private
174  void set(int incor, int maxvect, int nunits, int funit,
175  struct ci_blks *CIblks);
176  void set(BIGINT vl, int nb, int incor, int ms0, int *iac, int *ibc,
177  int *ias, int *ibs, BIGINT *offs, int nac, int nbc, int nirr,
178  int cdperirr, int maxvect, int nunits, int funit, int *fablk,
179  int *lablk, int **dc);
180  void print();
181  double operator*(CIvect &b);
182  void setarray(const double *a, BIGINT len);
183  void max_abs_vals(int nval, int *iac, int *ibc, int *iaidx, int *ibidx,
184  double *coeff, int neg_only);
185  double blk_max_abs_vals(int i, int offdiag, int nval, int *iac, int *ibc,
186  int *iaidx, int *ibidx, double *coeff,
187  double minval, int neg_only);
188  void det2strings(BIGINT det, int *alp_code, int *bet_code, int *alp_idx,
189  int *bet_idx);
190  BIGINT strings2det(int alp_code, int alp_idx, int bet_code, int bet_idx);
191  void diag_mat_els(struct stringwr **alplist, struct stringwr **betlist,
192  double *oei, double *tei, double edrc, int na, int nb,
193  int nbf, int method);
194  void diag_mat_els_otf(struct stringwr **alplist, struct stringwr **betlist,
195  double *oei, double *tei, double edrc, int na, int nb,
196  int nbf, int buf, int method);
197  void init_vals(int ivect, int nvals, int *alplist, int *alpidx,
198  int *betlist, int *betidx, int *blknums, double *value);
199  void set_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist,
200  int *betidx, int *blknums, double *value);
201  void extract_vals(int ivect, int nvals, int *alplist, int *alpidx,
202  int *betlist, int *betidx, int *blknums, double *value);
203  void symnorm(double a, int vecode, int gather_vec);
204  double zero_det(int iac, int ia, int ibc, int ib);
205  void scale(double a, int vecode, int gather_vec);
206  void symmetrize(double phase, int iblock);
207  double **blockptr(int blknum);
208  int schmidt_add(CIvect &c, int L);
209  int schmidt_add2(CIvect &c, int first_vec, int last_vec, int source_vec,
210  int target_vec, double *dotval, double *nrm,
211  double *ovlpmax);
212  void dcalc(int nr, int L, double **alpha, double *lambda, double *norm_arr,
213  CIvect &C, CIvect &S, double *buf1, double *buf2,
214  int *root_converged, int printflag,
215  double *E_est);
216  void sigma_renorm(int nr, int L, double renorm_C, CIvect &S, double *buf1,
217  int printflag);
218  double dcalc2(int rootnum, double lambda, CIvect &Hd, int precon,
219  struct stringwr **alplist, struct stringwr **betlist);
220  double dcalc_evangelisti(int rootnum, int num_vecs, double lambda,
221  CIvect &Hd, CIvect &C, double *buf1, double *buf2,
222  int precon, int L, struct stringwr **alplist,
223  struct stringwr **betlist, double **alpha);
224  void construct_kth_order_wf(CIvect &Hd, CIvect &S, CIvect &C,
225  struct stringwr **alplist,
226  struct stringwr **betlist, double *buf1,
227  double *buf2, int k, double *mp_energy,
228  double **bvec_overlap, double *bvec_norm);
229  void wigner_E2k_formula(CIvect &Hd, CIvect &S, CIvect &C,
230  struct stringwr **alplist,
231  struct stringwr **betlist, double *buf1,
232  double *buf2, int k, double *mp2k_energy,
233  double **wfn_overlap, double **bvec_overlap,
234  double *bvec_norm, int kvec_offset);
235  void print_buf();
236  void civ_xeay(double a, CIvect &Y, int xvect, int yvect);
237  void civ_xpeay(double a, CIvect &Y, int xvect, int yvect);
238  void transp_block(int iblock, double **tmparr);
239  unsigned long get_max_blk_size(void);
240  double checknorm(void);
241  void copy(CIvect &Src, int targetvec, int srcvec);
242  void restart_gather(int ivec, int nvec, int nroot, double **alpha,
243  double *buffer1, double *buffer2);
244  void gather(int ivec, int nvec, int nroot, double **alpha, CIvect &C);
245  void restart_reord_fp(int L);
246  void print_fptrs(void);
247  double calc_ssq(double *buffer1, double *buffer2, struct stringwr **alplist,
248  struct stringwr **betlist, int vec_num);
249  void h0block_buf_init(void);
250  void h0block_buf_ols(double *norm, double *ovrlap, double *c1norm,
251  double E_est);
252  void h0block_buf_precon(double *norm, int root);
253  void h0block_gather_vec(int vecode);
254  void h0block_gather_multivec(double *vec);
255  int check_zero_block(int blocknum);
256  void set_zero_block(int blocknum, int value);
257  void set_zero_blocks_all(void);
258  void copy_zero_blocks(CIvect &src);
259  void print_zero_blocks(void);
260  void scale_sigma(CIvect &Hd, CIvect &C, struct stringwr **alplist,
261  struct stringwr **betlist, int i, double *buf1,
262  double *buf2);
263  int read_new_first_buf(void);
264  void write_new_first_buf(void);
265  void set_new_first_buf(int nfb);
266  int read_num_vecs(void);
267  void write_num_vecs(int nv);
268  void write_toc(void);
269  void civect_psio_debug(void);
270  void pt_correction(struct stringwr **alplist, struct stringwr **betlist);
271  double compute_follow_overlap(int troot, int ncoef, double *coef, int *Iac,
272  int *Iaridx, int *Ibc, int *Ibridx);
273 
274  void calc_hd_block(struct stringwr *alplist, struct stringwr *betlist,
275  double **H0, double *oei, double *tei, double edrc,
276  int nas, int nbs, int na, int nb, int nbf);
277  void calc_hd_block_ave(struct stringwr *alplist, struct stringwr *betlist,
278  double **H0, double *tf_oei, double *tei,
279  double edrc, int nas, int nbs, int na, int nb,
280  int nbf);
281  void calc_hd_block_z_ave(struct stringwr *alplist, struct stringwr *betlist,
282  double **H0, double pert_param, double *tei,
283  double edrc, int nas, int nbs, int na, int nb,
284  int nbf);
285  void calc_hd_block_orbenergy(struct stringwr *alplist,
286  struct stringwr *betlist, double **H0,
287  double *oei, double *tei, double edrc, int nas,
288  int nbs, int na, int nb, int nbf);
289  void calc_hd_block_mll(struct stringwr *alplist, struct stringwr *betlist,
290  double **H0, double *oei, double *tei, double edrc,
291  int nas, int nbs, int na, int nb, int nbf);
292  void calc_hd_block_evangelisti(struct stringwr **alplist,
293  struct stringwr **betlist,
294  struct stringwr *alplist_local,
295  struct stringwr *betlist_local, double **H0,
296  double *tf_oei, double *tei, double edrc,
297  int nas, int nbs, int na, int nb, int nbf);
298 };
299 }
300 } // namespace psi::detci
301 
302 #endif // header guard
double * buffer_
Definition: civect.h:115
void setarray(const double *a, BIGINT len)
Definition: civect.cc:754
int ** decode_
Definition: civect.h:112
~CIvect()
Definition: civect.cc:441
Definition: ciwave.h:71
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:3942
unsigned long get_max_blk_size(void)
Definition: civect.cc:2852
void extract_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums, double *value)
Definition: civect.cc:1360
void civ_xeay(double a, CIvect &Y, int xvect, int yvect)
Definition: civect.cc:2770
void denom(struct L_Params)
Definition: cclambda/denom.cc:47
std::vector< int > Ia_size_
Definition: civect.h:84
Definition: civect.h:63
void copy_zero_blocks(CIvect &src)
Definition: civect.cc:3364
void init_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums, double *value)
Definition: civect.cc:1213
int check_zero_block(int blocknum)
Definition: civect.cc:3331
double compute_follow_overlap(int troot, int ncoef, double *coef, int *Iac, int *Iaridx, int *Ibc, int *Ibridx)
Definition: civect.cc:3641
int buf_per_vect_
Definition: civect.h:93
int schmidt_add(CIvect &c, int L)
Definition: civect.cc:1997
void zero(void)
Definition: civect.cc:2191
void pt_correction(struct stringwr **alplist, struct stringwr **betlist)
Definition: civect.cc:3615
int read(int tvec, int ibuf)
Definition: civect.cc:1886
int maxvect_
Definition: civect.h:96
void h0block_buf_precon(double *norm, int root)
Definition: civect.cc:3219
struct params * CI_Params_
Definition: civect.h:70
void close_io_files(int keep)
Definition: civect.cc:1862
void copy(SharedCIVector src, int tvec, int ovec)
Definition: civect.cc:563
bool fopen_
Definition: civect.h:125
void buf_lock(double *a)
Definition: civect.cc:1650
Definition: structs.h:325
void max_abs_vals(int nval, int *iac, int *ibc, int *iaidx, int *ibidx, double *coeff, int neg_only)
Definition: civect.cc:773
void print_zero_blocks(void)
Definition: civect.cc:3374
Definition: structs.h:281
void common_init()
Definition: civect.cc:134
std::vector< int > Ib_code_
Definition: civect.h:83
Definition: structs.h:628
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:4133
void h0block_gather_vec(int vecode)
Definition: civect.cc:3145
int cur_vect_
Definition: civect.h:99
double * buf_malloc(void)
Definition: civect.cc:482
void civect_psio_debug(void)
Definition: civect.cc:3594
int nvect_
Definition: civect.h:97
void print()
Definition: civect.cc:1164
Definition: pointgrp.h:106
std::vector< BIGINT > offset_
Definition: civect.h:86
unsigned long * buf_size_
Definition: civect.h:104
py::buffer_info array_interface()
Numpy interface to the current buffer.
Definition: civect.cc:590
void set_zero_block(int blocknum, int value)
Definition: civect.cc:3341
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:3448
void print_buf()
Definition: civect.cc:2717
void civ_xpeay(double a, CIvect &Y, int xvect, int yvect)
Definition: civect.cc:2797
int write(int tvec, int ibuf)
Definition: civect.cc:1940
struct H_zero_block * CI_H0block_
Definition: civect.h:71
void transp_block(int iblock, double **tmparr)
Definition: civect.cc:2821
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:2343
void buf_unlock(void)
Definition: civect.cc:1708
int read_num_vecs(void)
Definition: civect.cc:3547
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:3780
void divide(SharedCIVector denom, double min_val, int tvec, int ovec)
Definition: civect.cc:574
void scale_sigma(CIvect &Hd, CIvect &C, struct stringwr **alplist, struct stringwr **betlist, int i, double *buf1, double *buf2)
Definition: civect.cc:3403
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:2487
void shift(double a, int tvec)
Definition: civect.cc:552
void scale(double a, int tvec)
Definition: civect.cc:544
struct calcinfo * CI_CalcInfo_
Definition: civect.h:69
void h0block_buf_ols(double *norm, double *ovrlap, double *c1norm, double E_est)
Definition: civect.cc:3102
void init_io_files(bool open_old)
Disk/memory manipulation.
Definition: civect.cc:1839
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:3537
void symmetrize(double phase, int iblock)
Definition: civect.cc:1729
void symnormalize(double a, int tvec)
Definition: civect.cc:627
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:88
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:2258
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:2911
void set_vals(int ivect, int nvals, int *alplist, int *alpidx, int *betlist, int *betidx, int *blknums, double *value)
Definition: civect.cc:1283
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:4030
double operator*(CIvect &b)
Definition: civect.cc:727
double *** blocks_
Definition: civect.h:114
double checknorm(void)
Definition: civect.cc:2871
void h0block_buf_init(void)
Definition: civect.cc:3034
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:4217
void write_num_vecs(int nv)
Definition: civect.cc:3563
double vdot(SharedCIVector b, int tvec, int ovec)
Definition: civect.cc:506
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:4357
unsigned long buffer_size_
Definition: civect.h:76
void symnorm(double a, int vecode, int gather_vec)
Definition: civect.cc:1450
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:3258
double norm(int tvec)
Definition: civect.cc:683
void det2strings(BIGINT det, int *alp_code, int *bet_code, int *alp_idx, int *bet_idx)
Definition: civect.cc:885
BIGINT vectlen_
Definition: civect.h:75
Definition: structs.h:150
int new_first_buf_
Definition: civect.h:95
void set_zero_blocks_all(void)
Definition: civect.cc:3356
void set_nvect(int i)
Definition: civect.cc:497
unsigned long int BIGINT
Definition: civect.h:40
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:916
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:810
int print_lvl_
Definition: civect.h:124
int read_new_first_buf(void)
Definition: civect.cc:3517
int extras_
Definition: civect.h:118
void restart_reord_fp(int L)
Definition: civect.cc:2980
int cur_unit_
Definition: civect.h:120
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:2398
int buf_total_
Definition: civect.h:94
Definition: structs.h:425
void h0block_gather_multivec(double *vec)
Definition: civect.cc:3186
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:534
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:2082
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:1059
double ** blockptr(int blknum)
Definition: civect.cc:1826
void print_fptrs(void)
Definition: civect.cc:3015
int * buf_offdiag_
Definition: civect.h:108
double zero_det(int iac, int ia, int ibc, int ib)
Definition: civect.cc:1590
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:171
int * buf2blk_
Definition: civect.h:106
BIGINT strings2det(int alp_code, int alp_idx, int bet_code, int bet_idx)
Definition: civect.cc:902
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:3689
int icore_
Definition: civect.h:78
double dcalc3(double lambda, SharedCIVector Hd, int rootnum)
Specific CIVector operations.
Definition: civect.cc:602
void vector_multiply(double scale, SharedCIVector X, SharedCIVector Y, int tvec, int xvec, int yvec)
Definition: civect.cc:707
void write_toc(void)
Definition: civect.cc:3580
void sigma_renorm(int nr, int L, double renorm_C, CIvect &S, double *buf1, int printflag)
Definition: civect.cc:2215
void write_new_first_buf(void)
Definition: civect.cc:3500
void gather(int ivec, int nvec, int nroot, double **alpha, CIvect &C)
Definition: civect.cc:2943