1
/*! \file shell_block_matrix.cc
3
\brief Enter brief description of file here
7
#include<libciomr/libciomr.h>
8
#include<libint/libint.h>
15
namespace psi { namespace CINTS {
17
double ****init_shell_block_matrix()
23
data = (double****) malloc(BasisSet.num_shells*sizeof(double***));
24
for(si=0;si<BasisSet.num_shells;si++) {
25
data[si] = (double***) malloc(BasisSet.num_shells*sizeof(double**));
26
ni = ioff[BasisSet.shells[si].am];
27
for(sj=0;sj<BasisSet.num_shells;sj++) {
28
nj = ioff[BasisSet.shells[sj].am];
29
data[si][sj] = block_matrix(ni,nj);
36
void free_shell_block_matrix(double**** data)
40
for(si=0;si<BasisSet.num_shells;si++) {
41
for(sj=0;sj<BasisSet.num_shells;sj++) {
42
free_block(data[si][sj]);
52
void shell_block_to_block(double**** shell_block, double** block)
56
int i, j, ioffset, joffset;
59
for(si=0;si<BasisSet.num_shells;si++) {
60
ni = ioff[BasisSet.shells[si].am];
61
ioffset = BasisSet.shells[si].fao-1;
62
for(sj=0;sj<BasisSet.num_shells;sj++) {
63
nj = ioff[BasisSet.shells[sj].am];
64
joffset = BasisSet.shells[sj].fao-1;
65
sb = shell_block[si][sj];
68
block[i+ioffset][j+joffset] = sb[i][j];
76
void GplusGt(double**** G, double**** Gsym)
83
for(si=0;si<BasisSet.num_shells;si++) {
84
ni = ioff[BasisSet.shells[si].am];
85
for(sj=0;sj<BasisSet.num_shells;sj++) {
86
nj = ioff[BasisSet.shells[sj].am];
88
/*--- Symmetrize off-diagonal blocks ---*/
93
Gsym[si][sj][i][j] = sb[i][j] + sb_t[j][i];
95
/*--- Symmetrize the diagonal blocks ---*/
99
Gsym[si][si][i][j] = sb[i][j] + sb[j][i];
100
Gsym[si][si][i][i] = sb[i][i];