Psi4
structs.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 /*
34 ** STRUCTS.H
35 **
36 ** C. David Sherrill
37 ** Center for Computational Quantum Chemistry
38 ** University of Georgia
39 ** 1996
40 */
41 
42 #ifndef _psi_src_bin_detci_structs_h
43 #define _psi_src_bin_detci_structs_h
44 
45 #include <string>
46  #include "psi4/pragma.h"
47  PRAGMA_WARNING_PUSH
48  PRAGMA_WARNING_IGNORE_DEPRECATED_DECLARATIONS
49  #include <memory>
52 #include "psi4/libmints/typedefs.h"
54 
55 
56 namespace psi { namespace detci {
57 
58 /*** DEFINES ***/
59 
60 #define CI_BLK_MAX 5000
61 #define IOFF_MAX 50604
62 
63 #define PARM_GUESS_VEC_UNIT 0
64 #define PARM_GUESS_VEC_H0_BLOCK 1
65 #define PARM_GUESS_VEC_DFILE 3
66 #define PARM_OPENTYPE_UNKNOWN -1
67 #define PARM_OPENTYPE_NONE 0
68 #define PARM_OPENTYPE_HIGHSPIN 1
69 #define PARM_OPENTYPE_SINGLET 2
70 #define PARM_OUTFILE_MAX 132
71 #define METHOD_RSP 0
72 #define METHOD_OLSEN 1
73 #define METHOD_MITRUSHENKOV 2
74 #define METHOD_DAVIDSON_LIU_SEM 3
75 #define METHOD_RSPTEST_OF_SEM 4
76 #define PRECON_LANCZOS 0
77 #define PRECON_DAVIDSON 1
78 #define PRECON_EVANGELISTI 2
79 #define PRECON_GEN_DAVIDSON 3
80 #define PRECON_H0BLOCK_INVERT 4
81 #define PRECON_H0BLOCK_ITER_INVERT 5
82 #define PRECON_H0BLOCK_COUPLING 6
83 #define MULT 0
84 #define DIV 1
85 #define UPDATE_DAVIDSON 1
86 #define UPDATE_OLSEN 2
87 #define CI_VEC 0
88 #define SIGMA_VEC 1
89 #define TRUE 1
90 #define FALSE 0
91 #define HD_EXACT 0
92 #define HD_KAVE 1
93 #define ORB_ENER 2
94 #define EVANGELISTI 3
95 #define LEININGER 4
96 #define Z_HD_KAVE 5
97 
98 /*
99  * string with replacement list
100  *
101  * For each string, provide:
102  *
103  * occs: a list of all the occupied orbitals for this string
104  * (n.b. unsigned char, so limited to 256 (active) orbitals for now)
105  *
106  * Then, this is followed by information about all the strings that
107  * can be generated by replacing orbital j with orbital i, i.e.,
108  *
109  * |new_string> = ${\hat E}_{ij}$ |string>
110  *
111  * This information is grouped by the "string code" or "string list" for the
112  * excited string, |new_string>. In a full CI, this just numbers the irrep
113  * of the string
114  * produced by the excitation (e.g., in C2v code 0 is a1, code 1 is a2,
115  * etc.). In a RAS, this is a more complicated code that gives a
116  * combo of irrep, and the number of holes in RAS I and particles in RAS
117  * III, etc.
118  *
119  * cnt[code]: Number of strings belonging to list code that can be
120  * reached by single replacements ${\hat E}_{ij}$ from the current
121  * string. Loop excited strings for this target code from 0 to
122  * cnt[code]... let's call the index of each string in this group "p"
123  * below.
124  *
125  * ij[code][p]: Composide index ij that gives new string p
126  * to string list [code]. Packed into a composite index using
127  * ij = ioff[MAX0(i,j)] + MIN0(i,j). Appropriate for accessing
128  * quantities with i,j permutational symmetry.
129  *
130  * oij[code][p]: Composite index ij that gives new string p belonging
131  * to string list [code]. Packed into a composite index using
132  * ij = i * num_ci_orbs + j. Appropriate for accessing packed quantities
133  * without i,j permutationa.l symmetry.
134  *
135  * ridx[code][p]: The relative index of new string p within the
136  * the string list[code].
137  *
138  * sgn[code][p]: The sign of the generated string p relative to its
139  * canonical form (+/- 1).
140  */
141 
142 struct stringwr {
143  unsigned char *occs;
144  int **ij;
145  int **oij;
146  size_t **ridx;
147  signed char **sgn;
148  int *cnt;
149  };
150 
151 
152 struct level {
153  int num_j;
154  int *a;
155  int *b;
156  int **k;
157  int **kbar;
158  int *y;
159  int *x;
160  };
161 
162 struct stringgraph {
163  int offset;
165  struct level *lvl;
166  int ***ktmp; /* ktmp[case][row][level] */
167  };
168 
169 
170 /*
171 ** OLSEN_GRAPH structure. This maintains a graphical
172 ** representation of alpha and/or beta strings according to the method
173 ** of Roos and Olsen, which maintains a different subgraph for each
174 ** possible combination of point-group irrep, #RAS I electrons, and
175 ** #RAS III electrons.
176 */
177 struct olsen_graph {
178  int num_str; /* total number of strings */
179  int num_drc_orbs; /* number of dropped core orbitals */
180  int num_expl_cor_orbs; /* number of explicit core orbitals */
181  int drc_sym; /* symmetry (irrep) for the dropped core */
182  int num_el; /* number of electrons (total) in graph */
183  int num_el_expl; /* number of electrons (explicit) in graph */
184  int num_orb; /* number of orbitals explicitly treated */
185  int ras1_lvl; /* orbital number where RAS I ends (less drc),
186  or the last level in RAS I */
187  int ras1_min; /* minimum number of electrons in RAS I (for
188  the _strings_), incl. core */
189  int ras1_max; /* max number of RAS I electrons (useful when
190  the RAS I level may extend beyond the last
191  occupied orbital), incl. core */
192  int ras3_lvl ; /* orbital num where RAS III begins (less drc) */
193  int ras3_max ; /* maximum number of electrons in RAS III */
194  int ras4_lvl ; /* orbital number where RAS IV begins (less drc) */
195  int ras4_max ; /* maximum number of electrons in RAS IV */
196  int nirreps; /* number of irreps */
197  int subgr_per_irrep; /* possible number of Olsen subgraphs per irrep */
198  int max_str_per_irrep; /* largest number of strings found in an irrep */
199  int *str_per_irrep; /* array containing num strings per irrep */
200  int ***decode; /* decode[ras1_holes][ras3_e][ras4_e] */
201  int **encode; /* encode[0,1,2][code] gives ras1 e- (excl drc) and
202  ras3 e- and ras4 e- */
203  struct stringgraph **sg; /* sg[irrep][code] */
204  int *orbsym; /* array for orbital irreps (incl. drc) */
205  int *list_offset; /* absolute offset for each list */
206  };
207 
208 
209 /*
210 ** FASTGRAPH structure. Should provide a more straightforward (if
211 ** also more restrictive) version of struct stringgraph. Although
212 ** somewhat more memory intensive, should allow for fast OTF
213 ** computation of string addresses. The memory requirements are not
214 ** really severe in any case (0-5 MB total for all subgraphs).
215 */
216 struct fastgraph {
217  int num_strings; /* number of strings in this subgraph */
218  int **data; /* holds k, then x, then y */
219  };
220 
221 
222 /*
223 ** GRAPH_SET structure. This maintains a graphical
224 ** representation of alpha and/or beta strings according to the method
225 ** of Roos and Olsen, which maintains a different subgraph for each
226 ** possible combination of point-group irrep, #RAS I electrons, and
227 ** #RAS III electrons. New implementation of previous olsen_graph
228 ** structure; this one uses the more simplified fastgraph structure
229 ** instead of stringgraph.
230 */
231 struct graph_set {
232  int num_str; /* total number of strings */
233  int num_graphs; /* total number of valid subgraphs */
234  int num_drc_orbs; /* number of dropped core orbitals */
235  int num_expl_cor_orbs; /* number of explicit core orbitals */
236  int drc_sym; /* symmetry (irrep) for the dropped core */
237  int num_el; /* number of electrons (total) in graph */
238  int num_el_expl; /* number of electrons (explicit) in graph */
239  int num_orb; /* number of orbitals explicitly treated */
240  int ras1_lvl; /* orbital number where RAS I ends (not including
241  dropped core orbitals in the numbering),
242  or the last level in RAS I */
243  int ras1_min; /* minimum number of electrons in RAS I (for
244  the _strings_), no longer incl. core
245  (either explicit core or dropped core) */
246  int ras1_max; /* max number of RAS I electrons (useful when
247  the RAS I level may extend beyond the last
248  occupied orbital), no longer incl. core
249  (either explicit core or dropped core) */
250  int ras3_lvl; /* orbital num where RAS III begins (less drc) */
251  int ras3_max; /* maximum number of electrons in RAS III */
252  int ras4_lvl; /* orbital number where RAS IV begins (less drc) */
253  int ras4_max; /* maximum number of electrons in RAS IV */
254  int ras34_max; /* max number of electrons in RAS III AND IV */
255  int nirreps; /* number of irreps */
256  int num_codes; /* possible number of subgraphs per irrep */
257  int ***decode; /* decode[ras1_holes][ras3_e][ras4_e] */
258  int **encode; /* encode[0,1,2][code] gives ras1 e- (excl drc) and
259  ras3 e- and ras4 e- */
260  struct fastgraph **AllGraph;
261  /* Pointers to all subgraphs */
262  struct fastgraph **Graph;/* Pointers to allowed subgraphs */
263  int *graph_irrep; /* irrep of each non-null graph */
264  int *graph_code; /* code for each non-null graph */
265  int *graph_offset; /* absolute offset for each list */
266  int *orbsym; /* array for orbital irreps (incl. drc) */
267  unsigned char ***Occs; /* Orbital occupancies for each string */
268  };
269 
270 
271 
272 
273 struct H_zero_block {
274  double **H0b; /* H0 block */
275  double **H0b_inv; /* inverse of block (H0 - E) */
276  double **H0b_diag; /* Eigenvectors of H0 block */
277  double *H0b_diag_transpose; /* tmp array for Transpose of Eigenvectors of H0 block */
278  double *H0b_eigvals; /* Eigenvalues of H0 block */
279  double *H00; /* diag elements of H0 block */
280  int size; /* size of H0 block */
281  int osize; /* original (dimensioned size); can be reduced
282  for Ms=0 cases by H0block_pairup() */
283  int guess_size; /* size of initial H0 block guess which may
284  differ from size */
285  int oguess_size; /* original guess size may change with
286  spin_cpl_chk() and pairup() */
287  int coupling_size; /* size of H0 block coupling to secondary
288  space */
289  int ocoupling_size; /* original size of coupling_size */
290  double *c0b, *s0b; /* gathered C and sigma vectors */
291  double *c0bp, *s0bp; /* INV(H0 - E) times c0b and s0b */
292 
293  int *alplist; /* list (graph) containing alpha string */
294  int *betlist; /* list containing beta string */
295  int *alpidx; /* relative index of alpha string */
296  int *betidx; /* relative index of beta string */
297  int *blknum; /* block number for each member */
298  int *pair; /* which H0block member is related by
299  interchange of alpha and beta indices */
300  double **tmp1; /* tmp matrix to hold (H0 - E) */
301  int nbuf; /* number of buffers in CIvect */
302  int *buf_num; /* number of H0block elements per buffer */
303  int **buf_member; /* H0block members for each buffer */
304  double spin_cp_vals; /* Values of dets which should be added
305  to the h0block but were not due to size
306  restrictions of h0block.size */
307  double *tmp_array1; /* temporary array 1 */
308  double *tmp_array2; /* temporary array 2 */
309  };
310 
311 
312 /*
313 ** CalcInfo: Data Structure for holding calculation information such
314 ** as nuclear repulsion energy, number of atoms, number of basis functions,
315 ** etc.
316 */
317 struct calcinfo {
318  int natom; /* number of atoms */
319  int nso; /* number of symmetry orbitals */
320  int nmo; /* number of molecular orbitals */
321  int nmotri; /* num elements in lwr diag matrix nmo big */
322  int nirreps; /* number of irreducible representations in pt grp */
323  Dimension docc; /* number of doubly occupied orbitals per irrep */
324  Dimension socc; /* number of singly occupied orbitals per irrep */
325  Dimension ci_orbs; /* number of act orbitals per irrep */
326  Dimension dropped_docc; /* number of core orbitals per irrep constrained to
327  be doubly occupied and dropped from explicit
328  consideration in the CI computation;
329  sum of frozen_docc and rstr_docc - CDS 4/15 */
330  Dimension frozen_docc; /* number of frozen doubly occupied orbs per irrep;
331  these are not explicitly present in the CI
332  and these orbitals are not allowed to optimize
333  in an MCSCF - CDS 4/15 */
334  Dimension rstr_docc; /* number of restricted doubly occupied orbs per
335  irrep; these are not explicitly present in the
336  CI and these orbitals are allowed to optimize
337  in an MCSCF - CDS 4/15 */
338  Dimension dropped_uocc; /* number of unoccupied orbitals per irrep
339  constrained to be unoccupied and dropped from
340  explicit consideratin in the CI computation;
341  sum of frozen_uocc and rstr_uocc - CDS 4/15 */
342  Dimension frozen_uocc; /* number of frozen unoccupied orbitals per irrep;
343  these are not explicitly present in the CI
344  and these orbitals are not allowed to optimize
345  in an MCSCF */
346  Dimension rstr_uocc; /* number of restricted unoccpied orbitals per irrep;
347  these are not explicitly present in the CI
348  and these orbitals are allowed to optimize in
349  an MCSCF */
350  int iopen; /* flag for whether open shell or not */
351  double enuc; /* nuclear repulsion energy */
352  double escf; /* scf energy */
353  double efzc; /* energy of the frozen core orbitals */
354  double edrc; /* energy of the dropped core orbitals */
355  double e0; /* E0, zeroth order energy */
356  double e0_drc; /* two times the sum of the dropped core orbitals */
357  double e1; /* E1, first order energy */
358  int num_alp; /* number of alpha electrons */
359  int num_bet; /* number of beta electrons */
360  int num_alp_expl; /* number of alpha electrons explicitly treated */
361  int num_bet_expl; /* number of beta electrons explicitly treated */
362  std::vector<std::string> labels; /* labels for irreps */
363  int *orbsym; /* irrep for each orbital */
364  std::vector<int> reorder; /* map Pitzer-ordered orbitals to our ordering */
365  std::vector<int> order; /* map our ordering back to Pitzer ordering */
366  std::vector<int> act_reorder; /* map Pitzer-ordered orbitals to our ordering for active only*/
367  std::vector<int> act_order; /* map our ordering back to Pitzer ordering for active only*/
368  std::vector<double> scfeigval; /* SCF eigenvalues */
369  std::vector<double> scfeigvala; /* For ZAPTn, alpha and beta eigenvalues different */
370  std::vector<double> scfeigvalb; /* in SOCC space */
371  SharedMatrix so_onel_ints; /* Pitzer-order one-electron integrals */
372  SharedMatrix fzc_so_onel_ints; /* Pitzer-order frozen one-electron integrals */
373  SharedVector onel_ints; /* CI-order one-electron integrals */
374  SharedVector tf_onel_ints; /* CI-order transformed (avg) one-electron integrals */
375  SharedVector gmat; /* CI-order onel ints in RAS g matrix form, not symmetry packed */
376  SharedVector twoel_ints; /* CI-order two-electron integrals */
377  int num_fzc_orbs; /* number of frozen core orbitals */
378  int num_rsc_orbs; /* number of restricted core orbitals */
379  int num_drc_orbs; /* number of dropped core orbitals
380  (frozen + restricted) */
381  int num_fzv_orbs; /* number of frozen/deleted virtual orbitals */
382  int num_rsv_orbs; /* number of restricted virtual orbitals */
383  int num_drv_orbs; /* number of dropped virtual orbitals
384  (frozen + restricted) */
385  int num_rot_orbs; /* number of rotatable orbitals
386  (nmo - nfzc - nfzv) */
387  int npop; /* number of populated orbitals, nso - total virtual */
388  int num_expl_cor_orbs;/* number of explicit core orbitals, i.e.,
389  orbitals that are constrained to be doubly
390  occupied in the CI and but are nevertheless
391  explicitly included in the CI computation (not
392  currently used for anything but kept because
393  lower-level routines allow it; it is set to 0) */
394  int num_alp_str; /* number of alpha strings */
395  int num_bet_str; /* number of beta strings */
396  int num_ci_orbs; /* nmo - num orbs frozen */
397  size_t num_ci_tri; /* number of upper triangular ci orbs */
398  size_t num_ci_tri2; /* number of doubly upper triangular ci orbs (example: two-el integrals) */
399  int ref_alp; /* address of reference alpha string */
400  int ref_bet; /* address of reference beta string */
401  int ref_alp_list; /* string list containing reference alpha string */
402  int ref_bet_list; /* string list containing reference beta string */
403  int ref_alp_rel; /* relative index of reference alpha string */
404  int ref_bet_rel; /* relative index of reference beta string */
405  int ref_sym; /* symmetry (irrep) of reference determinant */
406  int spab; /* socc per alpha or beta, for singlet states */
407  int **ras_opi; /* num orbs per irr per ras space ras_opi[ras][irr] */
408  int **ras_orbs[4]; /* ras_orbs[ras][irr][cnt] gives an orbital number */
409  int sigma_initialized; /* has sigma_init been called yet? */
410 
411 };
412 
413 
414 /*
415 ** parameters structure: holds run-time parameters
416 */
417 struct params {
418  std::string dertype;/* derivative level: none, first, etc */
419  std::string wfn; /* wavefunction type: CI, DETCAS, etc. */
420  std::string ref; /* reference type (RHF, ROHF); ROHF with MULTP=1
421  is an open-shell singlet */
422  std::string mcscf_type; /*Type of MCSCF computation DF or CONV */
423  int multp; /* multiplicity (2S+1) */
424  int ex_lvl; /* excitation level */
425  int val_ex_lvl; /* valence excitation level, used for RAS's */
426  int cc_val_ex_lvl;/* NOT analogous to val_ex_lvl ... this controls how
427  many holes allowed from RAS II for MRCC */
428  int cc_a_val_ex_lvl; /* alpha part of cc_val_ex_lvl */
429  int cc_b_val_ex_lvl; /* beta part of cc_val_ex_lvl */
430  int maxiter; /* maximum number of allowed iterations */
431  int num_roots; /* number of CI roots to find */
432  int istop; /* stop after setting up CI space */
433  int print_ciblks; /* print a summary of the CI blocks? */
434  bool die_if_not_converged; /* Do we die if we do not converge */
435  bool diag_h_converged; /* Boolean to set if the diagonalization converges */
436  double convergence; /* convergence on RMS of the CI update vector */
437  /* (i.e. the Davidson/Liu d vector) applied to ea root */
438  double energy_convergence; /* convergence on CI energy */
439  int ras; /* do a RAS calculation? Set true if "RAS1" keyword */
440  int fci; /* do a FULL ci calc? (affects sigma1-2 subroutines) */
441  int fci_strings; /* do a FULL ci calc? (affects string storage) */
442  double S; /* the value of quantum number S */
443  int Ms0; /* 1 if Ms=0, 0 otherwise */
444  int ref_sym; /* irrep for CI vectors; -1 = find automatically */
445  int opentype; /* none, highspin, or open-shell singlet; see #define */
446  int a_ras1_lvl; /* orbital number defining RAS I for alpha electrons:
447  any electrons at this level or lower are in RAS I */
448  int a_ras1_min; /* minimum number of alpha electrons in RAS I */
449  int a_ras1_max; /* maximum number of alpha electrons in RAS I */
450  int b_ras1_lvl; /* orbital number defining RAS I for beta electrons:
451  any electrons at this level or lower are in RAS I */
452  int b_ras1_min; /* minimum number of beta electrons in RAS I */
453  int b_ras1_max; /* maximum number of beta electrons in RAS I */
454  int a_ras3_max; /* maximum number of alpha electrons in RAS III */
455  int b_ras3_max; /* maximum number of beta electrons in RAS III */
456  int cc_a_ras3_max;/* as above but for CC */
457  int cc_b_ras3_max;/* as above but for CC */
458  int a_ras4_max; /* maximum number of alpha electrons in RAS IV */
459  int b_ras4_max; /* maximum number of beta electrons in RAS IV */
460  int cc_a_ras4_max;/* as above but for CC */
461  int cc_b_ras4_max;/* as above but for CC */
462  int ras1_lvl; /* Orbital number of the highest orbital in RAS I */
463  int ras1_min; /* currently min #e AT THE RAS I LEVEL (excluding drc) */
464  int ras3_lvl; /* orbital number defining RAS III overall */
465  int ras4_lvl; /* orbital number defining RAS IV overall */
466  /* make larger than num_ci_orbs if there is no RAS IV */
467  int ras3_max; /* maximum number of electrons in RAS III */
468  int cc_ras3_max; /* as above but for CC */
469  int ras4_max; /* maximum number of electrons in RAS IV */
470  int cc_ras4_max; /* as above but for CC */
471  int ras34_max; /* max number of electrons in RAS III AND IV */
472  int cc_ras34_max; /* as above but for CC */
473  int a_ras34_max; /* max number of alp electrons in RAS III AND IV */
474  int b_ras34_max; /* max number of bet electrons in RAS III AND IV */
475  int cc_a_ras34_max;/* as above but for CC */
476  int cc_b_ras34_max;/* as above but for CC */
477  int guess_vector; /* what kind of CI vector to start with; see #define */
478  int h0blocksize; /* size of H0 block in preconditioner. */
479  int h0guess_size; /* size of H0 block for initial guess */
480  int h0block_coupling_size; /* size of coupling block in preconditioner */
481  int h0block_coupling; /* 1 if true; 0 otherwise */
482  int hd_ave; /* how to average H diag energies over spin coupling
483  sets */
484  int hd_otf; /* 1 if diag energies computed on the fly 0 otherwise */
485  int nodfile; /* 1 if no dfile used 0 otherwise works for nroots=1 */
486  int nprint; /* number of important determinants to print out */
487  int cc_nprint; /* number of most important CC amps per ex lvl to print */
488  int mixed; /* 1=allow mixed excitations, 0=don't */
489  int mixed4; /* 1=allow mixed excitations in RAS IV, 0=don't */
490  int repl_otf; /* generate single-replacements on-the-fly */
491  int r4s; /* restrict strings with e- in RAS IV: i.e. if an
492  electron is in RAS IV, then the holes in RAS I
493  must equal the particles in RAS III + RAS IV else
494  the string is discarded */
495  int calc_ssq; /* calculate the value of <S^2> or not */
496  int icore; /* core option:
497  0 = RAS subblock at a time
498  1 = Entire CI vector at a time
499  2 = Symmetry block at a time */
500  int diag_method; /* diagonalization method:
501  0 = RSP
502  1 = Olsen
503  2 = Mitrushenkov
504  3 = Davidson/Liu SEM method
505  4 = Stupid test of Davidson/Liu SEM method */
506  int precon; /* preconditioner for diagonalization method
507  0 = Lanczos
508  1 = Davidson
509  2 = Generalized Davidson or H0block
510  3 = H0block inverse */
511  int update; /* update vector in diag method
512  1 = Davidson
513  2 = Olsen */
514  int mcscf; /* 1(0) if computing MCSCF is TRUE(FALSE) */
515  int mpn; /* 1(0) if computing mpn series is TRUE(FALSE) */
516  int zaptn; /* 1(0) if computing zaptn series is TRUE(FALSE) */
517  int save_mpn2; /* 0 = save MPn energy, 1 = save MP(2n-1) energy,
518  2 = save MP(2n-2) energy */
519  int mpn_schmidt; /* 1(0) if a orthonormal vector space is employed
520  rather than storing the kth order wfn */
521  int wigner; /* 1(0) if wigner formulas used in Empn series */
522  int diag_iters_taken; /* Number of diagonalization iterations taken */
523  int maxnvect; /* maximum number of b vectors for SEM method */
524  int nunits; /* num of tmp files to use for CI vects and such */
525  int collapse_size; /* how many vectors to collapse to in SEM */
526  int lse_collapse; /* iterations between lst sqr ext */
527  int lse_iter; /* iterations between last lst sqr ext */
528  int lse; /* 1(0) if lst sqr ext is TRUE or FALSE */
529  double lse_tolerance; /* energy converged to tol to perform lse */
530  int neg_only; /* 1(0) if get -(+) values of diag elements */
531  int hd_filenum; /* first tmp file for H diagonal */
532  int c_filenum; /* first tmp file for CI coeffs */
533  int s_filenum; /* first tmp file for sigma coeffs */
534  int d_filenum; /* first tmp file for D correction vectors */
535  int num_init_vecs; /* number of initial vectors for Davidson method */
536  int restart; /* restart flag, 0 or 1 */
537  int bendazzoli; /* use bendazzoli algorithm */
538  int opdm; /* call the opdm subroutine? */
539  int opdm_diag; /* get ci natural orbitals? */
540  int opdm_ave; /* average the opdm over several states */
541  int transdens; /* compute transition densities? */
542  int dipmom; /* compute dipole moment or transition dip mom? */
543  int tpdm; /* call the tpdm subroutine? */
544  int root; /* which root to optimize (write opdm/tpdm for) */
545  double perturbation_parameter; /* z in H = H0 + z * H1 */
546  int z_scale_H; /* 1(0) if pert. scaling used */
547  double special_conv; /* special convergence value */
548  int nthreads; /* number of threads to use in sigma routines */
549  int sf_restrict; /* 1 if restrict CI space (CI blocks) to
550  do only determinants (or their
551  spin-complements) in RASCI versions of
552  Krylov's SF CI */
553  int print_sigma_overlap;/* Print sigma overlap matrix? Test for Arteum */
554  int filter_guess; /* 1 if we want to filter out some of our guess
555  vectors by checking the phase of a pair of determinants */
556  int filter_guess_sign; /* the desired phase between dets 1 and 2 */
557  int filter_guess_Ia; /* absolute alpha string addr for determinant 1 */
558  int filter_guess_Ib; /* absolute beta string addr for determinant 1 */
559  int filter_guess_Ja; /* absolute alpha string addr for determinant 2 */
560  int filter_guess_Jb; /* absolute beta string addr for determinant 2 */
561  int filter_guess_Iaridx;/* relative alpha string addr for det 1 */
562  int filter_guess_Ibridx;/* relative beta string addr for det 1 */
563  int filter_guess_Jaridx;/* relative alpha string addr for det 2 */
564  int filter_guess_Jbridx;/* relative beta string addr for det 2 */
565  int filter_guess_Iac; /* string list number for alpha of det 1 */
566  int filter_guess_Ibc; /* string list number for beta of det 1 */
567  int filter_guess_Jac; /* string list number for alpha of det 2 */
568  int filter_guess_Jbc; /* string list number for beta of det 2 */
569  int filter_guess_H0_det1; /* H0block determinant number for det 1 */
570  int filter_guess_H0_det2; /* H0block determinant number for det 2 */
571  int filter_zero_det; /* zero out any particular determinant? */
572  int filter_zero_det_Ia; /* absolute alpha string addr for zero det */
573  int filter_zero_det_Ib; /* absolute beta string addr for zero det */
574  int filter_zero_det_Iac; /* string list number for alpha of zero det */
575  int filter_zero_det_Ibc; /* string list number for beta of zero det */
576  int filter_zero_det_Iaridx;/* relative alpha string for zero det */
577  int filter_zero_det_Ibridx;/* relative beta string for zero det */
578  int follow_vec_num; /* num components in user-specified vec to follow */
579  std::vector<double> follow_vec_coef;/* array of coefficients for vec to follow */
580  std::vector<int> follow_vec_Ia; /* array of absolute alpha strings for vector */
581  std::vector<int> follow_vec_Ib; /* array of absolute beta strings for vector */
582  std::vector<int> follow_vec_Iac; /* array of alpha string lists for vector */
583  std::vector<int> follow_vec_Ibc; /* array of beta string lists for vector */
584  std::vector<int> follow_vec_Iaridx; /* array of alpha relative idx for vector */
585  std::vector<int> follow_vec_Ibridx; /* array of beta relative idx for vector */
586  std::vector<int> ex_allow; /* Determine nonstandard excitation types, such
587  as CID, CIST, CIDTQ, etc. Array is length
588  ex_lvl and each element is 1 or 0. 1 means
589  that excitation level is allowed. */
590  std::vector<int> average_states; /* which states to average in a SA calc */
591  std::vector<double> average_weights;/* the weights for each state in a SA calc */
592  int average_num; /* length of the above two arrays */
593  int cc; /* do coupled-cluster */
594  int cc_ex_lvl; /* coupled-cluster excitation level */
595  int cc_export; /* export a CC vector? */
596  int cc_import; /* import a CC vector? */
597  int cc_fix_external; /* fix amplitudes involving RAS I or IV ? */
598  int cc_fix_external_min;/* num external indices before amp gets fixed */
599  int cc_mixed; /* ignore block if num holes in RAS I and II is
600  > cc_ex_lvl and if any indices correspond to
601  RAS I or IV (i.e., include only all-active
602  higher excitations) */
603  int cc_update_eps; /* update T amps with orb eigvals or not? */
604  int diis; /* do DIIS? */
605  int diis_start; /* how many diis vectors built up before start */
606  int diis_freq; /* how many iters to go before a diis step */
607  int diis_min_vecs; /* how many vectors required before do diis? */
608  int diis_max_vecs; /* how many vectors maximum to hold? */
609  int cc_variational; /* variational energy expression? */
610 
611 };
612 
613 /*
614 ** CI Vector structure which keeps track of how many
615 ** symmetry or RAS blocks in a CI vector, the string graph
616 ** codes for each block, offsets for each block (to compute absolute
617 ** indices), and a decoder which takes two block codes (alpha and
618 ** beta) and determines the CI vector block number.
619 */
620 struct ci_blks {
621  size_t vectlen; /* total number of elements in the CI vector */
622  int num_blocks; /* number of blocks in the CI vector */
623  int Ia_code[CI_BLK_MAX]; /* gives the block's alpha string code */
624  int Ib_code[CI_BLK_MAX]; /* gives the block's beta string code */
625  int Ia_size[CI_BLK_MAX]; /* num of alp strings in the block */
626  int Ib_size[CI_BLK_MAX]; /* num of bet strings in the block */
627  size_t offset[CI_BLK_MAX]; /* offset for absolute numbering */
628  int **decode; /* gives the block number for a given pair
629  of alpha and beta codes */
630  int num_alp_codes; /* number of alpha codes in decode matrix */
631  int num_bet_codes; /* number of beta codes in decode matrix */
632  int *first_iablk; /* first blocknum for a given Ia irrep */
633  int *last_iablk; /* last blocknum for a given Ia irrep */
634  int subgr_per_irrep; /* possible number of Olsen subgraphs per irrep */
635  int nirreps; /* number of molecular irreps */
636  int Ms0; /* 1 if Ms=0, 0 otherwise */
637 };
638 
639 /*
640 ** Struct to keep track of variable required in a sigma calculation
641 */
642 struct sigma_data {
643  double *F;
644  int **Jij[2];
645  int **Joij[2];
646  int **Jridx[2];
647  int *Jcnt[2];
648  signed char **Jsgn[2];
649  unsigned char **Toccs;
650  double **transp_tmp;
651  double **cprime;
652  double **sprime;
653  double *V, *Sgn;
654  int *L, *R;
655  int max_dim;
656 };
657 
658 
659 }} // namespace psi::detci
660 
661 #endif // header guard
double * s0b
Definition: structs.h:290
int * y
Definition: structs.h:158
int num_bet_codes
Definition: structs.h:631
int filter_zero_det_Iaridx
Definition: structs.h:576
int h0guess_size
Definition: structs.h:479
int ** kbar
Definition: structs.h:157
int neg_only
Definition: structs.h:530
int cc_a_ras3_max
Definition: structs.h:456
bool die_if_not_converged
Definition: structs.h:434
int drc_sym
Definition: structs.h:181
SharedMatrix fzc_so_onel_ints
Definition: structs.h:372
int a_ras34_max
Definition: structs.h:473
int Ia_code[CI_BLK_MAX]
Definition: structs.h:623
int num_orb
Definition: structs.h:184
double * Sgn
Definition: structs.h:653
Definition: structs.h:216
int sf_restrict
Definition: structs.h:549
#define CI_BLK_MAX
Definition: structs.h:60
std::vector< int > follow_vec_Iac
Definition: structs.h:582
int filter_guess
Definition: structs.h:554
int cc_b_ras4_max
Definition: structs.h:461
int filter_guess_Jbc
Definition: structs.h:568
int * orbsym
Definition: structs.h:204
int coupling_size
Definition: structs.h:287
int nthreads
Definition: structs.h:548
int ref_bet
Definition: structs.h:400
int num_alp_str
Definition: structs.h:394
int nprint
Definition: structs.h:486
SharedMatrix so_onel_ints
Definition: structs.h:371
double * H0b_diag_transpose
Definition: structs.h:277
int ** oij
Definition: structs.h:145
int * a
Definition: structs.h:154
int nunits
Definition: structs.h:524
SharedVector tf_onel_ints
Definition: structs.h:374
int mixed
Definition: structs.h:488
size_t vectlen
Definition: structs.h:621
int nbuf
Definition: structs.h:301
int num_drv_orbs
Definition: structs.h:383
int oguess_size
Definition: structs.h:285
int ras4_max
Definition: structs.h:469
int * str_per_irrep
Definition: structs.h:199
std::vector< int > follow_vec_Ia
Definition: structs.h:580
int ** Jridx[2]
Definition: structs.h:646
std::vector< int > ex_allow
Definition: structs.h:586
double ** H0b_diag
Definition: structs.h:276
Dimension dropped_docc
Definition: structs.h:326
int nirreps
Definition: structs.h:322
int nso
Definition: structs.h:319
int subgr_per_irrep
Definition: structs.h:634
int filter_zero_det_Iac
Definition: structs.h:574
int num_roots
Definition: structs.h:431
int sigma_initialized
Definition: structs.h:409
int max_dim
Definition: structs.h:655
Definition: structs.h:317
double * V
Definition: structs.h:653
unsigned char * occs
Definition: structs.h:143
Definition: structs.h:273
std::vector< int > follow_vec_Ib
Definition: structs.h:581
double * c0bp
Definition: structs.h:291
int lse
Definition: structs.h:528
int ex_lvl
Definition: structs.h:424
int cc_b_val_ex_lvl
Definition: structs.h:429
int ras
Definition: structs.h:439
int s_filenum
Definition: structs.h:533
double * s0bp
Definition: structs.h:291
int *** decode
Definition: structs.h:200
Definition: structs.h:231
int filter_guess_Iac
Definition: structs.h:565
Definition: structs.h:642
int h0block_coupling_size
Definition: structs.h:480
double lse_tolerance
Definition: structs.h:529
int opentype
Definition: structs.h:445
int ** encode
Definition: structs.h:201
Definition: structs.h:620
int ** ij
Definition: structs.h:144
int wigner
Definition: structs.h:521
int ref_bet_rel
Definition: structs.h:404
int ref_bet_list
Definition: structs.h:402
int cc_fix_external_min
Definition: structs.h:598
int diis_freq
Definition: structs.h:606
std::vector< int > order
Definition: structs.h:365
int ras3_max
Definition: structs.h:467
int *** decode
Definition: structs.h:257
int fci_strings
Definition: structs.h:441
int cc_ras34_max
Definition: structs.h:472
std::vector< int > reorder
Definition: structs.h:364
int cc_b_ras3_max
Definition: structs.h:457
int * alpidx
Definition: structs.h:295
int offset
Definition: structs.h:163
int Ms0
Definition: structs.h:443
int * b
Definition: structs.h:155
int filter_guess_H0_det2
Definition: structs.h:570
int num_strings
Definition: structs.h:217
int ref_alp
Definition: structs.h:399
double escf
Definition: structs.h:352
int filter_guess_Ibridx
Definition: structs.h:562
int ras1_min
Definition: structs.h:463
int num_str
Definition: structs.h:232
int d_filenum
Definition: structs.h:534
bool diag_h_converged
Definition: structs.h:435
struct fastgraph ** AllGraph
Definition: structs.h:260
int ras3_lvl
Definition: structs.h:250
int num_drc_orbs
Definition: structs.h:234
int * list_offset
Definition: structs.h:205
int ras3_max
Definition: structs.h:251
int nodfile
Definition: structs.h:485
double S
Definition: structs.h:442
int repl_otf
Definition: structs.h:490
int mcscf
Definition: structs.h:514
int num_strings
Definition: structs.h:164
int filter_guess_Ia
Definition: structs.h:557
int diis_max_vecs
Definition: structs.h:608
size_t offset[CI_BLK_MAX]
Definition: structs.h:627
int cc_val_ex_lvl
Definition: structs.h:426
int ** encode
Definition: structs.h:258
int restart
Definition: structs.h:536
int maxnvect
Definition: structs.h:523
double * H0b_eigvals
Definition: structs.h:278
int ** ras_orbs[4]
Definition: structs.h:408
int num_el
Definition: structs.h:182
int ras1_min
Definition: structs.h:243
double * tmp_array1
Definition: structs.h:307
int cc_variational
Definition: structs.h:609
int cc_ras4_max
Definition: structs.h:470
int b_ras34_max
Definition: structs.h:474
int b_ras3_max
Definition: structs.h:455
int npop
Definition: structs.h:387
int cc_a_ras34_max
Definition: structs.h:475
int ras1_max
Definition: structs.h:189
int * x
Definition: structs.h:159
int filter_guess_Iaridx
Definition: structs.h:561
int * orbsym
Definition: structs.h:363
int mixed4
Definition: structs.h:489
int nirreps
Definition: structs.h:196
int ras4_lvl
Definition: structs.h:465
size_t num_ci_tri
Definition: structs.h:397
double * F
Definition: structs.h:643
int num_expl_cor_orbs
Definition: structs.h:388
int nirreps
Definition: structs.h:635
std::string mcscf_type
Definition: structs.h:422
int b_ras4_max
Definition: structs.h:459
int filter_guess_H0_det1
Definition: structs.h:569
Dimension rstr_uocc
Definition: structs.h:346
std::vector< int > follow_vec_Iaridx
Definition: structs.h:584
int print_sigma_overlap
Definition: structs.h:553
int num_init_vecs
Definition: structs.h:535
int * L
Definition: structs.h:654
Definition: structs.h:162
int transdens
Definition: structs.h:541
unsigned char ** Toccs
Definition: structs.h:649
Dimension frozen_docc
Definition: structs.h:330
signed char ** Jsgn[2]
Definition: structs.h:648
int * blknum
Definition: structs.h:297
size_t ** ridx
Definition: structs.h:146
int num_rsv_orbs
Definition: structs.h:382
double e0
Definition: structs.h:355
int filter_zero_det_Ib
Definition: structs.h:573
double convergence
Definition: structs.h:436
double perturbation_parameter
Definition: structs.h:545
std::string dertype
Definition: structs.h:418
int ** data
Definition: structs.h:218
int filter_zero_det_Ibridx
Definition: structs.h:577
int ras3_max
Definition: structs.h:193
int b_ras1_max
Definition: structs.h:453
int ras34_max
Definition: structs.h:254
int c_filenum
Definition: structs.h:532
int num_alp_codes
Definition: structs.h:630
int num_orb
Definition: structs.h:239
std::string ref
Definition: structs.h:420
double e0_drc
Definition: structs.h:356
struct fastgraph ** Graph
Definition: structs.h:262
int opdm_diag
Definition: structs.h:539
int osize
Definition: structs.h:281
int * R
Definition: structs.h:654
int ** Jij[2]
Definition: structs.h:644
int a_ras3_max
Definition: structs.h:454
int * orbsym
Definition: structs.h:266
int num_codes
Definition: structs.h:256
int * graph_offset
Definition: structs.h:265
std::vector< int > follow_vec_Ibc
Definition: structs.h:583
double * H00
Definition: structs.h:279
Dimension frozen_uocc
Definition: structs.h:342
Dimension dropped_uocc
Definition: structs.h:338
int tpdm
Definition: structs.h:543
int num_el_expl
Definition: structs.h:183
double efzc
Definition: structs.h:353
int cc_ras3_max
Definition: structs.h:468
int cc_export
Definition: structs.h:595
int num_fzv_orbs
Definition: structs.h:381
int cc_mixed
Definition: structs.h:599
SharedWavefunction detci(SharedWavefunction, Options &)
Definition: detci.cc:65
int * graph_irrep
Definition: structs.h:263
int cc_import
Definition: structs.h:596
int ras34_max
Definition: structs.h:471
Dimension rstr_docc
Definition: structs.h:334
int ref_sym
Definition: structs.h:405
int num_str
Definition: structs.h:178
int hd_otf
Definition: structs.h:484
int * graph_code
Definition: structs.h:264
int * buf_num
Definition: structs.h:302
int ** k
Definition: structs.h:156
Dimension docc
Definition: structs.h:323
PRAGMA_WARNING_PUSH PRAGMA_WARNING_IGNORE_DEPRECATED_DECLARATIONS PRAGMA_WARNING_POP
Definition: integraliter.cc:43
double edrc
Definition: structs.h:354
int * Jcnt[2]
Definition: structs.h:647
int a_ras1_lvl
Definition: structs.h:446
int * last_iablk
Definition: structs.h:633
int hd_ave
Definition: structs.h:482
int subgr_per_irrep
Definition: structs.h:197
int mpn_schmidt
Definition: structs.h:519
std::vector< double > follow_vec_coef
Definition: structs.h:579
double ** H0b
Definition: structs.h:274
int ras4_max
Definition: structs.h:253
int num_bet_expl
Definition: structs.h:361
int mpn
Definition: structs.h:515
int size
Definition: structs.h:280
Definition: dimension.h:38
signed char ** sgn
Definition: structs.h:147
int num_bet_str
Definition: structs.h:395
int num_ci_orbs
Definition: structs.h:396
std::vector< double > scfeigval
Definition: structs.h:368
int ras1_min
Definition: structs.h:187
int diis_start
Definition: structs.h:605
int filter_zero_det
Definition: structs.h:571
double ** sprime
Definition: structs.h:652
int num_bet
Definition: structs.h:359
int ras1_lvl
Definition: structs.h:240
double spin_cp_vals
Definition: structs.h:304
int multp
Definition: structs.h:423
int * betidx
Definition: structs.h:296
int ** buf_member
Definition: structs.h:303
std::vector< int > follow_vec_Ibridx
Definition: structs.h:585
int cc_fix_external
Definition: structs.h:597
std::vector< int > act_reorder
Definition: structs.h:366
int r4s
Definition: structs.h:491
int zaptn
Definition: structs.h:516
double ** cprime
Definition: structs.h:651
int save_mpn2
Definition: structs.h:517
int num_expl_cor_orbs
Definition: structs.h:235
int max_str_per_irrep
Definition: structs.h:198
int filter_guess_Jac
Definition: structs.h:567
size_t num_ci_tri2
Definition: structs.h:398
int filter_guess_sign
Definition: structs.h:556
int num_fzc_orbs
Definition: structs.h:377
int filter_guess_Jbridx
Definition: structs.h:564
double special_conv
Definition: structs.h:547
std::vector< double > scfeigvala
Definition: structs.h:369
int *** ktmp
Definition: structs.h:166
unsigned char *** Occs
Definition: structs.h:267
int ref_alp_list
Definition: structs.h:401
int maxiter
Definition: structs.h:430
Definition: structs.h:142
int ras4_max
Definition: structs.h:195
int drc_sym
Definition: structs.h:236
int cc_a_val_ex_lvl
Definition: structs.h:428
int * cnt
Definition: structs.h:148
int ras1_lvl
Definition: structs.h:185
double energy_convergence
Definition: structs.h:438
std::shared_ptr< Matrix > SharedMatrix
Definition: adc.h:49
struct stringgraph ** sg
Definition: structs.h:203
int cc_b_ras34_max
Definition: structs.h:476
int cc_a_ras4_max
Definition: structs.h:460
double * c0b
Definition: structs.h:290
std::vector< int > act_order
Definition: structs.h:367
int calc_ssq
Definition: structs.h:495
int diis
Definition: structs.h:604
int natom
Definition: structs.h:318
int follow_vec_num
Definition: structs.h:578
int filter_guess_Ja
Definition: structs.h:559
std::vector< std::string > labels
Definition: structs.h:362
int Ia_size[CI_BLK_MAX]
Definition: structs.h:625
int Ib_code[CI_BLK_MAX]
Definition: structs.h:624
int h0block_coupling
Definition: structs.h:481
int num_el
Definition: structs.h:237
std::vector< int > average_states
Definition: structs.h:590
int * betlist
Definition: structs.h:294
int root
Definition: structs.h:544
int nmotri
Definition: structs.h:321
int bendazzoli
Definition: structs.h:537
int num_graphs
Definition: structs.h:233
int lse_collapse
Definition: structs.h:526
int nirreps
Definition: structs.h:255
int hd_filenum
Definition: structs.h:531
int a_ras4_max
Definition: structs.h:458
Dimension ci_orbs
Definition: structs.h:325
int nmo
Definition: structs.h:320
int filter_guess_Ibc
Definition: structs.h:566
int ** ras_opi
Definition: structs.h:407
int b_ras1_lvl
Definition: structs.h:450
int cc_update_eps
Definition: structs.h:603
int b_ras1_min
Definition: structs.h:452
int * first_iablk
Definition: structs.h:632
int val_ex_lvl
Definition: structs.h:425
int spab
Definition: structs.h:406
int average_num
Definition: structs.h:592
Dimension socc
Definition: structs.h:324
int num_alp_expl
Definition: structs.h:360
int cc
Definition: structs.h:593
int num_el_expl
Definition: structs.h:238
double ** H0b_inv
Definition: structs.h:275
int update
Definition: structs.h:511
int ras1_max
Definition: structs.h:246
int print_ciblks
Definition: structs.h:433
int cc_ex_lvl
Definition: structs.h:594
int h0blocksize
Definition: structs.h:478
Definition: structs.h:417
std::vector< double > average_weights
Definition: structs.h:591
double e1
Definition: structs.h:357
int diag_iters_taken
Definition: structs.h:522
int ras3_lvl
Definition: structs.h:192
int ref_sym
Definition: structs.h:444
SharedVector onel_ints
Definition: structs.h:373
double ** tmp1
Definition: structs.h:300
int collapse_size
Definition: structs.h:525
int icore
Definition: structs.h:496
int cc_nprint
Definition: structs.h:487
int guess_vector
Definition: structs.h:477
int ras4_lvl
Definition: structs.h:194
int ras4_lvl
Definition: structs.h:252
int * pair
Definition: structs.h:298
int filter_guess_Ib
Definition: structs.h:558
int Ms0
Definition: structs.h:636
double enuc
Definition: structs.h:351
int guess_size
Definition: structs.h:283
int filter_guess_Jaridx
Definition: structs.h:563
int ras3_lvl
Definition: structs.h:464
int diag_method
Definition: structs.h:500
int num_alp
Definition: structs.h:358
double ** transp_tmp
Definition: structs.h:650
int num_rsc_orbs
Definition: structs.h:378
int istop
Definition: structs.h:432
int z_scale_H
Definition: structs.h:546
int a_ras1_max
Definition: structs.h:449
int num_expl_cor_orbs
Definition: structs.h:180
int * alplist
Definition: structs.h:293
Definition: structs.h:152
int ** Joij[2]
Definition: structs.h:645
int ocoupling_size
Definition: structs.h:289
int diis_min_vecs
Definition: structs.h:607
int filter_zero_det_Ia
Definition: structs.h:572
int ** decode
Definition: structs.h:628
int num_drc_orbs
Definition: structs.h:179
SharedVector twoel_ints
Definition: structs.h:376
int precon
Definition: structs.h:506
int filter_zero_det_Ibc
Definition: structs.h:575
int fci
Definition: structs.h:440
int opdm
Definition: structs.h:538
int num_rot_orbs
Definition: structs.h:385
int filter_guess_Jb
Definition: structs.h:560
int num_blocks
Definition: structs.h:622
std::vector< double > scfeigvalb
Definition: structs.h:370
int iopen
Definition: structs.h:350
std::shared_ptr< Vector > SharedVector
Definition: adc.h:51
struct level * lvl
Definition: structs.h:165
int num_j
Definition: structs.h:153
int Ib_size[CI_BLK_MAX]
Definition: structs.h:626
int ref_alp_rel
Definition: structs.h:403
int ras1_lvl
Definition: structs.h:462
int dipmom
Definition: structs.h:542
SharedVector gmat
Definition: structs.h:375
double * tmp_array2
Definition: structs.h:308
int num_drc_orbs
Definition: structs.h:379
int lse_iter
Definition: structs.h:527
std::string wfn
Definition: structs.h:419
int opdm_ave
Definition: structs.h:540
int a_ras1_min
Definition: structs.h:448
Definition: structs.h:177