4
#include <libpsio/psio.h>
9
/* dpd_file2_init(): Initializes a dpd two-index file for reading
13
** dpdfile2 *File: A pointer to the two-index dpdfile.
14
** int filenum: The PSI unit number for this file.
15
** int irrep: The symmetry of the data (=0 for totally-symmetric)
16
** int pnum: The orbital subspace number for the left index [see
18
** int qnum: The orbital subspace number for the right index [see
20
** char *label: A string labelling for this buffer.
21
** int print_flag: A boolean for the print routines.
22
** FILE *outfile: The formatted output file stream.
25
int dpd_file2_init(dpdfile2 *File, int filenum, int irrep, int pnum,
26
int qnum, char *label)
28
int i, q, rs, nirreps;
29
struct dpd_file2_cache_entry *this_entry;
30
int *coltot, *colidx, **colorb, *qpi, *qoff, *qsym;
32
File->dpdnum = dpd_default;
33
File->params = &(dpd_list[dpd_default].params2[pnum][qnum]);
34
strcpy(File->label,label);
35
File->filenum = filenum;
36
File->my_irrep = irrep;
38
nirreps = File->params->nirreps;
40
this_entry = dpd_file2_cache_scan(filenum, irrep, pnum, qnum, label, dpd_default);
41
if(this_entry != NULL) {
43
File->matrix = this_entry->matrix;
47
File->matrix = (double ***) malloc(File->params->nirreps*sizeof(double **));
50
/* Construct logical subfile pointers */
51
File->lfiles = (psio_address *) malloc(File->params->nirreps *
52
sizeof(psio_address));
53
File->lfiles[0] = PSIO_ZERO;
54
for(i=1; i < File->params->nirreps; i++)
55
File->lfiles[i] = psio_get_address(File->lfiles[i-1],
56
(File->params->rowtot[i-1] *
57
File->params->coltot[(i-1)^irrep] *
60
/* Force all two-index files into cache */
61
/* dpd_file2_cache_add(File); */