3
\brief Enter brief description of file here
7
#include<libipv1/ip_lib.h>
8
#include<libciomr/libciomr.h>
9
#include<libchkpt/chkpt.h>
11
#include<libint/libint.h>
17
namespace psi { namespace CINTS {
19
/*-------------------------------
20
Explicit function declarations
21
-------------------------------*/
22
static void init_dp_table(void);
28
Symmetry.symlabel = chkpt_rd_sym_label();
29
Symmetry.nirreps = chkpt_rd_nirreps();
30
Symmetry.num_so = chkpt_rd_nso();
31
Symmetry.num_unique_atoms = chkpt_rd_num_unique_atom();
32
Symmetry.num_unique_shells = chkpt_rd_num_unique_shell();
34
Symmetry.atom_positions = chkpt_rd_atom_position();
35
Symmetry.ua2a = chkpt_rd_ua2a();
36
Symmetry.us2s = chkpt_rd_us2s();
37
Symmetry.sopi = chkpt_rd_sopi();
38
Symmetry.sym_oper = chkpt_rd_symoper();
39
Symmetry.irr_labels = chkpt_rd_irr_labs();
40
Symmetry.ict = chkpt_rd_ict();
41
Symmetry.cartrep = chkpt_rd_cartrep();
42
Symmetry.cdsalcpi = chkpt_rd_cdsalcpi();
43
Symmetry.cdsalc2cd = chkpt_rd_cdsalc2cd();
44
Symmetry.cdsalc_ioffset = init_int_array(Symmetry.nirreps);
45
Symmetry.cdsalc_ioffset[0] = 0;
46
for(i=1;i<Symmetry.nirreps;i++)
47
Symmetry.cdsalc_ioffset[i] = Symmetry.cdsalc_ioffset[i-1] + Symmetry.cdsalcpi[i-1];
49
if (Symmetry.nirreps) {
50
/* Symmetry.dp_table = */ init_dp_table();
52
if (Symmetry.nirreps < 4)
53
UserOptions.scf_only = 0;
54
if (UserOptions.scf_only) {
55
Symmetry.so2symblk = init_int_array(Symmetry.num_so);
57
for(i=0;i<Symmetry.nirreps;i++)
58
for(j=0;j<Symmetry.sopi[i];j++)
59
Symmetry.so2symblk[count++] = i;
68
void cleanup_symmetry()
70
if (Symmetry.nirreps > 1)
71
free_int_matrix(Symmetry.dp_table);
73
free_block(Symmetry.usotao);
75
free(Symmetry.atom_positions);
76
free(Symmetry.cartrep);
82
/*!----------------------------------------------------------------------
83
Compute direct product multiplication table for the given point group
84
NOTE: This matrix is really pointless at the moment, I left it here
86
----------------------------------------------------------------------*/
87
void init_dp_table(void)
91
Symmetry.dp_table = init_int_matrix(Symmetry.nirreps,
93
for(i=0;i<Symmetry.nirreps;i++)
95
/*------------------------------------------------------------
96
The line below works only in a case of Abelian point group!
97
Have to do honest multiplication of rows of character table
98
if non-Abelian groups to be used
99
------------------------------------------------------------*/
100
Symmetry.dp_table[i][j] = Symmetry.dp_table[j][i] = i ^ j;